القرارات ( العبارات الشرطية ) في C++
القرارات ( العبارات الشرطية )
تحتاج البرامج , مثلها في ذلك مثل البشر , إلي اتخاذ قرارات تحدد مسارها , هل تستمر في هذا الاتجاه , أم تنتقل إلي تلك الخطوة , ويكون اتخاذ القرار بناء علي نتيجة تحقق شرط معين . وأهم أداة لاتخاذ القرارات هي العبارة if …. Else , التي تتيح الخيار بين بديلين . ويمكن استخدامها بدون else لتكون ببساطة if . وأما للإنتقال بين بدائل , فإن أداتنا تكون العبارة switch , التي تتيح لنا الإنتقال بين نقاط مختلفة من البرنامج , بحسب تحقق كل شرط , ولدينا أخيرا المؤثر الشرطي conditional operator وهو يعتبر حالة خاصة في هذا النصوص.
العبارة if
العبارة if هي أبسط صور عبارات القارات . وفي برنامجنا التالي بيان لطريقة استخدمها ifdemo.cpp
كما تري , تتلو الكلمة الحاكمة if تعبير بين قوسين , ويبين الشكل صياغة هذه العبارة , وهو قريب الشبه بصياغة الدوارة while بقدر كافي .
شكل صياغة العبارة if
والفرق بين العبارتين أنه في الحالة الأولي يختبر الشرط مرة واحدة أما في الثانية فيكرر إلي أن يصل إلي حالة عدم التحقق . ويبين الشكل طريقة عمل العبارة if .
عبارة if متعددة العبارات
يبين البرنامج التالي عبارة if موضعها عدة عبارات علي هيئة كتلة محددة بقوسين حلزونين كما هو المعتاد .
If2.cpp
ifdemo.cpp
// ifdemo.cpp
// demonstrates IF statement
#include <iostream.h>
تضمين if داخل دوارة
يمكن أن تقوم بتضمين nesting عبارات الدوارات والقرارات داخل بعضهما , فبإمكانك تضمين if داخل دوارة , أو دوارة داخل if ., أو داخل if , وهكذا , وبرنامجا يضمن عبارة if داخل دوارة for ليحدد إذا ما كان العدد المدخل أوليا prime أم لا .
Prime.cpp
prime.cpp
// prime.cpp
// demonstrates IF statement with prime numbers
#include <iostream.h>
#include <process.h> // for exit()
void main()
{
unsigned long n, j;
cout << "Enter a number: ";
cin >> n; // get number to test
for(j=2; j <= n/2; j++) // divide by every integer from
if(n%j == 0) // 2 on up; if remainder is 0,
{ // it's divisible by j
cout << "It's not prime; divisible by " << j << endl;
exit(0); // exit from the program
}
cout << "It's prime\n";
}
في هذا البرنامج يطلب من المستخدم أن يدخل رقما ما , فيخصص للمتغير n , ويقوم البرنامج بقسمة هذا العدد علي الأعداد بين 2 و 2/n . ويكون العدد المقسوم عليه هو متغير الدوارة j , وفيها نستخدم مؤثر الباقي % لبيان إذا ما كان العدد أوليا أم لا , فالعدد الأولي تكون قسمته دائما ذات باق , وفي أيه حالة يتبين للبرنامج أن باقي القسمة هو صفر , فإنه يظهر رسالة بأن العدد غير أولي , وإنه يقبل القسمة علي العدد الذي وصل إليه , ثم يخرج البرنامج . أما إذا تمت كافة عمليات القسمة دون أن يكون الباقي صفراء , ظهرت رسالة أن العدد أولي . وإليك مثالا لحوار البرنامج مع المستخدم تم فيه تشغيل البرنامج ثلاث مرات :
c> prime
Enter a number: 13
It's a prime
c> prime
Enter a number:22229
It's a prime
c> prime
Enter a number:22231
It's not prime, divisible by 11
(كلما كبر العدد , وتصادف أن كان أوليا , فإن البرنامج يستغرق وقتا طويلا في التنفيذ ) .
لاحظ أنه بينما احتوينا مضمون العبارة if في كتلة بين قوسين حلزونيتين , فإن مضمون الدوارة for لم يحط بقوسين , وذلك لأن عبارة if مع الكتلة الخاصة بها تعتبر بالنسبة للدوارة for عبارة واحدة .
تعليقات
إرسال تعليق