المؤثر الشرطي في C++
المؤثر الشرطي
إليك مؤثرا يستخدم في اتخاذ القرارات , غريب الشكل إلي حد ما , وقد وضع للإستخدام في موقف كثير التكرار في البرمجة , متغير له قيمة ما في حالة تحقق شرط ما , وقيمة أخري في حالة عدم تحقق ذلك الشرط . وإليك البرنامج التالي , وهو يطبع لك حرف x علي مسافات ثمانية , أي كل ثمانية مسافات . وقبل أن تكتب البرنامج , سنوضح لك الفكرة التي يقوم عليها .
المفروض أن يطبع حرف x علي الشاشة في كل موضع يكون فيه رقم العمود من مضاعفات الرقم 8 , وأن يترك مسافة في غير ذلك من المواضع ( الشاشة مقسمة إلي 80 عمودا كما تعلم ) . والفكرة أن نتصور متغيرا وليكن j يعبر عن رقم العمود علي الشاشة , أي تتغير قيمته من 0 إلي 79 , ونضع شرطا يقول :
في الأعمدة التي يكون فيها قسمة j علي 8 بدون باق , أطبع الحرف x وإذا كان لهذه المسافة باق , خذ مسافة .
كيف تصوغ هذا الشرط في لغة السي ؟ تمدنا لغة السي بمؤثر أسميناه " مؤثر باقي القسمة " وهو علي الصورة % , وهو يستخدم لاختبار كون القسمة لها باق أم لا , معني ذلك أن الشرط يكون علي الصيغة : j%8 , ويمكن أن نتخيل البرنامج محتويا علي الشرط التالي :
If (j%8)
Ch= ' ' ;
Else
Ch='x';
وهو ما يعني : إذا كان للقسمة باق ( نتيجة الاختبار متحققة ) , خذ مسافة , وإلا فأطبع حرف x .
للنظر الأن كيف صيغ هذا الشرط في البرنامج :
Char ch = (j%8) ? ' ' ; 'x'
Cout << ch;
استخدمنا هنا مؤثرا جديدا مركب من محرفين هما ''? : '' , يسمي " المؤثر الشرطي conditional operator " كتبت العبارة الشرطية (ch=(j%8) علي يساره , وبعده الاحتمالان , بينما العلاقة ":" وعلي ذلك فهذا المؤثر يقول :إذا كان الشرط المعطي متحققا , فإن المتغير ch يأخذ القيمة يسار الرمز ":" , وإذا لم يكن متحققا , يأخذ القيمة التي علي يمينها . ويبين الشكل صياغة المؤثر وشكل طريقة عمله .
شكل صياغة المؤثر الشرطي
شكل طريقة عمل المؤثر الشرطي
وإليك البرنامج كاملا :
Condi.cpp condi.cpp
// condi.cpp
// prints 'x' every 8 columns
// demonstrates conditional operator
#include <iostream.h>
void main()
{
for(int j=0; j<80; j++) // for every column,
{ // ch is 'x' if column is
char ch = (j%8) ? ' ' : 'x'; // multiple of 8, and
cout << ch; // ' ' (space) otherwise
}
}
وكما قدمنا , يأخذ المتغير j قيما من 0 إلي 79 , وكلما كان باقي القسمة صفرا , اعتبر التعبير (j%8) غير متحقق , وطبع حرف x .
وفي إمكانيات دمج التعابير واختصار سطور البرنامج يجد أحباء لغة السي متعة كبيرة , ولكن في المقابل قد تجعل هذه الإمكانيات صياغة البرامج مبهمة الشكل غير يسيرة التتبع , والمسألة في النهاية مسألة مواءمة .
تعليقات
إرسال تعليق