جملة Do…..while
تأخذ هذه الجملة التركيب التالي:
do
{
code block to be executed
}
while (condition);
ويتضح تركيب هذه الجملة كما في الشكل:
تتشابه جملة do….while مع جملة while في قيامها بتنفيذ أمر معين طالما أن هناك شرط ما مازال يتحقق، ويتوقف تنفيذ الأوامر عند انتفاء تنفيذ هذا الشرط، والفارق بين جملة do….while وبين جملة while، هو أن الشرط الذي يحكم تنفيذ الأوامر الموجودة في الجملة في جملة while موجود في بداية الجملة بينما هذا الشرط في جملة do….while موجود في نهاية الجملة، والفارق هنا، هو أن في جملة while طالما أن الشرط يتحقق يتم تنفيذ الأوامر، أما في جملة do….while يتم تنفيذ الأوامر حتى ينتفي تحقق الشرط.
والكود التالي يوضح كيفية استخدام جملة . do….while
var userAge;
do
{
(””,”userAge = prompt(“Please enter your age
}
while (isNaN(userAge) == true);
في السطر الأول من الكود السابق قمنا بتعريف المتغير user Age، والذي يعبر عن عمر زائر الصفحة، وفي داخل القوسين المتعرجين الخاصين بالجملة قمنا بوضع الأمر الخاص بالجملة، وهو ظهور رسالة لزائر الموقع تطلب منه أن يقوم بكتابة عمره بالسنوات في هذه الرسالة Please enter your age، ثم في آخر سطر من الكود وضعنا الشرط الخاص بتنفيذ نفس الأمر مرة أخرى، واستخدمنا في هذا الشرط دالة NaN، والتي معناها Not a Number، والتي تأخذ إحدى قيمتين أما القيمة true في حالة ما إذا كانت القيمة التي قام المستخدم بإدخالها في الرسالة ليست عدد صحيح، أو تأخذ القيمة false في حالة قيام زائر الموقع بإدخال عدد صحيح، ومعني ذلك أن زائر الموقع المفروض هو أن المستخدم يقوم بإدخال عمره في الرسالة التي تظهر في شكل عدد صحيح، ففي حالة قيام المستخدم بكتابة عمره في صورة عدد صحيح، تكون قيمة دالة )NaN) في هذه الحالة false، وبالتالي يتوقف التكرار عن العمل ولا يتم تنفيذ الأمر الموجود في التكرار ولا تظهر الرسالة التي تطلب من المستخدم أن يقوم بإدخال عمره مرة أخرى والعكس بالعكس.
ليس ذلك هو ما يهمنا في الكود السابق، وإنما ما يهمنا هنا هو إيضاح أن الاختلاف بين جملة while، وبين جملة do….while هو أنه في جملة do….while كما رأينا يتم تنفيذ الأمر الذي تحتوي عليه الجملة بغض النظر عن تحقق الشرط أم عدم تحققه، وذلك لأن الأمر في جملة do….while يكتب قبل الشرط، وبعد تنفيذ الأمر في حلقة التكرار الأولى تنظر الجملة إلى الشرط والذي بناء على تحققه أو عدم تحققه يتقرر تنفيذ، أو عدم تنفيذ الأمر مرة أخرى في الحلقة الثانية من التكرار، ففي حالة تحقق الشرط يتم تنفيذ الأمر في الحلقة التالية من التكرار، والثالثة، والرابعة، وهكذا حتى يتوقف تحقق الشرط الموجود في آخر الجملة، ويتوقف التكرار عن العمل .
أما في جملة while كما سبق وأن عرضناها، فإن الجملة تنظر في الشرط أولًا لأنه مكتوب في بداية الجملة، فإذا تحقق تم تنفيذ الأمر الموجود في الجملة، ثم تعود في الحلقة الثانية من التكرار وتنظر في الشرط مرة أخرى، فإذا تحقق يتم تنفيذ الحلقة الثانية من التكرار، ثم الثالثة، وهكذا.