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

الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops

اذهب الى الأسفل

الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  Empty الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops

مُساهمة من طرف Admin في الأحد يونيو 16, 2019 9:35 pm

الدرس الثالث
الحلقات Loops والقرارات Decisions

الجزء الأول
الحلقات Loops
تمهيد :

ليس هناك العديد من البرامج التي تنفذ جميع عباراتها statements بترتيب صارم من البداية إلى النهاية. تقرر معظم البرامج (مثل العديد من البشر) ما يجب فعله استجابة للظروف المتغيرة. ينتقل (يقفز)  تدفق (سريان) flow التحكم من جزء من البرنامج إلى آخر ، اعتمادًا على العمليات الحسابية التي تجرى في البرنامج. تسمى عبارات البرنامج التي تسبب مثل هذه القفزات عبارات التحكم control statements . هناك فئتان رئيسيتان  من عبارات التحكم : "الحلقات" loops و"القرارات"  decisions.

يعتمد عدد المرات التي يتم فيها تنفيذ حلقة ما ، أو ما إذا كان القرار يؤدي إلى تنفيذ جزء من الكود ، على ما إذا كانت تعبيرات expressions معينة صواب true أو خطأ false . تتضمن هذه التعبيرات عادةً نوعًا من العوامل operators يُطلق عليها "عوامل العلاقة أو الصلة "   relational operators ، والتي تقارن بين قيمتين. نظرًا لأن عمل الحلقات والقرارات مرتبط بشكل وثيق مع هذه العوامل ، فسنقوم بفحصها أولاً.


أولا : عوامل العلاقة أو الصلة  Relational Operators
يقارن عامل العلاقة بين قيمتين values . يمكن أن تكون القيم أي نوع بيانات C++  ، مثل char و int و float ، أو - كما سنرى لاحقًا - يمكن أن تكون فئات معرفة من قبل المستخدم. تتضمن المقارنة العلاقات مثل تساوى equal to  ، وأقل من less than  ، وأكبر من greater than . نتيجة المقارنة تكون صواب true   أو خطأ false  ؛ على سبيل المثال ، إما أن تكون قيمتين متساويتين وتكون نتيجة المقارنة (صواب) (true) ، أو أنها ليست متساوية فتكون نتيجة المقارنة (خطأ) (false) .
يوضح برنامجنا الأول ، RELAT ، عوامل العلاقة في مقارنة متغيرات وثوابت الأعداد الصحيحة.


ينفذ هذا البرنامج ثلاثة أنواع من المقارنات بين العدد 10 وعدد أدخله المستخدم. وإليك الإخراج عندما يدخل المستخدم 20:



الكود:

// demonstrates relational operators
#include <iostream>
using namespace std;

int main()
{
int numb;

cout << “Enter a number: “;
cin >> numb;

cout << “numb<10  is “ << (numb < 10) << endl;
cout << “numb>10  is “ << (numb > 10) << endl;
cout << “numb==10 is “ << (numb == 10) << endl;
return 0;
}
 


الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  C734B1FD0B4045B6981A2F5ACD7921FB


يكون التعبير الأول (numb < 10)  صحيحًا true إذا كان numb أقل من 10. التعبير الثاني (numb > 10) يكون صحيحًا إذا كان numb أكبر من 10 ، والثالث (numb == 10) صحيحًا إذا كان numb يساوي 10. كما ترون من الإخراج ، يعتبر مترجم C++  أن التعبير الصحيح true له القيمة 1 ، بينما التعبير الخطأ له القيمة 0.

كما ذكرنا في الدرس السابق ، يتضمن الإصدار Standard C++  النوعً bool ، الذى يمكنه الاحتفاظ بأحد قيمتين ثابتتين ، صواب true  أو خطأ false . قد تعتقد أن نتائج التعبيرات العلائقية مثل numb <10 ستكون من النوع bool ، وأن البرنامج سوف يطبع false بدلاً من 0 و true  بدلاً من 1. في الواقع ، C++  مصاب بالفصام في هذه النقطة. عرض نتائج عمليات العلاقة ، أو حتى قيم متغيرات نوع bool ، باستخدام cout<<  تعطي 0 أو 1 ، وليس false  أو true  . تاريخياً ، يرجع السبب في ذلك إلى بدء تشغيل C++ بدون نوع bool  . قبل ظهور Standard C++ ، كانت الطريقة الوحيدة للتعبير عن false و true هي 0 و 1. الآن يمكن تمثيل false إما بواسطة قيمة منطقية false ، أو بقيمة عددية صحيحة هى 0 ؛ و true يمكن تمثيلها إما بقيمة منطقية بقيمة true  أو قيمة عددية 1.
في أبسط المواقف ، لا يكون الفرق واضحًا لأننا لسنا بحاجة لعرض قيم صحيحة / خاطئة true/false  ؛ نستخدمها فقط في حلقات وقرارات للتأثير على ما سيفعله البرنامج بعد ذلك.
إليك القائمة الكاملة لعوامل العلاقة فى لغة C++  :

الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  0162623B251E4BF8895B5442E8FE7544


الآن دعونا نلقي نظرة على بعض التعبيرات expressions التي تستخدم عوامل العلاقة ، وننظر أيضًا في قيمة كل تعبير. أول سطرين عبارة عن عبارات تعيين (تخصيص) تقوم بتعيين قيم المتغيرات harry و jane . قد ترغب في إخفاء التعليقات ومعرفة ما إذا كان يمكنك التنبؤ بالتعبيرات التي يجب تقييمها إلى صواب true وأيها إلى خطأ false .


الكود:

jane = 44; //assignment statement
harry = 12; //assignment statement
(jane == harry) //false
(harry <= 12) //true
(jane > harry) //true
(jane >= 44) //true
(harry != 12) // false
(7 < harry) //true
(0) //false (by definition)
(44) //true (since it’s not 0)
 


لاحظ أن عامل التساوي ، == ، يستخدم علامتين تساوى . الخطأ الشائع هو استخدام علامة تساوى واحدة - عامل التخصيص – كعامل علاقة . هذا خطأ سيئ ، لأن المترجم قد لا يلاحظ أي شيء خطأ. ومع ذلك ، فإن برنامجك لن يفعل ما تريد (إلا إذا كنت محظوظًا جدًا).
على الرغم من أن C++  يولد 1 للإشارة إلى true ، إلا أنه يفترض أن أي قيمة أخرى غير 0 (مثل –7 أو 44) تكون true ؛ 0 فقط هو false . وبالتالي ، فإن التعبير الأخير في القائمة true .
الآن ، لنرى كيف يتم استخدام هذه العوامل في مواقف نموذجية. سنقوم بفحص الحلقات loops أولاً ، ثم القرارات decisions بعد ذلك .


Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  Empty رد: الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops

مُساهمة من طرف Admin في الإثنين يونيو 17, 2019 9:58 am

[SIZE="4"]الدرس الثالث : الجزء الأول الحلقات Loops


mediafire.com file/3qf0teafqz1l2nk/Lesson3-Part1-_Loops.rar/file


[/SIZE]

Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  Empty لدرس الثالث - الجزء الثانى - القرارات

مُساهمة من طرف Admin في الإثنين يونيو 17, 2019 10:10 pm

الدرس الثالث - الجزء الثانى - القرارات

mediafire.com file/cawl1l50ccv7ffe/Lesson3-Part2-Decisions.rar/file

Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  Empty تمارين Exercises

مُساهمة من طرف Admin في الثلاثاء يونيو 18, 2019 8:59 pm

تمارين Exercises

التمرين رقم 1 :

افترض أنك تريد إنشاء جدول بمضاعفات أي رقم معطى . اكتب برنامج يتيح للمستخدم إدخال الرقم ثم يقوم بإنشاء الجدول ، وتنسيقه في 10 أعمدة و 20 سطرًا. يجب أن يبدو التفاعل مع البرنامج كما يلي (يتم عرض الأسطر الثلاثة الأولى فقط):


Enter a number: 7
7 14 21 28 35 42 49 56 63 70
77 84 91 98 105 112 119 126 133 140
147 154 161 168 175 182 189 196 203 210


الحل :



الكود:

// ex3_1.cpp
// displays multiples of a number
#include <iostream>
#include <iomanip> //for setw()
using namespace std;

int main()
{
unsigned long n; //number

cout << “\nEnter a number: “;
cin >> n; //get number

for(int j=1; j<=200; j++) //loop from 1 to 200
{
cout << setw(5) << j*n << “ “; //print multiple of n
if( j%10 == 0 ) //every 10 numbers,
cout << endl; //start new line
}
return 0;
}



الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  2080EF1C692946E8AECC84060FC24B2A


