وفي هذا الدرس سنكمل إن شاء الله الشكل الثالث ، وبعض الإختصارات للعمليات الحسابية : 3- التراكيب المتداخلة : وهي عبارة عن استخدام تركيبة داخل تركيبة . والمثال التالي يوضح الفكرة . هو برنامج يحسب عدد الرسوب وعدد النجاح لعشرة طلاب . دعنا نفهم ال pseudocode التالي ثم نترجمه إلى لغة C# :
Initialize passes to zero Initialize failures to zero Initialize student to one While student counter is less than or equal to ten Input the next exam result If the student passed Add one to passes Else Add one to failures Add one to student counter Print the number of passes Print the number of failures If more than eight student passed Print “ Raise tuition “
أولا سنعرف مجموعة من المتغيرات وإعطاؤها قيم بدائية لأنها كلها عدادات . passes (عدد النجاح ) ، failures (عدد الرسوب ) ، student (عدد الطلاب) .
int passes = 0, failures = 0, student = 1, result;
ملاحظة : وضعنا القيمة البدائية لل student = 1 لأن شرط ال while سيكون student <= 10 حيث يبدأ من 1 وينتهي عند 10 كما يلي :
while (student <= 10) //while ستعد حتى 10 وإذا بدأناها من 0 يجب وضع شرط ال student قيمة while (student < 10)
من غير = وأيضا ً ستعد حتى 10 لذا لا فرق بينهم . والآن جملة while كاملة :
while (student <= 10) { Console.Write("Enter result (1=pass, 2=fail): "); result = Int32.Parse(Console.ReadLine()); if (result == 1) passes = passes + 1; else failures = failures + 1; student = student + 1; }
طالما العداد student أقل أو يساوي 10 نفذ ما يلي : { اطبع الجملة التالية : إذا كان الطالب ناجح أدخل الرقم 1 وإذا كان راسب أدخل الرقم 2 حوّل القيمة المدخلة إلى عدد صحيح (integer) وخزنها في المتغير result قارن : إذا كانت قيمة المدخل = 1 أضف 1 لعداد الناجحين passes + 1 غير ذلك أضف 1 لعداد الراسبين failures + 1 قبل الخروج من دارة while أضف 1 لعداد الطلبة student }
// لإضافة سطر فارغ Console.WriteLine(); // لطباعة عدد الناجحين Console.WriteLine("Passed: " + passes); // لطباعة عدد الراسبين Console.WriteLine("Failed: " + failures); // لطباعة جملة ثناء على مستوى التدريس //.إذا كان عدد الناجحين أكثر من 8 if (passes > 8) Console.WriteLine("Raise Tuition\n");
وهذا هو البرنامج : تحميل
* تركيبة do/while وهي تابعة لتركيبة while ، غير أن هناك اختلاف بسيط وهو أن تركيبة while تختبر الشرط ثم تقوم بالتنفيذ وشكلها كالتالي :
while( condition ) { statement }
فإذا كان الناتج مخالف للشرط أهملت جملة while بالكامل . أم تركيبة do/while فهي أولا ً تقوم بالتنفيذ ثم ترى إذا ما كان الناتج صحيح أم خاطئ وشكلها كما يلي :
do { statement } while( Condition ) ;
بمعنى : نفذ ما تحتويه ثم اختبر إذا ما تحقق الشرط أعد التنفيذ أم لا فاخرج منها . فهي تنفذ مره واحدة على الأقل. والشكل التالي يوضح طريقة عملها:
int counter = 1; do { Console.WriteLine(counter); counter++; }while(counter <= 5);
ونتائجه كالتالي :
1 2 3 4 5 Press any key to continue