1 / 57

الفصل الرابع

الفصل الرابع. عبارات التحكم. مقدمة.

dawn
Télécharger la présentation

الفصل الرابع

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. الفصل الرابع عبارات التحكم

  2. مقدمة • يقصد بعبارات التحكم العبارات الخاصة بالبرنامج والتي يمكنها تغيير التسلسل الطبيعي لتنفيذ الجمل الخاصة بالبرنامج. ففي الفصول السابقة تم تنفيذ التعليمات بنفس ترتيب ظهورها الواحدة تلو الاخرى. الا ان هذه البرامج لا تكون واقعية لذا تستخدم عبارات التحكم حتى يتسنى الاستفادة من البرامج في التطبيقات بفاعلية. • تنقسم عبارات التحكم الى: • جمل شرطية • عبارات تكرارية

  3. الجمل الشرطية • تستخدم هذه العبارات لإتخاذ قرار معين حيث تحتوي على جملة شرطية يقوم الحاسوب بالتأكد من تحقيقها أو عدمه لتنفيذ العمليات التي بعدها.

  4. If Statment • الجملة الشرطية if وتسمى (اذا الشرطية) لها عدة صيغ

  5. الصيغة الأولى • الصيغة الأولى لجملة إذا الشرطية (if statements ):وهي أبسط هذه الصيغ - ويمكن تمثيل هذه الصيغة في البرامج على النحو التالي: if ( condition ) Statement; تقوم هذه العبارة بالتحقق من الجملة الشرطية ( condition or (test فإذا تحقق الشرط تم تنفيذ العبارة التابعة لهذا الشرط وإذا لم يتحقق فلن يتم تنفيذها ومن ثم يواصل البرنامج تنفيذ بقية الخطوات التالية لجملة if

  6. ويكون على الشكل • احادية الاتجاه TEST yes No STATMENT

  7. مثال توضيحي على هذه الصيغة (1): #include<iostream.h> main() { int x = 5; if ( x>0) cout<<"x is positive"; } هذا المثال يختبر اذا ما كانت قيمة x موجبة أم سالبة

  8. مثال • أكتب برنامج يقوم بإدخال إي رقم ثم يقوم البرنامج إذا كان الرقم سالب إي أصغر من الصفر يقوم بإظهار الرسالة (The Number is Negative) ؟ -الحل: • #include<iostream.h> #include<conio.h> main() { clrscr(); int x; cout<< "\n Enter any number"; cin>> x; if ( x<0) cout<<\n The Number "<<x<<"is Negative"; }

  9. الصيغة الثانية • ولهذه الصيغة تأثير الصيغة السابقة ، فإنه إذا تحقق الشرط تم تنفيذ العبارة الأولى وإذا لم يتحقق الشرط تم تنفيذ العبارة الثانية المذكورة بعد كلمة else . • ويمكن تمثيل هذه الصيغة على النحو التالي: • if ( Condition ) statement1; else statement2;

  10. ثنائية الاتجاه TEST yes STATMENT2 STATMENT1

  11. مثال هذا برنامج يطلب من المستخدم إدخال إي رقم ثم يقوم البرنامج بإظهار رسالة الرسالة التالية للمستخدم ( The Number Is Positive ) إذا كان الرقم موجباً وإلا إظهار الرسالة التالية ( The Number Is Negative) إذا كان الرقم سالباً . -حل المثال: #include<iostream.h> #include<conio.h> main() { clrscr(); int x; cout<<"\n Enter any number"; cin>> x; if ( x>=0) cout<<"\n The number"<<x<<"is Positive"; else cout<<\n The Number "<<x<<"is Negative"; }

  12. الصيغة الثالثة • وتعرف هذه الصيغة بجملة if المتداخلة أو(Nested if ) ، ففي هذه الحالة إذا تحقق الشرط الأول فإن البرنامج سينفذ العبارة الأولى ومن ثم ينهي جملة if ليكمل بقية جمل البرنامج . أما إذا لم يتحقق الشرط الاول فإنه سينفذ الجزء الخاص ب else if فإذا تحقق الشرط الثاني فسوف ينفذ العبارة الثانية ومن ثم ينهي جملة if لاستكمال بقية البرنامج ، أما إذا لم يتحقق الشرط الثاني فسوف ينفذ الجزء الخاص بـ else الأخيرة وسيقوم بتنفيذ العبارة الثالثة وهكذا…. • ملاحظة هامة: من الممكن وجود أكثر من عبارة شرط بالبرنامج ولكن بشرط أن تكون تلك العبارات محصورة بين القوسين التاليين {}.

  13. test1 Yes No test2 Yes No statement2 statement3 statement1

  14. ويمكن تمثيل هذه الصيغة على النحو التالي: • if ( Condition1 ) { statement1; } else if ( Condition2 ) { statement2; } else statement3;

  15. ملاحظة هامة: لكي لا يقع مبرمج لغة C++ في لبس من صيغة الجملة الشرطية إذا المتدخلة فإن القاعدة المستعملة في لغة C++ مع هذه الصيغة هي: إن كلمة else ترتبط بأقرب if لم ترتبط بـ else أخرى قبلها.

  16. مثال • هذا برنامج يطلب من المستخدم إدخال إي رقم ثم يقوم البرنامج بإظهار رسالة الرسالة التالية للمستخدم ( The Number Is Positive ) إذا كان الرقم موجباً وإلا إظهار الرسالة التالية ( The Number Is Negative) إذا كان الرقم سالباً وإلا إظهار الرسالة التالية "END OF PROGRAM" إذا كان الرقم يساوي الصفر.

  17. الحل • #include<iostream.h> #include<conio.h> main() { clrscr(); int x; cout<< "\n Enter any number"; cin>> x; if ( x==0) cout<<"\n "<<"END OF PROGRAM"; else if(x>0) cout<<\n The Number "<<x<<"is Positive"; else cout<<\n The Number "<<x<<"is Negative"; }

  18. لو استخدمنا عبارة if بدلا من elseif!!!

  19. تمرين • اكتبي برنامج يقوم بادخال درجة طالب ثم طباعة (PASSاو ناجح) اذا ما كان ناجح وطباعة (fail او راسب) اذا كان راسب:

  20. عبارة switch • لعبارة switch هي عبارة اختيار ثانية تتيح لك التحكم في سير البرنامج بحسب عدد من القيم المختلفة. والصيغة العامة لعبارة switch هي:

  21. switch(expression){ case constant_1: statement_sequence; break; case constant_2: statement_sequence; break; . . . case constant_n: statement_sequence; break; default: statement_sequence; }

  22. حيث أن expression هو أي تعبير مسموح بلغة C++ قيمته إما حرفا أو عدد صحيحا، و statement_sequence عبارة بسيطة أو عبارة مركبة (كتلة أوامر). تقوم عبارة switch بتقييم التعبير وتقارن نتيجته الصحيحة بالقيم الثابتة constant_i (حيث ) المذكورة بعد كل كلمة case. فإذا توافقت قيمه تعبير switch مع إحدى القيم الثابتة والمذكورة بعد كلمة case فسيقوم البرنامج بتنفيذ الأوامر (العبارات) التي تلي كلمة case الموافقة حتى يصل إلى كلمة break أو نهاية تركيب switch. إذا لم يحدث توافق مع أي من القيم الثابتة المذكورة بعد كلمة case، فسيتنقل البرنامج إلى الأوامر الموجودة بعد كلمة default. علما أن كلمة default اختيارية. فإذا لم تستخدم default في تركيب switch، ولم يحدث توافق مع أي من القيم المذكورة بعد كلمة case، فإن البرنامج لن يقوم بتنفيذ أي عبارات داخل تركيب switch

  23. مثال • لإجراء برنامج حاسبة بسيطة تجري عملية الجمع، الطرح، الضرب، والقسمة على أي عددين حقيقيين. حيث يسمح البرنامج بإدخال العددين والعملية المراد إجراءها، ثم يقوم بإجراء العملية وعرض الناتج.

  24. #include <iostream> using namespace std; int main() { float x, y, Result; char Operator; cout << "Enter First Operand: "; cin >> x; cout << "Enter Second Operand: "; cin >> y; cout << "Enter Operator: "; cin >> Operator; switch (Operator){ case '+': Result=x + y; cout << x << Operator << y << " = " << Result <<endl; break;

  25. case '-': Result=x - y; cout << x << Operator << y << " = " << Result <<endl; break; case '*': Result=x * y; cout << x << Operator << y << " = " << Result <<endl; break; case '/': Result=x / y; cout << x << Operator << y << " = " << Result <<endl; break; default: cout << "Error: Invalid Operator.\n"; } return 0; }

  26. المخرجات: Enter First Operand: 3 Enter Second Operand: 5 Enter Operator: * 3*5 = 15

  27. عبارة break و switch • عبارة break اختيارية وهي تؤدي إلى الخروج من كتلة switch. في الغالب تستخدم عبارة break بعد سلسلة العبارات المرتبطة مع كل case، ولكن في حالة عدم وجودها فإن سلسلة العبارات المرتبطة مع case الموافقة لتعبير switch وكذلك العبارات التي تليها في case أخرى سوف يتم تنفيذها حتى يتم الوصول إلى عبارة break أو نهاية switch. بمعنى أن العبارات سوف يتم تنفيذها، سوى كانت مرتبطة مع case الموافقة لقيمة التعبير أو لا، إلى أن نصل إلى عبارة break أو نهاية switch والبرنامج التالي يوضح أثر حذف عبارة break من المثال السابق.

  28. switch (Operator){ case '+': Result=x + y; cout << x << " + " << y << " = " << Result <<endl; case '-': Result=x - y; cout << x << " - " << y << " = " << Result <<endl; case '*': Result=x * y; cout << x << " * " << y << " = " << Result <<endl; case '/': Result=x / y; cout << x << " / " << y << " = " << Result <<endl; default: cout << "Error: Invalid Operator.\n"; }

  29. المخرجات Enter First Operand: 6 Enter Second Operand: 2 Enter Operator: * 6 * 2 = 12 6 / 2 = 3 Error: Invalid Operator.

  30. تداخل عبارات switch • من الممكن أن نكتب عبارة switch داخل عبارة switch أخرى وبذلك يصبح لدينا switch داخلية و أخرى خارجية. ويمكن أيضا تماثل القيم الثابتة المذكورة بعد كلمة case للـ switch الداخلية و الخارجية، دون حدوث أي تضارب.

  31. switch(outer_expression){ case constant_outer1: switch(inner_expression){ case constant_inner1: statement_sequence; case constant_inner2: statement_sequence; . . . } case constant_outer2: statement_sequence; . . . } switchالداخلية

  32. العبارات التكرارية العبارات التكرارية تمكنك من إعادة تنفيذ شيفرتك نفسها عدة مرات متتالية إلى أن يصبح أحد الشروط خطأ. حيث تصاغ الشروط حسب نوع التكرار. ويوجد في لغة C++ ثلاثة أنواع من التكرارات، وهي: تكرار for و while و do-while.

  33. تكرار forThe for Loop • يستخدم التكرار for من أجل تكرار تنفيذ عبارة بسيطة أو مركبة عددا من المرات. والصيغة العامة لتكرار عبارة بسيطة هي: for (initialization; expression; increment) statement; • أما تكرار عبارة مركبة (كتلة)، فصيغتها: for (initialization; expression; increment) { statement_sequence; }

  34. حيث يتكون رأس التكرار من ثلاثة تعابير: • 1. التمهيد initialization . • 2. الشرط expression. • 3. التحديث increment. • لاحظ أن التعابير الثلاثة مفصولة بفواصل منقوطة. • التعبير الأول عادة ما يستخدم من أجل تمهيد قيمة متغير، يسمى متغير التحكم (أو العداد)، بإعطاء ذلك المتغير قيمة أولية. هذا التعبير التمهيدي هو أول عمل ينفذه تكرار for، وهو يتم مرة واحدة فقط. • التعبير الثاني هو الشرط، الذي يجب أن يكون صحيحا لكي يتم تنفيذ الشيفرة الموجودة داخل التكرار. • أما التعبير الثالث عادة لتحديث قيمة متغير التحكم. حيث يتم تنفيذه في نهاية كل تكرار.

  35. الشكل يوضح تركيب التكرار for

  36. مثال • البرنامج التالي يسمح بإدخال رقم صحيح n ثم يقوم بحساب مجموع الأرقام من 1 إلى n، مستخدم لذلك تكرار for. لاحظي في هذا المثال أن جسم التكرار for يتكون من عبارة واحدة (sum += i;) فقط وهي التي سوف يتم تكرارها n من المرات. أي أنها عبارة بسيطة وليست مركبة.

  37. #include <iostream>  using namespace std; int main() { inti, n, sum; cout << "Enter a positive integer: "; cin >> n; sum=0;   for(i=1; i<=n; i++) sum += i; // sum=sum+I; sum=1 cout << "The sum of the numbers from 1 to "<<n<< " = " <<sum<<endl;   return 0; }

  38. المخرجات Enter a positive integer: 5 The sum of the numbers from 1 to 5 = 15

  39. يمكن إجراء تعديل بسيط على البرنامج السابق حتى يطبع قيم متغير التحكم i قبل طباعة المجموع النهائي للأرقام من 1 إلى n، كما هو موضح في البرنامج التالي. لاحظ هنا أن جسم التكرار for يحتوي على عبارتين محصورتين بين القوسين المعقوفين{}، عبارة مركبة.

  40. #include <iostream> using namespace std; int main() { inti, n, sum; cout << "Enter a positive integer: "; cin >> n; sum=0; for(i=1; i<=n; i++){ cout<< " i = "<< i <<'\n'; sum += i; } cout << "The sum of the numbers from 1 to "<<n<< " = " <<sum<<endl; return 0; }

  41. المخرجات • Enter a positive integer: 3 • i = 1 • i = 2 • i = 3 • The sum of the numbers from 1 to 3 = 6

  42. التعبير التحديثي • اما التعبير الثالث في تكرار for، وهو التعبير التحديثي، يمكن أن يكون تحديث تصاعدي أو تنازلي لمتغير التحكم. فمثلا، لكتابة برنامج يعرض قيم متغير التحكم i بتحديث تنازلي. تأمل التعبير التحديثي i-- في التكرار

  43. #include <iostream>  using namespace std; int main() { inti; for(i=7; i>0; i--) cout<< ' ' << i; cout<<endl; return 0; }

  44. المخرجات • 7 6 5 4 3 2 1

  45. تكرار while • يستخدم التكرار while من أجل تكرار تنفيذ عبارة بسيطة أو مركبة صفرا أو أكثر من المرات وهي شبيهة لحد ما بالعبارة for ، كما لا بد من وجود شرط مناسب يتم استخدامه للخروج من التكرار . والصيغة العامة للتكرار هو: while (expression) statement; • حيث يتكون رأس التكرار من تعبير واحد فقط وهو الشرط expression، الذي يجب أن يكون صحيحا لكي يتم تنفيذ الشيفرة الموجودة داخل التكرار. أما statement فهي تشكل متن أو جسم التكرار. و الـ statement ممكن أن تتكون من عبارة خاوية، أو عبارة واحدة، أو عبارة مركبة.

  46. شكل يوضح تركيب التكرار while.

  47. مثال #include <iostream>  using namespace std; int main() { inti, n, sum; cout << "Enter a positive integer: "; cin >> n; sum=0; i=1; while(i<=n){ sum += i; i++; } cout << "The sum of the numbers from 1 to "<<n<< " = " <<sum<<endl;   return 0; }

  48. المخرجات Enter a positive integer: 3 The sum of the numbers from 1 to 3 = 6

  49. مقارنة بين التكرارين for و while • يعد التكرار for مجرد صيغة مختصرة للتكرار while، أو حالة خاصة للتكرار while. ومن السهل تحويل التكرار for إلى تكرار while مكافئ له. فمثلا، تكرار for و تكرار while التاليين متكافئين: 1. for (k=1; k<n; k++) cout << " k = "<< k <<endl; 2. k=1; while(k<n){ cout << " k = "<< k <<endl; k++; }

More Related