تشغيل حلقة جافا سكريبت لعدد معين من المرات. دورات

29.03.2019

الحلقات هي واحدة من أهم أدوات البرمجة. إنها مفيدة في الحالات التي تحتاج فيها إلى القيام بشيء ما لعدد معين من المرات.

إذا كانت هناك مهمة كهذه ، على سبيل المثال ، اعرض السلسلة "مرحبًا بالجميع" 1000 مرة. بعد ذلك ، بدون استخدام حلقة ، سيستغرق الأمر أولاً الكثير من الوقت وثانيًا ، لن يبدو لطيفًا جدًا. لهذا دورات تحتاج إلى معرفة جيدة تمامالأنها تستخدم في كثير من الأحيان.

هناك أربع دورات في البرمجة ، هم بينما ، افعل بينما ، من أجل و foreach. كل واحد منهم له بناء الجملة الخاص به ويستخدم كل منها في حالات معينة.

الحلقات الأكثر استخدامًا هي for و foreach ، ثم while ، وحلقة do-while نادرة جدًا.

وسنبدأ بحلقة while.

صيغة حلقة while كما يلي:


أولاً ، نعلن عن المتغير i ، وهو عداد ، وداخل الحلقة نزيد هذا العداد. داخل الأقواس ، نكتب شرط الدخول / الخروج من الحلقة.

تعليق! اكتب حالة الخروج بشكل صحيح ، وإلا فقد تتحول حلقة لانهائية ومن ثم سيتعطل البرنامج النصي. يمكن أن تحدث مثل هذه الدورة ، على سبيل المثال ، في حالة الخروج ، نكتب ببساطة "صحيح".

على سبيل المثال ، دعنا نعرض السلسلة "مرحبًا بالجميع!" 10 مرات.

