العبارات الشرطية في لغة C: if، وelse، وعبارات if المتداخلة مع أمثلة
⚡ ملخص ذكي
تتحكم العبارات الشرطية في لغة C في تدفق البرنامج عن طريق تنفيذ كتل من التعليمات البرمجية فقط عندما يتم تقييم الشرط المختبر على أنه صحيح، مما يتيح اتخاذ القرارات من خلال هياكل if و if-else و nested و else-if المتدرجة.

ما هو البيان الشرطي في C؟
تُستخدم العبارات الشرطية في لغة البرمجة C لاتخاذ القرارات بناءً على الشروط. تُنفَّذ العبارات الشرطية بالتسلسل عندما لا يكون هناك شرط مُحدد لها. أما إذا وُضِعَ شرطٌ ما لمجموعة من العبارات، فقد يتغير مسار التنفيذ بناءً على النتيجة التي يُقيِّمها هذا الشرط. تُسمى هذه العملية في لغة C "اتخاذ القرار".
الغاء الاعجاب الحلقات في لغة C تلك التعليمات البرمجية المتكررة، والعبارات الشرطية تختار مسارًا واحدًا.
في برمجة "C" من الممكن إنشاء عبارات شرطية بمساعدة البنيتين التاليتين:
- إذا البيان
- عبارة If-else
ويطلق عليه أيضًا اسم التفرع حيث يقرر البرنامج أي بيان سيتم تنفيذه بناءً على نتيجة الشرط الذي تم تقييمه.
إذا البيان
إنها واحدة من العبارات الشرطية القوية. إذا كان البيان مسؤولاً عن تعديل تدفق تنفيذ البرنامج. إذا تم استخدام العبارة دائمًا مع الشرط. يتم تقييم الشرط أولاً قبل تنفيذ أي عبارة داخل نص If. بناء الجملة لبيان if هو كما يلي:
if (condition)
instruction;
يتم تقييم الحالة على أنها صحيحة أو خاطئة. صحيح دائمًا قيمة غير الصفر، وخطأ هو قيمة تحتوي على صفر. يمكن أن تكون التعليمات عبارة عن تعليمات واحدة أو مجموعة تعليمات برمجية محاطة بأقواس متعرجة { }.
يوضح البرنامج التالي استخدام بناء if في برمجة 'C':
#include<stdio.h> int main() { int num1=1; int num2=2; if(num1<num2) //test-condition { printf("num1 is smaller than num2"); } return 0; }
الإخراج:
num1 is smaller than num2
يوضح البرنامج أعلاه استخدام بناء if للتحقق من مساواة رقمين.
- في البرنامج أعلاه، قمنا بتهيئة متغيرين بقيمة num1 وnum2 بقيمة 1 و2 على التوالي.
- بعد ذلك، استخدمنا if مع تعبير اختباري للتحقق من الرقم الأصغر والرقم الأكبر. لقد استخدمنا تعبيرًا علائقيًا في if build. وبما أن قيمة num1 أصغر من num2، فسيتم تقييم الشرط على أنه صحيح.
- وبالتالي سيتم طباعة البيان داخل كتلة If. بعد ذلك، سيخرج عنصر التحكم من الكتلة وسيتم إنهاء البرنامج بنتيجة ناجحة.
قصصي Operaالاختصاصات
تحتوي لغة C على ستة عوامل علائقية يمكن استخدامها لصياغة تعبير منطقي لاتخاذ قرار واختبار الشروط، والذي يُرجع قيمة صحيحة أو خاطئة:
<— أقل من<=— أقل من أو يساوي>— أكبر من>=— أكبر من أو يساوي==— يساوي!=— لا يساوي
لاحظ أن اختبار المساواة (==) يختلف عن عامل التعيين (=) لأنه أحد أكثر المشاكل شيوعًا التي يواجهها المبرمج عند خلطهما.
فمثلا:
int x = 41; x =x+ 1; if (x == 42) { printf("You succeed!");}
الإخراج:
You succeed
ضع في اعتبارك أن الشرط الذي يتم تقييمه بقيمة غير الصفر يعتبر صحيحًا.
فمثلا:
int present = 1; if (present) printf("There is someone present in the classroom \n");
الإخراج:
There is someone present in the classroom
عبارة If-Else
عبارة if-else هي نسخة موسعة من عبارة if. ويكون الشكل العام لعبارة if-else كما يلي:
if (test-expression)
{
True block of statements
}
Else
{
False block of statements
}
Statements;
في هذا النوع من البنية، إذا كانت قيمة تعبير الاختبار صحيحة، فسيتم تنفيذ كتلة التعليمات الصحيحة. أما إذا كانت قيمة تعبير الاختبار خاطئة، فسيتم تنفيذ كتلة التعليمات الخاطئة. في كلتا الحالتين، بعد التنفيذ، سينتقل التحكم تلقائيًا إلى التعليمات التي تظهر خارج كتلة الشرط.
توضح البرامج التالية استخدام بناء if-else:
سنقوم بتهيئة متغير له بعض القيمة ونكتب برنامجًا لتحديد ما إذا كانت القيمة أقل من عشرة أو أكبر من عشرة.
لنبدأ.
#include<stdio.h> int main() { int num=19; if(num<10) { printf("The value is less than 10"); } else { printf("The value is greater than 10"); } return 0; }
الإخراج:
The value is greater than 10
- لقد قمنا بتهيئة متغير بقيمة 19. علينا معرفة ما إذا كان الرقم أكبر أو أصغر من 10 باستخدام برنامج "C". للقيام بذلك، استخدمنا بناء إذا-آخر.
- لقد قدمنا هنا شرطًا رقمًا<10 لأنه يتعين علينا مقارنة القيمة التي لدينا بالرقم 10.
- كما ترون، فإن الكتلة الأولى هي دائمًا كتلة حقيقية، مما يعني أنه إذا كانت قيمة تعبير الاختبار صحيحة، فسيتم تنفيذ الكتلة الأولى التي هي If.
- الكتلة الثانية هي كتلة أخرى. تحتوي هذه الكتلة على العبارات التي سيتم تنفيذها إذا أصبحت قيمة تعبير الاختبار خاطئة. في برنامجنا، قيمة num أكبر من عشرة وبالتالي يصبح شرط الاختبار خطأ ويتم تنفيذ الكتلة. وبالتالي، فإن مخرجاتنا ستكون من كتلة أخرى وهي "القيمة أكبر من 10". بعد إجراء if-else، سينتهي البرنامج بنتيجة ناجحة.
في البرمجة "C" يمكننا استخدام بنيات if-else المتعددة داخل بعضها البعض والتي يشار إليها باسم تداخل عبارات if-else.
التعبيرات الشرطية
هناك طريقة أخرى للتعبير عن جملة if-else وهي استخدام عامل ?:. في التعبير الشرطي، يرتبط عامل ?: بعبارة واحدة فقط، وهي if وelse.
فمثلا:
#include <stdio.h> int main() { int y; int x = 2; y = (x >= 6) ? 6 : x;/* This is equivalent to: if (x >= 5) y = 5; else y = x; */ printf("y =%d ",y); return 0;}
الإخراج:
y =2
عبارات If-else المتداخلة
عندما تكون هناك حاجة لسلسلة من القرارات، يتم استخدام if-else المتداخل. التداخل يعني استخدام بنية if-else داخل بنية أخرى.
دعونا نكتب برنامجًا لتوضيح استخدام if-else المتداخل.
#include<stdio.h> int main() { int num=1; if(num<10) { if(num==1) { printf("The value is:%d\n",num); } else { printf("The value is greater than 1"); } } else { printf("The value is greater than 10"); } return 0; }
الإخراج:
The value is:1
يتحقق البرنامج أعلاه مما إذا كان الرقم أقل أو أكبر من 10 ويطبع النتيجة باستخدام بنية if-else المتداخلة.
- أولاً، قمنا بتعريف متغير num بقيمة 1. ثم استخدمنا بناء if-else.
- في عبارة if-else الخارجية، يتحقق الشرط المُقدّم مما إذا كان العدد أقل من 10. إذا كان الشرط صحيحًا، فسيتم تنفيذ الكتلة الداخلية. في هذه الحالة، الشرط صحيح، وبالتالي تتم معالجة الكتلة الداخلية.
- في الكتلة الداخلية، لدينا شرطٌ آخر يتحقق مما إذا كان المتغير يحتوي على القيمة 1 أم لا. عندما يكون الشرط صحيحًا، يتم تنفيذ كتلة "إذا"، وإلا يتم تنفيذ كتلة "وإلا". في هذه الحالة، الشرط صحيح، لذا يتم تنفيذ كتلة "إذا" وتُطبع القيمة على شاشة الإخراج.
- سيقوم البرنامج أعلاه بطباعة قيمة متغير ما ثم يخرج بنجاح.
حاول تغيير قيمة متغير انظر كيف يتصرف البرنامج.
ملاحظة: في عبارات if-else المتداخلة، يجب توخي الحذر بشأن المسافة البادئة لأن هذه العملية تتضمن عدة عبارات if-else، مما يجعل من الصعب تحديد كل عبارة على حدة. تُسهّل المسافة البادئة الصحيحة قراءة البرنامج.
عبارات Else-if المتداخلة
يتم استخدام Nested else-if عندما تكون قرارات المسارات المتعددة مطلوبة.
بناء الجملة العام لكيفية إنشاء السلالم في البرمجة "C" هو كما يلي:
if (test - expression 1) { statement1; } else if (test - expression 2) { Statement2; } else if (test - expression 3) { Statement3; } else if (test - expression n) { Statement n; } else { default; } Statement x;
يُعرف هذا النوع من البنية باسم "سلم الشرط الضمني". تبدو هذه السلسلة عادةً كالسلم، ولذلك تُسمى أيضًا "سلم الشرط الضمني". تُقيّم تعابير الاختبار من الأعلى إلى الأسفل. عند العثور على تعبير اختبار صحيح، تُنفّذ العبارة المرتبطة به. وعندما تصبح جميع تعابير الاختبار n خاطئة، تُنفّذ عبارة الشرط الضمني الافتراضية.
دعونا نرى العمل الفعلي بمساعدة البرنامج.
#include<stdio.h> int main() { int marks=83; if(marks>75){ printf("First class"); } else if(marks>65){ printf("Second class"); } else if(marks>55){ printf("Third class"); } else{ printf("Fourth class"); } return 0; }
الإخراج:
First class
يقوم البرنامج أعلاه بطباعة الدرجة حسب العلامات المسجلة في الاختبار. لقد استخدمنا بناء سلم else-if في البرنامج أعلاه.
- لقد قمنا بتهيئة متغير بالعلامات. في هيكل سلم else-if، قمنا بتوفير شروط مختلفة.
- سيتم مقارنة القيمة من علامات المتغير مع الشرط الأول حيث أنه صحيح سيتم طباعة العبارة المرتبطة به على شاشة الإخراج.
- إذا تبين أن شرط الاختبار الأول خاطئ، فسيتم مقارنته بالشرط الثاني.
- ستستمر هذه العملية حتى يتم تقييم جميع التعبيرات، وإلا سيخرج التحكم من سلم else-if، وسيتم طباعة العبارة الافتراضية.
حاول تعديل القيمة ولاحظ التغيير في الإخراج.





