أنت هنا:برمجها»اللغة س»الدرس 5: الأدوات الشرطية
الدرس 5: الأدوات الشرطية الدرس 5: الأدوات الشرطية
قيم الموضوع
(1 تصويت)

تكمن أهمية الأدوات الشرطية في معظم لغات البرمجة في إعطاء المستعمل حق الاختيار أو لدراسة ما يدخله من خلال لوحة المفاتيح.


1. الأداة if - else

الكتابة الخوارزمية الكتابة في C

إذا كان <عبارة منطقية> فإن

   <مجموعة أوامر1>

وإلا

   <مجموعة أوامر2>

if (<عبارة منطقية>)

  <مجموعة أوامر1>

else

  <مجموعة أوامر2>

إذا تحقق أو صح شرط العبارة المنطقية فإنه يجب تنفيذ مجموعة الأوامر1 وإلا فإنه يجب تنفيذ مجموعة الأوامر2

ملاحظات :

  • إذا كانت هناك مجموعة أوامر فمن الأفضل وضعها بين اللامتين {}.
  • إذا كان هناك أمر واحد فقط فيمكنك إبقاء أو حذف اللامتين {}.

أمثلة :

 

مثال 1

if (a > b)
   max = a;
else
   max = b;

 

تكافئ

if (a > b)   max = a;
else         max = b;

 

مثال 2

if (EGAL)
   printf("Salamo 3alikom A = B\n");
else
   printf("Ma3a Assalama A <> B\n");

 

 

تكافئ

if (EGAL!=0)
 printf("Salamo 3alikom A = B\n");
else
 printf("Ma3a Assalama A <> B\n");

 

مثال 3

if (A-B) printf("A different B\n");

else printf("A = B\n");

 

تكافئ

if ((A-B)!=0)

  printf("A different B\n");

else { printf("A = B\n"); }

 

 

مثال 4

if (A > B)

{

  AIDE = A;

  A = C;

  C = AIDE;

}

else

{

  AIDE = B;

  B = C;

  C = AIDE;

}

 

 

تكافئ

 

if (A > B) {AIDE = A;

            A = C;

            C = AIDE; }

else {AIDE = B;B = C;C = AIDE;}


2. الأداة if بدون else

الجزء else ليس ضروريا. يمكنك استعمال if  بدون else :

if ( <الإنشاء> )
    <مجموعة الأوامر>

احذر !

الأداة else تتبع أو تنفي آخر if تمت كتابتها.

if (N>0) /* الشرط الأول */ 
 if (A>B) /* الشرط الثاني */ 
   MAX=A; 
  else /*نفي الشرط الثاني*/ 
   MAX=B;
 
تخالف if (N>0)/* الشرط الأول */
{
  if (A>B)/* الشرط الثاني */
     MAX=A; 
} 
else /*نفي الشرط الأول */
     MAX=B;

التمرين 5.1

نعتبر الشفرة التالية :

      if (A>B) printf ("first choice \n");else
    if (A>10) printf ("second choice \n");
     if (B<10) printf ("third choice \n");
else printf ("forth choice \n");

أ)  أعد تنظيم الشفرة (أو الأوامر) باستعمال المجموعة if - else (يعني ربط  كل if بنافيتها else)

ب) حدد نتيجة البرنامج في كل حالة من الحالات التالية :

  • A=10 وَ    B=5
  • A=5    وَ    B=5
  • A=5    وَ  B=10
  • A=10  وَ  B=10
  • A=20  وَ  B=10
  • A=20  وَ  B=20

3. الأداة if - else if - ... - else

الكتابة الخوارزمية الكتابة في C

إذا كانت <شرط1>
     فان <اوامر1>
  وإلا إذا كانت <شرط2>
     فان <اوامر2>
  وإلا إذا كانت <شرط3>
     فان <اوامر3>
  وإلا إذا كانت <شرطN>
     فان <اوامرN>
  وإلا <اوامرN+1>

if ( <expr1> )
   <bloc1>
 else if (<expr2>)
   <bloc2>
 else if (<expr3>)
   <bloc3>
 else if (<exprN>)
   <blocN>
 else <blocN+1>

 نعتبر المثال التالي :

#include <stdio.h>


main()
{
  int A,B;
  printf("Please write 2 nombers :"); /*من فضلك أدخل عددين*/
  scanf("%i %i", &A, &B);

  if (A > B)
     printf("%i > %i\n", A, B);/*أكبر*/
  else if (A < B)
     printf("%i < %i\n", A, B);/*أصغر*/
  else
     printf("%i = %i\n", A, B);/*يساوي*/

   printf("Press touche...\n"); /* اضغط على مفتاح*/
  getch(); /* للانتظار حتى ترى النتائج */
  return 0;
}

قم بتجربته في C لترى النتائج.


التمرين 5.2

نعتبر الشفرة التالية :

 if (A>B)
  if (A>10)
                             printf ("choice1 \n"); else if (B<10)
                   printf ("choice2 \n"); else
                        if (A==B) printf ("choice3 \n");
                  else printf ("choice4 \n");

أ )  أعد تنظيم الشفرة (أو الأوامر) باستعمال المجموعة if - else (يعني ربط كل  if  بنافيتها else).

ب)  حدد قيم A وَ للحصول على النتائج التالية :1 choice2 ,choice, ... على الشاشة.

ج)  حدد القيم التي يمكن أن تأخذها  A  وَ B   في حالة عدم الحصول على أية نتيجة تظهر على الشاشة.

