Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.doc
Скачиваний:
32
Добавлен:
12.03.2016
Размер:
3.29 Mб
Скачать
      1. Оператор цикла while

Синтаксис оператора while:

WHILE условие DO оператор

Слово whileчитается "вайл", словоdo- "ду", вся конструкция переводится так -Покаусловие истинно,делай оператор. Например,while a>b do b:=b+1.

Работает оператор while так:

Сначала компьютер проверяет истинность условия, стоящего после слова while. Если условие истинно, то выполняется оператор, стоящий послеdo. Затем снова проверяется истинность условия и в случае истинности снова выполняется этот оператор. И т.д. Если условие ложно, то операторwhileпрекращает свою работу и компьютер переходит к выполнению следующего оператора.

Оператор, стоящий после while, вполне может быть составным, поэтому тело цикла у оператора while, так же как и у оператора repeat, может состоять из многих операторов.   

Решим при помощи while ту же задачу о печати чисел 3 5 7 9, что в предыдущем параграфе решили с помощью repeat. Для того, чтобы точно определить работу оператора while, приведем программу ее решения параллельно с третьим вариантом программы из 2.2:

3 ВАРИАНТ

ВАРИАНТ С WHILE

LABEL m1,m2,m3; VAR f : Integer; BEGIN Write('Начало счета '); f:=3; m1: if f<=9 then goto m3 else goto m2; m3: Write(f,' '); f:=f+2; goto m1; m2: Write(' Конец счета') END.

VAR f : Integer; BEGIN Write('Начало счета '); f:=3; while f<=9 do begin Write(f,' '); f:=f+2; end; Write(' Конец счета') END.

Как видите, здесь после doстоит составной операторbegin Write(f,'  '); f:=f+2; end. Последовательность исполнения операторов и проверки условий в обеих программах совершенно аналогичны.

Типичная ошибка начинающих – небрежное обращение со знаками сравнения. Многие не видят большой разницы в том, как записать – while f<=9илиwhile f<9, а затем, «недополучив» результат, удивляются, почему. И здесь лучшим средством для понимания является отладочный режим. Попробуйте ошибочный вариант последней программы (сwhile f<9) выполнить в пошаговом режиме с использованием окон пользователя и отладчика. Для этого введите в окно отладчика две вещи: переменнуюfи выражениеf<9(оно может иметь только два значения:true - истинаиfalse - ложь, другими словами – «условие выполнено» и «условие не выполнено»).

Задание 41:Вычислять с использованием while квадратные корни из чисел900, 893, 886, 879и т.д. до тех пор, пока это можно делать.

      1. Отличия операторов repeat и while

Отличий три:

  • Компьютер выходит из цикла оператора repeatтогда, когда условие истинно, а из цикла оператораwhile- когда условие ложно.

  • whileможет ни разу не выполнить оператор, стоящий послеdo.repeatже хотя бы раз операторы, стоящие междуrepeatиuntil, выполнит.

Так, фрагмент k:=8; repeat k:=1 until 3>2; WriteLn(k)напечатает 1.

А фрагмент k:=8; while 2>3 do k:=1; WriteLn(k)напечатает 8.

  • При компиляции оператор whileдает несколько более эффективную программу, чем операторrepeat.

Часто эти отличия для начинающих малосущественны, поэтому выбирайте оператор по вкусу. Мне, например, надоели паскалевские begin и end, поэтому я охотнее пользуюсь оператором repeat.

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