You are on page 1of 7

‫بسم الله الرحمن الرحيم‬

.......‫السلم عليكم ورحمة ال وبركاته‬


‫الحمدل والصلة والسلم على افضل النبياء والمرسلين قدوتنا وحبيبنا وشفيعنا ان شاء ال محمد بن عبد ال‬
.......‫وعلى اله وصحبه اجمعين‬

...... ‫أجمل تحية لكم اخوتي واخواتي في ال‬


‫ وذكرنا مثالين عليها وقمنا بطرح سؤال والن ان شاء ال نواصل‬while ‫اتهينا في الدرس السابق من شرح ال‬
. while ‫ حيث سنتدرب على برامج أكثر بأستخدام ال‬while ‫الجزء الثاني من درس ال‬

..... ‫نبدأ بحل السؤال الذي ذكرناه في الدرس السابق‬

:1 ‫السؤال‬
‫ يقوم بطلب الساس والس من المستخدم وايجاد الناتج‬++ ‫ قم بكتابة برنامج بأستخدام لغة السي‬-
‫ مثال‬.
Enter base as an integer:
3
Enter exponent as an integer
2
Power =9

: ‫الجواب‬
#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
int x; // base
int y; // exponent
int i; // counts from 1 to y
int power; // used to calculate x raised to power y

i = 1; // initialize i to begin counting from 1


power = 1; // initialize power

cout << "Enter base as an integer: "; // prompt for base


cin >> x; // input base

cout << "Enter exponent as an integer: ";


cin >> y; // input exponent

// count from 1 to y and multiply power by x each time


while ( i <= y ) {
power *= x;
++i;

} // end while

cout <<"power="<<power<< endl; // display result


‫;‪return 0‬‬

‫‪} // end function main‬‬

‫ملحظه ‪ :‬التعليقات التي بعد علمة ‪ //‬مجرد تعليق لك انت اي ان البرنامج ل يعطيه اي اهميه‬
‫وقد وضحت هذه النقطه في الدروس السابقه يعني ليست من ضمن الكود للبرنامج ‪...‬‬

‫تستطيع استخدام تكرار داخل تكرار اي ‪ while loop‬داخل ‪ while loop‬والمثال التالي سيوضح‬
‫الفكره‪.‬وايضا ينقسم التكرار في ال ‪ while‬الى محدد )ثابت لعدد معين( وغير محدد يحدده المستخدم فالرقم‬
‫للتكرار في الغير المحدد ليس ثابت يتحكم فيه المستخدم وهذا الفضل حيث يكون اكثر مرونه ‪.‬وسنوضح‬
‫الحالتين سنبدأبالمحدد ومن ثم الغير محدد‪.‬‬

‫السؤال ‪ )2‬التكرار المحدد( ‪:‬‬

‫مطلوب عمل برنامج بأستخدام لغة السي‪ ++‬يقوم هذا البرنامج بحساب المتوسط لدرجات ‪ 500‬طالب ويجب‬
‫على البرنامج ان يطلب من المستخدم ادخال الدرجات ويتأكد البرنامج من ان الدرجه التي تم ادخالها بين‬
‫الصفر وال ‪ 100‬ول تتجاوز هذا الحد‪.‬‬

‫>‪#include <iostream‬‬

‫;‪using std::cout‬‬
‫;‪using std::cin‬‬
‫;‪using std::endl‬‬

‫)(‪int main‬‬
‫{‬
‫;‪Float grade,total=0,avg‬‬
‫;‪int count=1‬‬

‫)‪While(count<=500‬‬
‫{‬
‫;"‪cout<<"please enter the grade‬‬
‫;‪cin>>grade‬‬

‫)‪while(grade<0 || grade>100‬‬
‫{‬

‫;‪Cout<<"sorry you enter invalid grade, enter grade 0-100‬‬


‫;‪Cin>>grade‬‬

‫‪} //second while‬‬

‫;‪total+=grade‬‬

‫;‪count++‬‬

‫‪}//first while‬‬
‫;‪avg=total/500‬‬

‫;‪Cout<<"the avg is "<<avg‬‬

‫‪} // end function main‬‬

‫الشرح‪:‬‬
‫نلحظ في هذا السؤال العدد محدد ل ‪ 500‬طالب اي ان التكرار سيكون ‪ 500‬مرة سنقوم بشرح الجزاء التي‬
‫تتعلق بدرسنا اليوم والبقية شرجناهم في دروس سابقه‪.‬‬
‫لحظ في البداية حجزنا خانة لمتغير اسميناه ال ‪ count‬لك يسير لنا العد ففي البدايه كانت قيمته واحد فمر‬
‫على ال ‪ while‬تأكد من تحقق الشرط والشرط هو ان قيمة ال ‪ count‬ل تزيد عن ‪ 500‬لننا نريد التكرار‬
‫‪ 500‬مره فقط‪,‬بعدها يطلب البرنامج من المستخدم ان يدخل له الدرجه ومن ثم ينتقل الى ال ‪ while‬الداخليه‬
‫التي يقوم بالدخول لها اذا تحقق شرطها وهو ان تكون الدرجه التي ادخلها المستخدم اكبر من مئه او اصغر من‬
‫صفر ‪,‬طبعا اذا تحقق هذا الشرط هذا يعني ان المستخدم اخل درجه خاطئه فيطلب منه البرنامج اعادة ادخال‬
‫الدرجه كما ترون داخل ال ‪ while‬الداخلية ول ينتقل خارج ال ‪ while‬الداخلية ال اذا ادخل درجه صحيحه‬
‫هنا نضمن ان جميع الدرجات صحيحه ‪,‬فأذا ادخل المستخدم درجه في حدود ‪ 100-0‬هنا ينتقل المترجم الى‬
‫جمع الدرجه للحصول على المجموع وقد شرحنا هذا بالتفصيل في درس سابق ومن ثم يزيد قيمة ال ‪count‬‬
‫بمقدار واحد‪.‬‬
‫ربما يتبادر الى ذهنكم ما هذا ‪ ;total+=grade‬طبعا هذا يساوي ‪ total=total+grade‬ولكن اختصارا‬
‫كتبناها بالطريقة السابقه وايضا ‪ ;++count‬تعني ‪ ;count =count+1‬ولكن اختصرناها بالطريق السابقة ‪.‬‬
‫دعونا نتدرب على هذه الختصارات‪:‬‬

‫‪ ;--count‬تعني ‪;count =count-1‬‬


‫‪ Sum*=grade‬تعني ‪;sum=sum*grade‬‬
‫أرجو ان تكون قد وضحت الفكره‪.........‬نعود الى برنامجنا‪.‬‬

‫بعد ان يجمع البرنامج الدرجه في ال ‪ total‬ويزيد قيمة ال ‪ count‬بمقدار واحد يعيد هذه الخطوات الى ان‬
‫يصبح مقار ال ‪ count=500‬عندها يخرج من ال ‪ while‬ويذهب ليقوم بقسم المجموع للدرجات على ‪500‬‬
‫للحصول على المتوسط ومن ثم يقوم بطباعته ‪...‬‬
‫لحظ جعلنا العمليه الحسابية ليجاد المتوسط خارج ال ‪ while‬لننا نريد المجموع للدرجات واذا وضعنا‬
‫العملية ليجاد المتوسط ‪ ;avg=total/500‬ووضعنا ايضا ‪;cout<<"the average is "<<avg‬‬

‫هنا سيقوم البرنامج بأيجاد المتوسط وطباعته في كل مرة يدخل فيها لل ‪ while‬يعني خمسمائة مرة وطبعا هذا‬
‫ل يعطينا المطلوب لذلك وضعناه بالخارج لك عندما ينتهي البرنامج من الحصول على المجموع يقوم بأيجاد‬
‫المتوسط وطباعته ‪....‬وهنا سيطبع مره واحده‪.‬‬

‫اتمنى ان تكونوا قد فهمتم كيف يكون التكرار محدد وهو يتمثل في تحديد قيمة للتكرار وفي مثالنا هذا كانت‬
‫‪ 500‬وجعلنا ال ‪ count‬كمؤشر يعد لنا ‪ 500‬مرة‪.‬‬

‫مطلوب عمل برنامج بأستخدام لغة السي‪ ++‬يقوم هذا البرنامج بحساب المتوسط لدرجات عدد غير محدد من‬
‫الطلب يتحكم في هذا العدد المستخدم ويجب على البرنامج ان يطلب من المستخدم ادخال الدرجات ويتأكد‬
‫البرنامج من ان الدرجه التي تم ادخالها بين الصفر وال ‪ 100‬ول تتجاوز هذا الحد‪.‬‬
#include <iostream>

using std::cout;
using std::cin;
using std::endl;

int main()
{
Float grade,total=0,avg;
int count=0;

cout<<"please enter the student grade(enter -1 to end)";


cin>>grade;

while(grade!=-1)
{

while(grade<0 || grade>100)
{

Cout<<"sorry you enter invalid grade, enter grade 0-100;


Cin>>grade;

} //second while

total+=grade;

count++;

cout<<"please enter the student grade(enter -1 to end)";


cin>>grade;

}//first while

Arg=total/count;

Cout<<"the avg is "<<avg;

} // end function main

:‫الشرح‬
‫نلحظ في هذا السؤال التكرار غير محدد اي يدخل المستخدم درجات الى ان يكتفي ويطلب انهاء‬
...‫البرنامج‬
‫ لنهاء‬1- ‫في البداية سيطلب البرنامج من المستخدم ادخال اول درجة أو‬,‫تابع معي البرنامج‬
‫أي‬, 1- ‫البرنامج هنا جعلنا الشارة التي نعرف اذا اكتفى المستخدم من أدخال الدرجات ام ل هي‬
‫ وسينتهي البرنامج‬1- ‫عندما ينتهي من ادال الدرجات وتظهر له رساله ادخال الدرجه يدخل‬
.‫ويعطيه المتوسط‬
‫وأخترنا ‪ 1-‬لن ل يمكن ان توجد درجه بال ‪ 1-‬وتستطيع اختيار اي شيء ماعدا ان يكون من‬
‫ضمن الدرجات ‪. 100-0‬‬

‫بعد ان يدخل المستخدم درجة الطالب يقوم البرنامج في ال ‪ while‬بالتأكد من ان الدرجة ليست‬
‫‪ 1-‬واذا كانت ‪ 1-‬يقف البرنامج ويعطي المتوسط ‪.‬اذا لم تكن ‪ 1-‬يدخل البرنامج داخل ال ‪while‬‬
‫الولى ومن ثم يدخل داخل ال ‪ while‬الثانية التي تتأكد من ان الدرجه من ‪ 100-0‬وان ادخل‬
‫المستخدم درجه خارج هذا النطاق يبقى البرنامج داخل ال ‪ while‬ويطلب من المستخدم ادخال‬
‫درجه صحيحه ومن ثم بعد ادخال درجة صحيحه ينتقل البرنامج الى جمع الدرجه مع المجموع‬
‫وزيادة ال ‪ count‬بمقدار واحد‪ .‬قد تسأل نفسك هنا ل نحتاج ‪ count‬لتسيير البرنامج وتحديد‬
‫قيمة التكرار لن العدد غير محدد والمستخدم هو الذي يحدد العدد ‪.‬لكننا وضعنا ال ‪ count‬هنا‬
‫لننا نريد معرفة كم عدد الدرجات التي ادخلت لننا نحتاج قيمة ال ‪ count‬لحساب المتوسط لن‬
‫المتوسط عباره عن مجموع الدرجات على عددها‪.‬مجموع الدرجات نحصل عليه من ال ‪total‬‬
‫وعددها من ال ‪ count‬بعدها وضعنا‬

‫;")‪cout<<"please enter the student grade(enter -1 to end‬‬


‫;‪cin>>grade‬‬

‫تخيل لو اننا لم نضع هذه الجمله اخر ال ‪ while‬الولى لكان البرنامج بعد ان ينتهي من زيادة‬
‫ال ‪ count‬بواحد لرجع لل ‪ while‬الولى وطبعا قيمتة ال ‪ grade‬ستبقى قيمة ال ‪grade‬‬
‫الولى ولن تتغير وسيكون البرنامج في تكرار غير منتهي مما يسبب مشكلة كبيرة ولن يعطينا‬
‫المتوسط ابدا‪..‬لننا لم نعطي المستخدم مجال لدخال درجة أخرى‪.‬‬

‫لكن مع وضع هذين السطرين يسطلب البرنامج من المستخدم ادخال درجة جديده ويرجع لل‬
‫‪ while‬الولى ويتأكد ما اذا كان الشرط صحيح وان الدرجه ل تساوي ‪ 1-‬واذا كانت ‪ 1-‬يتوقف‬
‫ويعطي المتوسط‪.‬اما اذا كانت ل تساوي ‪ 1-‬دخل البرنامج الى ال ‪ while‬الثانية وتأكد من ان‬
‫الدرجه في النطاق ‪ 100-0‬وبعدها جمع الدرجه الجديده مع المجموع السابق وزاد قيمة ال‬
‫‪ count‬بواحد ويطلب البرنامج مرة اخرى من المستخدم ادخال درجة جديده فأذا كانت ‪1-‬‬
‫توقف واعطى المتوسط واذا كانت غير ذلك واصل ما قلناه سابقا وهكذا يستمر البرنامج حتى‬
‫يدخل المستخدم ‪. 1-‬فقط عندها يتوقف ويعطي المتوسط وال يبقى مستمر في أخذ الدرجات‬
‫وجمعها ‪.‬‬

‫بعد ادخال ‪ 1-‬يخرج البرنامج من ال ‪ while‬ويقسم المجموع للدرجات على عددها الذي يتمثل‬
‫في ال ‪ count‬ويعطي المتوسط ويطبعه على الشاشة‪.‬‬

‫الفرق بين المثال الول والثاني اي بين التكرار المحدد والغير محدد ان في الول قيمة التكرار‬
‫تحدد في ال ‪ while‬الولى أما في الثاني الشرط الذي يوقف البرنامج يوضع في ال ‪while‬‬
‫الولى وطبعا في التكرار الغير محدد ل تنسى من وضح ‪ cout‬لك تخبر المستخدم بأدخال قيمة‬
‫جديده و ‪ cin‬لك تحفظ هذه القيمة في المتغير المخصص لها كما فعلنا في هذين السطرين‬
‫;")‪cout<<"please enter the student grade(enter -1 to end‬‬
‫;‪cin>>grade‬‬
....... ‫أرجو ان يكون الفرق واضح لديكم‬

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

Question1: write a program that reads integers and determine whether it is odd or
even. (Hint: use the modulus operator .an even number is a multiple of two. any
.(multiple of two leaves a reminder of zero when divide by 2
.Make sure to make this program for non fix number

‫ يقوم بأدخال اعداد صحيحه وفي كل مره يدخل المستخدم‬++C ‫ قم بكتابة برنامج بأستخدام لغة ال‬:3 ‫السؤال‬
‫ لتساعدك في الحل واي عدد‬% ‫ استخدم‬:‫عدد يقوم البرنامج بتحديد اذا كان العدد فردي او زوجي )ملحظه‬
(‫ يكون الباقي دائما صفرا‬2 ‫زوجي يقسم على‬
........ ‫بهذه الملحظه اصبحت الفكرة جاهزة لكم‬
#include <iostream.h >
int main ( )
{
char flag=y
int number ;

while(flag!=n)
{
cout << " please enter the number : " ;
cin >>number ;

if (number % 2 == 0 )
cout <<" \n The number is even " ;

else (number % 2 == 1 )
cout << " \n The number is odd " ;

cout<<"do u want to check another number,y=yes,n=no"<<end1;


cin>>flag;

while(flag!=y && flag !=n)


{
cout<<"sorry rong command";
cout<<"do u want to check another number,y=yes,n=no"<<end1;
cin>>flag;

}
‫}‬
‫; ‪return 0‬‬

‫}‬

‫نصل هنا لنهاية الدرس السابع وانهاء دراسة ال ‪ while‬ارجو ان تكونوا قد فهمتوها جيدا فهي جملة مفيده‬
‫جدا وسننتقل في الدرس القادم بأذن ال الى ال ‪.. for loop‬‬

‫الى ذلك الحين دمتم بخير وعافيه والسلم عليكم ورحمة ال وبركاته‪.‬‬

‫‪§*)§®¤*~ˆ°‬سبحانك اللهم وبحمدك أشهد ان ل اله الانت استغفرك وأتوب أليك §*(§®‪°ˆ~*¤‬‬

‫`~'*‪))`~'*¤!||!¤‬كاتبة الدرس ‪......‬بنت النور‪......‬عفوا يمنع اجراء اي تعديل للملف ((`~'*‪`~'*¤!||!¤‬‬

‫`~'*‪))`~'*¤!||!¤‬نسألكم دعوة صادقة لختكم في ظهر الغيب ((`~'*‪`~'*¤!||!¤‬‬

You might also like