د ) تأكد من صحة أجوبتك بمساعدة  الحاسوب.

 


4.العوامل الشرطية


ملاحظة :
هناك ميزة لـ C وهي اختصار الكتابات بأقل ما يمكن ( خير ما قل ودل).

الكتابة الخوارزمية الكتابة في C
 
<expr1> ? <expr2> : <expr3>

مثال 1:

MAX = (A > B) ? A : B;

تكافئ

if (A>B) MAX=A;
else     MAX=B;

 مثال 2:

int A,B;
printf("X = ");scanf("%i",&A);
printf("Y = ");scanf("%i",&B);
printf("Maximum = %i \n", (A > B) ? A : B);

 


5. الأداة switch


تقوم هذه الأداة بتعويض تكرار الارتباط if...else..else if...else if وهكذا..

مثال 1:

char c;
printf("Write a character :");
c=getchar();
if(c == 'a' )     printf("ALLAH ");
else if(c == 'b') printf("Akbar ");
else if(c == 'c') printf("salamo ");
else if(c == 'd') printf("3alaikom ");
else if(c == 'e') printf("Mohammed ");
else              printf("wada3an ");

 

 

 

تكافئ

char c;
printf("Write a character :");
c=getchar();
switch(c) {
 case 'a':printf("ALLAH ");break;
 case 'b':printf("Akbar ");break;
 case 'c':printf("salamo ");break;
 case 'd':printf("3alaikom ");break;
 case 'e':printf("Mohammed ");break;
 default :printf("wada3an ");
}


ملاحظات :

  1. case تعني الحالة المفترضة للمتغير
  2. break تعني الخروج من الأداة switch (وعكسها الأداة continue التي تعني تابع التنفيذ)
  3. default تعني في حالة لم توجد أي من الحالات المفترضة أعلاها فيتم تنفيذ الأمر printf("wada3an ");
  4. كما تلاحظ لا يوجد الأمر break في نهاية الأمر default، لأنه بطبيعة الحال سيتم الخروج من switch مباشرة دون اللجوء إلى الأمر break.

تذكر هذه الأداة جيدا لأننا سنراها إن شاء الله في الدروس المتقدمة المستوى...


7. الأداة goto

هذه الأداة تمكن من الذهاب إلى جهة معينة من المشروع مباشرة، كما أنها قليلة الاستعمال عند عامة المبرمجين.

ترتبط هذه الأداة بما يسمى العلامة: التي هي عبارة عن منطقة في المشروع تستعمل فقط للقفز إليها لمتابعة التنفيذ.

مثال 1:

if(a < b ) goto sisi;
else if(a > b ) goto didi;
else goto hihi;

/*....*/
/*....*/
sisi :
printf("3alaikom ");
/*....*/
didi :
printf("salamo ");
/*....*/
hihi :
printf("hihihihihi ");
 


تمارين تطبيقية

التمرين 5.3

أكتب شفرة تأخذ ثلاث أعداد صحيحة ( A وَ B وَ C ) من لوحة المفاتيح ثم تحدد قيمة العدد الأكبر منها ، باستعمال :

أ  ) if - else  وَ  متغير MAX للمساعدة.

ب) if - else if - ... - else  بدون متغير للمساعدة.

ج ) العوامل الشرطية  وَ  متغير MAX للمساعدة.

د )  العوامل الشرطية بدون متغير للمساعدة.


التمرين 5.4

أكتب شفرة تأخذ ثلاث أعداد صحيحة ( A وَ B وَ C ) من لوحة المفاتيح . ثم رتبها تزايد يا أو تناقصيا :

استعمل ()scanf مرة واحدة فقط لقراءة الأعداد وَ  B  وَ C.

أظهر النتيجة على الشاشة.


التمرين 5.5

أكتب شفرة تأخذ عددين صحيحين ( A وَ B ) من لوحة المفاتيح . ثم حدد  إشارة حاصل ضرب A في B بدون استعمال عملية الضرب.

أظهر نتيجة الإشارة على الشاشة.


التمرين 5.6

أكتب شفرة تأخذ عددين صحيحين ( A وَ B ) من لوحة المفاتيح . ثم حدد  إشارة مجموع   و B بدون استعمال عملية الجمع.

يمكنك استعمال الدالة ()fabs  (القيمة المطلقة)  من المجموعة <math.h>.

أظهر نتيجة الإشارة على الشاشة.


التمرين 5.7

أكتب شفرة تحسب أو تحدد مجموعة الحلول للمعادلة من الدرجة الثانية  ax2+bx+c = 0 بمناقشة الصيغة التالية : 

 

يمكنك استعمال متغير D يساوي b2-4ac  لتحديد هل المعادلة تقبل حلا واحدا أو حلين أو ليس لها حل .

استعمل متغيرات من نوع int لأجل الأعداد وَ  B  وَ C .

الأخذ بعين الاعتبار أن الأعداد وَ  B  وَ C قد تكون منعدمة .

أظهر النتيجة على الشاشة مع جمل مفيدة


 تأليف

المؤلف الأصلي: فرديريك فابر (Frédéric FABER)

البريد الإلكترونيعنوان البريد الإلكتروني هذا محمي من روبوتات السبام. يجب عليك تفعيل الجافاسكربت لرؤيته.

الموقع الإلكتروني http://www.ltam.lu/cours-c

ترجمة بتصرف: محمد عبد الرحمان


 

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث