23-09-12, 12:04 PM
(آخر تعديل لهذه المشاركة : 23-09-12, 12:11 PM {2} بواسطة الجوزاء وال.)
بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته سيكون درسنا اليوم ان شاء الله عن جمل التكرار والدوران وسيكون عملنا الكلي على الكونسول
ولفتح مشروع كونسول جديد اتبع الصورة التالية :_
ولفتح مشروع كونسول جديد اتبع الصورة التالية :_
لقد قمنا بإيضاح شيء بسيط حول الكونسول في الفصل الاول هنا
والان سوف نتعلم سوياً كيفية استخدام جمل التكرار والدوران داخل هذا الكونسول
ملاحظة هامة :_ المصفوفات غالباً مايتم استخدامها مع جمل التكرار والدوران
لذلك سوف نتعلم ذلك الان
لذلك سوف نتعلم ذلك الان
==================================================
اولاً :- ماهي جمل التكرار :-
جمل التكرار :-
باختصار هي جزء من البرنامج يتكرر
فمثلاً اذا اردنا ان نضيف على الكومبو ال قائمة المنسادلة الارقام من
0
إلى
100
فهل من المعقول ان نقوم بكتابة 100 سطر لاجل ذلك ؟؟
بالطبع لا ....
بالطبع لا ....
---------------------------------------
وسينتج لنا كود كبير جدأً وبدون اي فائدة منه :- مثل
كود :
[color=#0000BB]ComboBox1[/color][color=#007700].[/color][color=#0000BB]Items[/color][color=#007700].[/color][color=#0000BB]Add[/color][color=#007700]([/color][color=#0000BB]1[/color][COLOR=#007700])
[/COLOR][color=#0000BB]ComboBox1[/color][color=#007700].[/color][color=#0000BB]Items[/color][color=#007700].[/color][color=#0000BB]Add[/color][color=#007700]([/color][color=#0000BB]2[/color][COLOR=#007700])
[/COLOR][color=#0000BB]ComboBox1[/color][color=#007700].[/color][color=#0000BB]Items[/color][color=#007700].[/color][color=#0000BB]Add[/color][color=#007700]([/color][color=#0000BB]3[/color][COLOR=#007700])
[/COLOR]
.
.
.
.
.
كود :
[FONT=Verdana][FONT=arial][b]
[color=#0000BB]ComboBox1[/color][color=#007700].[/color][color=#0000BB]Items[/color][color=#007700].[/color][color=#0000BB]Add[/color][color=#007700]([/color][color=#0000BB]99[/color][COLOR=#007700])
[/COLOR][color=#0000BB]ComboBox1[/color][color=#007700].[/color][color=#0000BB]Items[/color][color=#007700].[/color][color=#0000BB]Add[/color][color=#007700]([/color][color=#0000BB]100[/color][COLOR=#007700])
[/COLOR][/b][/FONT][/FONT]
الان سنجرب ان نضيف اليه الارقام ولكن باستخدام جملة التكرار for مثلاً :-
كود :
[color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#007700]For [/color][color=#0000BB]i [/color][color=#007700]= [/color][COLOR=#0000BB]1 to 100
ComboBox1[/COLOR][color=#007700].[/color][color=#0000BB]Items[/color][color=#007700].[/color][color=#0000BB]Add[/color][color=#007700]([/color][color=#0000BB]i[/color][COLOR=#007700])
[/COLOR][color=#0000BB]next [/color]
[/b][/FONT][/FONT][/align]
[/COLOR]
بهذه الكود هنا سوف يقوم بعمل اضافة للاعداد من 1 إلى 100 ولا حظ ان كلمة next تاتي مع حلقة for دائماً
---------------------------------------------
أقسام جمل التكرار:
1-جمل التكرار باستخدام For..Next
2-جمل التكرار باستخدام Do...Loop
1-جمل التكرار باستخدام For..Next
2-جمل التكرار باستخدام Do...Loop
-------------------------------
*******************************************
اولاً :- جملة التكرار for --- next
يمكننا استخدام هذه الجملة عندما نريد تكرار التعليمة حسب المراد
فمثلاً كما في المثال السابق حدد انا نريد الارقام من 1 إلى 100 وبهذا صار التكرار معلوماً لدينا
وتكون الصيغة العامة لجملة التكرار for .... next بالشكل التالي :-
كود :
[FONT=Verdana][FONT=arial][b][COLOR=#007700]
For [/COLOR][color=#0000BB]i [/color][color=#007700]= ([/color][color=#0000BB]ٍStartValue[/color][color=#007700]) [/color][color=#0000BB]to [/color][color=#007700]([/color][color=#0000BB]EndValue[/color][COLOR=#007700])
[/COLOR][COLOR=#0000BB]Condition
Next i
[/COLOR][/b][/FONT][/FONT]
>
......................./\/\/\/\\/\/\/...........................
مثلاً هذا الكود لاضافة مصفوفة جديدة ومن خلال جملة التكرار اريدها ان تضع الاسماء التي بداخل المصفوفة
وتكتب في الكونسول
كود :
[color=#000000][align=left][FONT=Verdana][FONT=arial][b] [COLOR=#0000BB]Dim *****rab[/color][color=#007700]() As [/color][color=#0000BB]String [/color][color=#007700]= {[/color][color=#DD0000]"lo2i"[/color][color=#007700], [/color][color=#DD0000]"ali"[/color][color=#007700], [/color][color=#DD0000]"mohammed"[/color][color=#007700], [/color][color=#DD0000]"samer"[/color][color=#007700], [/color][color=#DD0000]"some one"[/color][COLOR=#007700]}
For [/COLOR][color=#0000BB]i [/color][color=#007700]= [/color][COLOR=#0000BB]0 To 4
Console[/COLOR][color=#007700].[/color][color=#0000BB]WriteLine[/color][color=#007700]([/color][color=#DD0000]"the name is " [/color][color=#007700]& [/color][color=#0000BB]*****rab[/color][color=#007700]([/color][color=#0000BB]i[/color][COLOR=#007700]))
[/COLOR][COLOR=#0000BB]Next
Console[/COLOR][color=#007700].[/color][color=#0000BB]ReadKey[/color][color=#007700]() [/color]
[/b][/FONT][/FONT][/align]
[/COLOR]
------------------------------------------
قمنا بتعريف مصفوفة جديد وادخلنا فيها القيم التالية -
كود :
[color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#007700]{[/color][color=#DD0000]"lo2i"[/color][color=#007700], [/color][color=#DD0000]"ali"[/color][color=#007700], [/color][color=#DD0000]"mohammed"[/color][color=#007700], [/color][color=#DD0000]"samer"[/color][color=#007700], [/color][color=#DD0000]"some one"[/color][color=#007700]} [/color]
[/b][/FONT][/FONT][/align]
[/COLOR]
استخدمنا الكلمة المحجوزة
for
قمنا بتنفيذ تكرار جديد واعطينا قيمة له هي ان يبدأ بالعد من الصفر وينتهي ب اربعة
اي 0 1 2 3 4 اي خمس مرات
اي 0 1 2 3 4 اي خمس مرات
الصفر رقم منفصل -
الواحد رقم منفصل -
الاثنين رقم منفصل -
الثلاثة رقم منفصل -
الاربعة رقم منفصل –
يمكنك تجريب النتيجة بنفسك الان لعمل ذلك
ولا حظ هنا اننا كتبنا هذا الكود
ولا حظ هنا اننا كتبنا هذا الكود
كود :
[color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#0000BB]Console[/color][color=#007700].[/color][color=#0000BB]WriteLine[/color][color=#007700]([/color][color=#DD0000]"the name is " [/color][color=#007700]& [/color][color=#0000BB]*****rab[/color][color=#007700]([/color][color=#0000BB]i[/color][color=#007700])) [/color]
[/b][/FONT][/FONT][/align]
[/COLOR]
وهو الكود الذي سيقوم بتكرار نفسه خمس مرات على التوالي
ملاحظة هامة جداً :-
سيقوم تكرار العد على العداد الذي نقوم بتعريفه في جملة التكرار
فمثلاً قيمة i
لاول مرة سيكون 0
فمثلاً قيمة i
لاول مرة سيكون 0
وبعد وصوله للكلمة المحجوزة next
سوف يعود لبداية التكرار
بعد ان تصبح قيمته 2
وهكذا حتى تصل إلى خمسة
اذا وصل العداد إلى الرقم 5 خرج من جملة التكرار
وادى الاكواد التالية ...
ولا تنسوا انه يمكننا الحصول على القيمة التي بداخل اي مصفوفة من خلال الكود التالي
بعد ان تصبح قيمته 2
وهكذا حتى تصل إلى خمسة
اذا وصل العداد إلى الرقم 5 خرج من جملة التكرار
وادى الاكواد التالية ...
ولا تنسوا انه يمكننا الحصول على القيمة التي بداخل اي مصفوفة من خلال الكود التالي
كود :
[color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#0000BB]Textbox1[/color][color=#007700].[/color][color=#0000BB]text [/color][color=#007700]= [/color][color=#0000BB]*****rab[/color][color=#007700]([/color][color=#0000BB]1[/color][color=#007700]) [/color]
[/b][/FONT][/FONT][/align]
[/COLOR]
وسيظهر لنا في التيكست اسم lo2i
طيب لماذا في جملة التكرار لم نقم بكتابة عدد داخل فهرس المصفوفة
كما تلاحظون كتبنا داخل فهرس المصفوفة العداد i
الذي عرفناه على انه جملة تكرار تبدأ من الصفر وتنهي عند الاربعة
كما تلاحظون كتبنا داخل فهرس المصفوفة العداد i
الذي عرفناه على انه جملة تكرار تبدأ من الصفر وتنهي عند الاربعة
*********************************************
نعم المسألة بسيطة اكثر مما تتصور
فكما قلنا ان العداد سوف يبدأ من القيمة صفر وهي اول قيمة في المصفوقة ايضاً
لان المصفوفة كمان قيمها تبدأ من العدد ر قم صفر
وعند وصوله اول مرة إلى كلمة next
سوف يذهب إلى ال for
وتكون قيمته 1
وسيعرض لنا القيمة الاولى في المصفوفة التي تأتي بعد الصفر
وهكذا
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
[SIZE=7]ثانياً :- جملة التكرار Do...Loop[/SIZE]
القسم الأول:توضيح الحلقة Do...Loop
هذا التكرار لا يقيدنا بقيم البداية أو النهاية بل يتحدد فقط بتحقق الشرط وبالنسبة للحلقة For..Next نحدد مقدار الزيادة أو النقصان في مقدار العداد
الفرق بين ال for next
و
Do...Loop
الفرق كما ذكرنا في التعريف ان جملة ال for next قمنا بتحديد مقدار الاضافة ومقدار العداد له
اما جملة التكرار do while
اما جملة التكرار do while
فهي غير محددة وينتهي تكرارها بالاعتماد على الشرط التي اعطيته بها
مثلاً في هذا الكود هنا
مثلاً في هذا الكود هنا
كود :
[color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#007700]For [/color][color=#0000BB]x [/color][color=#007700]= [/color][COLOR=#0000BB]o to 2
Msgbox x
Next [/COLOR]
[/b][/FONT][/FONT][/align]
[/COLOR]
ستظهر لنا ثلاث رسايل فيها التالي:-
اقتباس:
الاولى رقم 1
الثانية رقم 2
الثالثة رقم 3
واما الكود التالي لجملة التكرار ال
do ..Loop
كود :
[color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#0000BB]Dim x [/color][color=#007700]As [/color][COLOR=#0000BB]Integer
x [/COLOR][color=#007700]= [/color][COLOR=#0000BB]0
[/COLOR][color=#007700]Do While [/color][color=#0000BB]Not x [/color][color=#007700]= [/color][COLOR=#0000BB]4
MsgBox[/COLOR][color=#007700]([/color][color=#0000BB]x[/color][COLOR=#007700])
[/COLOR][color=#0000BB]x [/color][color=#007700]= [/color][color=#0000BB]x [/color][color=#007700]+ [/color][COLOR=#0000BB]1
Loop [/COLOR]
[/b][/FONT][/FONT][/align]
[/COLOR]
--------------------
سيقوم الكود التالي بطباعة المسج الرسالة msgbox 3 مرات على التوالي :
وبهذا //؟
وبهذا //؟
اعتقد ان الفرق اصبح واضح الان
.................................................. .....................................
القسم الثاني:جزأي الحلقة Do...Loop
- [*=center]الحلقة Do While...Loop
[*=center]الحلقة Do Until...Loop
أولا:الحلقة Do While...Loop
باختصار تقوم هذه الحلقة بتنفيذ التعليمات المحتواة طالما تحقق الشرط وعند فشل الشرط تتوقف هذه الحلقة
مثال بسيط:
باختصار تقوم هذه الحلقة بتنفيذ التعليمات المحتواة طالما تحقق الشرط وعند فشل الشرط تتوقف هذه الحلقة
مثال بسيط:
كود :
Dim I As Integer = 0 Do While I < 10 Console.Write(I) I = I + 1 Console.WriteLine() Loop Console.ReadKey()
الآن سيقوم البرنامج باختبار الشرط عند اول عملية تنفيذ وسيرى أن الشرط قد تحقق لان صفر اقل من عشرة وهكذا الى ان يصل الرقم تسعة فيزيد البرنامج 1 ويفشل الشرط وبهذا تنتهي الحلقة
والناتج:
والناتج:
0
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
ثانيا:الحلقة Do Until...Loop
تقوم هذه الحلقة بتنفيذ التعليمات داخل كتلة Do...Loop طالما لم يتحقق الشرط وبمجرد تحققه تتوقف الحلقة(اذن كما نرى فهي تعمل عكس الحلقة Do While...Loop
مثال:
تقوم هذه الحلقة بتنفيذ التعليمات داخل كتلة Do...Loop طالما لم يتحقق الشرط وبمجرد تحققه تتوقف الحلقة(اذن كما نرى فهي تعمل عكس الحلقة Do While...Loop
مثال:
كود :
Dim I As Integer = 0 Do Until I >= 10 Console.Write(I) I = I + 1 Console.WriteLine() Loop Console.ReadKey()
كما نرى فان الشرط هو مضاد تماما للشرط في الحلقة السابقة لكن نتج نفس النتائج بالضبط!!كيف ذلك؟
الآن ستبدأ الحلقة باختبار الشرط ووجده خاطئ لذلك ينفذ التعليمات الى ان يتحقق الشرط وعندما يصل الرقم تسعة فبزيادة 1 تصبح عشرة وبالتالي يصبح الشرط صحيحا وتتوقف الحلقة
وناتج الحلقة هو
الآن ستبدأ الحلقة باختبار الشرط ووجده خاطئ لذلك ينفذ التعليمات الى ان يتحقق الشرط وعندما يصل الرقم تسعة فبزيادة 1 تصبح عشرة وبالتالي يصبح الشرط صحيحا وتتوقف الحلقة
وناتج الحلقة هو
0
1
2
3
4
5
6
7
8
9
القسم الثالث:الفحص قبل الحلقة أو بعد الحلقة
الجزء الأول: الفحص المبدأي: Pre-Test
يقوم البرنامج بفحص الشرط ثم ينفذ الحلقة بعد التحقق من صحة الشرط
مثال: جميع أمثلة Do..Loop السابقة هي من هذا النوع من الفحص
الجزء الثاني:الفحص بعد تنفيذ الحلقة: Posted-Test
يقوم البرنامج بتنفيذ التعليمات لاول مرة ثم يقوم بعد تنفيذ التعليمات للمرة الأولى بفحص الشرط
أي أنه ينفذ التعليمات لاول مرة بالرغم من صحة الشرط المعطى:
مثال: نظام (هل تريد اعادة البرنامج في تطبيقات الكونسول)
الآن سأوضح الفكرة بهذا الكود:
يقوم البرنامج بفحص الشرط ثم ينفذ الحلقة بعد التحقق من صحة الشرط
مثال: جميع أمثلة Do..Loop السابقة هي من هذا النوع من الفحص
الجزء الثاني:الفحص بعد تنفيذ الحلقة: Posted-Test
يقوم البرنامج بتنفيذ التعليمات لاول مرة ثم يقوم بعد تنفيذ التعليمات للمرة الأولى بفحص الشرط
أي أنه ينفذ التعليمات لاول مرة بالرغم من صحة الشرط المعطى:
مثال: نظام (هل تريد اعادة البرنامج في تطبيقات الكونسول)
الآن سأوضح الفكرة بهذا الكود:
كود :
[align=right][align=left][align=right][align=left][align=right][align=left][align=right][align=left][align=center][align=right][align=center]Dim again As String Do Console.Write("Do you Want to re-start The Program?(Y/N)") again = Console.ReadLine() Loop While (again = "Y" Or again = "y")
[/align]
[/align]
[/align]
[/align]
[/align]
[/align]
[/align]
[/align]
[/align]
[/align]
[/align]
الآن نخبر البرنامج أول مرة أن يقوم بتنفيذ التعليمات وبعد ذلك يقوم البرنامج بالتحقق من قيمة again التي أدخلناها وقت التنفيذ فاذا كانت تساوي y أو Y فنخبره بتكرار الحلقة وان لم يكن يتخطى الحلقة
ثالثاً :-
طبعاً النوع هذا لا يعتبر نوع بحد مايعتبر طريقة استثنائية ثانية
فمثلاً اذا اردنا ان نقوم بتعبئة الكونسول 10 مرات ali
بدون ذكر اي من الكلمات for او do while
فسنعمل طريقة التالية لتعبئة الكونسول بدون استخدام اي من جمل التكرار المعروفة
وهذه هي الطريقة :_
كود :
[align=center][COLOR=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#0000BB]
Dim s [/COLOR][color=#007700]As [/color][COLOR=#0000BB]Integer
s [/COLOR][color=#007700]= [/color][COLOR=#0000BB]0
lo2i[/COLOR][COLOR=#007700]:
[/COLOR][color=#0000BB]s [/color][color=#007700]= [/color][color=#0000BB]s [/color][color=#007700]+ [/color][COLOR=#0000BB]1
Console[/COLOR][color=#007700].[/color][color=#0000BB]WriteLine[/color][color=#007700]([/color][color=#DD0000]"ali"[/color][COLOR=#007700])
If [/COLOR][color=#0000BB]s [/color][color=#007700]< [/color][COLOR=#0000BB]5 Then GoTo lo2i
Console[/COLOR][color=#007700].[/color][color=#0000BB]ReadKey[/color][color=#007700]() [/color]
[/b][/FONT][/FONT][/align]
[/COLOR][/align]
شرح الكود السابق :-
السطر الاول :-
كود :
[align=center][color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#0000BB] Dim s [/color][color=#007700]As [/color][color=#0000BB]Integer [/color]
[/b][/FONT][/FONT][/align]
[/COLOR][/align]
عرفنا متغير من نوع رقمي وللتعلم المزيد حول المتغيرات والثوابت ادخل هنا
****
السطر الثاني :-
كود :
[align=center][color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#0000BB]s [/color][color=#007700]= [/color][color=#0000BB]0 [/color]
[/b][/FONT][/FONT][/align]
[/COLOR][/align]
اسندنا قيمة للمتغير s وهي صفر .
*****
السطر الثالث :-
كود :
[align=center][color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#0000BB]lo2i[/color][color=#007700]: [/color]
[/b][/FONT][/FONT][/align]
[/COLOR][/align]
ماهذا
((سنشرحه بعد قليل))
السطر الخامس :-
كود :
[align=center][color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#0000BB]Console[/color][color=#007700].[/color][color=#0000BB]WriteLine[/color][color=#007700]([/color][color=#DD0000]"ali"[/color][color=#007700]) [/color]
[/b][/FONT][/FONT][/align]
[/COLOR][/align]
الكود الذي تستطيع من خلاله كتابة اي شيء في الكونسول
وهنا اخترنا اسم علي ali
**********
السطر السادس:-
كود :
[align=center][color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#007700]If [/color][color=#0000BB]s [/color][color=#007700]< [/color][color=#0000BB]5 Then GoTo lo2i [/color]
[/b][/FONT][/FONT][/align]
[/COLOR][/align]
جملة شرطية واعتقد انها واضحة بعد ماقمت بقرأءة هذا الدرس هنا
ومضمون هذه الحملة الشرطية انه اذا كانت قيمة المتعير s
اذهب إلى كلمة لؤي lo2i
وابدأ بالقراءة من هناك ...
****************
السطر السابع :-
كود :
[align=center][color=#000000][align=left][FONT=Verdana][FONT=arial][b][COLOR=#0000BB]Console[/color][color=#007700].[/color][color=#0000BB]ReadKey[/color][color=#007700]() [/color]
[/b][/FONT][/FONT][/align]
[/COLOR][/align]
هذا الكود اذا لم تضعه فسوف تفتح لك شاشة الكونسول وتقفل بدون ان ترى اي شيء كتب فيها
لذلك يجب عليك ان تقوم بكتابته لكي تستطيع القراءة من الكونسول ...
**********
اي انه باستخدام جملة ال Goto
يمكنك البدء من سطر جديد في الكود ام من اجراء معين
ولا حظ ان كلمة Lo2i يكتب بعدها : نقطتان رئسيتان
كما هو موضح في الصورة التالية :-
=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
[b]يتبع[/b]