التمرين رقم 2 :
اكتب برنامجًا لتحويل درجة الحرارة يمنح المستخدم خيار تحويل الفهرنهايت إلى مئوية أو المئوية إلى فهرنهايت. ثم نفذ التحويل. استعمل أرقام النقطة العائمة. قد يبدو التفاعل مع البرنامج كما يلي:




الحل :


الكود:

// ex3_2.cpp
// converts fahrenheit to centigrad, or
// centigrad to fahrenheit
#include <iostream>
using namespace std;

int main()
{
int response;
double temper;

cout << “\nType 1 to convert fahrenheit to celsius,”
        << “\n 2 to convert celsius to fahrenheit: “;
cin >> response;

if( response == 1 )
{
cout << “Enter temperature in fahrenheit: “;
cin >> temper;
cout << “In celsius that’s “ << 5.0/9.0*(temper-32.0);
}
else
{
cout << “Enter temperature in celsius: “;
cin >> temper;
cout << “In fahrenheit that’s “ << 9.0/5.0*temper + 32.0;
}
cout << endl;
return 0;
}
 



الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  92F8D7EE27E24129AF40CC6C77E2E338

التمرين رقم 3 :
العوامل مثل >> الذى يقرأ الإدخال من لوحة المفاتيح ، يجب أن يكون قادرا على تحويل سلسلة من الأرقام digits إلى عدد number  . اكتب برنامجًا يفعل نفس الشيء. يجب أن يسمح للمستخدم بكتابة ما يصل إلى ستة أرقام digits ، ثم عرض العدد الناتج باعتباره نوع long integer . يجب قراءة الأرقام digits بشكل فردي ، كأحرف ، باستخدام getche() .
يتضمن تكوين العدد number ضرب القيمة الحالية بـ 10 ثم إضافة الرقم digit الجديد. (تلميح: اطرح 48 أو ‘0’  للانتقال من ASCII إلى رقم عددى  numerical digit  .)


فيما يلى عينة من التفاعل :


Enter a number: 123456
Number is: 123456


الحل :


الكود:

// ex3_3.cpp
// makes a number out of digits
#include <iostream>
using namespace std;
#include <conio.h> //for getche()

int main()
{
char ch;
unsigned long total = 0; //this holds the number

cout << “\nEnter a number: “;
while( (ch=getche()) != ‘\r’ ) //quit on Enter
total = total*10 + ch-’0’; //add digit to total*10
cout << “\nNumber is: “ << total << endl;
return 0;
}


الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  6D7EC476DFA94AD2964A2351B5CA7506


التمرين رقم 4 :
المطلوب برنامج لإنشاء ما يعادل آلة حاسبة بأربعة وظائف . يجب أن يطلب البرنامج من المستخدم إدخال رقم number وعامل operator ورقم آخر. (استخدم النقطة العائمة.) يجب أن ينفذ العملية الحسابية المحددة : إضافة (جمع) أو طرح أو ضرب أو قسمة رقمين. استخدم عبارة switch لتحديد العملية. وأخيرا ، أعرض النتيجة.
عندما ينتهي الحساب ، يجب أن يسأل البرنامج ما إذا كان المستخدم يريد إجراء حساب آخر. يمكن أن تكون الاستجابة ‘y’ أو ‘n’ . قد تبدو بعض نماذج التفاعل مع البرنامج كما يلي:



Enter first number, operator, second number: 10 / 3
Answer = 3.333333
Do another (y/n)? y
Enter first number, operator, second number: 12 + 100
Answer = 112
Do another (y/n)? n  



الحل :



الكود:

// ex3_4.cpp
// models four-function calculator
#include <iostream>
using namespace std;

int main()
{
double n1, n2, ans;
char oper, ch;

do {
cout << “\nEnter first number, operator, second number: “;
cin >> n1 >> oper >> n2;

switch(oper)
   {
case ‘+’: ans = n1 + n2; break;
case ‘-’: ans = n1 - n2; break;
case ‘*’: ans = n1 * n2; break;
case ‘/’: ans = n1 / n2; break;
default: ans = 0;
   }

cout << “Answer = “ << ans;
cout << “\nDo another (Enter ‘y’ or ‘n’)? “;
cin >> ch;
} while( ch != ‘n’ );
return 0;
}
 


الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops  4872A745B58541EFB9644E30D378B5D2


Admin
Admin

عدد المساهمات : 1188
تاريخ التسجيل : 28/01/2014

https://fathallaabdelaziz.forumarabia.com

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى