Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_1 / Задание на контрольную(Pascal).doc
Скачиваний:
15
Добавлен:
08.06.2015
Размер:
210.43 Кб
Скачать

2.7.2. Цикл Repeat … Until

Второй цикл Repeat…Untilрассмотрим на примере программыDORATIO.PAS:

Program DoRatio;

Var

A, B: Integer;

Ratio: Real;

Ans: Char;

Begin

Repeat

Write(‘Введите два числа’);

ReadLn(A, B);

Ratio := A/B;

WriteLn(‘Отношение равно’, Ratio);

WriteLn(‘Повторить? (Y/N)');

ReadLn(Ans);

Until UpCase(Ans) = ‘N’;

End.

Как описывалось ранее, в этой программе повторяется выполнение операторов, пока ответ на вопрос – nилиN(Повторить?Y/N). Другими словами,RepeatиUntilповторяются до тех пор, пока значение выражения приUntilне будетTrue.

Существуют три основных отличия от цикла While:

  • операторы в цикле Repeatвыполняются хотя бы один раз, потому что проверка выражения осуществляется в конце тела цикла. В циклеWhile, если значение выраженияFalse, тело его пропускается сразу.

  • цикл Repeatвыполняется пока выражение не станетTrue, в то время, как циклWhileвыполняется до тех пор, пока выражение имеет значениеTrue. При замене одного типа цикла на другой необходимо на это обращать особое внимание. Рассмотрим программуHELLO, где циклWhileзаменен на циклRepeat:

program Hello;

var

Count: Integer;

Begin

Count := 1;

Repeat

WriteLn(‘Здравствуй и прощай!’);

Inc(Count);

Until Count > 10;

WriteLn(‘Это конец”);

End.

Отметим, что теперь переменная Countпроверяется на значение больше 10 (а вWhileбылоCount<= 10).

В заключение, в цикле Repeatможет использоваться просто группа операторов, а не составной оператор. При использовании этого цикла не используются словаBegin…End, как в случае с цикломWhile.

Запомните, что цикл Repeat выполнится хотя бы один раз, в то время, как цикл Whileможет ни разу не выполниться в зависимости от значения выражения.

2.7.3. Цикл For

Цикл Forсуществует во многих языках программирования. В Паскале тоже. Однако, вариант этого цикла в Паскале как эффективен, так и ограничен.

Обычно, набор операторов выполняется фиксированное число раз, пока переменная (индексная) принимает значение в указанном диапазоне. Модифицируем знакомую программу HELLOследующим образом:

Program Hello;

Var

Count: Integer;

Begin

For Count := 1 to 10 Do

WriteLn(‘Здравствуй и прощай!’);

WriteLn(‘Это конец’);

End.

При выполнении этой программы видно, что цикл Forвыполняется так же, как и циклыWhileиRepeat. Фактически эквивалентно циклуWhile.

Формат цикла For:

For индекс:= выражение 1 to выражение 2 do оператор

Где индекс – скалярная переменная (целого типа, символьного, булевского и любого перечисленного типа);

Выражение 1 и выражение 2 – выражения типа, совместимого с типом индекса; оператор – одиночный или составной оператор. Индекс увеличивается на 1 после каждого выполнения цикла Индекс можно уменьшить на 1. Для этого ключевое слово toзаменяется наdownto.

Цикл forэквивалентен следующей программе с цикломwhile:

Index :=expr1;

While index <= expr2 do

Begin

Оператор;

Inc (index)

End;

Главный недостаток цикла for– это возможность уменьшить или увеличить индекс только на 1.

Основные преимущества – краткость, возможность использования символьного и перечислимого типа в диапазоне значений.

Соседние файлы в папке Информатика_1