دردش وتعلم التقنية
نرحب بك معنا في منتدى دردش وتعلم التقنية

قم بتسجيل الدخول او قم بأنشاء حساب جديد وانظم الى اسره المنتدى

اسره المنتدى بأنتظارك ويشرفنا انظمامك الينا
دردش وتعلم التقنية
نرحب بك معنا في منتدى دردش وتعلم التقنية

قم بتسجيل الدخول او قم بأنشاء حساب جديد وانظم الى اسره المنتدى

اسره المنتدى بأنتظارك ويشرفنا انظمامك الينا
أخر المشاركاتأفضل الاعضاء هذا الشهرأفضل 10 اعضاء
Hex WorkShop 6.8.0 + Crack اليوم في 5:51lidongdongasd@qq.com
Rappelz JoKeR Weapons : AlNisr 04.05.24 22:09hope54
ملفات سيرفر امل الشعوب - Rappelz Server Files : AlNisr 03.05.24 19:32rappelz705
Rappelz All Clients : AlNisr 03.05.24 16:23cigarette987
ملفات سيرفر أمل الشعوب 7.4 03.05.24 16:13cigarette987
[حصرياً] أقوى جي ام تول , Royal GM-Tool 03.05.24 2:25hope54
مشكلة تبديل السلاح وتعلق السيرفر - 1 : AlNisr 02.05.24 20:20namanslah
حصريا TP-Tool By TwilightPrince V8.0 02.05.24 16:17Asher1997
Arabic Rappelz Gm Tool 02.05.24 13:48Asher1997
شرح صنع لانشر امل الشعوب رسمي بصيغة bat 01.05.24 19:24Asher1997
6 المساهمات
3 المساهمات
2 المساهمات
1 مُساهمة
1 مُساهمة
1 مُساهمة
1 مُساهمة
1 مُساهمة
2853 المساهمات
2198 المساهمات
1672 المساهمات
1586 المساهمات
1365 المساهمات
1156 المساهمات
1097 المساهمات
996 المساهمات
588 المساهمات
567 المساهمات

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

الدرس التاسع : تركيبة while وأشكال استخدامها

المشاركة رقم: ( 1 )
GeNeRaL_Dz
GeNeRaL_Dz
تقني نشيط
تقني نشيط
المشاركات : 193
نقاط : 264
التقييم : 3
تاريخ التسجيل : 27/03/2013
19.01.14 18:10


وفي هذا الدرس إن شاء الله سنشرح تركيبة while للتكرار :
3- تركيبة while التكرارية .
تركيبة التكرار تسمح للمبرمج بتحديد الحدث المطلوب تكراره طالما الشرط متحقق (True).
مثال : لاحظ هذا الجزء من برنامج ، يجد أول قوه للرقم 2 حيث يكون ناتجها أكبر من 1000 .
والآن سنفرض متغير product من نوع integer . ثم نطبق ال pseudocode ( الكود الوهمي ) التالي:

 



While product less than or equal 1000

product equal 2 multiplied by product



كما يلي :
 

C#
int product = 2;




while ( product <= 1000)

product = 2 * product;

والشكل التالي يوضح أسلوب عمل while في هذا البرنامج :
 

 
[ندعوك للتسجيل في المنتدى أو التعريف بنفسك لمعاينة هذه الصورة]
ستظل هذه ال loop (الدارة) تعمل حتى يفشل الشرط أي إذا أصبحت قيمة ال product أكبر أو تساوي 1000 فعندها يتوقف عن العمل . وهذه هي نتائج البرنامج كاملا ً:
 

MS-DOS


4

8

16

32

64

128

256

512

1024

The first power of 2 which it's product grater than 1000 is 10

Press any key to continue



أي أن أول قوه للرقم 2 ناتجها يعطي قيمة أكبر من 1000 هو 10
ملاحظة :
* يجب الانتباه إلى شرط الجملة الشرطية لأن بعض الأخطاء قد تؤدي إلى infinite loop ( دائرة غير منتهية ) بمعنى تكرار غير منتهى .
* أول حرف من أي كلمة محجوزة يجب أن يكون Lowercase (حرف صغير ) while فإذا حدث خطأ وكتبت Uppercase (حرف كبير ) While يحدث syntax error أي خطأ قواعدي .
( بما أن الكلمة المحجوزة تحولت إلى اللون الأزرق فمعناه أن الكلمة صحيحة ).
وهذا هو البرنامج : نحميل
* أشكال استخدام while التكرارية :
1- استخدام التكرار كعداد
2- عدد التكرار يعتمد على قيمة مدخلة .
3- التراكيب المتداخلة .

1- استخدام التكرار كعداد :
سنقوم الآن بإنشاء Class ونسميه Average1 , وهو برنامج يقوم بجمع درجات الطلاب المدخلة وتقسيمها على عددهم وسيكون هنا عدد الطلاب محدد وهو 10 .
وال pseudocode (الكود الوهمي ) التالي يوضح ال Algorithm (الخوارزمية) التي سنتتبعها أثناء البرمجة :
 



set total to zero

set grade counter to one




While grade counter is less than or equal to ten

Input the next grade

Add the grade into the total

Add one to the grade counter




Set class average to the total divided by ten

Print t he class average



والآن سنبدأ بكتابة كود #C :
أولاً سنقوم بتعريف مجموعة من المتغيرات ولنفرض أن الدرجات كلها صحيحة(integer) :
 

C#
int total = 0 , //مجموع الدرجات

gradeCounter = 1,//عدد الدرجات المدخلة

gradeValue, //قيمة الدرجة

average; //معدل الدرجات



