عادة يتم تنفيذ العبارات حسب تسلسل ورودها في البرنامج ويسمى هذا بالتنفيذ التتابعي ( Sequential Execution). لكننا سنتعرض لبعض عبارات C++ والتي تجعل التنفيذ ينتقل لعبارة أخرى قد لا تكون التالية في تسلسل البرنامج، ويسمى هذا بنقل التحكم Transfer of control.
تنقسم بنيات التحكم في C++ إلى قسمين: بنيات التحكم الشرطية وسنفرد هذه الوحدة لتوضيحها. والنوع الثاني وهو بنيات التحكم التكرارية والتي سنفرد الوحدة التالية للحديث عنها.
بنيات
التحكم الشرطية
IF
أسهل طريقة
لاتخاذ قرار في C++ هي بواسطة العبارة if .
تتألف العبارة
if من الكلمة الأساسية if، يليها تعبير
اختبار بين قوسين، ويتألف جسم القرار الذي يلي ذلك إما من عبارة واحدة، أو من عدة
عبارات تحيطها أقواس حاصرة { }
الشكل(1-2)
يبين طريقة عمل العبارة if.
//Program
2-1:
#include
<iostream.h>
main
( )
{
int num1 , num2;
cout
<< " Enter two integers, and I will
tell you\n"
<<" the relation
ships they satisfy: ";
cin >>
num1>> num2;
if
(num1== num2)
cout << num1 <<
" is equal to " << num2 << endl;
if
(num1!= num2)
cout << num1 <<
" is not equal to " << num2 << endl;
if
(num1< num2)
cout << num1 <<
" is less than " << num2 << endl;
if
(num1> num2)
cout << num1 <<
" is greater than " << num2 << endl;
if
(num1<= num2)
cout << num1 <<
" is less than or equal to " << num2 << endl;
if
(num1>= num2)
cout << num1 <<
" is greater than or equal to " << num2
<<
endl;
return
0;
}
الخرج
من البرنامج بافتراض أن المستخدم قد أدخل الأرقام num1
=3 ، num2=
7.
Enter two integers , and I
will tell you
The relation ships they satisfy: 3 7
3 is not equal to 7
3 is less than 7
3 is less than or equal
to 7
|
--------------------------------------------------
العبـارة if…else
مثال:-
//Program
2-2:
#include
<iostream.h>
main
( )
{
int
grade ;
cout
<< " Enter the grade";
cin
>>grade;
if(grade>=
50)
cout<<"pass"
<<endl;
else
cout
<<"fail"<<endl;
return
0;
}
الخرج
من البرنامج بافتراض أن المستخدم قد أدخل grade = 90
Enter the grade 90
Pass
|
العبارات if ... else المتداخلة:- يمكن
وضع العبارات if ......else ضمن
بعضها البعض ، البرنامج التالي يوضح ذلك:
//Program
2-3:
#include
<iostream.h>
main
( )
{
int
grade;
cout
<<"Enter the grade:" ;
cin
>> grade;
if(grade>=
75)
cout<<'A'<<
endl;
else
if(grade>=
65)
cout<<'B'<<
endl;
else
if(grade>=
55)
cout<<'C'<<
endl;
else
if(grade>=
40)
cout<<'D'<<
endl;
else
cout<<"fail"<<endl;
return
0;
}
تنتهي العبارات المتداخلة في الجسم else وليس في الجسم if ، يمكن أن تحدث مشكلة عندما نضع العبارات if ……else ضمن بعضها البعض.
فمثلاً المفروض من العبارات التالية أن تعرض الكلمة infant
عندما يكون عمر الشخص أقل أو يساوى 2:-
( if
(age >2
( if
(age<18
cout
<<"\n child”;
else
cout
<<"\n infant";
ولكن
هنا لن يحدث ، ستظهر الكلمة infant كلما كان العمر أكبر أو يساوى 18 وذلك لأن الجزء else يتبع
أقرب عبارة if إليه والتي ليس لها جزء else خاص
بها. لذا إذا كنا نريد جزء else تابع
لعبارة if غير موجودة قبله مباشرة
علينا حصر العبارة if الموجودة بينهما بأقواس
حاصرة .
if (age >2)
{
if (age<18)
cout <<"\n child”;
} else
ليست هناك تعليقات:
إرسال تعليق