Запрещены: вещественный и строковый типы.

Список значений селектора может состоять из произвольного количества значений констант и интервалов, отделенных друг от друга запятыми. Все значения селектора должны быть уникальными, а диапазоны не должны пересекаться. Тип значений должен быть совместим с типом селектора, например:

VAR

S: CHAR;

BEGIN

READLN(S);

CASE S OF

'0'..'9' : WRITE('Цифра');

'A'..'Z' : WRITE('Прописная буква');

'a'..'z' : WRITE('Строчная буква')

ELSE

WRITE('Другие символы');

END;

Следует знать, что:

1. Инструкция CASEявляется обобщением IF и используется для выбора одного из нескольких направлений дальнейшего хода программы;

2. Выражение-селектор должно иметь порядковый тип: чаще всего integer, реже – char и boolean.

3. Список выбора может состоять из произвольного количества значений или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель "..". Тип констант должен совпадать с типом селектора.

4. Точка с запятой не ставится после последнего элемента списка выбора.

Лекция №9. Циклические алгоритмы. Операторы итерационных и детерминированных циклов

В программах, связанных с обработкой данных, часто приходится выполнять циклически повторяющиеся действия. Например, присвоение начального значения нескольким сотням переменных. Циклы позволяют записать такие действия в компактной форме. Поэтому, они являются одной из важнейших алгоритмических структур.

Цикл представляет собой последовательность операторов, которая повторяется неоднократно.

В алгоритмическом языке ТР имеются три вида операторов цикла, которые используются для реализации алгоритмов циклической структуры:

1. оператор FOR – оператор цикла с параметром;

2. оператор WHILE– оператор цикла с предварительным условием;

3. оператор REPEAT – оператор цикла с последующим условием.

Оператор цикла с предусловием

Оператор цикла с предусловием - WHILE используется для программирования итерационных циклов, т.е. если необходимо произвести некоторые повторяющиеся вычисления, но число повторов неизвестно, а также для программирования детерминированных циклов, если шаг изменения параметра цикла отличен от 1 и –1.

Общий вид оператора WHILE:

WHILE <логическое выражение> DO <оператор цикла>;

Или

WHILE <логическое выражение> DO

BEGIN

<блок операторов цикла>;

END;

Схема, реализующая оператор WHILE имеет следующий вид:

условие
Операторы цикла

нет

да

Оператор WHILE действует следующим образом:

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

Следует знать, что:

­ Число повторений цикла определяется в ходе работы программы и заранее неизвестно;

­ Условие – это выражение логического типа, которое может принимать одно из двух значений: trueили false;

­ В теле цикла обязательно должен присутствовать оператор, оказывающий влияние на условие выполнения инструкций цикла;

­ ЦиклWHILE – это цикл с предварительным условием, это значит, что если проверяемое условие ложно, то операторы цикла вообще могут быть не выполнены. Цикл WHILE считается самым универсальным видом цикла;

­ В операторе WHILE никогда не ставится ";" после слова DO.

Оператор цикла с постусловием

Оператор цикла с постусловием - REPEATиспользуется для программирования итерационных циклов. Схема, реализующая оператор цикла REPEAT,являетсясхемойитерационного цикла с последующим условием.

Оператор REPEATдействует следующим образом:

выполняются все операторы циклической части, записанные между операторами REPEATиUNTIL. Затем проверяется логическое выражение и если оно ложно, то вновь выполняются все операторы цикла до тех пор, пока логическое выражение не примет значение "истина".

Общий вид оператора REPEAT:

нет
да
Операторы цикла
условие
REPEAT

<блок операторов цикла>;

UNTIL <логическое выражение>;

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

Цикл с параметром. Оператор FOR

Оператор цикла FOR используют для программирования детерминированных циклов, т.е. в том случае, когда заранее известно число повторений цикла. Этот вид оператора цикла называют циклом со счетчиком или циклом с параметром. В нем важную роль играет переменная-параметр, который автоматически изменяет свое значение либо на 1, либо на –1.

