Writeln ('Неправильный ввод')
end;
Write ('цвет =');
Case clr of
0: writeln('red');
1: writeln('blue');
2: writeln('black');
end;
End.
Протокол работы программы:
Введите порядковый номер /0-1-2/ —> 2
цвет = black
Программирование алгоритмов циклической структуры
Понятие цикла
Циклами называются синтаксические конструкции, позволяющие повторять последовательность операторов, записанную в тексте программы лишь однажды. Данная последовательность называется телом цикла. Каждое выполнение тела цикла называется итерацией. Иначе говоря, цикломназывается последовательность действий, выполняемых многократно, каждый раз при новых значениях параметров.
В языке Паскаль возможны три разновидности циклов. Некоторые разновидности являются взаимозаменяемыми, однако для повышения удобочитаемости программы следует использовать ту разновидность, которая подходит наилучшим образом в контексте конкретного алгоритма.
На данном занятии рассмотрим оператор цикла с предусловием.
Оператор цикла с предусловием
Если перед каждой итерацией цикла в алгоритме предусмотрена проверка условия, при ложности которого итерация не имеет смысла, то такой цикл называется циклом с предусловием. Цикл с предусловием иногда называют циклом «пока».
Если в теле цикла требуется выполнить не один оператор, а целую последовательность операторов, то её следует заключить в операторные скобки Begin-End.
Такой цикл, например, уместен при описании процесса сбора урожая с яблони. То есть «пока есть яблоко – сорвать его». В компьютерных алгоритмах цикл с предусловием используют при чтении информации из файла, где чтение новой записи возможно пока файл не завершился.
Для того чтобы программа смогла выйти из цикла, необходимо, чтобы операции в теле цикла прямо или косвенно влияли на условие его продолжения.
Структура:
WHILE <условие> DO <оператор>;
WHILE, DO — зарезервированные слова (пока (выполняется условие) делать)
<условие> — выражение логического типа
<оператор> — произвольный оператор Турбо Паскаля
Порядок работы оператора WHILE(рис. 1):
Рис. 1 Алгоритм циклической структуры с предусловием
Пример.
Дано натуральное число n. Подсчитать количество цифр данного числа.
Решение:
Program Example;
Var m,n:Longint;
k:integer; {счетчик цифр}
Begin
Writeln('Введите целое число');
Readln(n); {ввод n}
m:=n;
k:=0;
white m<>0 do
Begin
lnc(k); {увеличиваем счетчик на 1}
m:=m div 10; {уменьшаем число на последнюю цифру}
end;
Writeln('B числе ',n,' — ',к:4,' цифр!'); {вывод результата}
Readln;
End.
Для управления работой циклическими операторами существуют две процедуры:
BREAK — реализует немедленный выход из цикла, управление передается оператору, стоящему сразу после тела цикла.
CONTINUE — обеспечивает досрочное прохождение цикла, эквивалентна передаче управления в конец циклического оператора.
Оператор цикла с параметром
Когда заранее известно число итераций цикла, можно использовать цикл по счётчику (цикл с параметром). Несмотря на то, что цикл по счётчику является частным случаем цикла с предусловием, он имеет особую практическую значимость при описании алгоритмов обработки массивов. Кроме того, цикл по счётчику может быть использован для расчёта или генерации параметризуемых элементов последовательности.
Неотъемлемым атрибутом такого цикла является переменная-счётчик (параметр-счётчик), в которой хранится информация о текущей итерации.
Структура:
For <параметр>:=<нач. знач.> to <кон. знач.> do <оператор>;
For <параметр>:=<нач. знач.> downto <кон. знач.> do <оператор>;
For, to, downto, do— зарезервированные слова.
<параметр> — параметр цикла — переменная любого порядкового типа.
<нач. знач.> — начальное значение — выражение того же типа.
<кон. знач.> — конечное значение — выражение того же типа.
<оператор> — произвольный оператор Турбо Паскаля.
Порядок работы оператора For…to(рис. 1):
Рис. 1 Алгоритм цикла с увеличивающимся параметром (автоинкрементный цикл)
В языке Pascal возможен автоинкрементный (to) или автодекрементный (downto) цикл по счётчику. В первом случае происходит увеличение переменной-счётчика (параметра-счётчика) на 1 в конце каждой итерации, во втором – уменьшение на 1. Автоинкрементный цикл продолжается, пока значение счётчика не больше заданного конечного значения, автодекрементный – пока не меньше.
Переменная-счётчик (параметр-счётчик) доступна операторам в теле цикла только на чтение. В процессе работы цикла по счётчику операторам в теле цикла не допускается изменять текущее или конечное значение счётчика. После окончания цикла переменная-счётчик (параметр-счётчик) содержит неопределённое значение.
Если в алгоритме имеются вложенные циклы по счётчику, то для каждого из них должна быть использована своя переменная-счётчик (параметр-счётчик).
Для преждевременного завершения текущей итерации цикла любой разновидности и начала новой итерации следует использовать оператор Continue.
Для преждевременного выхода из цикла – оператор Exit.
Пример.
Составить программу, которая определяет, является ли четырехзначное число «перевертышем».
Решение:
Обозначим n — вводимое число, т — дубликат числа n, а — перевертыш числа n, i — параметр цикла для создания «перевертыша».
Program Example2;
Var m,n,a,i:integer; {описание переменных}
Begin
Writeln('Введите целое число');
Readln(n); {ввод n}
m:=n;
a:=0;
{создание перевертыша}
for i:=1 to 4 do begin
a:=a*10+m mod 10;
m:=m div 10;
end;
if a=n then