يتم الحل بجمع المعادلتبين لحذف 5 وإيجاد قيمة » ثم التعويض بقيمة * لإيجاد قيمة ز
أسئلة :
1 - ما الأخطاء في البرنامج التالي :
2 - اكتب برنامجاً يستقبل عددا حقيقياً يعبر عن المسافة بالكيلومترات ويحولها إلى أميال ثم
يقوم بطباعتها , مع العلم أن الميل الواحد - 160934 كيلومتر
الشروط والاختيارات
فلا يمكننا أن نعرف أيهما الأكبر وأيهما الأصغر , ولا يمكننا من برمجة برنامج لحل معادلة من
الدرجة الثانية وغير هذا كثير ,أي أن البرامج السابقة كانت تنفذ حسب تسلسل الجمل ولم يكن
بإمكاننا تنفيذ جمل وعدم تنفيذ أخرى حسب الظروف , ولكن مع جمل الشرط أو الاختيار يمكننا
ذلك , ومن ثم فإن الجمل الشرطية هي إحدى اساسيات البرمجة
الجمل الشرطية تقوم بفحص حلةٍ ما ثم تنفيذ جمل معينة بناء على تحقق الشرط أو عدمه , فمثلا
الجملة التالية جملة شرطية : إذا استمتعت بالبرمجة فستكون محترفاً , وهو يشبه الشرط
البرمجي : إذا كانت قيمة المتغير س أكبر من 10 فإن س تكون 10
ويمكن القول أن الجمل الشرطية تعطي الكومبيوتر جرعة من التعقل لأنها تمكنه من معرفة
أشياء بناء على الشروط وبالتالي يقوم بالعمل وفقا لها
جملة إنا أمعصسعا512 ]1 :
جملة إذا هي جملة الشرط الرئيسية في اللغة , وتركيبتها كالتالي :
إذا ( الشرط ) (2010110 )11
جملة أحت 52110
والشرط يكون عبارة عن تعبير منطقي ربما يحتوي على مؤثرات علائقية أو ومنطقية و ربما
لا, فمثلا (6<5) و (8--4) هي شروط
مثال :
البرنامج التالي يستقبل عدداً ويرى إن كان أكبر من 10
وقد ذكرنا من قبل أن كل تعبير منطقي قيمته إما 1 أو صفر وأن الصفر هي 1781588 وأن كل
رقم ما عدا الصفر هو 11116
وإن ما يفعله المترجم مع الشرط هو أن يحدد القيمة الناتجة عن التعبير المنطقي ثم يختبرها ,
فمثلاآ في البرنامج البرنامج السابق لنفترض أن قيمى 1 هي 15 , ولأنها أكبر من 10 فإن قيمة
التعبير هي 1 , و ما يحدث أن الشرط يصبح هكذا :
التالي في أي برنامج , وهو شرط لن يتحقق أبدآً :
أما الشرط التالي فهو متحقق دائماً :
كتلتتكلة 11116" ككانام (11)4
وإذا أريد تنفيذ أكثر من جملة إذ تحقق الشرط فإنه يتم كتابتهم بين قوسين منبعجين ليكونوا ما
الكتلة البرمجية 310216:
هي مجموعة جمل يتم تنفيذها معاً ويمكن أن تحتوي على كل عناصر اللغة , تبداً الكتلة بالقوس
تعريف متغير في كتلة فإنه غير معرف خارج مجالها ويسمى هذا المتغير بالمتغير المحلي لهذه
الكتلة , أما إذا عرف في مجال خارجي فسيكون معرقاً داخل المجالات الداخلية , والمثال التالي
حجر اللا
صحيح لأن المتغير معرف // :*>>011
خطأً لأن المتغير غير معرف في هذا المجال // 01101>>7
المتغير العام :
هو متغير يكون معرفاً خارج الدالة 10811 ويكون معرفاً في كل المجالات , ففي المثال التالي
المتغير # متغير عام :
ببككاناف
في مثالنا السابق كان البرنامج يطبع رسالة إذا كانت قيمة [ أكبر من 10 ولا قوم بشيئ إذا لم
تكن , وهذا يجعل البرنامج قاصرآً على العمل التام , وتكون جملة الشرط غير مرنة كما يراد ,
ولكن تركيبة إذا وإلا تعالج هذا القصور ,وصورتها كالتالي :
جملة 5801161
جملة أسعصواما5
أي أنه إذا تحقق الشرط فإن الجملة أو الجمل التي بعد ؟ سيتم تنفيذها , وإذا لم يتحقق فإن الجملة
أو الجمل التي بعد 6156 هي التي سيتم تنفيذها
بتححسن
* في الشروط المركبة أي التي تستخدم المعاملات المنطقية :ى» أو || فإنه لن يتم اختبار الجزء
(054:50 لن يكون صحيحاً إذا كانت قيمة نز غير صحيحة أي 6 ومن ثم لا يتم اختبار
قيمة 0 , وكذلك في الشرط ()||() لن يتم اختبار قيمة ي إذا كانت قيمة ( صحيحة 11116
ويجب الاستفادة من القصر لأنه يمنع أحياناً من انهيار البرنامج
أما لو بدلنا التعبيرين عن جانبي المعامل 88 كلتالي :
فإن البرنامج يصبح عرضة للانهيار ,وذلك لأنه إذا كانت قيمة | تساوي الصفر فسيتم محاولة
القسمة على الصفر وهي غير معرفة وتسبب في انهيار البرنامج أما في الشرط الأول فإن لم
تكن قيمة (ا أكبر من صفر فلن يتم اختبار التعبير 8960-0
جمل إذا المتداخلة :
يمكن أن تتواجد الجمل الشرطية واحدة داخل الأخرى مثل التالي :
أو بأي صورة أخرى , والمهم التنبه إلى أن كل 156 تتبع 1 الي قبلها مباشرة
في مثالنا السابق إذا لم يكن : أكبر من 10 فسيتم طباعة رسلة تقول أنه أصغر من أو يساوي
0, ولكننا إذا أردنا أن نعرف هل هو 10 أم أصغر منها فإننا نستخدم إذا المتداخلة كلتلي:
أمثلة :
1- طباعة أكبر قيمة وجملة تبين ذلك من بين ثلاث قيم :
ولححرك م ححوئتئعقا1ء
يلاحظ في 56[ الأخيرة أنه لم يكن بعدها شرط وذلك لأنه غير ضروري إذ أنه إن لم تكن
! هي الأكبر ولا زفلا بد أنها 1
مثال :
2 - برنامج يعرف هل القيمة المدخلة زوجية أم فرديةٌ :
فكرة التعرف على العدد هي أن العدد الزوجي إذا قُسم على 2 فإنه لا يوجد باقي قسمة أي صفر
أما العدد الفردي عند تقسيمه على 2 فلا بد أن يكون هناك باق , والبرنامج سيكون على الصورة
:7 18 " جحنه طامسساط > 0101
على 2 هو صفر ثم يقوم بواسطة معامل النفي ! بقلب الصفر واحدآً ليصبح الشرط متحقق ,
ومن ثم فإن 4 عدد زوجي , وتم كتابة القوسين بعد معامل النفي لأن أولوية معامل النفي أعلى
من أولوية معامل باقي القسمة
2- ما هي وظيفة البرنامج التالي :
باجححدين
:016 15 اعطسسياط 1116 "صكأانام
المفترض أن البرنامج يقوم بالتعرف على العدد المدخل هل هو موجب أم سالب أم يساوي
الصفر , ولكنه لن يفعل وسيقوم بطباعة أن العدد سالبٌ دائماً وإن لم يكن كذلك
لأن الشرط هو (1-0) وليس (0-)) , فالذي سيحدث أنه سيتم تخصيص الصفر للمتغير
1 ثم اختبارها , ولأنها صفر فلن يتم تنفيذ جملة الطباعة الأولى ولا الثانية , أي كأننا كتبنا
4- برنامج يقوم بطباعة اسم اللون حسب الحرف المدخل , فمثلآ إن كان دا أو 33 يطبع 31026
:83116 >>-011 (13ج || 'ماح )11
:1667" كان وح | 'وحج 1511
كان بالإمكان كتابة البرنامج بدون استخدام 156 كالتالي:
ولكن الكود الأول أفضل وذلك لأنه إذا تحقق الشرط الأول فلن يتم اختبار الثلاثة أسطر التالية ,
وإذا لم يتحقق الأول وتحقق الثاني فظن يتم اختبار السطرين الباقيين , أما في الكود الثاني فإن
تحقق الشرط الأول أم لم فإنه سيتم اختبار كل الشروط وهذا ببطئ من سرعة تنفيذ البرنامج
جملة التحويل 513161171 5771107 :