Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lesson 4.doc
Скачиваний:
4
Добавлен:
23.09.2019
Размер:
780.8 Кб
Скачать

3.1. Цикл do .. While

Давайте рассмотрим синтаксис нашего цикла:

do {         действие; } while(условие);

Всмотритесь: после do идут фигурные скобки, в которых вы можете разместить действие, операцию или выполнение какой-либо конструкции (для нашего случая это мытье одной тарелки). Вы можете указывать сколько угодно действий, главное, чтобы вы закрыли фигурную скобку, которая покажет где окончание тела цикла. Под словом «тело цикла» понимается та часть, которая будет повторяться. После того, как мы закрыли фигурную скобку необходимо написать while и в скобках указать условие, вернее логическую операцию, которая возвращает либо true, либо false. А если это будет не логическая операция, а например арифметическая, которая возвращает число, то это число будет преобразовано в булевый тип данных (если забыли, то смотрите предыдущие уроки в теме «преобразование типов данных»). Если результат в условии равен true, значит действие, которое стоит в фигурных скобках выполняется, если false, то выходим из цикла.

Будьте внимательны:

В этой конструкции вам нужно подставить только действие и условие, остальные элементы вы не должны менять. Например, между do и фигурной скобкой или фигурной скобкой и while писать какие-либо символы НЕЛЬЗЯ!

Давайте попробуем сделать алгоритм, приведенный выше. Заодно познакомимся с кое-чем новым.

Давайте мы будем выводить действия мытья посуды (понятно, что у нас в компьютере нет посуды). Сейчас мы воспользуемся конструкцией document.write(), поэтому выполним все по шагам. Вот как выглядела программа, для мытья одной тарелки:

<html> <head> <script type="text/javascript">     document.write("Взять тарелку из раковины.<br>");     document.write("Намылить тарелку средством для мытья посуды.<br>");     document.write("Потереть тарелку мочалкой.<br>");     document.write("Вытереть тарелку.<br>");     document.write("Поставить тарелку на полку.<br>"); </script> </head>

Теперь необходимо заставить скрипт повторять этот вывод несколько раз. Нам нужно определиться сколько раз. Ну, допустим, что у нас есть 3 грязных тарелки. Давайте введем переменную, которая будет хранить это значение. После каждой вымытой тарелки мы будем уменьшать количество грязных тарелок соответствующей операцией. А условие, при котором у нас будет выполняться цикл: это существование грязных тарелок. Т.е. если у нас еще есть грязные тарелки, то цикл будет работать иначе можно сказать, если количество тарелок больше нуля, то мыть их дальше. Отобразим все вышесказанное:

<html> <head> <script type="text/javascript">         //Покажем сколько у нас тарелок         var kol_tarelok = 3;         do          {                 //Сделаем операцию                 document.write("Взять тарелку из раковины.<br>");                 document.write("Намылить тарелку средством для мытья посуды.<br>");                 document.write("Потереть тарелку мочалкой.<br>");                 document.write("Вытереть тарелку.<br>");                 document.write("Поставить тарелку на полку.<br><br>");                                  //После вымытой тарелки уменьшим количество грязных на одну                 kol_tarelok--;         }         while (kol_tarelok > 0); </script> </head>

Отчетливо видно, что цикл выполнился три раза. А если мы изменим переменную на другое число, то он будет выполнен столько раз, сколько укажем. Заметьте, что в условии результат операции когда-то должен поменяться в значение false, иначе цикл будет выполняться бесконечно и скрипт никогда не закончиться, пока мы его сами не остановим. Чаще всего при таком напрочь зависает браузер, поэтому всегда следите за условием. Понятно, что переменная, записанная в условии ДОЛЖНА меняться внутри тела цикла.

Посмотрите следующий пример, который тоже должен работать, но в нем есть коварство:

<html> <head> <script type="text/javascript">         //Покажем сколько у нас тарелок         var kol_tarelok = 3;         do          {                 //Сделаем операцию                 document.write("Взять тарелку из раковины.<br>");                 document.write("Намылить тарелку средством для мытья посуды.<br>");                 document.write("Потереть тарелку мочалкой.<br>");                 document.write("Вытереть тарелку.<br>");                 document.write("Поставить тарелку на полку.<br><br>");                                  //После вымытой тарелки уменьшим количество грязных на одну                 kol_tarelok--;         }         while (kol_tarelok != 0); </script> </head>

Теперь условие поменялось. И в принципе тоже должно работать, потому что цикл будет работать, пока тарелки не станут, равны нулю. Но, не всегда это правильно. Если присвоить переменной kol_tarelok отрицательное значение, то цикл будет выполняться бесконечно.

Вывод:

Чтобы этого не допустить, всегда нужно ставить знаки: больше, меньше, больше либо равно, меньше либо равно.

К сожалению, конструкция цикла, которую мы рассмотрели, применяется не часто, но она наглядно показывает, как работает цикл.

Вернемся, к первому варианту цикла. Этот цикл работает не всегда корректно, к примеру, если мы укажем ноль тарелок, то цикл все равно выполниться один раз, потому что проверка идет после выполнения.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]