![]() |
|
الفصل (7):- اوامر التكرار والدوران ( شرح مفصل ) - نسخة قابلة للطباعة +- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb) +-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182) +--- قسم : قسم دورات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=187) +--- الموضوع : الفصل (7):- اوامر التكرار والدوران ( شرح مفصل ) (/showthread.php?tid=967) |
الفصل (7):- اوامر التكرار والدوران ( شرح مفصل ) - Omar Mekkawy - 15-11-13 بسم الله الرحمن الرحيم السلام عليكم ورحمة الله وبركاته سيكون درسنا اليوم ان شاء الله عن جمل التكرار والدوران وسيكون عملنا الكلي على الكونسول ولفتح مشروع كونسول جديد اتبع الصورة التالية :_ لقد قمنا بإيضاح شيء بسيط حول الكونسول في الفصل الاول والان سوف نتعلم سوياً كيفية استخدام جمل التكرار والدوران داخل هذا الكونسول ملاحظة هامة :_ المصفوفات غالباً مايتم استخدامها مع جمل التكرار والدوران لذلك سوف نتعلم ذلك الان ================================================== اولاً :- ماهي جمل التكرار :- جمل التكرار :- باختصار هي جزء من البرنامج يتكرر فمثلاً اذا اردنا ان نضيف على الكومبو ال قائمة المنسادلة الارقام من 0 إلى 100 فهل من المعقول ان نقوم بكتابة 100 سطر لاجل ذلك ؟؟ بالطبع لا .... --------------------------------------- وسينتج لنا كود كبير جدأً وبدون اي فائدة منه :- مثل كود : ComboBox1.Items.Add(1)الان سنجرب ان نضيف اليه الارقام ولكن باستخدام جملة التكرار for مثلاً :- كود : For i = 1 to 100بهذه الكود هنا سوف يقوم بعمل اضافة للاعداد من 1 إلى 100 ولا حظ ان كلمة next تاتي مع حلقة for دائماً --------------------------------------------- 1-جمل التكرار باستخدام For..Next 2-جمل التكرار باستخدام Do...Loop ------------------------------- ******************************************* اولاً :- جملة التكرار for --- next يمكننا استخدام هذه الجملة عندما نريد تكرار التعليمة حسب المراد فمثلاً كما في المثال السابق حدد انا نريد الارقام من 1 إلى 100 وبهذا صار التكرار معلوماً لدينا وتكون الصيغة العامة لجملة التكرار for .... next بالشكل التالي :- كود : For i = (StartValue) to (EndValue)------------------------------------------ مثلاً هذا الكود لاضافة مصفوفة جديدة ومن خلال جملة التكرار اريدها ان تضع الاسماء التي بداخل المصفوفة وتكتب في الكونسول كود : Dim vb4rab() As String = {"lo2i", "ali", "mohammed", "samer", "some one"}------------------------------------------ قمنا بتعريف مصفوفة جديد وادخلنا فيها القيم التالية - كود : {"lo2i", "ali", "mohammed", "samer", "some one"}استخدمنا الكلمة المحجوزة for قمنا بتنفيذ تكرار جديد واعطينا قيمة له هي ان يبدأ بالعد من الصفر وينتهي ب اربعة اي 0 1 2 3 4 اي خمس مرات الصفر رقم منفصل - الواحد رقم منفصل - الاثنين رقم منفصل - الثلاثة رقم منفصل - الاربعة رقم منفصل - يمكنك تجريب النتيجة بنفسك الان لعمل ذلك ولا حظ هنا اننا كتبنا هذا الكود كود : Console.WriteLine("the name is " & vb4arab(i))وهو الكود الذي سيقوم بتكرار نفسه خمس مرات على التوالي ملاحظة هامة جداً :- سيقوم تكرار العد على العداد الذي نقوم بتعريفه في جملة التكرار فمثلاً قيمة i لاول مرة سيكون 0 وبعد وصوله للكلمة المحجوزة next سوف يعود لبداية التكرار بعد ان تصبح قيمته 2 وهكذا حتى تصل إلى خمسة اذا وصل العداد إلى الرقم 5 خرج من جملة التكرار وادى الاكواد التالية ... ولا تنسوا انه يمكننا الحصول على القيمة التي بداخل اي مصفوفة من خلال الكود التالي كود : Textbox1.text = vb4arab(1)وسيظهر لنا في التيكست اسم lo2i طيب لماذا في جملة التكرار لم نقم بكتابة عدد داخل فهرس المصفوفة كما تلاحظون كتبنا داخل فهرس المصفوفة العداد i الذي عرفناه على انه جملة تكرار تبدأ من الصفر وتنهي عند الاربعة ********************************************* نعم المسألة بسيطة اكثر مما تتصور فكما قلنا ان العداد سوف يبدأ من القيمة صفر وهي اول قيمة في المصفوقة ايضاً لان المصفوفة كمان قيمها تبدأ من العدد ر قم صفر وعند وصوله اول مرة إلى كلمة next سوف يذهب إلى ال for وتكون قيمته 1 وسيعرض لنا القيمة الاولى في المصفوفة التي تأتي بعد الصفر وهكذا &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& يتبع RE: الفصل (7):- اوامر التكرار والدوران ( شرح مفصل ) - Omar Mekkawy - 15-11-13 ثانياً :- جملة التكرار Do...Loop القسم الأول:توضيح الحلقة Do...Loop هذا التكرار لا يقيدنا بقيم البداية أو النهاية بل يتحدد فقط بتحقق الشرط وبالنسبة للحلقة For..Next نحدد مقدار الزيادة أو النقصان في مقدار العداد الفرق بين ال for next و Do...Loop الفرق كما ذكرنا في التعريف ان جملة ال for next قمنا بتحديد مقدار الاضافة ومقدار العداد له اما جملة التكرار do while فهي غير محددة وينتهي تكرارها بالاعتماد على الشرط التي اعطيته بها مثلاً في هذا الكود هنا كود : For x = o to 2ستظهر لنا ثلاث رسايل فيها التالي:- الاولى رقم 1 الثانية رقم 2 الثالثة رقم 3 واما الكود التالي لجملة التكرار ال do ..Loop كود : Dim x As Integer-------------------- سيقوم الكود التالي بطباعة المسج الرسالة msgbox 3 مرات على التوالي : وبهذا //؟ اعتقد ان الفرق اصبح واضح الان .................................................. ..................................... القسم الثاني:جزأي الحلقة Do...Loop الحلقة Do Until...Loop أولا:الحلقة Do While...Loop باختصار تقوم هذه الحلقة بتنفيذ التعليمات المحتواة طالما تحقق الشرط وعند فشل الشرط تتوقف هذه الحلقة مثال بسيط: كود : Dim I As Integer = 0الآن سيقوم البرنامج باختبار الشرط عند اول عملية تنفيذ وسيرى أن الشرط قد تحقق لان صفر اقل من عشرة وهكذا الى ان يصل الرقم تسعة فيزيد البرنامج 1 ويفشل الشرط وبهذا تنتهي الحلقة والناتج: 0 ثانيا:الحلقة Do Until...Loop1 2 3 4 5 6 7 8 9 تقوم هذه الحلقة بتنفيذ التعليمات داخل كتلة Do...Loop طالما لم يتحقق الشرط وبمجرد تحققه تتوقف الحلقة(اذن كما نرى فهي تعمل عكس الحلقة Do While...Loop مثال: كود : Dim I As Integer = 0كما نرى فان الشرط هو مضاد تماما للشرط في الحلقة السابقة لكن نتج نفس النتائج بالضبط!!كيف ذلك؟ الآن ستبدأ الحلقة باختبار الشرط ووجده خاطئ لذلك ينفذ التعليمات الى ان يتحقق الشرط وعندما يصل الرقم تسعة فبزيادة 1 تصبح عشرة وبالتالي يصبح الشرط صحيحا وتتوقف الحلقة وناتج الحلقة هو 0 1 2 3 4 5 6 7 8 9 القسم الثالث:الفحص قبل الحلقة أو بعد الحلقة الجزء الأول: الفحص المبدأي: Pre-Testيقوم البرنامج بفحص الشرط ثم ينفذ الحلقة بعد التحقق من صحة الشرط مثال: جميع أمثلة Do..Loop السابقة هي من هذا النوع من الفحص الجزء الثاني:الفحص بعد تنفيذ الحلقة: Posted-Test يقوم البرنامج بتنفيذ التعليمات لاول مرة ثم يقوم بعد تنفيذ التعليمات للمرة الأولى بفحص الشرط أي أنه ينفذ التعليمات لاول مرة بالرغم من صحة الشرط المعطى: مثال: نظام (هل تريد اعادة البرنامج في تطبيقات الكونسول) الآن سأوضح الفكرة بهذا الكود: كود : Dim again As Stringالآن نخبر البرنامج أول مرة أن يقوم بتنفيذ التعليمات وبعد ذلك يقوم البرنامج بالتحقق من قيمة again التي أدخلناها وقت التنفيذ فاذا كانت تساوي y أو Y فنخبره بتكرار الحلقة وان لم يكن يتخطى الحلقة ثالثاً :- طبعاً النوع هذا لا يعتبر نوع بحد مايعتبر طريقة استثنائية ثانية فمثلاً اذا اردنا ان نقوم بتعبئة الكونسول 10 مرات ali بدون ذكر اي من الكلمات for او do while فسنعمل طريقة التالية لتعبئة الكونسول بدون استخدام اي من جمل التكرار المعروفة وهذه هي الطريقة :_ كود : Dim s As Integerشرح الكود السابق :- السطر الاول :- كود : 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عرفنا مصفوفة من نوع رقم وفيها خمس مناطق للتخزين لانها تبدأ من الصفر وتنتهي عند الاربعة يعني 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عرفنا عداد جديد للتكرار اسمه s ويحمل بداخله قيمة من صفر إلى 4 ---------------------------------------- وسيقوم بإعطاء هذا الكود كود : Console.WriteLine("number of marks " & s & " = " & marks(s))لماذا الخمسة ؟؟؟؟ الخمسة مجموع القيم الموجودة في المصفوقة وهي التي تبدأ من الصفر وتنتهي بالاربعة *&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*&*& وجملة التكرار الثالثة هي لتحديد الدرجة الاكبر من خلال الدرجات المدخلة جميعها اي عندما تكون الدرجة اكبر من ال درجة التي قبلها سوف يحفظها في المتغير وسنقوم استدعاء المتغير من خلال الكود التالي :- كود : Console.WriteLine("the bigger number is = " & big)طبعاً لا ننسى الكود الذي لايعمل البرنامج بدونه وهو ال كود : Console.readkey()والكود كله موضح في هذه الصورة البسيطة انتهى الدرس أبلغكم تحياتنا Lo2i و Mohammed Asaad انتظروا الدرس القادم RE: الفصل (7):- اوامر التكرار والدوران ( شرح مفصل ) - ابراهيم كركوكي - 16-07-16 بارك الله فيك وربي يجعله في ميزان حسناتك |