Общий вид оператора FOR:

FOR I:= N1 TO N2 DO <оператор цикла>;

Или

FOR I:= N1 TO N2 DO

BEGIN

<блок операторов цикла>

END;

где I – параметр цикла; N1 – начальное значение параметра цикла; N2 – конечное значение параметра цикла. Схема, реализующая действие оператора FOR имеет вид:

I=N1,N2
Оператор или блок операторов цикла

Параметры I, N1, N2 должны быть одного и того же скалярного типа, но не REAL. Параметр цикла I принимает последовательные значения от N1 до N2, увеличиваясь на 1.

Например, при реализации следующего оператора:

FOR K:= 1 TO 50 DO WRITELN(K:3);

на печать будут выданы натуральные числа от 1 до 50.

Если параметр цикла изменяется от большей величины к меньшей, уменьшаясь на –1, то оператор будет иметь вид:

FOR I:= N2 DOWNTO N1 DO <оператор цикла>;

Например, при выполнении оператора

FOR I:= 100 DOWNTO 50 DO WRITELN(K:3);

на печать будут выданы натуральные числа от 100 до 50.

Следует отметить, что внутри цикла нельзя изменять значения параметров I, N1, N2. После завершения цикла FOR значение параметра цикла I становится неопределенным. Нельзя передавать внутри цикла управление извне, минуя оператор FOR.

Следует знать, что:

  1. Оператор цикла FOR используется для организации циклов с фиксированным числом повторений;
  2. Количество повторений цикла определяется начальным и конечным значениями переменной-счетчика. Оператор FOR обеспечивает выполнение до тех пор, пока не будут перебраны все значения параметра цикла.
  3. Переменная-счетчик должна бытьпорядкового типа,чаще всегоinteger. Использование вещественного типа недопустимо.
  4. Параметр цикламожет изменяться (увеличиваться или уменьшаться) каждый раз при выполнении цикла только на единицу.
  5. Для досрочного выходаиз цикла можно использовать операторGOTO.

Вложенные циклы

В теле любого оператора цикла могут находиться другие операторы цикла. При этом, цикл, содержащий в себе другой, называется внешним, а цикл, находящийся в теле первого – вложеннымили внутренним. Правила организации внешнего и внутреннего циклов такие же, как и для простого цикла.

При программировании вложенных циклов необходимо соблюдать следующее условие: все операторы внутреннего цикла должны располагаться полностью в теле внешнего цикла.

Представленный ниже пример фрагмента программы вывода на экран таблицы умножения демонстрирует применение вложенных циклов.

Var

i, j: byte;

Begin

for i:= 1 to 10 do

for j:= 1 to 10 do

writeln(i, '*', j, ' = ', i*j);

End.

На блок-схеме наглядно показано, что при вложении циклов внутренний цикл выполняется полностью от начального до конечного значения параметра, при неизменном значении параметра внешнего цикла. Затем значение параметра внешнего цикла изменяется на единицу, и опять от начала и до конца выполняется вложенный цикл. И так повторяется до тех пор, пока значение параметра внешнего цикла не станет больше конечного значения, определенного в операторе FORвнешнего цикла.

I=N1,N2
Оператор или блок операторов цикла
I=N1,N2

Пример программы вычисления суммы степеней для натурального числа N

Запрещены: вещественный и строковый типы. - student2.ru, в которой используется вложенный цикл:

var

n, i, j: integer; a, s, p: real;

begin

write ('введите показатель степени: ');

readln (n);

s:= 0; {обнуление начального значения суммы}

for i:= 1 to n do {начало внешнего цикла}

begin

a:= 1/i; p:= a;

for j:= 2 to n do

p:= p*a; {вычисление слагаемого}

s:= s+p; {накопление суммы}

end;

writeln ('сумма степеней: ', s);

end.

Наши рекомендации