الفصل الثالث
Pascal بتقدملك طرق للتحكم فى برنامج وإختبارات -مثل كل اللغات- خلال البرنامج مثل if, then ,elseif, else, case, .. etc.
if then
if_suite
تابع المثال التالى فى حال إذا كان الName الذى هيدخله المستخدم قيمته ahmed سينفذ الBlock -مجموعة الأسطر-التالية ل then وإلا لن يتم تنفيذ شئ -لأننا لم نخبر برنامجنا إن يعمل شئ معين لو Name قيمته ليست احمد 🙂
var Name: String; begin Write('Enter your name: '); ReadLn(name); if name = 'ahmed' then WriteLn('Access Granted.'); {else WriteLn('Access Denied.'); } ReadLn(); end.
ملحوظة:
:= -> لإسناد قيمة
= -> لإختبار قيمة
X := 5;
هنا اعطينا المتغير X ال 5
x = 5;
x = 5
هنا بنختبر هل ال او لأ!
if then
if_suite
else
else_suite
var Name: String; begin Write('Enter your name: '); ReadLn(name); if name = 'ahmed' then WriteLn('Access Granted.') else WriteLn('Access Denied.'); ReadLn(); end.
لاحظ دور else هنا .. إن إذا تم إدخال اى قيمة غير ahmed هيتنفذ الBlock التابع ل else وهو Access Denied!
var age: Integer; begin WriteLn('Enter your age: '); ReadLn(age); if age < 18 then WriteLn('Not old enough for driving test.'); else WriteLn('GOOD LUCK!'); end. [/sourcecode] لو العمر اقل من 18 سينفذ هذا الblock [sourcecode lang="delphi"]WriteLn('Not old enough for driving test.'); [/sourcecode] لو لأ سيتنفذ [sourcecode lang="delphi"]WriteLn('GOOD LUCK!'); [/sourcecode] <strong>if/else if/ else</strong> if then <em>if_suite</em> elseif then <em>elseif_suite</em> else <em>else_suite</em> تابع المثال التالى var Number: Integer; begin Write('Enter a number in range 1, 5: '); ReadLn(Number); if Number=1 then WriteLn('One!') else if Number=2 then WriteLn('Two!') else if Number=3 then WriteLn('Three!') else if Number=4 then WriteLn('Four!') else if Number=5 then WriteLn('Five!') else WriteLn('It is not in range 1 to 5'); ReadLn(); end.
لاحظ طالما نقوم بعمل Fall فالأفضل نستخدم switch statement كالتالى
var dayNum: Integer; begin Write('Enter: '); ReadLn(dayNum); case dayNum of 1: WriteLn('Sunday'); 2: WriteLn('Monday'); 3: WriteLn('Tuesday'); 4: WriteLn('Wednesday'); 5: WriteLn('Thursday'); 6: WriteLn('Friday'); 7: WriteLn('Saturday'); else //default begin WriteLn('U R on EARTH!'); end; end; ReadLn; end.
لاحظ هنا اننا نعمل check على dayNum ونرى اى حالة ستتوافق معاه…
نقدر نستخدم case مع ranges -واضح من كلامنا ان range معناها range 😀
ال range هو الفترة (مثلا 1..5 هو الأرقام من 1 الى 5)
var Age: Integer; begin Write('Age? '); ReadLn(Age); case Age of 1..5 : WriteLn('Cute Baby!'); 6..10: WriteLn('Mean kid!'); 11..14: WriteLn('Boy!'); 15..18: WriteLn('Teen!'); 19..23: WriteLn('Adult!'); 24..40: WriteLn('Regular guy'); 41..60: WriteLn('Gettin older!'); else begin WriteLn('R U Human?'); end; end;
التكرار
اى Loop عبارة عن تكرار suite او مجموعة من ال statements ل
1 – عدد من المرات
2- حتى يتحقق شرط ما
طبعا كلام عجيب 🙂
التكرار لعدد من المرات معناه اقرب مثال .. نفذ 100 تمرين ضغط !
تكرار لحد ما شرط يتحقق مثلا
طالما جائع كلّ
while do
loop_suite
while i = 0 do begin WriteLn(i); Dec(i); // i := i - 1; end;
طالما i اكبر من او تساوى صفر سينفذ ال Block التالى
begin WriteLn(i); Dec(i); // i := i - 1; end;
فى loop تانية وهى
repeat loop_suite until ;
الفرق هو إن ال loop_suite بتتنفذ قبل مايتم إختبارها.. فعشان كدا ال loop_suite لازم تتنفذ ولو مرة واحدة على الأقل!
فى loop هنشوفها كتير وهى ال for loop وهى كالتالى
تصاعدية
for to do for_suite
تنازلية
for downto do for_suite
var counter: Integer; begin for counter := 0 to 10 do begin WriteLn('Counter: #', counter); end; ReadLn; end.
تنبيه: إذا معتاد على
for(start; cond; inc){ for_suite }
فالأفضل هنا إنك تستخدم ال while loop لتكون اسهل فى التحكم فى مقدار ال step -الخطوة-
أكتوبر 19, 2009 عند 3:09 م |
اشكرك اخي الكريم على التدوينة … الرائعة …
و من أهم الأمور فهم المتحكمات .. افدتنا ..
بارك الله فيك ..