В рассмотренных до сих пор алгоритмах и
программах все команды (операторы) выполнялись
последовательно одна за другой в том порядке, в
каком они были записаны (линейные алгоритмы).
Однако таким образом может быть построен
алгоритм для решения далеко не всякой задачи.
Урок 7
В практике хорошо известны задачи, дальнейший
ход решения которых зависит от выполнения
какого-либо условия. В жизни часто приходится
действовать в зависимости от обстоятельств, от
каких-то условий. Но если в жизни мы часто ищем
выход из ситуации только тогда, когда попали в
неё, в программе необходимо предусмотреть все
действия которые необходимо выполнить после
проверки условия, как в случае его выполнения,
так и в случае невыполнения. Чтобы изменять
последовательность выполнения различных частей
программы, применяют условный оператор.
7.1. Условный
оператор.
Условный оператор позволяет выполнять или
пропускать операторы программы в зависимости от
некоторого условия. Условный оператор может
иметь две формы:
Полный
оператор.
Формат команды
IF условие THEN оператор_1 ELSE оператор_2;
Схема оператора:
Неполный
оператор.
Формат команды
IF условие THEN оператор;
Схема оператора:
Если перевести на русский язык английские слова
то получим:
ЕСЛИ условие ТО оператор_1 ИНАЧЕ оператор_2;
или ЕСЛИ условие ТО оператор;
В качестве условия применяют операции
сравнения: =, <>, <=, >=, <, >. Слева и справа от
знака сравнения записывают арифметические
выражения.
Например, оператор
If x<>0
then z:=y/x
еlse write('Ошибка!');
присвоит переменной Z значение частного y/x,
если x<>0, в противном случае высветит на экране
слово "Ошибка!".
7.2. Составной
оператор.
В некоторых случаях после слов THEN и ELSE
надо выполнить не один оператор, а несколько.
Тогда эти операторы заключаются в так называемые
операторные скобки, где BEGIN - открывающая скобка,
END - закрывающая скобка. Все операторы
находящиеся внутри операторных скобок
называются составным оператором. Перед словом ELSE
точка с запятой никогда не ставится.
Формат команды: BEGIN оператор; оператор; ...
оператор END;
Например:
If a<b then
begin
R:=a;
A:=b
B:=r
End
После выполнения такого оператора в
переменной А будет большее, а в переменной В -
меньшее из двух значений, находившихся там ранее.
В качестве выполняемого в условном операторе
действия может быть другой условный оператор.
Например:
If sqr(x)+sqr(y)>1 then
If x>y then z:=0
Else z:=1;
При такой форме записи со сдвигом вправо для
каждого внутреннего действия, легко понять, к
какому из двух слов IF относится слово ELSE.
Рассмотрим пример программы с использованием
условного оператора. Пусть для двух целых чисел
надо определить, являются они четными или нет.
Для проверки четности используем условие:
остаток от деления на 2 четного числа равен 0.
Program prim_7;
Var a,b:integer;
Begin
Write('введите два целых числа');
Readln(a,b);
If a mod 2 = 0 then Writeln (' а - четное ')
Else Writeln (' a - нечетное ');
If b mod 2 = 0 then Writeln (' b - четное ')
Else Writeln (' b -нечетное ');
Readln
End
Задания для
тренировки.
1. Вычислить значение у при заданном значении
х:
2. Ввести два числа. Напечатать сначала
меньшее, затем большее из них.
3. Даны числа x и y. Вычислите число z, равное x+y, если
x<=y, и 1 - х + y в противном случае
4. Даны два числа. Выведите первое из них, если оно
больше второго, и оба числа, если это не так.
5. Если данное число х меньше нуля, то z присвойте
значение большего из двух чисел х и у, иначе z
присвойте значение полусуммы этих чисел.
6. *Даны два числа. Меньшее из них замените
полусуммой этих чисел, а большее - их
произведением.
7. Даны радиус круга и сторона квадрата. У какой
фигуры площадь больше?
8. Дано целое число. Определить:
a. Является ли оно четным;
b. Оканчивается ли оно цифрой 7;
c. Делится ли оно на 13.
Разбор
тренировочного задания урока 6.
8. *Дано вещественное число А, содержащее два
знака до запятой и два после. Получить новое
число, поменяв в числе А целую и дробную части.
Данная задача не относится к целочисленной
арифметике, ведь дано вещественное а не целое
число. Попробуем найти целую и дробную части. А
потом просто соберем новое число увеличив
дробную часть в 100 раз и уменьшив целую часть тоже
в 100 раз.
Program prim_8;
Var a,b,x1,x2:real;
Begin
Write('введите число');
Readln(a);
X1:=int(a) ; {целая часть}
X2:=frac(a); {дробная часть}
b:=x1/100+x2*100; {новое число}
Writeln(b);
Readln
End.
9. *В кассе имеются купюры достоинством в К
рублей и в 1 рубль. Выдать N рублей минимальным
набором купюр заданного достоинства.
Определим сколько купюр достоинством K
необходимо для выдачи суммы наиболее близкой к
данной, но меньше ее. А затем какую сумму осталось
выдать.
Program prim_6;
Var k,n,m,p:integer;
Begin
Write('введите число рублей');
Readln(n);
Write('введите достоинство купюры');
Readln(k);
m:=n div k;
p:=n mod k;
Writeln(p,' купюр по 1 рублю, ', m,' купюр по ',k,'руб.
Итого=',p+m);
Readln
End.
Желаю успехов!
Ганилова Татьяна Евгеньевна school6@rikt.ru