التحكم في تدفق البرنامج يُعتبر جزءاً أساسياً من البرمجة حيث يحدد كيفية تنفيذ الأوامر بناءً على شروط معينة. في C++، هناك طريقتان أساسيتان لتنفيذ هذه العملية: الشرطيات (if, else, else if) و جملة switch-case. من خلال فهم كيفية عمل هذه الجمل، يمكننا إنشاء برامج أكثر تعقيدًا وذكاءً.
1. جملة if و else و else if
1.1 جملة if
تُستخدم جملة if لتنفيذ كتلة من الكود إذا تحقق شرط معين. وإذا لم يتحقق الشرط، يتم تجاهل الكود داخل if.
بنية جملة if الأساسية:
if (الشرط) {
// الكود الذي سيتم تنفيذه إذا تحقق الشرط
}
مثال:
#include <iostream>
using namespace std;
int main() {
int age;
cout << "أدخل عمرك: ";
cin >> age;
if (age >= 18) {
cout << "يمكنك التصويت!" << endl;
}
return 0;
}
في هذا المثال، إذا أدخل المستخدم عمراً أكبر من أو يساوي 18، سيتم طباعة “يمكنك التصويت!” على الشاشة.
1.2 جملة else
إذا كان الشرط في جملة if غير صحيح، يمكن استخدام جملة else لتنفيذ كود بديل.
بنية جملة else:
if (الشرط) {
// الكود الذي سيتم تنفيذه إذا تحقق الشرط
} else {
// الكود الذي سيتم تنفيذه إذا لم يتحقق الشرط
}
مثال:
#include <iostream>
using namespace std;
int main() {
int age;
cout << "أدخل عمرك: ";
cin >> age;
if (age >= 18) {
cout << "يمكنك التصويت!" << endl;
} else {
cout << "لا يمكنك التصويت بعد!" << endl;
}
return 0;
}
النتيجة إذا كانت قيمة age أقل من 18:
لا يمكنك التصويت بعد!
1.3 جملة else if
في حالة وجود عدة شروط نريد التحقق منها، يمكننا استخدام else if للفحص بين أكثر من شرط. هي بمثابة سلسلة من if يتبعها else في النهاية.
بنية جملة else if:
if (الشرط1) {
// الكود الذي سيتم تنفيذه إذا تحقق الشرط1
} else if (الشرط2) {
// الكود الذي سيتم تنفيذه إذا تحقق الشرط2
} else {
// الكود الذي سيتم تنفيذه إذا لم يتحقق أي من الشروط
}
مثال:
#include <iostream>
using namespace std;
int main() {
int grade;
cout << "أدخل درجتك: ";
cin >> grade;
if (grade >= 90) {
cout << "ممتاز!" << endl;
} else if (grade >= 80) {
cout << "جيد جدًا!" << endl;
} else if (grade >= 70) {
cout << "جيد!" << endl;
} else if (grade >= 60) {
cout << "مقبول!" << endl;
} else {
cout << "راسب!" << endl;
}
return 0;
}
النتيجة إذا كانت قيمة grade هي 85:
جيد جدًا!
1.4 شرح الفرق بين if-else if و else
if: فحص شرط واحد وتنفيذ الكود إذا تحقق.else if: يسمح بفحص أكثر من شرط. يتم فحص كل شرط واحدًا تلو الآخر.else: يُنفذ الكود فقط إذا لم يتحقق أي شرط من الشروط السابقة.
2. استخدام switch-case
في الحالات التي يكون لدينا فيها متغير واحد ونريد التحقق من قيم متعددة لهذا المتغير، يمكننا استخدام switch-case. تعمل switch بشكل أكثر كفاءة عندما يكون لديك عدد من القيم الثابتة، حيث يتم مقارنة المتغير مع هذه القيم.
بنية switch-case:
switch (المتغير) {
case قيمة1:
// الكود الذي سيتم تنفيذه إذا كان المتغير يساوي قيمة1
break;
case قيمة2:
// الكود الذي سيتم تنفيذه إذا كان المتغير يساوي قيمة2
break;
default:
// الكود الذي سيتم تنفيذه إذا لم يكن المتغير يساوي أي من القيم السابقة
}
مثال:
#include <iostream>
using namespace std;
int main() {
int day;
cout << "أدخل رقم اليوم (من 1 إلى 7): ";
cin >> day;
switch (day) {
case 1:
cout << "الأحد" << endl;
break;
case 2:
cout << "الاثنين" << endl;
break;
case 3:
cout << "الثلاثاء" << endl;
break;
case 4:
cout << "الأربعاء" << endl;
break;
case 5:
cout << "الخميس" << endl;
break;
case 6:
cout << "الجمعة" << endl;
break;
case 7:
cout << "السبت" << endl;
break;
default:
cout << "رقم اليوم غير صحيح!" << endl;
}
return 0;
}
النتيجة (إذا كانت قيمة day 3):
الثلاثاء
2.1 الفرق بين switch-case و if-else if
| الميزة | if-else if | switch-case |
|---|---|---|
| المرونة | يمكن استخدامه لفحص شروط معقدة مثل العمليات المنطقية. | يستخدم فقط لمقارنة القيم الثابتة. |
| الأداء | يمكن أن يكون أبطأ في حالة وجود العديد من else if. | أسرع في حالة وجود العديد من القيم المحددة. |
| التعدد | يمكن فحص أكثر من شرط منطقي واحد. | يعمل فقط مع قيمة واحدة في كل مرة. |
| سهولة القراءة | يمكن أن يكون أكثر تعقيدًا إذا كان هنالك شروط كثيرة. | أسهل للقراءة عندما يتم التحقق من قيم معينة فقط. |
📌 متى نستخدم switch-case؟
- استخدم
switchعندما ترغب في مقارنة قيمة واحدة ضد عدد من القيم الثابتة. - استخدم
if-elseعندما تحتاج إلى التحقق من شروط معقدة أو متعددة.
3. تمرين تطبيقي 💡
✍ اكتب برنامجًا يطلب من المستخدم إدخال رقم بين 1 و 12، ثم يعرض اسم الشهر المقابل لهذا الرقم. إذا أدخل المستخدم رقمًا غير صالح، يجب عرض رسالة خطأ. استخدم switch-case.
إجابة مقترحة:
#include <iostream>
using namespace std;
int main() {
int month;
cout << "أدخل رقم الشهر (من 1 إلى 12): ";
cin >> month;
switch (month) {
case 1:
cout << "يناير" << endl;
break;
case 2:
cout << "فبراير" << endl;
break;
case 3:
cout << "مارس" << endl;
break;
case 4:
cout << "أبريل" << endl;
break;
case 5:
cout << "مايو" << endl;
break;
case 6:
cout << "يونيو" << endl;
break;
case 7:
cout << "يوليو" << endl;
break;
case 8:
cout << "أغسطس" << endl;
break;
case 9:
cout << "سبتمبر" << endl;
break;
case 10:
cout << "أكتوبر" << endl;
break;
case 11:
cout << "نوفمبر" << endl;
break;
case 12:
cout << "ديسمبر" << endl;
break;
default:
cout << "رقم غير صالح!" << endl;
}
return 0;
}
نتيجة البرنامج: إذا أدخل المستخدم الرقم 3، سيعرض:
مارس
ملاحظة: إن استخدام switch-case أكثر كفاءة عندما تحتاج إلى مقارنة نفس المتغير مع العديد من القيم الثابتة. أما if-else فيُفضل استخدامها عندما يكون لديك شروط منطقية معقدة.
اكتشاف المزيد من كود التطور
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.


