الإجراءات :
الإجراءات يعتبر برنامج فرعي . يمكن ان يستدعى من الجزء الرئيسي للبرنامج . يتم الإعلان عن الاجراء خارج الجسم الرئيسي للبرنامج بإستخدام الكلمه procedure . يجب ان تعطي الاجراء اسم مميز . الاجراءات لها بدايه و نهايه خاصه بها . في هذا المثال سوف نتعرف على طريقة الاعلان و الاستدعاء لاجراء اسمه Hello يطبع الكلمه "Hello" على الشاشه .
program Procedures;
procedure Hello;
begin
Writeln('Hello');
end;
begin
end.
لإستخدام الاجراء يجب ان نقوم بإستدعاءه من خلال اسمه المميز في جسم البرنامج (مكان كتابة شيفره البرنامج)
program Procedures;
procedure Hello;
begin
Writeln('Hello');
end;
begin
Hello;
end.
الاجراءات يجب ان تكون دائماً فوق المكان الذي يتم استدعاءه اي يجب ان تقوم بالاعلان عن الاجراء ثم استدعاءه ولا يجوز استدعاء الاجراء قبل الاعلان عنه . في المثال التالي سوف يتم استدعاء اجراء داخل اجراء آخر .
program Procedures;
procedure Hello;
begin
Writeln('Hello');
end;
procedure HelloCall;
begin
Hello;
end;
begin
HelloCall;
end.
يمكن ان تكون للاجراءات بارامترات مثل اي امر تستخدمه . يجب ان تعطي اسم البارامتر و نوعه و سوف يتم استخدامه مثل اي متغير . اذا كنت تريد ان تستخدم اكثر من بارامتر في اجراء واحد يجب ان تكون الفاصله المنقوطه ; هي التي تفصل بينهم
program Procedures;
procedure Print(s: String; i: Integer);
begin
Writeln(s);
Writeln(i);
end;
begin
Print('Hello',3);
end.
المتغيرات العامّه و المحليه :
المتغيرات التي نستخدمها حاليّاً تعتبر متغيرات عامه , اي يمكننها استخدامها في اي وقت و في اي مكان في البرنامج . المتغيرات المحليه يمكن استخدامها فقط بداخل الاجراء و المتغيرات المحليه لا تأخذ مكانها من الذاكره إذا لم يبدأ الاجراء . يتم الاعلان عن المتغيرات المحليه تحت إعلان اسم الاجراء .
program Procedures;
procedure Print(s: String);
var
i: Integer;
begin
for i := 1 to 3 do
Writeln(s);
end;
begin
Print('Hello');
end.
الدوال :
الدوال تشبه الاجراءات بإستثناء انها تعيد قيمه . الكلمه function تستخدم بدل الكلمه procedure عند تعريف الدوال . لتعريف ما هو نوع البيانات للقيمه العائده يجب ان تستخدم النقطتين : و بعدها نوع البيانات و قبل النقطتين اسم الدالّه .
program Functions;
function Add(i, j:Integer): Integer;
begin
end;
begin
end.
عند اسناد قيمة الداله لمتغير سيجعل المتغير يساوي القيمه المعاده من الداله . اذا استخدمت الداله في شئ مع مثل Writeln سوف يتم طباعة قيمة العائد . لاسناد قيمة العائد انشئ اسم الداله تساوي القيمه التي تريدها ان تكون هي العائد.
program Functions;
var
Answer: Integer;
function Add(i, j:Integer): Integer;
begin
Add := i + j;
end;
begin
Answer := Add(1,2);
Writeln(Add(1,2));
end.
يمكنك الخروج من اجراء او داله في اي وقت بإستخدام الامر Exit .
program Procedures;
procedure GetName;
var
Name: String;
begin
Writeln('What is your name?');
Readln(Name);
if Name = '' then
Exit;
Writeln('Your name is ',Name);
end;
begin
GetName;
end.
الانواع :
من الممكن ان تقوم بإنشاء نوع متغيرات خاص بك بإستخدام الامر type .
النّوع الاول الذي يمكن ان تعمله هو نوع records (سجلات) . السجلات هي عباره عن متغيّران او اكثر من انواع مختله في واحد . على سبيل المثال ان يكون المستخدم طالب و لديه رقم و اسم الطالب . كيف سوف ننشئ نوعاً من البيانات :
program Types;
Type
Student = Record
Number:
Name;
end;
begin
end.
بعد ان تنشئ النوع يجّب ان تعلن عن متغير من النوع الذي قمنا بإنشاءه لكي يمكننا استخدامه :
program Types;
Type
StudentRecord = Record
Number:
Name;
end;
var
Student: StudentRecord;
begin
end.
للوصول إلى العدد و الاسم من السجل يجب ان تتبع الآتي :
program Types;
Type
StudentRecord = Record
Number:
Name;
end;
var
Student: StudentRecord;
begin
Student.Number := 12345;
Student.Name := 'John Smith';
end.
النوع الآخر هو set , النوع set ليس له فائده كبيره , و اي شئ يمكنك عمله مع set يمكن ان يعمل بسهوله في طريقة اخرى . على سبيل المثال لدينا نوع set يدعى Animal و المعلومات المخزنه dog , cat و rabbit :
program Types;
Type
Animal = set of (dog, cat, rabbit);
var
MyPet: Animal;
begin
MyPet := dog;
end.
لا يمكنك استخدام Readln او Writeln في sets . يمكنك ان تنشئ مدى من المتغيرات من 'a' إلى 'z' . في هذا النوع يمكنك ان تختبر إذا كان المتغير من ضمن المدى :
program Types;
uses
crt;
Type
Alpha = 'a'..'z';
var
Letter: set of Alpha;
c: Char;
begin
c := ReadKey;
if c in [Letter] then
Writeln('You entered a letter');
end.
التكرار يستخدم متى اردت اعادة تطبيق الشيفره اكثر من مره .
مثال : اذا اردنا ان نطبع الجمله Hello على الشاشه 10 مرات سوف نحتاج إلى كتابة الامر Writeln عشرة مرات . يمكنك بإستخدام التكرار ان تكتب الامر مره واحد و سوف يتم طباعة الجمله 10 مرات .
هناك 3 انواع من التكرار و هم for , while , repeat .
التكرار For :
هكذا يتم استخدام التكرار for
program Loops;
var
i: Integer;
begin
for i := 1 to 10 do
Writeln('Hello');
end.
اذا كنت تريد استخدام اكثر من امر بعد الكلمه for فيجب ان تضع الاوامر بوسط الامر begin و end
program Loops;
var
i: Integer;
begin
for i := 1 to 10 do
begin
Writeln('Hello');
Writeln('This is loop ',i);
end;
end.
التكرار While :
التكرار While يكرر الاوامر ما دام الشرط صحيح . طريقة الاستخدام
program Loops;
var
i: Integer;
begin
for i := 1 to 10 do
begin
Writeln('Hello');
Writeln('This is loop ',i);
end;
end.
التكرار Repeat until :
التكرار Repeat until يشبه التكرار while و لكنه يختبر الحاله في اسفل التكرار .
program Loops;
var
i: Integer;
begin
i := 0;
repeat
i := i + 1;
Writeln('Hello');
until i = 10;
end.
اذا كنت تريد استخدام اكثر من حاله في التكرار while او rapeat اضف الاقواس بين الحاله
program Loops;
var
i: Integer;
s: String;
begin
i := 0;
repeat
i := i + 1;
Write('Enter a number: ');
Readln(s);
until (i = 10) or (s = 0);
end.
Break و Continue :
الامر Break يخرج من من التكرار في اي وقت . في المثال التالي البرنامج لا يطبع اي شئ لانه يخرج من التكرار قبل تنفيذ العمليه.
program Loops;
var
i: Integer;
begin
i := 0;
repeat
i := i + 1;
Break;
Writeln(i);
until i = 10;
end.
الامر Continue يقفز إلى اعلى التكرار
program Loops;
var
i: Integer;
begin
i := 0;
repeat
i := i + 1;
Continue;
Writeln(i);
until i = 10;
end.
if then else :
الجمله الشرطيه if تسمح لك بإتخاذ القرارات في برنامجك . المثال التالي يسأل المستخدم ان يدخل رقم و يخبر المستخدم اذا كان الرقم اكبر من 5 .
program Decisions;
var
i: Integer;
begin
Writeln('Enter a number');
Readln(i);
if i > 5 then
Writeln('Greater than 5');
end.
و القرارات التي يمكنك اتخاذها مع الجمله الشرطيه if :
> : اكبر من < : اصغر من
>= : اكبر من او يساوي <= : اصغر من او يساوي
= : يساوي <> : لا يساوي
المثال السابق كان يخبرنا فقط اذا كان الرقم اكبر من 5 , اذا كنا نريد ان يخبرنا انه ليس اكبر من 5 يجب ان نستخدم else .
program Decisions;
var
i: Integer;
begin
Writeln('Enter a number');
Readln(i);
if i > 5 then
Writeln('Greater than 5')
else
Writeln('Not greater than 5');
end.
إذا كانت الحاله صحيحه (True) اختر الجزء الذي بعد then و اذا لم تكن صحيحه (False) اختر الجزء الذي بعد else . ذلك لان الحاله i > 5 تعتبر من النوع Boolean
program Decisions;
var
i: Integer;
b: Boolean;
begin
Writeln('Enter a number');
Readln(i);
b := i > 5;
end.
اذا كنت تريد ان تستخدم اكثر من حاله واحده يجب عليك ربط حاله بالاخرى . لربط الحالات يمكنك استخدام AND او OR . اذا استخدمت AND يجب ان تكون الحالتين صحيحتين و اذا استخدمت OR يجب ان تكون حاله واحده او الحالتين صحيحتين .
program Decisions;
var
i: Integer;
begin
Writeln('Enter a number');
Readln(i);
if (i > 1) and (i < 100) then
Writeln('The number is between 1 and 100');
end.
اذا كنت تريد كتابة امرين او اكثر بعد الجمله الشرطيه يجب استخدام begin و end; .
program Decisions;
var
i: Integer;
begin
Writeln('Enter a number');
Readln(i);
if i > 0 then
begin
Writeln('You entered ',i);
Writeln('It is a positive number');
end;
end.
كذلك يمكنك استخدام if داخل if
program Decisions;
var
i: Integer;
begin
Writeln('Enter a number');
Readln(i);
if i > 0 then
Writeln('Positive')
else
if i < 0 then
Writeln('Negative')
else
Writeln('Zero');
end.
Case :
الامر Case يشبه إلى حد ما if لكنه يقبل العديد من الحالات مره واحده
program Decisions;
uses
crt;
var
Choice: Char;
begin
Writeln('Which on of these do you like?');
Writeln('a - Apple:');
Writeln('b - Banana:');
Writeln('c - Carrot:');
Choice := ReadKey;
case Choice of
'a': Writeln('You like apples');
'b': Writeln('You like bananas');
'c': Writeln('You like carrots');
else;
Writeln('You made an invalid choice');
end;
end.
لا يوجد حالياً أي تعليق