فاري = 0 ؛ بينما (i ​​") ؛ i ++ ؛)

يمكن أن يبدأ المتغير i من 0 أو 1 أو أي رقم آخر.

شرط الخروج هو أيضا شرط الدخول. تعمل الحلقة على النحو التالي: أولاً ، تتحقق مما إذا كان المتغير i أقل من 10 ، وإذا كان الشرط صحيحًا ، فإننا ندخل الحلقة ، وإلا فلا. في هذه الحالة ، إذا كان المتغير i يساوي 30 ، على سبيل المثال ، فلن يتم تنفيذ الحلقة ، لأن 30 لا تقل عن 10.

دخلنا الدورة ، وعرضنا السطر "مرحبًا بالجميع" ، وقمنا بزيادة العداد ونذهب مرة أخرى إلى الحالة ، حيث نتحقق مرة أخرى مما إذا كانت قيمة المتغير i أقل من 10 ، ثم ندخل الدورة ، وإلا فإننا نخرجها. ويحدث هذا حتى اللحظة التي يصبح فيها شرط الإدخال خاطئًا ، أي أن قيمة المتغير i ستكون 10. 10 ليست أقل من 10 ، لذلك لم نعد ندخل الحلقة ، بل ننتقل.

تعليق! لا تنس زيادة العداد (i ++) ، وإلا فسوف ينتهي بك الأمر بحلقة لا نهائية مرة أخرى.

اكتشفنا حلقة while ، فلننتقل الآن إلى حلقة do-while.

صيغة حلقة do-while هي كما يلي:


الفرق بين حلقة while وحلقة do-while loop هو أن حلقة do-while يمكن أن تنفذ مرة واحدة على الأقل ، بغض النظر عن الحالة ، في حين أن حلقة while ، إذا كانت الحالة خاطئة ، لن تنفذ على الإطلاق.

تعليق! تمامًا كما هو الحال مع حلقة while ، لا تنس زيادة عداد i.

دعنا ننتقل إلى الممارسة. على سبيل المثال ، ضع في اعتبارك حاصل ضرب الأرقام من 1 إلى 10.

فاري = 1 ؛ فار الإنتاج = 1 ؛ do (الإنتاج * = i ؛ i ++ ؛) بينما (i

ستكون النتيجة هي الرقم 3628800. في الخطوة الأولى ، أدخلنا الحلقة على الفور ، على الرغم من حالتها ، حيث تم تنفيذ عملية الإنتاج * = أنا (هذا هو نفسه الإنتاج = الإنتاج * 1). ثم نقوم بزيادة العداد. بعد الزيادة ، يكون لها قيمة 2. وفي النهاية ، نتحقق من الشرط ، إذا كانت قيمة العداد أقل من أو تساوي 10 ، فإننا ننتقل إلى التكرار التالي للحلقة ، وإلا فإننا نغادر الحلقة ونتحرك على.

لحلقة

كما كتبت أعلاه ، فإن حلقة for شائعة جدًا ، لذا عليك أن تعرفها جيدًا.

لبناء الجملةالتالي:


لفهم أفضل ، دعنا نحل مشكلة بسيطة. لنفترض أننا بحاجة إلى حساب مجموع الأرقام من 1 إلى 1000 باستخدام حلقة for.

varsum = 0 ؛ لـ (var i = 1 ؛ i

نحفظ المستند ونفتحه في المتصفح ونرى أن النتيجة هي 500500.

تعليق! إذا كان هناك عبارة واحدة فقط في الحلقة ، فإن الأقواس المتعرجة اختيارية.

للتوضيح ، دعنا نعرض على الشاشة 5 مرات ، بعض السلاسل ، على سبيل المثال "Hello!".

لـ (var i = 1 ؛ i

تعليق! بعد تنفيذ الحلقة في المتغير i ، تبقى القيمة الأخيرة.

الآن دعونا نحل المشكلة بشكل أكثر تعقيدًا ، على سبيل المثال ، نحتاج إلى عرض السلسلة النصية "Hello" 100 مرة. ولكي لا يتم عرض كل هذا في صف واحد ، ثم بعد كل 10 تكرار ، سننتقل إلى سطر جديد. وفي النهاية سنعرض قيمة المتغير i.

لـ (var i = 1 ؛ i<= 100; i++){ document.write("привет!"); if(i % 10 == 0)  document.write("
") ؛) document.write ("

المتغير i = "+ i +"

") ؛ // أنا = 101

حلقة foreachيشيع استخدامها للتكرار على الكائنات والمصفوفات. لذلك سأتحدث عنه في مقال يصف العمل مع المصفوفات.

بيان كسرمصممة لإجبار الخروج من الحلقة.

تواصل البيانيسمح لك بمقاطعة التكرار الحالي للحلقة ، والانتقال إلى الحلقة التالية.

من أجل فهم أفضل ، سنحل أيضًا مشكلة بسيطة. لنفترض أننا نريد حساب مجموع الأعداد الفردية من 1 إلى 20. وعندما نصل إلى التكرار الخامس عشر ، نخرج من الحلقة.

varsum = 0 ؛ لـ (var i = 1 ؛ i<= 20; i++){ //Пропускаем текущею итерацию цикла if(i % 2 == 0) continue; summa += i; //Выходим совсем из цикла. if(i == 15) break; document.write(i + ". Итерация
") ؛) document.write ("

الخلاصة= "+ ملخص +"

") ؛ // المجموع = 64

نحفظ المستند ونفتحه في المتصفح وننظر إلى النتيجة.

للتدريب ، حاول تغيير النص المكتوب بحيث يحسب مجموع الأرقام الزوجية.

هذا هو المكان الذي تنتهي فيه هذه المقالة. الآن أنت تعرف بناء جملة while، do-while، for loops وكيفية التعامل معها. كما التقى كسر ومواصلة البيانات.

الحلقة هي تعليمات تحكم تسمح لك بتكرار تنفيذ كود البرنامج لعدد معين من المرات. يُطلق على كل تنفيذ فردي للتعليمات في جسم الحلقة تكرارًا.

حائط اللوب

أثناء بناء جملة الحلقة:

يتم استدعاء التعبير الموجود بين قوسين شرط الوفاءحلقة أو شرط لفترة وجيزة. أولاً ، يتم تقييم قيمة التعبير. القيمة الناتجة ، إذا لزم الأمر ، يتم تحويلها ضمنيًا إلى نوع منطقي. إذا كانت نتيجة تقييم التعبير صحيحة ، فسيتم تنفيذ العبارة الموجودة في جسم الحلقة ، ثم يتم نقل التحكم إلى بداية الحلقة ويتم تقييم الشرط مرة أخرى. إذا تم تقييم التعبير إلى خطأ ، ينهي المترجم الحلقة ويواصل تنفيذ العبارة التي تلي الحلقة. وهكذا ، ينفذ المترجم الشفرة الشفرة في جسم الحلقة مرارًا وتكرارًا ، طالما ظل الشرط صحيحًا:

فاري = 0 ؛ عندما أنا< 3) { // Выполнять код, пока значение переменной i меньше 3 alert("i: " + i); i++; // Увеличиваем значение переменной i }

حلقة التفريغ

بناء جملة Do-while loop:

تتشابه حلقة do-while مع حلقة while ، فيما عدا أنه يتم فحص شرط الحلقة بعد التكرار الأول بدلاً من قبله ، وتنتهي الحلقة بفاصلة منقوطة. نظرًا لأنه يتم التحقق من الشرط بعد التكرار ، يتم دائمًا تنفيذ الكود الموجود في جسم حلقة do-while مرة واحدة على الأقل:

عدد فار = 0 ؛ do (document.write (count + "")؛ count ++؛) while (count.)< 5); Попробовать »

يمكن أن تكون هذه الحلقة مفيدة عندما يجب تنفيذ الكود الموجود في جسم الحلقة مرة واحدة على الأقل ، بغض النظر عن شرط التنفيذ.

لحلقة

لبناء جملة الحلقة:

تحتوي حلقة for على ثلاثة تعبيرات مفصولة بفواصل منقوطة. هذه التعبيرات الثلاثة لها أمر التنفيذ التالي:

  1. يتم دائمًا تقييم التعبير الأول مرة واحدة فقط - قبل التكرار الأول. لذلك ، عادة ما يكون التعبير الأول هو تعريف المتغير ، والذي يستخدم كمقياس في شرط تنفيذ الحلقة.
  2. يعرّف التعبير الثاني شرط تنفيذ الحلقة. يتم تقييمه قبل كل تكرار ويحدد ما إذا كان سيتم تنفيذ جسم الحلقة أم لا. إذا تم تقييم التعبير إلى قيمة حقيقية ، فسيتم تنفيذ الكود الموجود في جسم الحلقة. إذا تم إرجاع القيمة false ، تنتهي الحلقة ويمرر التحكم إلى التعليمة التالية بعد الحلقة. إذا كان الشرط خاطئًا في المرة الأولى التي يتم فيها التحقق من الشرط ، فلن يتم تنفيذ الكود الموجود في جسم الحلقة.
  3. بعد كل تكرار ، يتم تقييم التعبير الثالث. يتم استخدامه عادةً لتغيير قيمة المتغير المستخدم في اختبار الحلقة.

على سبيل المثال الحلقة:

لـ (var count = 0؛ count< 5; count++) document.write(count + " "); Попробовать »

كما ترى من المثال ، فإن الحلقة for ، على عكس الحلقات الأخرى ، تسمح لك بتجميع الكود المرتبط بالحلقة في مكان واحد.

قد يكون أي من التعبيرات في الحلقة for مفقودًا ، ولكن يجب أن تكون الفاصلة المنقوطة نفسها موجودة ، وإلا فسيكون هناك خطأ في بناء الجملة. في حالة عدم وجود التعبير الثاني ، ستستمر الحلقة إلى أجل غير مسمى.

فاري = 0 ؛ لـ (؛ ط< 4; i++) ... var i = 0; for (; i < 4;) ... for (var i = 1; /* нет условия */ ; i++) ... // Это эквивалентно следующему коду for (var i = 1; true; i++) ...

بدلاً من تعبير واحد ، يمكنك تحديد عدة تعبيرات عن طريق فصلها باستخدام عامل الفاصلة.

// لن يتم تنفيذه لأن التعبير الأخير في فحص الشرط خاطئ لـ (i = 1 ؛ i< 4, false; i++) ... for (var i = 1, j = 5; i <= 5; i++, j--) document.write(i + " " + j +"
")؛ يحاول "

في الحلقة

تُستخدم حلقة for-in للتكرار العشوائي للخصائص التي تم تعدادها لكائن ما ولها الصيغة التالية:

لبيان (متغير في الكائن) ؛

على يسار الكلمة الأساسية in يوجد اسم المتغير ، والذي يتم تعيينه كسلسلة اسم إحدى خصائص الكائن قبل كل تكرار للحلقة. على يمين الكلمة الأساسية in يوجد كائن سيتم تكرار خصائصه بواسطة الحلقة. ستعمل الحلقة حتى يتم تكرار كل الخصائص المتاحة. إذا كان المتغير الذي يمثل الكائن فارغًا أو غير محدد ، فلن تنفذ الحلقة أبدًا:

var obj = (x: 5 ، y: 10) ؛ لـ (var prop في obj) (تنبيه (دعم) ؛)

للإبقاء على الكود مرتبطًا بالحلقة في مكان واحد ، يُسمح بتعريف متغير في حلقة for-in. لذلك ، عادة ما يكون التعبير الذي يسبق الكلمة الأساسية in عبارة عن إعلان عن متغير سيتم تخصيص أسماء الخصائص له.

مثل لغات البرمجة الأخرى ، يتم تنفيذ JavaScript دورات .
بضع كلمات حول الغرض الرئيسي منها. لنفترض أن لدينا كتلة من التعليمات البرمجية يجب بالتأكيد تكرارها عددًا معينًا من المرات على التوالي:

Var mew = "Mew!" ؛
console.log ("القط يقول:") ؛

// هنا يكرر الكود
سجل وحدة التحكم (ميو) ؛
سجل وحدة التحكم (ميو) ؛
سجل وحدة التحكم (ميو) ؛
سجل وحدة التحكم (ميو) ؛

في هذه الحالة ، نكرر كتابة السلسلة "Mew!" إلى وحدة التحكم. 4 مرات بالضبط. نرى أنه إذا اضطررنا إلى تكرار بعض الكتل البرمجية الأكثر تعقيدًا ، فسيكون ذلك مرهقًا للغاية. وبالتالي ، هناك حاجة إلى آلية من شأنها أن تكرر كتلة معينة من الكود بالعدد المطلوب من المرات. هذا فقط ما يفعله دورة .

يستخدم JS حلقات مشابهة للغات البرمجة الشائعة الأخرى (C / C ++ ، PHP ، JAVA):


  • ل( ) - يكرر بعض فدرات الكود اعتمادًا على المعلمات المحددة

  • بينما (تعبير منطقي) - يكرر بعض كتل التعليمات البرمجية بناءً على قيمة منطقية تعبير منطقي

  • افعل بينما (تعبير منطقي) - التناظرية من النوع السابق للدورة ، ولكن مع خصوصيتها

بعد كل من هذه التركيبات ، يجب عليك تحديد مجموعة باستخدام الأقواس المتعرجة { } كتلة من التعليمات البرمجية المراد تكرارها. تسمى التكرارات في الدورة نفسها التكرارات . يتم استدعاء كتلة التعليمات البرمجية التي يتم تكرارها هيئة حلقة .

في هذا البرنامج التعليمي ، سنلقي نظرة على حلقة for (). كقيمة خيار يجب تحديد ثلاث "معلمات" S1 ؛ C1 ؛ S2 ، مفصولة بفواصل منقوطة:

لـ (S1؛ C1؛ S2) (
رمز لتكرار ؛
}

معامل S1 هي التعليمات التي سوف مكتمل قبل التكرار الأول . في الواقع ، هذا هو تهيئة الدورة.

معامل C1 هو تعبير منطقي أو قيمة ستكون فحص قبل كل تكرار دورة. إذا كانت قيمة هذا التعبير صحيحة ، فسيتم إجراء التكرار اللاحق. خلاف ذلك ، يتم إنهاء الدورة. في الواقع ، هذا شرط لاستمرار الدورة. لاحظ أنه بالنسبة للتكرار الأول ، سيتم إجراء هذا الفحص بعد تنفيذ العبارة S1 .

معامل S2 هي التعليمات التي يتم تنفيذه بعد كل تكرار .

من الناحية التخطيطية ، يمكن تمثيل ذلك في الصورة التالية:

لنعد الآن إلى مثالنا ونعيد كتابته باستخدام حلقة for:

هنا ، تعليمات S1 هي تعريف المتغير i وتهيئته. التعبير أنا<= 4 . В качестве инструкции S2, которая выполняется после каждой итерации, выступает операция инкремента переменной i - увеличение ее значения на 1 . Таким образом, получим повторение записи в консоль значения переменной mew ровно 4 раза. Переменная i в таких циклах называется عداد .

لنفكر في مثال آخر لاستخدام هذه الحلقة - التكرار على قيم المصفوفة.

فار آر = ؛

لـ (i = 0 ؛ i console.log (arr [i]) ؛
}

في هذه الحالة ، أنشأنا المتغير i ديناميكيًا ، وهو عداد التكرار ، وفي الحالة استخدمنا خاصية كائن المصفوفة ، التي تحتوي على عدد عناصرها.

إن تاريخ تكوين التركيب اللغوي الحديث للغة البرمجة يشبه معرفة عمليات تكوين الكون. ماذا وكيف كان في البداية ... ولكن الآن أصبح كل شيء بسيطًا ويمكن الوصول إليه.

الخوارزمية هي دائمًا سلسلة متسلسلة من الأوامر. التوازي في البرمجة هو مجموعة من المتواليات المركبة بطريقة ما. لم يكن أبدًا أكثر عملية من تسلسل الأوامر التسلسلي أو الموازي. التسميات والانتقالات والشروط - كل شيء كان كافيًا لأي قرار. لقد ألغت اللغات الوظيفية التأكيد على هذه الأفكار ، ولكن لا تزال هناك حاجة إلى تكرار أقسام من التعليمات البرمجية.

المتصفح: DOM ، لغته + الخادم

ظلت الحلقات في JavaScript ، على الرغم من أن الأفكار الوظيفية قد اتخذت معنى خاصًا. قد يكون هناك شيء متبقي من "Lisp" و "Prolog" ، ولكن على الأرجح أن المنطقة التي يعيش فيها JavaScript أدت إلى ما هو عليه ، ولكن من المشكوك فيه أن يكون هذا هو الحل الأخير.

تعمل JavaScript داخل المتصفح ، الذي يتلقى الصفحة ، ويحللها في DOM ، ويقوم بتشغيل النص البرمجي الأول. جميع الصفحات الأخرى ، بما في ذلك تلك التي تم تحميلها على هذه الصفحة ، هي عمل المطور ، والتلاعب باللغة ، والتي من خلالها يمكن استدعاء الكود الموجود على الخادم والنتيجة التي يتم الحصول عليها باستخدام آلية AJAX.

يقوم المستعرض بتنفيذ تعليمات JavaScript البرمجية التي يمكنها استخدام كائنات المستعرض ، بما في ذلك الكائن الذي يوفر نقل المعلومات إلى الخادم وتلقي استجابة ، والتي يمكن أن تكون ترميز HTML وأنماط ورمز بنفسه. يمكن تمثيل الإجابة بواسطة المصفوفات والكائنات. ليس من المنطقي استخدام الحلقات في JavaScript ، فهناك الكثير من الفرص للاستغناء عنها ، والمخاطرة بتعليق المتصفح بتسلسل لا نهائي من الأوامر ليس هو الحل الأفضل.

الحلقات نفسها موجودة في معظم تراكيب بناء جملة JavaScript ، يمكن للمطور أن يكمل البنيات القياسية بوظائفها الخاصة.

موضع JavaScript في مساحة التعليمات البرمجية

لا يعتقد المبرمج الحديث أن الوقت الذي يستخدمه هو في النهاية سلسلة من دورات (دورات) المعالج ، تسلسل بسيط من العمليات الثنائية التي تقاطعت بفحص العداد ، أي الشروط.

على هذا النحو ، لا توجد دورة على مستوى لغة الآلة: هناك مجموعة من الأوامر العادية والعمليات الشرطية والقفزات. مستوى أعلى ، مهما كانت الأداة المستخدمة لتطوير المتصفح ومترجم JavaScript ، ستحدث الحلقات بشكل لا لبس فيه. علاوة على ذلك ، سيتم تقديم "أجزاء من التعليمات البرمجية" في أوقات مختلفة ومن قبل أجيال مختلفة من المبرمجين. طابق واحد هو "مبنى" جافا سكريبت. يقترح بناء الجملة حلقات JavaScript حديثة.

JS هي لغة جميلة: عملية وحديثة وكاملة الميزات. يتضمن بناء جملة هذه الأداة جميع الإنشاءات التي صمدت أمام اختبار الزمن وأصبحت الأساس الذي لا يتزعزع لأي خوارزمية. لكن هل الدورات ضرورية حقًا؟ غالبًا ما طرح التقدم في البرمجة على نفسه أسئلة ذات طبيعة أساسية ، ولكن في بعض الحالات فقط وجد حلًا.

أسس موضوعية

يمكن أن تكون الدورة خيارين فقط: حسب الشرط أو حسب العداد ، ولكن في الواقع (عند أدنى مستوى) ، تكون أي دورة بالشرط فقط. تحتوي بعض اللغات على حلقة "لكل". في JavaScript ، يتم تمثيل حلقات foreach بواسطة الخاصية في بنية الكائن ، ولكن يمكنك استخدام متغير array.forEach (...).

على أي حال ، هناك خياران: الذي ينفذ في النهاية جميع خوارزميات المبرمج ، حتى الكتابة بلغات مترجم ، ليس لديه خيارات أخرى لتكرار سلسلة من الأوامر: يمكنه فعل شيء مرة أخرى ، طالما:

  • يحسب العداد
  • بينما يتم استيفاء الشرط.

JavaScript مترجم نموذجي. خصوصيته: فهو يعمل داخل المتصفح ، ويستخدم كائناته ويسمح لك بتنفيذ الخوارزميات من جانب العميل ، سواء عند تحميل الصفحة في المتصفح أو أثناء تشغيلها.

حلقة بسيطة لكل منهما

في JavaScript ، تبدو حلقات foreach مثل تطبيق دالة على مصفوفة:

استخدام مثل هذه الدورات لا يسبب صعوبات. من الناحية الرسمية ، لا توجد دورة على هذا النحو. هناك استدعاء تسلسلي للدالة لعناصر المصفوفة.

دورة حسب العداد

تبدو حلقات For أكثر دراية في JavaScript:

هنا ، العداد هو متغير تتغير قيمته وفقًا للصيغة ، والشرط هو علامة نهاية الدورة. ليس من الضروري أن تتضمن الصيغة والشرط متغير حلقة. لكن التحكم في نهاية الدورة يتم تحديده تمامًا من خلال محتواها.

الحلقات الشرطية

بينما تقدم JavaScript متغيرًا بناءً على الوقت الذي تحتاج فيه إلى التحقق من الحالة. إذا لم يتم تنفيذ جسم الحلقة ولو مرة واحدة - فهذا شيء ، إذا كان يجب تنفيذ الجسم مرة واحدة على الأقل ، فهذا شيء آخر:

في الحالة الأولى ، عند تفسير البنية while ، يتحقق JavaScript أولاً من الشرط ، وإذا كان صحيحًا ، فإنه ينفذ الحلقة. في الحالة الثانية ، سيتم تنفيذ الحلقة أولاً. إذا كان نتيجة تغيير المتغيرات المحددة في حالة البناء افعل بينما سيتم تقييمه على خطأ ، ستتوقف الحلقة.

مجموعات ضخمة من الخوارزميات البسيطة

المهمة الرئيسية (جزء مكون) لأي خوارزمية هي العثور ، عندها فقط اتخاذ قرار بشأن ما يجب القيام به بعد ذلك. النسخة الأكثر بدائية من البحث هي الوصول إلى متغير ، ويتم الحصول على النتيجة مباشرة. إذا كان هناك العديد من المتغيرات ، أو كان يحتوي على العديد من القيم (مصفوفة) ، فعند تحديد القيمة ، تحتاج إلى العثور على شيء سيحدد السلوك الإضافي للبرنامج النصي.

جعلت مثل هذه العقيدة البسيطة حلقة مع عداد في جافا سكريبت هو نوع من العلاج لجميع المهام. أجهزة الكمبيوتر الحديثة سريعة. هناك متسع من الوقت لتنفيذ البرامج النصية في المتصفح ، ولا يوجد مكان للاستعجال. إنه أسهل من مجرد فرز شيء ما من أجل شيء ما. نتيجة لذلك ، على J اكتسبت avaScript for loops شعبية كبيرة.

يبدو أنه لا يوجد شيء خطأ في هذا. ولكن وراء مثل هذا النهج ، فإن الجوهر الذي من أجله تمت كتابة هذه الخوارزمية أو تلك يضيع بسهولة. البيانات لا معنى لها. كل شيء كتب من أجله أي برنامج منطقي.الإكثار من الشرب على J avaScript for loops ، قد لا يرى المطور الكيان المطلوب ولا ينشئ خوارزمية مناسبة.

الوظيفة انعكاس آخر للواقع

التقديم أمثلة على حلقات جافا سكريبتمن نفس النوع من الكود يمكن تمثيله بوظائف - ستتغير الخوارزمية على الفور ، وسيقل حجم النص الرئيسي للبرنامج النصي ، وسيصبح كل شيء قابلاً للقراءة ومفهومًا.

هذا ليس حلاً جديدًا جذريًا ، لكنه في جوهره لا يتجاوز نطاق التركيبات اللغوية الأخرى. على وجه الخصوص ، J يمكن العثور على حلقات avaScript في وظيفة split () الكلاسيكية:

var cResult = "9،8،7،6،5،4" ؛
var aResult = cResult .split ("،") ؛

لا توجد حلقة هنا ، ولكن كيف يتم ذلك دون البحث عن الحرف "،" واستخدامه لفصل رقم عن آخر.

استخلاصًا من كيفية تنفيذ ذلك داخل وظيفة split () ، فمن الممكن تكملة JavaScript بوظائفها الخاصة باستخدام الحلقات ، من وجهة نظر الاستخدام - أكثر ملاءمة. من الضروري أن يؤدي هذا النهج إلى تطوير وظائف لكل مهمة ، على التوالي ، ولكن سيظل العام مع هذا النهج.

هذه الدالات allt () و padc () و padl () و padr () ليست موجودة في JavaScript ، ولكن في بعض الأحيان تحتاج إلى إزالة المسافات من سلسلة أو تبرير طول السلسلة إلى اليسار أو اليمين أو كليهما الجوانب. في جسم هذه الوظائف توجد حلقات JavaScript. بسيطة ومعقولة التكلفة والخوارزمية التي تستخدم هذا لن تتوقف أبدًا.

متغيرات الوظائف لتحويل الأرقام من حساب التفاضل والتكامل السداسي العشري إلى حساب التفاضل والتكامل العاشر والعكس بالعكس ، بمعنى آخر ، من تنسيق بيانات إلى آخر ، يتم إجراؤها هنا عن طريق التكرار الحلقي. بناء جملة لغة مدمج للغاية وفعال.

الدورات الصحيحة - انعكاس للواقع

جافا سكريبت ليست مثل لغات البرمجة الأخرى ولا تختلف في تنوع الإصدارات ، والأهم من ذلك أنها لا تسعى إلى تغيير بناء الجملة ، بل إلى تطويرها وتوسيعها.

تختلف عقلية المبرمج الذي يستخدم JSمن تفكير مبرمج PHP (على وجه الخصوص ، ولغات أخرى في المجموع ، حسنًا ، باستثناء أن "Prolog" وأتباعها غير مدرجين في التيار العام) ، عندما لا تقتصر الخوارزمية على المتغيرات والمصفوفات وعوامل التخصيص والتركيبات الدورية.

إذا تخيلنا أنه لا توجد دورات ، ولكن المشكلة تحتاج إلى حل ، فإن أبسط خيار (معصوب العينين) هو افتراض أن البرنامج يعالج البيانات التي هي نقطة أو نظام نقاط في مساحة المعلومات. ما هي النقطة وما هو نظام النقاط هو مسألة موضوع معين. بالنسبة للمبرمج ، تعني هذه الأطروحة: هناك بيانات بسيطة وهناك مجموعة من البيانات البسيطة. بطبيعة الحال ، فإن المسند البسيط لمستوى واحد للمستوى أدناه سيكون نظامًا ، وبالنسبة للمستوى فوقه سيكون نقطة.

مع هذا النهج ، فإن اهتمام النقطة هو إظهار جوهرها من خلال أساليبها. عندما تكون نقطة في نظام فائق ، فإن وظيفة النظام هي إظهار جوهرها كمجموعة من الكيانات للنقاط المدرجة فيه.

هذا النهج قديم قدم فكرة لغات البرمجة ، لكنه لم يجد بعد انعكاسه المناسب في البرمجة. يفكر العديد من المبرمجين بشكل صحيح ، لكن نتيجة إبداعهم تترك الكثير مما هو مرغوب فيه.

من الجيد ارتداء معصوب العينين أحيانًا لرؤية العالم!

الغرض الرئيسي من JavaScript while هو تشغيل جزء معين من التعليمات البرمجية مرارًا وتكرارًا. إنها تشبه إلى حد كبير حلقة for مع اختلاف واحد مهم. اسمح لي بقليل من وقتك لشرح الفرق بين هذين النوعين من الحلقات.

ما الفرق بين حلقات while و for؟

الفرق بين هذه الحلقات هو كيفية إيقاف تنفيذ جزء من التعليمات البرمجية.

يتم تشغيل حلقة for لعدد التكرارات المحدد. نحن نعلم بالضبط عدد المرات التي ستنفذ فيها الحلقة جزء الكود الموجود في جسمها.

في حين أن الأمور مختلفة. يتم تنفيذ JavaScript while loop طالما أن الشرط المحدد صحيح. بمجرد تقييم الشرط إلى خطأ ، تنتهي حلقة while.

سبب اختلاف هذه الحلقات هو أننا لا نستطيع بالضرورة أن نعرف مسبقًا متى لن يكون الشرط المعين صحيحًا. لذلك ، لا يمكننا التنبؤ بعدد التكرارات في حلقة while التي سيتم تنفيذها حتى يتم كسرها.

إيجابيات وسلبيات حلقة while

اسمحوا لي أن أبدأ بالنظر إلى الجانب السلبي الوحيد المهم للحلقة أثناء. يمكن أن تعمل إلى الأبد!

إذا وجدت نفسك في موقف يستمر فيه تشغيل حلقة while إلى أجل غير مسمى ، فسيتوقف برنامجك (أو يتعطل). ثم تحتاج إلى إغلاق المتصفح لمقاطعة تنفيذ كود JavaScript.

يجب أن أشير إلى أن حلقة while loop غير المُدارة من JavaScript لا تعمل إلى الأبد عادةً. لأنه ، كمبرمجين ، علينا دائمًا التأكد من أن حالة حلقة while الخاصة بنا تصبح خاطئة في مرحلة ما.

الآن فيما يتعلق بـ "الإيجابيات" - فهي واضحة للغاية. بينما ستعمل باستمرار طالما أن الشرط صحيح. مثال على استخدام حلقة while هو مطالبة المستخدم بالإدخال. ستطالبك الحلقة بإدخال البيانات مرارًا وتكرارًا حتى يقوم المستخدم بإدخال البيانات الصحيحة.

أثناء بناء الجملة

صيغة for and while loops متشابهة جدًا.

تحتاج إلى استخدام الكلمة الأساسية while ، وكذلك تحديد الشرط الذي سيتم تنفيذ الحلقة بموجبه. مثل هياكل التحكم الأخرى ، تحدد حلقة while نطاقًا.

إليك ما يجب أن يبدو عليه الرمز:

while () (// الصق الكود هنا الذي يجب أن يحلق)

الجزء الأصعب هو معرفة الحالة أو الظروف التي يجب وضعها في الحلقة حتى تعمل بشكل صحيح.

تذكر أنه طالما أن الشرط صحيح ، ستستمر الحلقة في العمل. لنلقِ نظرة على مثال على الاستخدام أثناء وجوده في JavaScript.

بينما مثال حلقة

لنفترض أننا نريد أن نطلب من المستخدم إدخال رقم بين 1 و 10. ولكن ماذا يحدث إذا أدخل الرقم الخطأ؟

في هذه الحالة ، يجب أن نطلب منه إدخال القيمة مرة أخرى ، والتحقق مما إذا تم استيفاء الشرط ( سواء تم إدخال رقم بين 1 و 10).

هذه حالة تفشل فيها الحلقة for بشكل بائس. لأننا لا نستطيع معرفة عدد المرات التي سنضطر فيها إلى مطالبة المستخدم بإدخال الرقم الصحيح. في هذه الحالة ، تأتي الحلقة while لانقاذنا.

هذا هو الشكل الذي قد يبدو عليه الكود الخاص بنا:

var theNumber = موجه ("الرجاء إدخال رقم بين 1 و 10.") ؛ بينما (theNumber< 1 || theNumber >10 || isNaN (theNumber)) (theNumber = موجه ("تم إدخال قيمة غير صحيحة ، يرجى إدخال رقم بين 1 و 10!") ؛) تنبيه ("رائع! لقد أدخلت رقمًا:" + theNumber) ؛

تجدر الإشارة إلى أنه في المثال أعلاه ، لدينا ثلاثة شروط منفصلة في JavaScript while loop.

هذه هي الشروط الثلاثة: الرقم 10 || isNaN (الرقم). تشير إلى ما يلي:

  • إذا كان الرقم أقل من 1 ، أو ؛
  • إذا كان الرقم أكبر من 10 ، أو ؛
  • إذا كان الرقم ليس رقمًا ، فتابع الحلقة.

نظرًا لأننا نستخدم عامل التشغيل OR (||) بين جميع الشروط ، فهذا يعني أنه إذا كان أي من الشروط صحيحًا ، فسيتم تقييم الحالة العامة للحلقة while إلى true وستستمر الحلقة.

فقط إذا تم تقييم جميع الشروط الثلاثة إلى خطأ ، فسيتم تقييم الحالة العامة للحلقة while على خطأ وستتوقف.

خاتمة

JavaScript while loop هي الحلقة الحقيقية الوحيدة في لغات البرمجة. هو مجرد نوع خاص من حلقة while.

هذا هو المكان الذي يمكنك فيه إعادة إنشاء حلقة for بنفسك باستخدام صيغة حلقة while ، شاهد وتعلم:

عداد فار = 0 ؛ بينما (عداد< 10) { counter = counter + 1; console.log("The counter is currently at: " + counter); }

سوف يتكرر الرمز بالضبط 10 مرات ، لا أكثر ولا أقل. هذه هي بالضبط طريقة عمل حلقة for.

لا تخف من استخدام JavaScript أثناء. لأنه بدونها ، لن تعمل العديد من التطبيقات بشكل صحيح!

آمل أن يحظى هذا المقال بإعجابكم.

تم إعداد ترجمة مقال "while Loop in JavaScript" من قبل فريق المشروع الودود.

جيد سيئ