Возможная форма оператора: if <условие> then
<оператор 1>;
Пример использования оператора:
Вычислите значение функции f(x) в зависимости от значения аргумента x. | if x<0 then y=x;
if x=0 then y=0; if x<0 then y=sqr(x); |
Вложенные операторы if
Возможно использовать в качестве оператор1 или оператор2 других условных операторов:
if <условие1> then if <условие2> then <оператор1> else <оператор2>;
Вложенность операторов if неограниченна.
4. Ветвление на несколько направлений (оператор – переключатель, или оператор выбора или оператор варианта):
Позволяет выбрать из любого числа возможностей.
case <переменная или выражение> of
<список значений выбора1>:<оператор1>;
<список значений выбора2>:<оператор2>;
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
<список значений выбора N>:<оператор N>;
[else <оператор>]
end;
Переменная
может быть любого порядкового типа, кроме longint (word, boolean, integer, char… или перечисляемый тип). (см.приложение 1, СТРУКТУРА ТИПОВ ДАННЫХ)
Список значений выбора - это значения, которые могут принимать переменная или выражение, перечисленные через запятую или, если значения принадлежат какому-либо интервалу, с использованием лексемы " . . " (1..7 или 'а' ..'м')
Оператор - любой оператор, в том числе составной.
Принцип работы оператора:
¨ Значение переменной или выражения сравнивается с предложенными списками значений
¨ Если найдено нужное значение, выполняется соответствующий оператор
¨ Если нужное значение не найдено в перечисленных списках, выполняется оператор после else
¨ Если else отсутствует, то, когда нужное значение не найдено, выполняется следующий за case оператор.
Практические задания:
1. Отработка навыков использования операторов ветвления
Составить программу движения символа * под управлением клавиш 2,4,6,8. Q – выход из программы. |
uses crt; label 1; var x,y:word;q:char; begin clrscr; x:=40;y:=12; 1:textcolor(14);gotoxy(x,y);write('*'); q:=readkey; textcolor(0);gotoxy(x,y);write('*'); if q='2' then y:=y+1; if q='8' then y:=y-1; if q='4' then x:=x-1; if q='6' then x:=x+1; if (q='q') or (q=’Q’) then halt; goto 1; readkey;end. |
Составить программу подсчета суммы введенных с клавиатуры чисел. Признак конца ввода – число 0. |
program pt1; uses crt; label 1; var x,z:integer;t:char; begin clrscr; writeln ('ПРОГРАММА ПОДСЧЕТА СУММЫ ВВЕДЕНЫХ ЧИСЕЛ.'); gotoxy(50,22);writeln ('Выход из программы - число 0'); 1: write('Введите число'); read(x); if х=0 then goto 2 else begin z:=z+x; goto 1;end; 2: writeln('сумма введенных чисел - ',z); readkey;end. |
Написать программу, которая проверяет, является ли четным введенное с клавиатуры число |
Uses crt; Var n:integer; Begin Readln(n); Write(‘число’, n,’-‘); If n mod 2=0 then writeln(‘четное’) else writeln(‘нечетное’); readkey; End. |
Написать программу, которая запрашивает номер месяца и выводит название времени года. |
Uses crt; Var month: integer; Begin Writeln (‘Введите номер месяца от 1 – 12); Readln(month); Case month of 1,2,12: writeln(‘Зима’); 3..5: writeln(‘Весна’); 6..8: writeln(‘Лето’); 9..11: writeln(‘Осень’); else writeln(‘число д.б. от 1 до 12’); end; readkey;end. |
Алгоритм решения задачи в виде блок-схемы приведен ниже. Программу составить самостоятельно.