ملاحظة:
يجب إعطاء قيم بدائية لأي متغير يتم الزيادة عليه أو الطرح منه أو أي عملية حسابية في كل loop ( كقيمة product في المثال السابق ) ، لأنه عندما يستقبل قيمة لا يعرف لأي قيمة سيزيدها أو من أي قيمة سيطرحها إلا إذا كان يملك قيمة بدائية .
والآن سنطبق جملة while :
 

C#


//loop 10 times تكرار 10 مرات

while ( gradeCounter <= 10)

{

// للتوضيح للمستخدم ما المطلوب

Console.Write( " Enter integer grade: ");

// integer قراءة المدخل وتحويله إلى

//gradeValue وخزنة في المتغير

gradeValue = Int32.Parse(Console.ReadLine());

//total إلى gradeValue إضافة قيمة المتغير

total = total + gradeValue;

//gradeCounter إضافة قيمة 1 للعداد

gradeCounter = gradeCounter + 1;

}


في كل دورة سيتم إضافة القيمة المدخلة إلى total وإضافة 1 للعداد ليحسب عدد مرات الإضافة .
والآن سيتم حساب المعدل ومن ثم طباعته :
 

C#


//قسمة صحيحة لمجموع القيم

average = total / 10 ;

// طباعة معدل مجموع الدرجات

Console.WriteLine(" \nClass Average is {0} " , average);



وهذا هو البرنامج : تحميل
 
2- عدد التكرار يعتمد على قيمة مدخلة :
سنقوم بكتابة نفس البرنامج السابق لكن بتطور أكثر قليلا ً . لأن عدد الدرجات المدخلة ستكون غير محدده بل تعتمد على المستخدم حيث يقوم بإدخال الدرجات بالعدد الذي يريد وعند الانتهاء يُدخِل قيمة
تدعى sentinel Value (القيمة الحارس أو قيمة التوقف) وهي قيمة زائفة لا تنتمي إلى مجال القيمة المدخلة . فمثلا ً قيم الدرجات محصورة بين 100 – 0 ، لذا يجب اختيار هذه القيمة خارج هذا المجال وسنفرضها في هذا البرنامج 1- لأنه من غير الممكن أن تكون درجة بالسالب.
والآن سنفهم الpseudocode التالي ثم نترجمه إلى #C code :
 



Initialize total to zero

Initialize counter to zero




Input the first grade (possibly the sentinel)




While the user has not as yet entered the sentinel

Add this grade into the running total

Add one to the grade counter

Input the next grade (possibly the sentinel )




If the counter is not equal to zero

Set the average to the total divided by the counter

Print the average

Else

Print “No grades were entered “



أولا ً سنقوم بتعريف متغيرtotal وإعطاؤه قيمة بدائية 0 ، لأنه عند إدخال قيمة درجة سيجمعها مع الصفر حيث لا يؤثر على هذه القيمة ويتم تخزينها .
وأيضا ً سنعرف متغير counter ونعطيه قيمة بدائية 0 أي أن عدد الدرجات المدخلة تساوي 0 حتى الآن .
والآن قراءة أول قيمة مدخلة ويمكن أن تكون sentinel value (قيمة التوقف) 1- .
 



تستقبل دارة while (while loop) القيمة المدخلة إليها وتقوم باختبارها :

إذا كانت تساوي 1- ستـُهمل جملة while وينتقل التنفيذ إلى جملة if .

تختبر قيمة العداد .

إذا كان counter != 0

سيحسب المعدل بقسمة ال total على counter وتخزينها

بالمتغير Average ثم طباعتها

إذا كان counter == 0

هذا يعني أنه لم يتم إدخال أي قيمة فينتقل التنفيذ إلى

else ويطبع

“No grades were entered “

إذا كانت لا تساوي 1- فسينفذ التعاليم التي يحتويها

حيث يقوم بإضافة هذه القيمة إلى total ،

ثم إضافة 1 لقيمة counter

ثم الاستعداد لقراءة قيمة أخرى .



ملاحظة :
في هذا البرنامج عرفنا المتغير Average من نوع double لأننا سنسند إليه قيمة حقيقية وليس صحيحة أي بكسور. ولكن القيمة الناتجة صحيحة لأن total معرفة int و counter أيضا ً معرفة int لذا عند عمليه القسمة حولنا total إلى double حتى تكون القيمة الناتجة بكسور .

والآن سنقوم بكتابة هذا البرنامج بلغة #C .
 

C#


int total = 0, //مجموع الدرجات

gradeCounter = 0, // عدد الدرجات المدخلة

gradeValue; // قيمة الدرجة




double average; // معدل الدرجات

//integer جملة البداية وجملة التحويل إلى

Console.Write("Enter Integer Grade, -1 to Quit: ");

gradeValue = Int32.Parse( Console.ReadLine());

// -1 مستمر حتى إدخال رقم loop

while ( gradeValue != -1)

{

//total إضافة القيمة إلى

total = total + gradeValue;

//gradeCounter إضافة 1 للعداد

gradeCounter = gradeCounter + 1;

// جملة التذكير للمستخدم وجملة التحويل

Console.Write("Enter Integer Grade, -1 to Quit: ");

gradeValue = Int32.Parse( Console.ReadLine());

} // end while

if ( gradeCounter != 0)

{

// حساب المعدل ثم طباعته

average = (double ) total / gradeCounter;

Console.WriteLine("\nClass average is {0} :", average);

}

else

Console.WriteLine("\nNo grades were entered .");




وهذا هو برنامج Average2: تحميل

 
 
 
 
 لا تنسوا التقييم أخوكم GeNeRaL_Dz


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