Условный оператор
Условный оператор позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Условный оператор является средством ветвления программы.
Структура условного оператора имеет следующий вид:
If <условие> then <оператор1> else <оператор2>;
где if, then, else – зарезервированные слова (если, то, иначе);
<условие> - произвольное выражение логического типа;
<оператор1>, <оператор2> - любые операторы языка Турбо Паскаль.
Блок-схема условного оператора имеет вид рис.3.
Рис. 3. Блок-схема условного оператора if – then – else.
Условный оператор работает следующим образом. Сначала проверяется условное выражение <условие>. Если условие выполняется, то выполняется <Оператор1>, а <Оператор2> пропускается, если условие не выполняется, то <оператор 1> пропускается, а выполняется <оператор 2>.
Пример:
Ввести через пробел два числа. Определить минимальное и максимальное число.
Program Maksimum;
Var
x,y: real;
Begin
Writeln('Введите два числа');
Readln(x, y);
If x>y then writeln('Первое число больше второго')
else writeln('Второе число больше первого');
End.
На практике часто используют укороченную схему условного оператора :
If <условие> then <оператор1>;
Рис. 4. Блок-схема условного оператора if-then
Например:
Begin
…
If x>y then writeln('Первое число больше второго');
If y>x then writeln('Второе число больше первого');
If y=x then writeln('Числа равны');
…
End.
Если в зависимости от выполнения или не выполнения условия необходимо выполнить последовательность операторов, то они заключаются в операторные скобки:
If <условие> then
begin
<оператор 1>
<оператор 2>
…
<оператор n>
end;
«Оператор» в условном операторе может быть любым, в том числе и условным оператором. В таких случаях возникают конструкции со вложенными условиями типа:
If <условие1> then
If <условие2> then
if <условие3> then <оператор>;
В таких случаях удобно использовать составные условия.
Пример:
Ввести через пробел три числа. Определить максимальное число.
Program Vozrastanie;
Var
x,y,z: integer;
Begin
Writeln('Ввести через пробел три числа');
Readln(x,y,z);
If (x>y) and (x>z) then writeln('Максимальное число ', x);
If (y>x) and (y>z) then writeln('Максимальное число ', y);
If (z>x) and (z>y) then writeln('Максимальное число ', z);
End.
Пример:
В каждый подарочный набор входят 1 ручка, 2 линейки и 4 тетради. Ввести через пробел a линеек, b тетрадей, c ручек. Сколько всего получится подарочных наборов?
Program Nabor;
Var
a, b, c: integer;
Begin
Writeln('Введите через пробел количество линеек, терадей и ручек');
Readln(a, b, c);
a:= a div 2;
b:= b div 4;
If a>b then a:=b;
If a>c then a:=c;
Write('Всего наборов', a);
End.
Задачи
1. Ввести три вещественных числа. Вывести их на экран в порядке возрастания.
2. Ввести три вещественных числа. Вывести их на экран в порядке убывания.
3. Ввести три вещественных числа. Удвоить эти числа, если a > b > c и заменить их абсолютными значениями, если это не так.
4. Ввести два целых числа. Заменить первое число нулем, если оно меньше или равно второму и оставить числа без изменения, если это не так.
5. Ввести два вещественных числа. Меньшее из этих двух чисел заменить их полусуммой, а большее – их удвоенным произведением.
6. Ввести целые числа a, b, c, d. Если a – наименьшее из них, то каждое число заменить на наибольшее; если a>b>c>d, то все числа заменить их квадратами; иначе числа оставить без изменения. Вывести полученные числа на экран.
7. Ввести вещественные числа x и y. Если оба числа отрицательны, то каждое заменить его модулем; если отрицательно только одно из них, то оба значения увеличить на 0,5; если оба значения неотрицательны и ни одно из них не принадлежит отрезку [0,5; 2,0], то оба значения уменьшить в 10 раз; в остальных случаях оставить числа без изменения. Вывести числа на экран.
8. Ввести целые числа a, b, c. Выяснить, имеет ли уравнение ax2+bx+c=0 действительные корни. Если имеет, то найти их и вывести на экран. В противном случае должно быть выведено сообщение, что корней нет.
9. Ввести вещественные положительные числа a, b, c, x, y. Выяснить, пройдет ли кирпич с ребрами a, b, c в отверстие со сторонами x и y. Просовывать кирпич разрешается только так, чтобы каждое из ребер было параллельно или перпендикулярно каждой из сторон отверстия.
10. Ввести три вещественных числа x, y, z. Вывести на экран те из них, которые принадлежат интервалу [0..10].
11. Ввести три целых числа x, y, z. Если их сумма меньше 10, то наименьшее из этих чисел заменить полусуммой двух других, в противном случае наибольшее из этих чисел заменить модулем полуразности двух других.
12. Ввести вещественные положительные числа x, y, z.
а) Выяснить, существует ли треугольник с длинами сторон x,y,z.
б) Если треугольник существует, то ответить – является ли он остроугольным, тупоугольным или прямоугольным.
13. Ввести числа x1, x2, x3, y1, y2, y3. Определить, принадлежит ли начало координат треугольнику (x1, y1), (x2,y2), (x3, y3).
14. Составить программу определения большей площади из двух фигур круга или квадрата. Сторона квадрата равна a, а радиус круга равен r . Значения a и r вводятся с клавиатуры. Вывести на экран значение большей фигуры.
15. Ввести вещественные числа x и y. Определить, принадлежит ли точка с координатами x и y области, изображенной на рисунке:
|
|
|
|
|
|
| | |
| |||||||||
| |||||||||
| |||||||||
|
|
|
|
|
| ||||||
ж)
12
6
4
0 4 6 10 12 х
16. Ввести четыре вещественных положительных числа a, b, c и d. Определить, можно ли построить четырехугольник с такими длинами сторон.