مقدمة في الشروط في لغة C++
في لغة البرمجة C++، تعتبر الشروط (Conditions) من العناصر الأساسية للبرمجة الشرطية (Conditional Programming)، حيث تمكن المبرمج من تقييد سير تنفيذ البرنامج عبر التحقق من قيمة معينة واتخاذ إجراء معين في حال تحققها أو عدم تحققها.
في لغة C++، يتم استخدام بنية التحكم الشرطية "if" لتنفيذ الشروط، حيث تحدد الشرط بعد الكلمة المفتاحية "if"، ثم يتم تحديد الإجراء المراد تنفيذه في حال تحقق الشرط داخل قوسين ويأتي بعدها القوس الناتج (الإجراء المراد تنفيذه في حال تحقق الشرط)، وفي حال عدم تحقق الشرط يتم تنفيذ ما بعد الكلمة المفتاحية "else".
مثال على استخدام الشرط في لغة C++:
int x = 5;
if (x > 3) {
cout << "x is greater than 3" << endl;
}
else {
cout << "x is not greater than 3" << endl;
}
في هذا المثال، يتم تعيين قيمة 5 للمتغير "x"، ثم يتم فحص قيمة المتغير "x" في الشرط "if" ويتم تنفيذ الإجراء المراد تنفيذه في حال تحقق الشرط، وفي حال عدم تحقق الشرط يتم تنفيذ الإجراء المراد تنفيذه في الكود الذي يأتي بعد الكلمة المفتاحية "else".
أنواع جمل الشرط في c++
هناك ثلاثة أنواع من جمل الشرط في لغة C++:
- if statement: هذا النوع يستخدم لتنفيذ كتلة من الأوامر إذا كان شرط معين صحيحًا. وهو يأخذ الشكل التالي:
if (condition) {
// code to be executed if condition is true
}
- if-else statement: هذا النوع يستخدم لتنفيذ كتلة من الأوامر إذا كان شرط معين صحيحًا، وكتلة أخرى إذا كان الشرط غير صحيح. وهو يأخذ الشكل التالي:
if (condition) {
// code to be executed if condition is true
} else {
// code to be executed if condition is false
}
- switch statement: هذا النوع يستخدم لتنفيذ كتلة من الأوامر بناءً على قيمة متغير معين. وهو يأخذ الشكل التالي:
switch (variable) {
case value1:
// code to be executed if variable equals value1
break;
case value2:
// code to be executed if variable equals value2
break;
...
default:
// code to be executed if variable doesn't equal any of the values
break;
}
يمكن استخدام أي نوع من جمل الشرط حسب الحاجة لتحقيق النتائج المرجوة.
الشروط المضمنة في لغة C++
تعتبر الشروط المضمنة Conditional Operator (Ternary Operator) من العمليات الشرطية في C++ وتستخدم لإنشاء شرط بسيط يتكون من ثلاثة أجزاء:
القيمة المقارنة، الشرط، الجزء الإيجابي والجزء السلبي. يمكن استخدام الشروط المضمنة بدلاً من if-else لتسهيل الكتابة وضمان تنفيذ الشرط بطريقة سلسة.
وهناك صيغة عامة للاستخدام الصحيح للشروط المضمنة:
(condition) ? statement-if-true : statement-if-false;
على سبيل المثال، إذا كانت المتغير x يساوي 10، يمكن استخدام الشرط المضمن لإعطاء قيمة مختلفة لمتغير y حسب قيمة x كالتالي:
int x = 10;
int y = (x == 10) ? 5 : 0;
في هذا المثال، إذا كانت قيمة المتغير x تساوي 10، سيتم تعيين قيمة 5 للمتغير y، وإذا لم يكن كذلك، سيتم تعيين القيمة 0 للمتغير y.
تنفيذ الشروط باستخدام العمليات الشرطية (if-else) في لغة C++
تعتبر العمليات الشرطية (if-else) من أكثر العمليات الشائعة في لغة C++ لتنفيذ الشروط، حيث تتيح هذه العملية تنفيذ كود معين في حال تحقق شرط معين وتنفيذ كود آخر في حال عدم تحقق الشرط. لتنفيذ العمليات الشرطية في لغة C++ يمكن استخدام الصيغة التالية:
if (شرط) {
// تنفيذ الأوامر عندما يتحقق الشرط
} else {
// تنفيذ الأوامر عندما لا يتحقق الشرط
}
على سبيل المثال، إذا أردنا كتابة برنامج يحدد ما إذا كان العدد المدخل من قبل المستخدم يتألف من رقمين أم لا، يمكننا استخدام العملية الشرطية كما يلي:
#include <iostream>
using namespace std;
int main() {
int num;
cout << "ادخل رقمًا: ";
cin >> num;
if (num >= 10 && num <= 99) {
cout << "العدد يتألف من رقمين" << endl;
} else {
cout << "العدد لا يتألف من رقمين" << endl;
}
return 0;
}
في هذا المثال، يتم قراءة العدد من المستخدم ويتم فحص ما إذا كان العدد يتألف من رقمين أم لا باستخدام العملية الشرطية. إذا كان العدد يتألف من رقمين، سيتم عرض رسالة "العدد يتألف من رقمين"، وإذا لم يكن العدد يتألف من رقمين، سيتم عرض رسالة "العدد لا يتألف من رقمين".
استخدام العمليات الشرطية المتعددة (if-else-if-else) في لغة C++
يتم استخدام العمليات الشرطية المتعددة if-else-if-else في لغة C++ عندما يكون لدينا أكثر من شرط واحد يجب علينا التحقق منه. يتم التحقق من الشروط بترتيب معين وإذا تم تحقق الشرط الأول فإن البرنامج يتوقف عن التحقق من الشروط الأخرى.
وصيغة العمليات الشرطية المتعددة (if-else-if-else) هي:
if (condition1) {
// statements 1
}
else if (condition2) {
// statements 2
}
else if (condition3) { // statements 3
}
else {
// statements 4
}
حيث تكون:
- - condition1 هي الشرط الأول الذي يتم التحقق منه.
- - statements 1 هي مجموعة الأوامر التي تُنفذ إذا تم تحقق condition1.
- - condition2 هي الشرط الثاني الذي يتم التحقق منه في حال لم يتم تحقق condition1.
- - statements 2 هي مجموعة الأوامر التي تُنفذ إذا تم تحقق condition2.
- - condition3 هي الشرط الثالث الذي يتم التحقق منه في حال لم يتم تحقق condition1 و condition2.
- - statements 3 هي مجموعة الأوامر التي تُنفذ إذا تم تحقق condition3.
- - statements 4 هي مجموعة الأوامر التي تُنفذ إذا لم يتم تحقق أي من الشروط المذكورة أعلاه.
على سبيل المثال، إذا أردنا كتابة برنامج يقوم بتحويل درجات الحرارة من الفهرنهايت إلى السيليزية، يمكن كتابة الكود التالي باستخدام العمليات الشرطية المتعددة:
#include <iostream>
using namespace std;
int main() {
double fahrenheit, celsius;
cout << "Enter temperature in Fahrenheit: ";
cin >> fahrenheit;
if (fahrenheit < -459.67) {
cout << "This temperature is impossible!" << endl;
}
else if (fahrenheit == -459.67) {
cout << "Absolute zero!" << endl;
}
else {
celsius = (fahrenheit - 32) * 5 / 9;
cout << "The temperature in Celsius is " << celsius << " degrees." << endl;
}
return 0;
}
في هذا البرنامج، يتم التحقق من ثلاث شروط:
- - إذا كانت درجة الحرارة أقل من -459.67 في المقياس الفهرنهايت، فإن البرنامج يعرض "This temperature is impossible!".
- - إذا كانت درجة الحرارة تساوي -459.67 في المقياس الفهرنهايت، فإن البرنامج يعرض "Absolute zero!".
- - إذا كانت درجة الحرارة أكبر من -459.67 في المقياس الفهرنهايت، فإن البرنامج يقوم بتحويلها إلى المقياس السيليزي ويعرض النتيجة.
استخدام العمليات الشرطية المضمنة (ternary) في لغة C++
عملية الشرطية المضمنة (Ternary Operator) في لغة C++ هي عبارة عن عملية شرطية تقوم بتقييم شرط معين، وإرجاع قيمة معينة في حال صحة الشرط وقيمة مختلفة في حال كان الشرط غير صحيح.
عملية الشرطية المضمنة تستخدم الرمز `?` و `:`. وتكون الصيغة العامة لهذه العملية كالتالي:
(الشرط) ? (القيمة إذا كان الشرط صحيح) : (القيمة إذا كان الشرط غير صحيح)
ويمكن استخدام عملية الشرطية المضمنة بشكل مثالي في حالات بسيطة مثل عرض الرسالة الناتجة عن الشرط الوحيد. واليك مثال عن طريق استخدام عملية الشرطية المضمنة:
#include <iostream>
using namespace std;
int main() {
int num1 = 10, num2 = 20, max_num;
max_num = (num1 > num2) ? num1 : num2;
cout << "The maximum number is: " << max_num << endl;
return 0;
}
في هذا المثال، يتم اختبار قيمتي num1 و num2 لمعرفة أيهما الأكبر، ثم يتم حفظ القيمة الأكبر في المتغير max_num باستخدام عملية الشرطية المضمنة. ثم يتم عرض قيمة max_num باستخدام عبارة cout.
يجب الانتباه إلى أن استخدام عملية الشرطية المضمنة في بعض الأحيان يمكن أن يؤدي إلى كتابة كود غير مفهوم بسبب التعقيد، لذلك يجب استخدامها بحذر وفقط في الحالات البسيطة.
الأخطاء الشائعة في استخدام الشروط في لغة C++
هناك بعض الأخطاء الشائعة التي يمكن أن تظهر عند استخدام الشروط في لغة C++، ومن هذه الأخطاء:
- عدم إنهاء الشروط بفاصلة منقوطة: يجب أن تنتهي جميع الشروط في لغة C++ بفاصلة منقوطة.
- استخدام عامل الإسناد (=) بدلاً من عامل المقارنة (==) في الشروط: يجب استخدام عامل المقارنة (==) للتحقق من تساوي القيم بدلاً من عامل الإسناد (=) الذي يستخدم لتخزين القيم.
- استخدام العمليات المنطقية بشكل خاطئ: يجب التأكد من استخدام العمليات المنطقية بشكل صحيح، فمثلاً يجب استخدام && بدلاً من & إذا كانت الشروط تحتوي على أكثر من شرط.
- عدم وضع الشروط داخل العمليات الشرطية بشكل صحيح: يجب وضع الشروط داخل العمليات الشرطية (if، else if، else) بشكل صحيح لتحقيق النتائج المرجوة.
- استخدام العمليات الشرطية المضمنة (ternary) بشكل خاطئ: يجب استخدام العمليات الشرطية المضمنة (ternary) بشكل صحيح، والتأكد من أنها لا تزيد عن ثلاث شروط، وأنها سهلة الفهم.
- استخدام الشروط المتعددة بشكل غير منطقي: يجب التأكد من أن الشروط المتعددة متناسقة ومنطقية لتحقيق النتائج المرجوة، وعدم استخدام الشروط المتعددة بشكل متناقض.