الاثنين، 27 يوليو 2015

بنيات التحكم - ( Control Structures(if



عادة يتم تنفيذ العبارات حسب تسلسل ورودها في البرنامج ويسمى هذا بالتنفيذ التتابعي ( 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   
           
في العبارة if البسيطة يحدث شئ إذا كان الشرط صحيحاً، لكن إذا لم يكن كذلك لا يحدث شئ على الإطلاق. لكن لنفترض أننا نريد حدوث شئ في الحالتين إذا كان الشرط صحيحاً وآخر إذا لم يكن كذلك، لتحقيق ذلك نستخدم العبارة 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                                                                                                                                                  
cout <<"\n infant";




ليست هناك تعليقات:

إرسال تعليق