15-11-13, 08:44 PM
(آخر تعديل لهذه المشاركة : 15-11-13, 08:51 PM {2} بواسطة Omar Mekkawy.)
ثانياً :- جملة التكرار Do...Loop
القسم الأول:توضيح الحلقة Do...Loop
هذا التكرار لا يقيدنا بقيم البداية أو النهاية بل يتحدد فقط بتحقق الشرط وبالنسبة للحلقة For..Next نحدد مقدار الزيادة أو النقصان في مقدار العداد
الفرق بين ال for next و Do...Loop
الفرق كما ذكرنا في التعريف ان جملة ال for next قمنا بتحديد مقدار الاضافة ومقدار العداد له
اما جملة التكرار do while
فهي غير محددة وينتهي تكرارها بالاعتماد على الشرط التي اعطيته بها
مثلاً في هذا الكود هنا
القسم الأول:توضيح الحلقة Do...Loop
هذا التكرار لا يقيدنا بقيم البداية أو النهاية بل يتحدد فقط بتحقق الشرط وبالنسبة للحلقة For..Next نحدد مقدار الزيادة أو النقصان في مقدار العداد
الفرق بين ال for next و Do...Loop
الفرق كما ذكرنا في التعريف ان جملة ال for next قمنا بتحديد مقدار الاضافة ومقدار العداد له
اما جملة التكرار do while
فهي غير محددة وينتهي تكرارها بالاعتماد على الشرط التي اعطيته بها
مثلاً في هذا الكود هنا
كود :
For x = o to 2
Msgbox x
Nextستظهر لنا ثلاث رسايل فيها التالي:-
الاولى رقم 1
الثانية رقم 2
الثالثة رقم 3
واما الكود التالي لجملة التكرار ال do ..Loop
كود :
Dim x As Integer
x = 0
Do While Not x = 4
MsgBox(x)
x = x + 1
Loop--------------------
سيقوم الكود التالي بطباعة المسج الرسالة msgbox 3 مرات على التوالي :
وبهذا //؟
اعتقد ان الفرق اصبح واضح الان
.................................................. .....................................
القسم الثاني:جزأي الحلقة Do...Loop
الحلقة 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
ثانيا:الحلقة Do Until...Loop1
2
3
4
5
6
7
8
9
تقوم هذه الحلقة بتنفيذ التعليمات داخل كتلة 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 تصبح عشرة وبالتالي يصبح الشرط صحيحا وتتوقف الحلقة
وناتج الحلقة هو
0
1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
القسم الثالث:الفحص قبل الحلقة أو بعد الحلقة
الجزء الأول: الفحص المبدأي: Pre-Testيقوم البرنامج بفحص الشرط ثم ينفذ الحلقة بعد التحقق من صحة الشرط
مثال: جميع أمثلة Do..Loop السابقة هي من هذا النوع من الفحص
الجزء الثاني:الفحص بعد تنفيذ الحلقة: Posted-Test
يقوم البرنامج بتنفيذ التعليمات لاول مرة ثم يقوم بعد تنفيذ التعليمات للمرة الأولى بفحص الشرط
أي أنه ينفذ التعليمات لاول مرة بالرغم من صحة الشرط المعطى:
مثال: نظام (هل تريد اعادة البرنامج في تطبيقات الكونسول)
الآن سأوضح الفكرة بهذا الكود:
كود :
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")الآن نخبر البرنامج أول مرة أن يقوم بتنفيذ التعليمات وبعد ذلك يقوم البرنامج بالتحقق من قيمة again التي أدخلناها وقت التنفيذ فاذا كانت تساوي y أو Y فنخبره بتكرار الحلقة وان لم يكن يتخطى الحلقة
ثالثاً :-
طبعاً النوع هذا لا يعتبر نوع بحد مايعتبر طريقة استثنائية ثانية
فمثلاً اذا اردنا ان نقوم بتعبئة الكونسول 10 مرات ali
بدون ذكر اي من الكلمات for او do while
فسنعمل طريقة التالية لتعبئة الكونسول بدون استخدام اي من جمل التكرار المعروفة
وهذه هي الطريقة :_
ثالثاً :-
طبعاً النوع هذا لا يعتبر نوع بحد مايعتبر طريقة استثنائية ثانية
فمثلاً اذا اردنا ان نقوم بتعبئة الكونسول 10 مرات ali
بدون ذكر اي من الكلمات for او do while
فسنعمل طريقة التالية لتعبئة الكونسول بدون استخدام اي من جمل التكرار المعروفة
وهذه هي الطريقة :_
كود :
Dim s As Integer
s = 0
lo2i:
s = s + 1
Console.WriteLine("ali")
If s < 5 Then GoTo lo2i
Console.ReadKey()شرح الكود السابق :-
السطر الاول :-
كود :
Dim s As Integerعرفنا متغير من نوع رقمي وللتعلم المزيد حول المتغيرات والثوابت ادخل هنا
****
السطر الثاني :-
كود :
s = 0اسندنا قيمة للمتغير s وهي صفر .
*****
السطر الثالث :-
كود :
lo2i:ماهذا !! ((سنشرحه بعد قليل))
السطر الخامس :-
كود :
Console.WriteLine("ali")الكود الذي تستطيع من خلاله كتابة اي شيء في الكونسول
وهنا اخترنا اسم علي ali
**********
السطر السادس:-
كود :
If s < 5 Then GoTo lo2iجملة شرطية واعتقد انها واضحة بعد ماقمت بقرأءة هذا الدرس هنا
ومضمون هذه الحملة الشرطية انه اذا كانت قيمة المتعير s
اذهب إلى كلمة لؤي lo2i
وابدأ بالقراءة من هناك ...
****************
السطر السابع :-
كود :
Console.ReadKey()هذا الكود اذا لم تضعه فسوف تفتح لك شاشة الكونسول وتقفل بدون ان ترى اي شيء كتب فيها
لذلك يجب عليك ان تقوم بكتابته لكي تستطيع القراءة من الكونسول ...
**********
اي انه باستخدام جملة ال Goto
يمكنك البدء من سطر جديد في الكود ام من اجراء معين
ولا حظ ان كلمة Lo2i يكتب بعدها : نقطتان رئسيتان
كما هو موضح في الصورة التالية :-
=-=-=-=-=-=-=--=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
يتبع
هذا مثال بسيط على الكونسول وجمل التكرار والمصفوفات والمتغيرات
سننشأ مصفوفة جديدة لنضع فيها درحات الطلاب
وسنخرج منها ايضاً
مجموع الدرجات جميعها
العلامة الاكبر من بين العلامات
متوسط العلامات اي عدد الطلاب قمسة الدرجات ..
سننشأ مصفوفة جديدة لنضع فيها درحات الطلاب
وسنخرج منها ايضاً
مجموع الدرجات جميعها
العلامة الاكبر من بين العلامات
متوسط العلامات اي عدد الطلاب قمسة الدرجات ..
كود :
Dim marks(4) As Integer
Dim sum As Double
Dim avg As Double
Dim big As Double
sum = 0
avg = 0
big = 0
For x = 0 To 4
marks(x) = InputBox("ادخل الدرجة هنا ")
sum = sum + marks(x)
Next
For s = 0 To 4
Console.WriteLine("number of marks " & s & " = " & marks(s))
Next
Console.WriteLine("-----------------------------")
Console.WriteLine("the sum is = " & sum)
avg = sum / 5
Console.WriteLine("-----------------------------")
Console.WriteLine("the avg of numbers is = " & avg)
For m = 0 To 4
If marks(m) > big Then big = marks(m)
Next
Console.WriteLine("-----------------------------")
Console.WriteLine("the bigger number is = " & big)
Console.WriteLine("-----------------------------")
Console.ReadKey()عرفنا مصفوفة من نوع رقم وفيها خمس مناطق للتخزين
لانها تبدأ من الصفر وتنتهي عند الاربعة
يعني 0 1 2 3 4
السطور التي بعدها هي لتعريف المتغيرات وهي
Sum & avg & big
----------------------
Sum =ليحمل بداخله مجموع الدرجات جميعها
Avg = ليحمل بداخله متوسط الدرجات
Big = ليحمل بداخله اكبر درجة
واسندنا قيمة بدائية لكل من المتغيرات الثلاثة :-
اقتباس:
Sum=0
Avg=0
Big=0
اول جملة تكرار في الكود
عرفنا عداد اسمه x على انه يبدأ من صفر وينتهي عند الاربعة
الان بندأ باسناد القيمة لكل من الغرف الموجودة في المصفوفة marks
بهذا الكود
كود :
Marks(x)=inputbox(“ادخل الدرجة هنا ”)الان كبداية.. المتغير قيمته صفر ونحن نقول له
اجمع قيمتك القديمة التي هي صفر مع مجموع الدرجة التي ادخلت من قبل المستتخدم
الان سوف نقوم بكتابة جملة تكرار لتكرار مجموع الدرجات وطباعتها على الكونسول الخاص بنا
كود :
For s = 0 To 4
Console.WriteLine("number of marks " & s & " = " & marks(s))
Nextعرفنا عداد جديد للتكرار اسمه s
ويحمل بداخله قيمة من صفر إلى 4
----------------------------------------
وسيقوم بإعطاء هذا الكود
كود :
Console.WriteLine("number of marks " & s & " = " & marks(s))لماذا الخمسة ؟؟؟؟ الخمسة مجموع القيم الموجودة في المصفوقة
وهي التي تبدأ من الصفر وتنتهي بالاربعة
*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&
وجملة التكرار الثالثة
هي لتحديد الدرجة الاكبر من خلال الدرجات المدخلة جميعها
اي عندما تكون
الدرجة اكبر من ال درجة التي قبلها سوف يحفظها في المتغير
وسنقوم استدعاء المتغير من خلال الكود التالي :-
كود :
Console.WriteLine("the bigger number is = " & big)طبعاً لا ننسى الكود الذي لايعمل البرنامج بدونه
وهو ال
كود :
Console.readkey()والكود كله موضح في هذه الصورة البسيطة
انتهى الدرس
أبلغكم تحياتنا
Lo2i و Mohammed Asaad
انتظروا الدرس القادم
اللَّهُمَّ أَنْتَ رَبِّي ، لا إِلَه إِلاَّ أَنْتَ خَلَقْتَني وأَنَا عَبْدُكَ ، وأَنَا على عهْدِكَ ووعْدِكَ ما اسْتَطَعْتُ ، أَعُوذُ بِكَ مِنْ شَرِّ ما صنَعْتُ ، أَبوءُ لَكَ بِنِعْمتِكَ علَيَ ، وأَبُوءُ بذَنْبي فَاغْفِرْ لي ، فَإِنَّهُ لا يغْفِرُ الذُّنُوبِ إِلاَّ أَنْتَ .
