القرارات ( العبارات الشرطية ) في C++

القرارات ( العبارات الشرطية )

تحتاج البرامج , مثلها في ذلك مثل البشر , إلي اتخاذ قرارات تحدد مسارها , هل تستمر في هذا الاتجاه , أم تنتقل إلي تلك الخطوة , ويكون اتخاذ القرار بناء علي نتيجة تحقق شرط معين . وأهم أداة لاتخاذ القرارات هي العبارة if …. Else , التي تتيح الخيار بين بديلين . ويمكن استخدامها بدون else لتكون ببساطة if . وأما للإنتقال بين بدائل , فإن أداتنا تكون العبارة switch , التي تتيح لنا الإنتقال بين نقاط مختلفة من البرنامج , بحسب تحقق كل شرط , ولدينا أخيرا المؤثر الشرطي conditional operator وهو يعتبر حالة خاصة في هذا النصوص.

العبارة if

العبارة if هي أبسط صور عبارات القارات . وفي برنامجنا التالي بيان لطريقة استخدمها ifdemo.cpp

كما تري , تتلو الكلمة الحاكمة if تعبير بين قوسين , ويبين الشكل صياغة هذه العبارة , وهو قريب الشبه بصياغة الدوارة while بقدر كافي .

Object-Oriented Programming in C   _Page_0118_Image_0001

شكل صياغة العبارة if

والفرق بين العبارتين أنه في الحالة الأولي يختبر الشرط مرة واحدة أما في الثانية فيكرر إلي أن يصل إلي حالة عدم التحقق . ويبين الشكل طريقة عمل العبارة if .

Object-Oriented Programming in C   _Page_0119_Image_0001 شكل طريقة عمل العبارة 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 عبارة واحدة .

التسميات: