Lesson 5 if (expression)
Lesson 5 if (expression)
tech
Lesson 5 if
>#include <stdio.h
{ ) (int main
printf("Do you love programming? Enter a number bigger than
;)" !4 if yes
;int x
;)scanf("%d", &x
)if(x > 4
;)"printf("YAY! YOU LOVE PROGRAMMING! \n
else
;)"printf("oh no!\n
}
) قم بتجربة الكود بنفسك واضغط هنا (
في السطر األول ،نوجه المستخدم ببساطة إلى المدخالت التي يحتاجها هذا البرنامج.
ثم نقوم بحجز المتغير.
بعد ذلك ،نأخذ مدخالت من المستخدم ونخزنها.
في جزء الـ " ، " ifيمكنك رؤيته على أنه نوع من البوابة التي ال تفتح إال عند استيفاء
المعايير الموجودة داخل األقواس ( ) .في هذه الحالة ،إذا كان الرقم الذي تم إدخاله أكبر
من ، 4فإن البوابة "تفتح" وأي كود بعد سطرال ifيتم تنفيذه.
1
www.gammal.tech
لكن فى حالة لم يتم تحقق الشرط داخل ال ifحين ذلك يبحث البرنامج عن الخيارات
األخرى و التى تكون موجودة بعد كلمة elseو التى بمعنى وإال ،فنجد فى المثال السابق
إذا لم يتم استيفاء المعايير داخل ال ، ifينتقل إلى السطر التالي في الكود ،والذي يكون في
هذه الحالة " "elseفيجد داخله أمر طباعة أخر يقوم بتنفيذه و يطبع " " !oh no
الحظ عند التحقق من ما إذا كانت القيمتان على طرفى العالمة متساويان أم ال إستخدمنا (
== ) و ليس عالمة ( = ) واحدة ألن عالمة = الواحدة هكذا معناها ضع القيمة التى على
يمين العالمة داخل المتغير الذى على يسار العالمة ( مثلما عرفنا فى درس ال
) variables
لذلك فإن x = yمعناها ضع نفس قيمة المتغير yداخل المتغير xفلو كانت ال yتساوى
5إذا ال xأصبحت تساوى 5
أما x == yكما ذكرنا معناها إذا كانت قيمة xتساوى قيمة y
أمر : else
لنفترض أنك تريد شراء البقالة .أولويتك هي شراء األفوكادو ،لكن إذا نفد المخزون ،
اشتر الخوخ.
ِ ستشتري الخوخ بدالً منه .لذلك ،إذا كان هناك أفوكادو ،قم بشرائها ،وإال ،
2
www.gammal.tech
لذا فإن كلمة " "elseفي الكود السابق تعني أنه إذا لم يكن الرقم الذي تم إدخاله أكبر من 4
،أي أنه لم يتم استيفاء المعايير ،فسيتم تنفيذ الكود الموجود داخل ال elseو سيطبع
" !." Oh no
ملحوظة :ليس بالضرورة وجود elseبعد ،ifلكن تكتبها إذا كنت فى حاجة لذلك فى
البرنامج الخاص بك.
>#include <stdio.h
{ ) (int main
;)" ? printf("How much money do you have
;int x
;)scanf("%d", &x
)if(x >= 50
;)"printf(" Buy milk and eggs \n
)else if (x >= 20
;)"printf(" Buy milk only \n
)else if (x <= 10
;)"printf(" Buy eggs only \n
}
3
www.gammal.tech
نفهم من المثال السابق أن عندما يكون هناك أكثر من شرط و على أساسهم سيقوم البرنامج
بالتصرف بطريقة معينة ،نستخدم else ifمع ال ifاألساسية و سيتم تنفيذ األمر الضى
تحقق الشرط الخاص به.
( ألقوياء المالحظة ) ربما الحظت أننا قمنا بإستخدام عالمتان مختلفتان معا ( =< ) و (
=> ) فما معنى ذلك ؟
عالمة أكبر من أو يساوى ( =< ) معناها هل القيمة التى على اليسار أكبر من أو تساوى
القيمة على اليمين ؟
عالمة أصغر من أو يساوى ( => ) معناها هل القيمة التى على اليسار أصغر من أو
تساوى القيمة على اليمين ؟
يمكن أن تسأل نفسك ماذا لو أدخل شخص ما رقم ،70فى هذه الحالة الشرط األول و
الثانى متحققين ،حيث أن ال 70أكبر من ال 50و فى نفس الوقت أكبر من ،20إذا يجب
تنفيذ األوامر التى بداخلهما و يقوم البرنامج بطباعة الجملتين معا
و ذلك ألن ما إن تحقق شرط ما فى الشروط الموجودة لن ينظر البرنامج إلى باقى الشروط
طالما تم استخدام مصطلح ،elseبمعنى أنه كان من الممكن أن يتم طباعة الجملتين هكذا
إذا كان البرنامج على هذا الشكل :
>#include <stdio.h
{ ) (int main
;)" ? printf("How much money do you have
4
www.gammal.tech
;int x
;)scanf("%d", &x
)if(x >= 50
;)"printf(" Buy milk and eggs \n
)if (x >= 20
;)"printf(" Buy milk only \n
)if (x <= 10
;)"printf(" Buy eggs only \n
}
فى هذه الحالة كل ifمستقلة بذاتها ،فكلما يتحقق شرط ما سوف ينفذ البرنامج ما بداخل ال
ifو فى حالة تم إدخال رقم مثل 70سيتم طباعة الجمبة األولى و الثانية :
أخر أمر عليك معرفته حاليا أنه ليس دائما سيكون هناك أمر واحد فقط يتم تنفيذه داخل ال
ifأو ال elseو ال ، else ifإذا كان هناك أكثر من أمر يتم تنفيذه نستخدم األقواس
المموجة { } لنكتب بداخلها األوامر مثل :
>#include <stdio.h
{ ) (int main
;)" ? printf("How much money do you have
;int x
;)scanf("%d", &x
{ )if(x >= 50
5
www.gammal.tech
6