[[Template core/front/global/updateWarning is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]]
أواصل ما عزمت عليه وإن لم أر إقبالا على الدورة لأني مقتنع أنه سيأتي يوم ينتفع بها أحد ويكفيني ذلك ، فأنا نفسي قد انتفعت من دورات كتبت منذ عشر سنين وأدعو الله لأولئك الذين كتبوها أن يغفر لهم وذلك ما أرجوه أنا من قارئ منتفع من هذه الدورة
الدرس الثالث الشروط
من أهم مايميز برامج الحاسوب أو أي جهاز إلكتروني آخر، هو إمكانية تنفيذ إجراء معين عند حدوث شرط معين. مثلاً نجد أن في بعض السيارات يتم تأمين الأبواب عند بلوغها سرعة معينة وهي غير مؤمنة. ففي هذه الحالة الشرط مركب هو وصول سرعة معينة في وجود أبواب غير مؤمنة، أما التفرع أو الإجراء فهو عملية تأمين الأبواب. أما في حالة عدم توفر الشرط وهو (بلوغ سرعة معينة مع وجود حالة اﻷبواب غير مؤمنة) فإن الإجراء (تأمين اﻷبواب) لا يتم تنفيذه.
معظم السيارات والمصانع والغسالات الآلية وماشابهها من اﻷجهزة تعمل بمعالج صغير أو مايسمى micro controller وهي دائرة مدمجة(IC) يمكن برمجتها بواسطة الأسمبلي أو لغة سي. كذلك فإن بعض أنواع هذه المعالجات التي تعمل في مثل هذه اﻷنظمة المدمجة embedded systems مثل المعالج آرم ARM يمكن برمجتها بواسطة فري باسكال، وهي توجد في الموبايلات وبعض أجهزة كمبيوترات الإنترنت أو الألعاب وبعض الأجهزة الأخرى.
عبارة الشرط If condition
عبارة if الشرطية في لغة باسكال هي عبارة سهلة وواضحة
والكتابة العامة لها هي كالتالي
if <condition> then begin toDo; toDO; end else begin toDo; toDo; end;
ويمكن أن نستغني عن begin و end إذا كان جواب الشرط جملة واحدة هكذا
if <condition> then toDOelse toDo;
ومعنى هذا : إن كان هذا الشرط متحققا فافعل كذا وإلا فافعل كذا
وينبغي التنبه لأمر مهم وهو أن جملة الشرط وجوابها تعتبر جملة واحدة فلذلك لا تكون الفاصلة المنقوطة إلا في آخر الجملة اي بعد toDo الثانية
يا أخي ما هذا ألم تضع الفاصلة المنقوطة بعد toDo الأولى والثانية والثالثة والرابعة في العبارة الأولى ؟
في العبارة الأولى كان جواب الشرط هو
begin toDo; toDO; end
وهو مجموعة من الأوامر ينبغي أن نحدد نهاية كل أمر وهذه الأوامر محزمة في جملة begin و end فجواب الشرط هو هذه الجملة وهي كما ترى لم نختمها بالفاصلة المنقوطة اي لم نضع بعد end فاصلة منقوطة وإنما وضعناها بعد ختام الجملة الشرطية الكبيرة
إذا لم تفهم هذا فتجاوزه وستدركه مع مر الايام
. في المثال التالي سوف نستقبل من المستخدم درجة الحرارة ثم نحكم هل نقوم بتشغيل جهاز التكيف أم لا:
برنامج مكيف الهواء:
var Temp: Single;begin Write('Please enter Temperature of this room :'); Readln(Temp); if Temp > 28 then Writeln('Please turn on air-condition') else Writeln('Please turn off air-condition'); Write('Press enter key to close'); Readln;end.
نجد أن العبارات الجديدة هي: if then else وهي تعني: إذا كانت درجة الحرارة أكبر من 28 قم بكتابة السطر الأول (Please turn on air-condition) وإذا لم يتحقق الشرط (رقم أصغر أو يساوي 28) في هذه الحالة قم بكتابة السطر الثاني (Please turn off air-condition).
يمكن كتابة شروط متتالية كما في المثال التالي:
var Temp: Single;begin Write('Please enter Temperature of this room :'); Readln(Temp); if Temp > 28 then Writeln('Please turn on air-condition') else if Temp < 25 then Writeln('Please turn off air-condition') else Writeln('Do nothing');
قم بتنفيذ البرنامج أعلاه عدة مرات مُدخِلاً قيم تتراوح بين 20 و 30 وشاهد النتائج.
يمكن تعقيد البرنامج السابق ليصبح أكثر واقعية كما في المثال أدناه:
var Temp: Single; ACIsOn: Byte;begin Write('Please enter Temperature of this room : '); Readln(Temp); Write('Is air condition on? if it is (On) write 1, if it is (Off) write 0 : '); Readln(ACIsOn); if (ACIsOn = 1) and (Temp > 28) then Writeln('Do no thing, we still need cooling') else if (ACIsOn = 1) and (Temp < 25) then Writeln('Please turn off air-condition') else if (ACIsOn = 0) and (Temp < 25) then Writeln('Do nothing, it is still cold') else if (ACIsOn = 0) and (Temp > 28) then Writeln('Please turn on air-condition') else Writeln('Please enter valid values'); Write('Press enter key to close'); Readln;end.
نجد في المثال السابق وجود عبارة and وهي تعني إذا تحقق الشرطين الأول والثاني قم بتفيذ العبارة التالية.
وهذا هو تفسير البرنامج السابق:
إذا كان المكيف يعمل ودرجة الحرارة أكبر من 28 قم بكتابة: Do no thing, we still need cooling، أما إذا لم ينطبق هذا الشرط (else) فقم بالذهاب إلى الإجراء التالي:
إذا كان المكيف يعمل ودرجة الحرارة أقل من 25 قم بكتابة: Please turn off air-condition. أما إذا لم ينطبق الشرط فقم بالإجراء التالي:
إذا كان المكيف مغلق ودرجة الحرارة أقل من 25 قم بكتابة: Do nothing, it is still cold. أما إذا لم ينطبق الشرط فقم بالإجراء التالي:
إذا كان المكيف مغلق ودرجة الحرارة أكبر من 28 قم بكتابة: Please turn on air-condition.
- أما إذا لم ينطبق هذا الشرط فهوي يعني أن المستخدم قام بإدخال قيمة غير الـ 0 أو 1 في المتغير ACIsOn، وفي هذه الحالة نقوم بتنبيهه بإدخال قيم صحيحة: Please enter valid values.
إذا إفترضنا أن جهاز الحاسوب أو أي جهاز آخر يمكن تشغيل الباسكال به موصل بالمكيف وأن هناك إجراء لفتح المكيف وآخر لغلقه في هذه الحال يمكننا إستبدال إجراء Writeln بإجراءات حقيقية تقوم بتنفيذ الفتح والإغلاق. في هذه الحالة يجب زيادة الشروط لتصبح أكثر تعقيداً تحسباً للمدة الزمنية التي عمل بها المكيف، كذلك يمكن الأخذ في الإعتبار أن الوقت هو في الصباح أم المساء.
برنامج الأوزان
في المثال التالي يقوم المستخدم بإدخال طوله بالأمتار ووزنه بالكيلوجرام. يقوم البرنامج بحساب الوزن المثالي بناءً على طول المستخدم. ويقارن الوزن المثالي بالوزن الحالي للمستخدم، ويطبع النتائج حسباً لفرق الوزن:
program Weight;{$mode objfpc}{$H+}uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Classes, SysUtils { you can add units after this };var Height: Double; Weight: Double; IdealWeight: Double;begin Write('What is your height in meters (e.g. 1.8 meter) : '); Readln(Height); Write('What is your weight in kilos : '); Readln(Weight); if Height >= 1.4 then IdealWeight:= (Height - 1) * 100 else IdealWeight:= Height * 20; if (Height < 0.4) or (Height > 2.5) or (Weight < 3) or (Weight > 200) then begin Writeln('Invalid values'); Writeln('Please enter proper values'); end else if IdealWeight = Weight then Writeln('Your wight is suitable') else if IdealWeight > Weight then Writeln('You are under weight, you need more ', Format('%.2f', [IdealWeight - Weight]), ' Kilos') else Writeln('You are over weight, you need to lose ', Format('%.2f', [Weight - IdealWeight]), ' Kilos'); Write('Press enter key to close'); Readln;end.
في المثال السابق نجد عدة أشياء جديدة:
النوع Double: وهو مشابه للنوع Single فكلاهما عدد حقيقي، أو مايسمى بالرقم ذو الفاصلة العائمة (floating point number). والنوع Double هو رقم حقيقي ذو دقة مضاعفة، وهو يحتل مساحة ضعف النوع single حيث أن الأخير يحتل مساحة 4 بايت من الذاكرة أما الـ Double فهو يحتاج إلى 8 بايت من الذاكرة لتخزينه.
الشي الثاني هو إستخدامنا للكلمة Or، وهي بخلاف And ومن معناها تفيد تحقيق أحد الشروط. مثلاً إذا تحقق الشرط الأول (Height < 0.4) فإن البرنامج يقوم بتنفيذ إجراء الشرط، ولو لم يتحقق سوف يتم إختبار الشرط الثاني، فإذ تحقق تم تنفيذ إجراء الشرط، وإذا لم يتحقق الشرط الثاني تم إختبار الشرط الثالث وهكذا..
الشيء الثالث هو إستخدامنا لعبارتي begin و end بعد عبارة if وذلك لأن إجراء الشرط لابد أن يكون عبارة واحدة، وفي هذه الحالة إحتجنا لأن نقوم بتنفيذ عبارتين وهما:
Writeln('Invalid values'); Writeln('Please enter proper values');
لذلك إستخدمنا begin end لتحويل العبارتين إلى كتلة واحدة أو عبارة واحدة تصلح لأن تكون إجراء الشرط:
if (Height < 0.4) or (Height > 2.5) or (Weight < 3) or (Weight > 200) then begin Writeln('Invalid values'); Writeln('Please enter proper values'); end
الشيء الرابع هو إستخدام الدالة Format. ولا يمكن إستخدام هذه الدالة إلا بعد إضافة الوحدة SysUtils
في عبارة Uses، والوحدة SysUtils هي عبارة عن مكتبة تحتوي على الإجراء Format، وسوف نقوم بتفصيل الوحدات أو المكتبات والإجراءأت في فصل البرمجة الهيكلية إن شاء الله. هذه الدالة تقوم بإظهار المتغيرات بشكل معين، مثلاً في المثال السابق تقوم بإظهار العدد الحقيقي في شكل رقم يحتوي على فاصلة عشرية ذات خانتين كما يظهر في التنفيذ. مثلاً
What is your height in meters (e.g. 1.8 meter) : 1.8
What is your weight in kilos : 60.2
You are under weight, you need more 19.80 Kilos
ملحوظة: حساب الوزن المثالي في البرنامج السابق ربما تكون غير دقيقة. ولمزيد من الدقة يمكن البحث عن الموضوع في الإنترنت. والمقصود بهذا البرنامج كيفية وضع حلول برمجية لمثل هذه الأمثلة. فلابد للمبرمج أن يعرف كيف يضع حل لمسألة معينة، لأن المعرفة بالبرمجة وأدواتها لاتكفي لأن يصبح المبرمج قادر على تحليل وتصميم برامج يعتمد عليها، لذلك لابد من الدخول في تفاصيل الموضوع الذي يتم تحليله قبل وضع البرنامج المناسب.
عبارة الشرط Case .. of
والعبارة العامة هي
Case <variable> of <valeur1> : {code..} <valeur2> : {code..} ...End; //End Case
ينبغي أن يكون variable معرفا في قسم الإعلان عن المتغيرات
وينبغي أن يكون إما integer او char ولا يقبل أي قيمة أخرى
وينبغي أن يكون valeur1...من نفس نوع variable
وبالمثال يتضح المقال
مثلاً نريد إستقبال طلب للزبون في مطعم، والوجبات مرقمة في قائمة رئيسية، ونريد من الزبون إختيار رقم الطلب كما في المثال التالي:
برنامج المطعم
var Meal: Byte;begin Writeln('Welcome to Pascal Restaurant. Please select your order'); Writeln('1 - Chicken (10 Geneh)'); Writeln('2 - Fish (7 Geneh)'); Writeln('3 - Meat (8 Geneh)'); Writeln('4 – Salad (2 Geneh)'); Writeln('5 - Orange Juice (1 Geneh)'); Writeln('6 - Milk (1 Geneh)'); Writeln; Write('Please enter your selection: '); Readln(Meal); case Meal of 1: Writeln('You have ordered Chicken, ', 'this will take 15 minutes'); 2: Writeln('You have ordered Fish, this will take 12 minutes'); 3: Writeln('You have ordered meat, this will take 18 minutes'); 4: Writeln('You have ordered Salad, this will take 5 minutes'); 5: Writeln('You have ordered Orange juice, ', 'this will take 2 minutes'); 6: Writeln('You have ordered Milk, this will take 1 minute'); else Writeln('Wrong entry'); end; Write('Press enter key to close'); Readln;end.
تنبيه مهم قم بكتابة البرنامج من جديد ولا تعتمد على النسخ واللصق ولا تقل كما يقول الكسالى هذا سهل هذا واضح
فبالكتابة تظهر أخطاؤك ومن أخطائك تتعلم
إذا أردنا عمل نفس البرنامج بإستخدام عبارة If فإن البرنامج سوف يكون أكثر تعقيداً ويحتوي على تكرار.
برنامج المطعم بإستخدام عبارة if
var Meal: Byte;begin Writeln('Welcome to Pascal restaurant, please select your meal'); Writeln('1 - Chicken (10 Geneh)'); Writeln('2 - Fish (7 Geneh)'); Writeln('3 - Meat (8 Geneh)'); Writeln('4 - Salad (2 Geneh)'); Writeln('5 - Orange Juice (1 Geneh)'); Writeln('6 - Milk (1 Geneh)'); Writeln; Write('Please enter your selection: '); Readln(Meal); if Meal = 1 then Writeln('You have ordered Chicken, this will take 15 minutes') else if Meal = 2 then Writeln('You have ordered Fish, this will take 12 minutes') else if Meal = 3 then Writeln('You have ordered meat, this will take 18 minutes') else if Meal = 4 then Writeln('You have ordered Salad, this will take 5 minutes') else if Meal = 5 then Writeln('You have ordered Orange juice, ', 'this will take 2 minutes') else if Meal = 6 then Writeln('You have ordered Milk, this will take 1 minute') else Writeln('Wrong entry'); Write('Press enter key to close'); Readln;end.
يمكن كذلك إستخدام مدى للأرقام بعبارة case. في المثال التالي يقوم البرنامج بتقييم درجة الطالب:
برنامج درجة الطالب
var Mark: Integer;begin Write('Please enter student mark: '); Readln(Mark); Writeln; case Mark of 0 .. 39 : Writeln('Student grade is: F'); 40 .. 49: Writeln('Student grade is: E'); 50 .. 59: Writeln('Student grade is: D'); 60 .. 69: Writeln('Student grade is: C'); 70 .. 84: Writeln('Student grade is: B'); 85 .. 100: Writeln('Student grade is: A'); else Writeln('Wrong mark'); end; Write('Press enter key to close'); Readln;end.
نلاحظ في البرنامج السابق أننا إستخدما مدى مثل 85 .. 100 أي أن الشرط هو أن تكون الدرجة بين هاتين القيمتين.
عبارة case لاتعمل إلا مع المتغيرات المعدودة مثل الأعداد الصحيحة أو الحروف، لكنها لاتعمل مع بعض الأنواع الأخرى مثل الأعداد الحقيقية والمقاطع.
برنامج لوحة المفاتيح
في البرنامج التالي نقوم بإستخدام نوع المتغيرات الحرفية char وذلك لإستقبال حرف من لوحة المفاتيح ومعرفة موقعه:
var Key: Char;begin Write('Please enter any English letter: '); Readln(Key); Writeln; case Key of 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p': Writeln('This is in the second row in keyboard'); 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l': Writeln('This is in the third row in keyboard'); 'z', 'x', 'c', 'v', 'b', 'n', 'm': Writeln('This is in the fourth row in keyboard'); else Writeln('Unknown character'); end; Write('Press enter key to close'); Readln;end.
نلاحظ في المثال السابق أنا لم نستخدم المدى لكن إستخدمنا تعدد الخيارات، مثلاً إذا إخترنا العبارة الأخيرة:
'z', 'x', 'c', 'v', 'b', 'n', 'm':
فهي تعني إذا كانت قيمة key هي z أو x أو c أو v أو b أو n أو m قم بتنفيذ إجراء الشرط.
يمكن كذلك المزج بين صيغة المدى وتعدد الخيارات مثل:
'a' .. 'd', 'x', 'y', 'z':
وهي تعني إختبار الحرف إذا كان في المدى من الحرف a إلى الحرف d أو كان هو الحرف x أو y إو z قم بتنفيذ الشرط.
=================================================
الدورة منقولة من كتاب الأستاذ الفاضل معتز عبد العظيم وما تراه باللون الأخضر فمن زياداتي
تم النشر منذ (معدل)
بسم الله الرحمن الرحيم
أواصل ما عزمت عليه وإن لم أر إقبالا على الدورة لأني مقتنع أنه سيأتي يوم ينتفع بها أحد ويكفيني ذلك ، فأنا نفسي قد انتفعت من دورات كتبت منذ عشر سنين وأدعو الله لأولئك الذين كتبوها أن يغفر لهم وذلك ما أرجوه أنا من قارئ منتفع من هذه الدورة
الدرس الثالث الشروط
من أهم مايميز برامج الحاسوب أو أي جهاز إلكتروني آخر، هو إمكانية تنفيذ إجراء معين عند حدوث شرط معين. مثلاً نجد أن في بعض السيارات يتم تأمين الأبواب عند بلوغها سرعة معينة وهي غير مؤمنة. ففي هذه الحالة الشرط مركب هو وصول سرعة معينة في وجود أبواب غير مؤمنة، أما التفرع أو الإجراء فهو عملية تأمين الأبواب. أما في حالة عدم توفر الشرط وهو (بلوغ سرعة معينة مع وجود حالة اﻷبواب غير مؤمنة) فإن الإجراء (تأمين اﻷبواب) لا يتم تنفيذه.
معظم السيارات والمصانع والغسالات الآلية وماشابهها من اﻷجهزة تعمل بمعالج صغير أو مايسمى micro controller وهي دائرة مدمجة(IC) يمكن برمجتها بواسطة الأسمبلي أو لغة سي. كذلك فإن بعض أنواع هذه المعالجات التي تعمل في مثل هذه اﻷنظمة المدمجة embedded systems مثل المعالج آرم ARM يمكن برمجتها بواسطة فري باسكال، وهي توجد في الموبايلات وبعض أجهزة كمبيوترات الإنترنت أو الألعاب وبعض الأجهزة الأخرى.
عبارة الشرط If condition
عبارة if الشرطية في لغة باسكال هي عبارة سهلة وواضحة
والكتابة العامة لها هي كالتالي
ويمكن أن نستغني عن begin و end إذا كان جواب الشرط جملة واحدة هكذا
ومعنى هذا : إن كان هذا الشرط متحققا فافعل كذا وإلا فافعل كذا
وينبغي التنبه لأمر مهم وهو أن جملة الشرط وجوابها تعتبر جملة واحدة فلذلك لا تكون الفاصلة المنقوطة إلا في آخر الجملة اي بعد toDo الثانية
يا أخي ما هذا ألم تضع الفاصلة المنقوطة بعد toDo الأولى والثانية والثالثة والرابعة في العبارة الأولى ؟
في العبارة الأولى كان جواب الشرط هو
وهو مجموعة من الأوامر ينبغي أن نحدد نهاية كل أمر وهذه الأوامر محزمة في جملة begin و end فجواب الشرط هو هذه الجملة وهي كما ترى لم نختمها بالفاصلة المنقوطة اي لم نضع بعد end فاصلة منقوطة وإنما وضعناها بعد ختام الجملة الشرطية الكبيرة
إذا لم تفهم هذا فتجاوزه وستدركه مع مر الايام
. في المثال التالي سوف نستقبل من المستخدم درجة الحرارة ثم نحكم هل نقوم بتشغيل جهاز التكيف أم لا:
برنامج مكيف الهواء:
نجد أن العبارات الجديدة هي: if then else وهي تعني: إذا كانت درجة الحرارة أكبر من 28 قم بكتابة السطر الأول (Please turn on air-condition) وإذا لم يتحقق الشرط (رقم أصغر أو يساوي 28) في هذه الحالة قم بكتابة السطر الثاني (Please turn off air-condition).
يمكن كتابة شروط متتالية كما في المثال التالي:
قم بتنفيذ البرنامج أعلاه عدة مرات مُدخِلاً قيم تتراوح بين 20 و 30 وشاهد النتائج.
يمكن تعقيد البرنامج السابق ليصبح أكثر واقعية كما في المثال أدناه:
نجد في المثال السابق وجود عبارة and وهي تعني إذا تحقق الشرطين الأول والثاني قم بتفيذ العبارة التالية.
وهذا هو تفسير البرنامج السابق:
إذا كان المكيف يعمل ودرجة الحرارة أكبر من 28 قم بكتابة: Do no thing, we still need cooling، أما إذا لم ينطبق هذا الشرط (else) فقم بالذهاب إلى الإجراء التالي:
إذا كان المكيف يعمل ودرجة الحرارة أقل من 25 قم بكتابة: Please turn off air-condition. أما إذا لم ينطبق الشرط فقم بالإجراء التالي:
إذا كان المكيف مغلق ودرجة الحرارة أقل من 25 قم بكتابة: Do nothing, it is still cold. أما إذا لم ينطبق الشرط فقم بالإجراء التالي:
إذا كان المكيف مغلق ودرجة الحرارة أكبر من 28 قم بكتابة: Please turn on air-condition.
- أما إذا لم ينطبق هذا الشرط فهوي يعني أن المستخدم قام بإدخال قيمة غير الـ 0 أو 1 في المتغير ACIsOn، وفي هذه الحالة نقوم بتنبيهه بإدخال قيم صحيحة: Please enter valid values.
إذا إفترضنا أن جهاز الحاسوب أو أي جهاز آخر يمكن تشغيل الباسكال به موصل بالمكيف وأن هناك إجراء لفتح المكيف وآخر لغلقه في هذه الحال يمكننا إستبدال إجراء Writeln بإجراءات حقيقية تقوم بتنفيذ الفتح والإغلاق. في هذه الحالة يجب زيادة الشروط لتصبح أكثر تعقيداً تحسباً للمدة الزمنية التي عمل بها المكيف، كذلك يمكن الأخذ في الإعتبار أن الوقت هو في الصباح أم المساء.
برنامج الأوزان
في المثال التالي يقوم المستخدم بإدخال طوله بالأمتار ووزنه بالكيلوجرام. يقوم البرنامج بحساب الوزن المثالي بناءً على طول المستخدم. ويقارن الوزن المثالي بالوزن الحالي للمستخدم، ويطبع النتائج حسباً لفرق الوزن:
في المثال السابق نجد عدة أشياء جديدة:
النوع Double: وهو مشابه للنوع Single فكلاهما عدد حقيقي، أو مايسمى بالرقم ذو الفاصلة العائمة (floating point number). والنوع Double هو رقم حقيقي ذو دقة مضاعفة، وهو يحتل مساحة ضعف النوع single حيث أن الأخير يحتل مساحة 4 بايت من الذاكرة أما الـ Double فهو يحتاج إلى 8 بايت من الذاكرة لتخزينه.
الشي الثاني هو إستخدامنا للكلمة Or، وهي بخلاف And ومن معناها تفيد تحقيق أحد الشروط. مثلاً إذا تحقق الشرط الأول (Height < 0.4) فإن البرنامج يقوم بتنفيذ إجراء الشرط، ولو لم يتحقق سوف يتم إختبار الشرط الثاني، فإذ تحقق تم تنفيذ إجراء الشرط، وإذا لم يتحقق الشرط الثاني تم إختبار الشرط الثالث وهكذا..
الشيء الثالث هو إستخدامنا لعبارتي begin و end بعد عبارة if وذلك لأن إجراء الشرط لابد أن يكون عبارة واحدة، وفي هذه الحالة إحتجنا لأن نقوم بتنفيذ عبارتين وهما:
لذلك إستخدمنا begin end لتحويل العبارتين إلى كتلة واحدة أو عبارة واحدة تصلح لأن تكون إجراء الشرط:
الشيء الرابع هو إستخدام الدالة Format. ولا يمكن إستخدام هذه الدالة إلا بعد إضافة الوحدة SysUtils
في عبارة Uses، والوحدة SysUtils هي عبارة عن مكتبة تحتوي على الإجراء Format، وسوف نقوم بتفصيل الوحدات أو المكتبات والإجراءأت في فصل البرمجة الهيكلية إن شاء الله. هذه الدالة تقوم بإظهار المتغيرات بشكل معين، مثلاً في المثال السابق تقوم بإظهار العدد الحقيقي في شكل رقم يحتوي على فاصلة عشرية ذات خانتين كما يظهر في التنفيذ. مثلاً
What is your height in meters (e.g. 1.8 meter) : 1.8
What is your weight in kilos : 60.2
You are under weight, you need more 19.80 Kilos
ملحوظة: حساب الوزن المثالي في البرنامج السابق ربما تكون غير دقيقة. ولمزيد من الدقة يمكن البحث عن الموضوع في الإنترنت. والمقصود بهذا البرنامج كيفية وضع حلول برمجية لمثل هذه الأمثلة. فلابد للمبرمج أن يعرف كيف يضع حل لمسألة معينة، لأن المعرفة بالبرمجة وأدواتها لاتكفي لأن يصبح المبرمج قادر على تحليل وتصميم برامج يعتمد عليها، لذلك لابد من الدخول في تفاصيل الموضوع الذي يتم تحليله قبل وضع البرنامج المناسب.
عبارة الشرط Case .. of
والعبارة العامة هي
ينبغي أن يكون variable معرفا في قسم الإعلان عن المتغيرات
وينبغي أن يكون إما integer او char ولا يقبل أي قيمة أخرى
وينبغي أن يكون valeur1...من نفس نوع variable
وبالمثال يتضح المقال
مثلاً نريد إستقبال طلب للزبون في مطعم، والوجبات مرقمة في قائمة رئيسية، ونريد من الزبون إختيار رقم الطلب كما في المثال التالي:
برنامج المطعم
تنبيه مهم قم بكتابة البرنامج من جديد ولا تعتمد على النسخ واللصق ولا تقل كما يقول الكسالى هذا سهل هذا واضح
فبالكتابة تظهر أخطاؤك ومن أخطائك تتعلم
إذا أردنا عمل نفس البرنامج بإستخدام عبارة If فإن البرنامج سوف يكون أكثر تعقيداً ويحتوي على تكرار.
برنامج المطعم بإستخدام عبارة if
يمكن كذلك إستخدام مدى للأرقام بعبارة case. في المثال التالي يقوم البرنامج بتقييم درجة الطالب:
برنامج درجة الطالب
نلاحظ في البرنامج السابق أننا إستخدما مدى مثل 85 .. 100 أي أن الشرط هو أن تكون الدرجة بين هاتين القيمتين.
عبارة case لاتعمل إلا مع المتغيرات المعدودة مثل الأعداد الصحيحة أو الحروف، لكنها لاتعمل مع بعض الأنواع الأخرى مثل الأعداد الحقيقية والمقاطع.
برنامج لوحة المفاتيح
في البرنامج التالي نقوم بإستخدام نوع المتغيرات الحرفية char وذلك لإستقبال حرف من لوحة المفاتيح ومعرفة موقعه:
نلاحظ في المثال السابق أنا لم نستخدم المدى لكن إستخدمنا تعدد الخيارات، مثلاً إذا إخترنا العبارة الأخيرة:
فهي تعني إذا كانت قيمة key هي z أو x أو c أو v أو b أو n أو m قم بتنفيذ إجراء الشرط.
يمكن كذلك المزج بين صيغة المدى وتعدد الخيارات مثل:
وهي تعني إختبار الحرف إذا كان في المدى من الحرف a إلى الحرف d أو كان هو الحرف x أو y إو z قم بتنفيذ الشرط.
=================================================
الدورة منقولة من كتاب الأستاذ الفاضل معتز عبد العظيم وما تراه باللون الأخضر فمن زياداتي
تم تعديل بواسطه أحمد أبو عبد البرشارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه