Udacity javascript Loop

هذا المحتوى تجده بشكل افضل على الرابط التالي تجمع المبرمجين والمطورين العرب




السلام عليكم ورحمة الله تعالى وبركاته قبل ان نتطرق لشرح الأسئلة والمسائل الخاصة بالحلاقات المفرغة ، سنتطرق لشرح هيكلة ومفهوم loop وفوائده وماهي القواعد الاساسية للحلقات المفرغة
علينا معرفة ان لغات البرمجة بشكل شامل تعتبر الصفر 0 قيمة للعد اي عندما نريد ان نحسب من واحد الى 10 فاننا نبدا بالعدد 0 ونصل الى العدد 9 يحمل قيمة 10
0 = 1 و 1 = 2 و 2 =3 وهي دواليك حتى نصل الى القيمة 9= 10 .... عملت على اكثر من لغة برمجية المفهوم والمبدا نفسه للحلقات المفرغة لم يتغير هناك فقط بعض syntax تتغير حسب الكومبايلر (المترجم للغة الالة )

لنبدا بفهم هيكلة while loop





while loop

while (expression){ Statement(s) to be executed if expression is true }
حاول أن تجرب الكود التالي على هذا الموقع https://code.sololearn.com/#js
var count = 0;
while (count < 10){
console.log("Current Count : " + count);
count++;
}
ستلاحظ النتيجة التالية
Current Count : 0 Current Count : 1 Current Count : 2 Current Count : 3 Current Count : 4 Current Count : 5 Current Count : 6 Current Count : 7 Current Count : 8 Current Count : 9
في الكود أعطينا للمتغير قيمة 0 كانطلاقة للعد ، بعدها اعطيناه شرط الا يتجاوز 10 عبر الكود التالي count < 10 ، ثم قمنا بطباعة الحلقة المفرغة عبر الكونصول لوغ ... النتيجة ان المترجم لن يعرف ما يقوم به لانه ببساطة لم نعطيه طريقة العد هل هي تصاعدي ++ ام تنازلي -- في المثال اعطينا ه عد تصاعدي
count++;
يمكنك ان تجرب بنفسك بعض التعديلات على الكود لكي تلاحظ الفروقات ،... هل تعلم انه count++; هي نفسها count = count + 1
قم بتغيير قيمة المتغير count الى قيمة رقمية ما بين 0 و 10 مذا تلاحظ ؟
قم ايضا بتغيير طريقة العد عبرتغيير الكود التالي count++ الى count= count + 2 واخبرنا بمذا تلاحظ؟؟
قم بتغيير قيمة المتغير count الى 1 وبتغيير قيمة العد count = count - 3 واخبرنا بالتغييرات التي شاهدنها ؟؟

شرح do while loop





Do while Loop

هي لها نفس خواص while loop عدا ان الشرط يكون اسفل الحلقة المفرغة
do{ Statement(s) to be executed; } while (expression);
مثال
var count = 0;
do{
console.log("Current Count : " + count);
count++;
}
while (count < 5);
مميزاتها ان الحلقة المفرغة يمكنها ان تعمل حتى بعدم استوفاء الشرط فإن البرنامج سيعمل

شرح for loop

ان for loop تقوم بعملية مختصرة ل while loop



for loop

فبدلا من وضع الشرطية اما قبل الحلقة او بعد الحلقة فهنا يتمو وضع الشرطية داخل الحلقة ، مع انها في الغالب تتعامل مع متغيرات من نوع undefined غير معرف
for (initialization; test condition; iteration statement){ Statement(s) to be executed if test condition is true }
مثال :
var count; for(count = 0; count < 10; count++){ console.log("Current Count : " + count ); }
ستلاحظ ان المتغير count غير معرف وتم تعريفه داخل جملة الحلقة المفرغة for واصبح يحمل قيمة 0 ثم يليه الشرط وهو الايتجاوز 10 عبر كتابة count<10 وبعدها حالة الحلقة هل يقوم بالعد تصاعدي ام تناقصي الى حد الان اظن ان هياكل الحلقات المفرغة اصبحت واضحة هناك ايضا
for in loop , and Loop control
ساترك كلى انواع الحلقة تحت بحثكم في محركات البحث عن اساسيتها وكيفيت استخدامها كنوع من البحث لتعزيز قدراتكم البرمجية اما الان سننتقل الى شرح الكويزات بعد فهم اساس الحلقات المفرغة ...
Quiz: JuliaJames (4-1)
في هذا الكويز طلب منا انشاء حلقةمفرغة من نوع while loop ، ان تكون محصورة ما بين 1 و 20 وان يتم استبدال كل من الرقم 3 ب Julia والرقم 5ب James ، وتم الاشتراط ان وجد في الحلقة المفرغة كل من الرقم 3 و 5 عليك ان تطبع JuliaJames معا واذ لم يتواجد ذلك عليك ان تطبع الرقم فقط
الى هنا المسألة واضحة لنعطي مثلا متغير x قيمة 15 !! لانه ان ضربنا 3 * 5 = 15 ان قسمنا كل من 15 على 3 يعطينا 5 وان قسمناه على 5 يعطينا 3 إذن المتغير x يحمل قيمة 15 مثالية جدا لحل هذه المسألة
لتكن x اصغر او تتساوى مع 20 => x لاننا غير متاكدين من النتيجة هل ستكون كافية لاظهار كل من النتيجة JuliaJames او James او Julia لهذا السبب سنستعين ب if اجل يمكنك ادراج اداة if الشرطية داخل الحلقات المفرغة هذا يتيح لنا العديد من الخيارات في هذه المسالة للحصول على JuliaJames نحتاج ان نضع عملية قسمة للعدد 15 على 3 وعلى 5 معا باستخدام && العملية بسيطة لكن طلب منا ايضا اظهار James و Julia في هذه الحالة سنقوم بقسمة كل من المتغير X على كل من الاعداد الفردية 3 و 5 على حداً وكل عدد له مخرج المناسب له حذاري ان يكون هناك لبس ف Julia لها 3 وJames له 5 وفي الاخير طلب طباعة العدد x للحلقة المفرغة حاول ان تتدرب اخي الكريم على الكود في هذا المحرر https://code.sololearn.com/#js لان التكرار على الحل في المبادرة قد يؤثر على تقييمك
Quiz: 99 Bottles of Juice (4-2)
الكويز سهل للغاية الى انه به بعض الشروط التي ادعوها كاعمال زائدة المطلوبمنك تكرار جملة
99 bottles of juice on the wall! 99 bottles of juice! Take one down, pass it around... 98 bottles of juice on the wall!
تنازليا من العدد 99 الى العدد 1 في بسطة تحويل العدد 99 الى متغير وبدا العملية ـ لكن لديك في الجملة عدد 98 هل يجب ان نضع متغير اخر لكي يفي البرنامج بذكل ؟؟
أجل اخي الكريم يفي بذلك لكن تذكر ان udacity تستخدم روبوت لاستقبال الاجابات وليس انسان باستطاعته تمييز ذلك افضل وسيلة هي وضع متغير الذي اعطيناه ل99 وننقص منه -1 ستبدو الجملة الى حد كبير بهذا الشكل
bottles of juice on the wall! " + variables +" bottles of juice! Take one down, pass it around... "+(variables -1) + " bottles of juice on the wall!"
الان لدينا مشكلة ثانية وهي الكوديك المستخدم في المسألة فالخظ المستخدم لها لا يقبله الكونبايلر تبع udacity اي انه مهما كانت اجابتك صحيحة فانها غير مقبولة سيتحتم عليك اخي الكريم ان تضعها في محرر اكوادك المفضل وتغيير النقاط يدويا بخط عادي والافضل ان يكون arial
يجب ان تكو ن الحلقة المفرغة variables >= 1 لكي يقف عند التعداد 1 وان تاكد التوقيف بعمليتي شرطية الاولى مقارنة مع variables > 2 والثانية هل تساوت معها variables === 2 حسب الشرط في المسألة ولا تنسى العد التنازلي للمتغير
Quiz: Countdown, Liftoff! (4-3)
هنا سنتطرق لما يسمى in loop condition بشكل تنازلي من الرقم 60 طلب منكم ان تضع تعداد من 60 الى 0 وعند كل حالة من الحلقة المفرغة عليك ان تطبع جملة معينة غير ذلك عليك ان تطبع الجملة التالية مع التعداد المناسب لها
"T-"+variables+" seconds"
لديك الحالات التالية
  • Orbiter transfers from ground to internal power (T-50 seconds)
  • Ground launch sequencer is go for auto sequence start (T-31 seconds)
  • Activate launch pad sound suppression system (T-16 seconds)
  • Activate main engine hydrogen burnoff system (T-10 seconds)
  • Main engine start (T-6 seconds)
  • Solid rocket booster ignition and liftoff! (T-0 seconds)
بناء حلقة مفرغة امر سهل بعدها ننتقل الى المحتوى يكون T-50 seconds متساوي مع حالة المتغير فسيقوم بطباعة Orbiter transfers from ground to internal power وهي دواليك حتى نهاية البرنامج
Quiz: Changing the Loop (4-4)
في هذا الكويز انت ستقوم بتحويل هذا الكود من while loop الى for loop
var x = 9; while (x >= 1) { console.log("hello " + x); x = x - 1; }
الكود بسيط جدا يبين ان for loop اكثر اختصارا من while loop لكن لكل واحدة منهما استخدام معين رغم لهما نفس الاداء ال for loop تستخدم المتغيرات الغير معرفة او يمكنك تجاهل اعلان متغير غير معرف خارج الحلقة ويمكنك الاعلان عليه داخل الحلقة مثال
for(var count = 0; count < 10; count++)
Quiz: Fix the Error 1 (4-5)
في هذا الكويز طلب منكم ان تصلح الخطأ بطبيعة الحال ان كنت تفهم هيكلة for loop فان الخطا سيظهر لك سريعا
for (x < 10; x++) { console.log(x); }
هيكلة for loop
for (initialization; test condition; iteration statement){
Statement(s) to be executed if test condition is true
}
Quiz: Fix the Error 2 (4-6)
الكويز التالي ايضا لاصلاح الخطأ في for loop هذا يبين لنا اهمية ; داخل for loop
for (var k = 0 k < 200 k++) { console.log(k); }
حاول ان تنشئ حلقات مفرغة بدون فاصلة منقوطة
Quiz: Factorials! (4-7)
فكتريال العدد وهو معامل العدد الذي كتبته لبد وانك قد جربت يوما ضرب عدد في تعداده قصد التسلية مثلا ضرب 7 في تعداد اعداده بهذا الشكل 1*2*3*4*5*6*7 عملية معقدة اليس كذلك الام نفسه طلب منك حساب تعداد 12 في اعداده وعليك ان تجيب برمجيا في البداية نحتاج ان نعلن عن متغير بقيمة 1 ثم نعلن عن متغير اخر داخل for loop هذا المتغير ايضا يحمل قيمة 1 ؟؟ ستقول لي ان ضربنا 1 * 1 فان الناتج 1 لن نتقدم اي خطوة ، في المرحلة التالية ما سنقول للكونبايلر اننا نريد الحصول على التعداد من 1 الى 12 بهذه الطريقة x<=12 بشكل تصاعدي اي انه سيكون لدينا 1 و2 و3 الى 12 بعدها نقوم بضرب هذه الاعداد في بعضها البعض ونستخدم المتغير الذي حجزناه في البداية لنقول له التالي solution *= x في هذه الحالة تم ضرب الاعداد في بعضها البعض لنحصل على معامل 12 هو 479001600 جربها بالالة الحاسبة واخبرنا هل الحساب بالالة الحاسبة اسرع ام بالبرمجة ؟؟؟

Quiz: Find my Seat (4-8)
في هذا الكويز تم استخدام nested for هي تختلف تماما عن nested if لانها تستعمل في البرامج وفي جميع اللغات للتوزيع في الغالب وليس للاستوفاء لنفترض انه لدينا 10 طلاب ولدينا عشر وجبات لكل طالب وجبة لكي يكون هناك استوفاء وتساوي في الحقوق فلايمكن ان يحصل احد الطلاب على وجبتين بينما احد الطلاب لا يحصل على شيء . توجد هذه الحالة في برامج انظمة المطاعم وغيرها لترتيب الزبائن حسب الحجوزات وكذالك هذا المثال للسنمى او الاوبرى في المسألة لدينا 25 سطر في كل سطر سعة لاستعاب 100 مشاهد اي ان المسرح قادر على استيعاب 2500 شخص ستم توزيعها على الكراسي بالتساوي اي لا يمكن ان يجلس شخصين على كرسي واحد او يبقى كرسي فارغ !!
سنقوم بوضع for loop لصفوف الكراسي ونركز اننا نمتلك 25 اي علينا العد الى 26 للاستوفاء ولا يتجاوزها ولدينا ايضا لكل صف 100 كرسي علينا حساب ان 0 قيمة ولا يتجاوز 100 وعلينا طباعة كل من متغير الاسطر وتعداد الكراسي
variable_row +'-'+ variables_seat

الى هنا اصدقائي ينتهي شرح الحلقات المفرغة لudacity
إذا كان محتوى الدرس لا يظهر بشكل جيد يمكنك اجاده على المجموعة

Post a Comment

0 Comments