Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика_лабораторные.doc
Скачиваний:
4
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Оператор выбора

Если у вас не два возможных варианта выполнения программы, а больше, то может использоваться оператор выбора CASE. Структура этого оператора в Турбо Паскале:

CASE <ключ_выбора> OF

C1 : <оператор1>;

C2 : <оператор2>;

. . .

CN : <операторN>;

[ELSE <оператор0>;]

END;

Здесь <ключ_выбора> - это выражение порядкового типа, в зависимости от значения которого принимается решение; C1,...,CN - значения, с которыми сравнивается значение <ключа>; <оператор1>,..., <операторN> - оператор (возможно составные), из которых выполняется тот, с константой которого происходит первое совпадение значения <ключа>, <оператор0> выполнится, если значение ключа не совпадает ни с одной из констант C1,...,CN.

Ветвь Else не обязательна, и в отличие от оператора if, перед ней можно ставить точку с запятой. Если для нескольких значений <ключа> действия совпадают, то эти константы можно перечислить через запятую перед двоеточием или даже задать диапазон значений (нижняя граница .. верхняя граница).

ПРИМЕР: Вводится целое число, если это цифра, то определить четная она или нет, а если число, то определить попадает ли оно в диапазон от 10 до 100, если нет, то выдать соответствующее сообщение.

program chislo;

var i:integer;

begin

write('Введите целое число: ');

readln(i);

case i of

0,2,4,6,8 : writeln('Четная цифра');

1,3,5,7,9 : writeln('Нечетная цифра');

10...100,200 : writeln('Число от 10 до 100 или 200');

else writeln('Число либо отрицательное, либо > 100, но не 200');

end;

readln

end.

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

Рассмотрим случай, когда действие надо повторить некоторое количество раз. Например, число х необходимо возвести в целую степень n. Здесь требуется оператор цикла. Операторов цикла в Паскале три: цикл for (с известным числом повторений или цикл с параметром), цикл while (с предусловием) и цикл repeat (с постусловием).

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

Оператор цикла For используется, когда число итераций цикла известно заранее. Его еще называют цикл со счетчиком. Существует две формы: for_to и for_downto.

Синтаксис

1-я форма: for параметр := нач_знач to кон_знач do оператор

2-я форма: for параметр := нач_знач downto кон_знач do оператор

параметр – счетчик цикла for, может быть переменной любого порядкового типа (напомним, что к порядковым типам относятся целый, символьный, перечисляемый и интервальный).

нач_знач и кон_знач – выражения, определяющие начальное и конечное значения счетчика.

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

Принцип работы цикла for_to (for_downto)

На первом шаге цикла счетчику присаивается значение выражения нач_знач. Затем производится проверка выражения параметр <= кон_знач (параметр >= кон_знач) и, если оно истинно выполняется тело цикла, в противном случае происходит выход из цикла. После выполнения тела цикла происходит изменение параметра на следующее большее (меньшее) значение в зависимости от формы оператора for, т.е. неявно происходит выполнение одного из двух операторов:

параметр := Succ(параметр);

параметр := Pred(параметр);

Затем снова идет проверка выражения параметр <= кон_знач (параметр >= кон_знач) и опять, если оно истинно выполняется тело цикла. Цикл выполняется до тех пор, пока счетчик не станет большим (меньшим) выражения кон_знач.

Примеры

  1. For i:=1 to 10 do writeln('a');

  2. For month:=12 downto 1 do S:=S+1;

  3. For k:=1 downto 5 do p:=p*2;

В первом случае тело цикла выполнится 10 раз и будет выведено на экран 10 букв "а".

В втором случае тело цикла выполнится 12 раз.

В третьем случае тело цикла не выполнится ни разу, т.к. сразу 1>5.

ПРИМЕРЫ.

1. Даны 10 вещественных чисел. Подсчитать среди них количество положительных. Слово "даны" означает, что программа должна получить их от пользователя. Идея: мы должны иметь переменную счетчик, которую должны наращивать, когда введенное число окажется положительным. Нам не нужно заводить 10 переменных, достаточно одной.

program chisla;

uses crt;

var i, kol:byte;

x:real;

begin

clrscr;

kol:=0;

for i:=1 to 10 do

begin

write('Введите ',i,'-ое число: ');

readln(x);

if x>0 then kol:=kol+1 {увеличиваем количество на 1}

end;

writeln('Вы ввели ',kol,' положительных чисел.');

readln

end.

2. Напечатать буквы латинского алфавита в обратном порядке от 'Z' до 'A'.

program alphabet;

var c:char;

begin

for c:='Z' downto 'A' do write(c);

readln

end