الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: البرمجة بلغة ++C مع ++Microsoft Visual C
صفحة 1 من اصل 1
الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops
الدرس الثالث
الحلقات 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:
يكون التعبير الأول (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++ :
الآن دعونا نلقي نظرة على بعض التعبيرات expressions التي تستخدم عوامل العلاقة ، وننظر أيضًا في قيمة كل تعبير. أول سطرين عبارة عن عبارات تعيين (تخصيص) تقوم بتعيين قيم المتغيرات harry و jane . قد ترغب في إخفاء التعليقات ومعرفة ما إذا كان يمكنك التنبؤ بالتعبيرات التي يجب تقييمها إلى صواب true وأيها إلى خطأ false .
لاحظ أن عامل التساوي ، == ، يستخدم علامتين تساوى . الخطأ الشائع هو استخدام علامة تساوى واحدة - عامل التخصيص – كعامل علاقة . هذا خطأ سيئ ، لأن المترجم قد لا يلاحظ أي شيء خطأ. ومع ذلك ، فإن برنامجك لن يفعل ما تريد (إلا إذا كنت محظوظًا جدًا).
على الرغم من أن C++ يولد 1 للإشارة إلى true ، إلا أنه يفترض أن أي قيمة أخرى غير 0 (مثل –7 أو 44) تكون true ؛ 0 فقط هو false . وبالتالي ، فإن التعبير الأخير في القائمة true .
الآن ، لنرى كيف يتم استخدام هذه العوامل في مواقف نموذجية. سنقوم بفحص الحلقات loops أولاً ، ثم القرارات decisions بعد ذلك .
الحلقات 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;
}
يكون التعبير الأول (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++ :
الآن دعونا نلقي نظرة على بعض التعبيرات 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 بعد ذلك .
رد: الدرس الثالث الحلقات Loops والقرارات Decisions الجزء الأول الحلقات Loops
[SIZE="4"]الدرس الثالث : الجزء الأول الحلقات Loops
https://www.mediafire.com/file/3qf0teafqz1l2nk/Lesson3-Part1-_Loops.rar/file
[/SIZE]
https://www.mediafire.com/file/3qf0teafqz1l2nk/Lesson3-Part1-_Loops.rar/file
[/SIZE]
لدرس الثالث - الجزء الثانى - القرارات
الدرس الثالث - الجزء الثانى - القرارات
https://www.mediafire.com/file/cawl1l50ccv7ffe/Lesson3-Part2-Decisions.rar/file
https://www.mediafire.com/file/cawl1l50ccv7ffe/Lesson3-Part2-Decisions.rar/file
تمارين Exercises
تمارين Exercises
التمرين رقم 1 :
افترض أنك تريد إنشاء جدول بمضاعفات أي رقم معطى . اكتب برنامج يتيح للمستخدم إدخال الرقم ثم يقوم بإنشاء الجدول ، وتنسيقه في 10 أعمدة و 20 سطرًا. يجب أن يبدو التفاعل مع البرنامج كما يلي (يتم عرض الأسطر الثلاثة الأولى فقط):
الحل :
التمرين رقم 2 :
اكتب برنامجًا لتحويل درجة الحرارة يمنح المستخدم خيار تحويل الفهرنهايت إلى مئوية أو المئوية إلى فهرنهايت. ثم نفذ التحويل. استعمل أرقام النقطة العائمة. قد يبدو التفاعل مع البرنامج كما يلي:
الحل :
التمرين رقم 3 :
العوامل مثل >> الذى يقرأ الإدخال من لوحة المفاتيح ، يجب أن يكون قادرا على تحويل سلسلة من الأرقام digits إلى عدد number . اكتب برنامجًا يفعل نفس الشيء. يجب أن يسمح للمستخدم بكتابة ما يصل إلى ستة أرقام digits ، ثم عرض العدد الناتج باعتباره نوع long integer . يجب قراءة الأرقام digits بشكل فردي ، كأحرف ، باستخدام getche() .
يتضمن تكوين العدد number ضرب القيمة الحالية بـ 10 ثم إضافة الرقم digit الجديد. (تلميح: اطرح 48 أو ‘0’ للانتقال من ASCII إلى رقم عددى numerical digit .)
فيما يلى عينة من التفاعل :
الحل :
التمرين رقم 4 :
المطلوب برنامج لإنشاء ما يعادل آلة حاسبة بأربعة وظائف . يجب أن يطلب البرنامج من المستخدم إدخال رقم number وعامل operator ورقم آخر. (استخدم النقطة العائمة.) يجب أن ينفذ العملية الحسابية المحددة : إضافة (جمع) أو طرح أو ضرب أو قسمة رقمين. استخدم عبارة switch لتحديد العملية. وأخيرا ، أعرض النتيجة.
عندما ينتهي الحساب ، يجب أن يسأل البرنامج ما إذا كان المستخدم يريد إجراء حساب آخر. يمكن أن تكون الاستجابة ‘y’ أو ‘n’ . قد تبدو بعض نماذج التفاعل مع البرنامج كما يلي:
الحل :
التمرين رقم 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;
}
التمرين رقم 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;
}
التمرين رقم 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;
}
التمرين رقم 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;
}
مواضيع مماثلة
» البرمجة بلغة السى - أمثلة الجزء الأول - البرنامج الثالث : جمع عددان صحيحان .
» الأردوينو Arduino للمبتدئين
» البرمجة بلغة السى -7- أمثلة الجزء الأول - البرنامج الأول : طباعة جملة .
» مدخلك الشخصى إلى الميكروكونترولر Your Personal Introductory Course :The PIC Microcontroller
» الدرس الثالث المتغيرات Variables
» الأردوينو Arduino للمبتدئين
» البرمجة بلغة السى -7- أمثلة الجزء الأول - البرنامج الأول : طباعة جملة .
» مدخلك الشخصى إلى الميكروكونترولر Your Personal Introductory Course :The PIC Microcontroller
» الدرس الثالث المتغيرات Variables
منتديات الهندسة الكهربية والإلكترونية والميكاترونكس والكومبيوتر :: البرمجة بلغة ++C مع ++Microsoft Visual C
صفحة 1 من اصل 1
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى