Алгоритмы с ветвлением
Алгоритмы с ветвлением
Очень часто в программе мало подсчитать какое-либо значение, необходимо произвести оценку введенных данных или результатов.
Например, компьютер спрашивает Вашу отметку за четверть по математике и в зависимости от введенной отметки выводит: «Молодец», «Нормально» или «Двоечник».
В таких задачах при решении возникает слово «Если». Если отметка больше 8 (9, 10), то выводим «Молодец», если от 6 до 8 – «Нормально», если меньше 6 – «Двоечник».
Оператор для решения задач со словом «Если» — If (if в переводе с английского – если)
Условный оператор if используется для выбора одного из двух направлений хода программы (последовательности команд, которые должны быть выполнены).
1. Оператор ветвления
Общий вид:
{полная форма} if условие Then begin команды1; {если условие верно} end else begin команды2; {если условие ложно} end; |
{краткая форма} if <условие> Then begin команды1; {если условие верно} end; |
(В переводе if – если, then – тогда, else – иначе)
где команды1 — команды, которые выполняются если условие истинно;
команды2 — команды, которые выполняются если условие ложно.
ВНИМАНИЕ! Если в группе <команды1> или в группе <команды2> более одной команды, то данные команды берутся в ‘программные скобки’:
begin
команды;
еnd
2. Условие в операторе If
Условие – выражение логического типа, которое может принимать одно из двух значений: TRUE (истина – условие выполняется) или FALSE (ложь – условие не выполняется).
В простых условиях используется только один из знаков: <, >, <=, >=, =, <>(не равно).
3. Порядок выполнения оператора If
1. Вычисляется значение условия.
2. Если условие истинно, выполняются команды, следующим за словом then.
Если условие ложно, выполняются команды, следующим за словом else.
3. Управление передается командам, следующим за условным оператором.
ВНИМАНИЕ! Перед else точка с запятой не ставится.
ВНИМАНИЕ! Полную форму записи удобно применять в тех случаях, когда значение условия принимает только два значения – Да или Нет, в противном случае лучше использовать несколько кратких форм.
4. Примеры
Пример 1. Компьютер спрашивает Вашу отметку за четверть по математике и в зависимости от введенной отметки выводит: «Молодец!» (от 8 до 10) или «Надо учиться лучше» (от 0 до 7).
program matem;
var x:integer;
begin
write(‘Введите Вашу отметку за четверть по математике:’);
readln(x);
|
if x>=8
then
writeln(‘Молодец!’)
else
writeln(‘ Надо учиться лучше’);
end.
Пример 2. С клавиатуры вводится целое число. Если оно кратно трем, возведите его в квадрат, иначе разделите удвоенное произведение данного числа на три.
program uslovie;
var x:integer;
y:real;
begin
write(‘Введите число Х=’);
readln(x);
if х mod 3=0
then
begin
writeln(‘Число Х кратно трем!’);
y:=sqr(x);
end
else
begin
writeln(‘Число Х не кратно трем!’);
y:=2*x/3;
end;
writeln(‘Результат Y=’,y);
end.
Заметьте, как определяется кратность числа. Если Х кратно 3, то остаток отделения числа Х на три равен 0 (x mod 3=0).
5. Составные условия
Составные условия – это несколько простых условий в скобках, соединенных словами And (и), Or (или).
and — "И" обозначает, что должно выполняться и первое условие и второе;
or — "ИЛИ" обозначает, что достаточно, если выполняется хотя бы одно условие.
Примеры:
(a>b) and (a>c) (x*x+y*y=r*r) or (x=0) (a>b) and (a>c) and (a>d) and (a<n) or (a=m)
ВНИМАНИЕ! Заметьте, что каждое простое условие в составе составного берется в скобки!!!
Простых условий в составе составного может быть сколько угодно!
6. Примеры:
1. Определите максимальное из трех различных целых чисел.
program maximum;
var a, b,c : integer;
begin
write(‘Введите число a=’);
readln(a);
write(‘Введите число b=’);
readln(b);
write(‘Введите число с=’);
readln(c);
if (a>b) and (a>c) then
writeln(‘максимальным будет: ‘,a);
if (b>a) and (b>c) then
writeln(‘максимальным будет: ‘,b);
if (c>b) and (c>a) then
writeln(‘максимальным будет: ‘,c);
end.
2. Рассчитайте значение функции:
3х+7 , х<-3;
Y= 5х, -3<=х<=5;
9 , 5<х<=9;
3x+7 , x>9.
program funk;
var x, y:real;
begin
write(‘Введите число Х=’);
readln(x);
if (x<-3) or (x>9) then
y:=3*x+7;
|
if (x>=-3) and (x<=5) then
y:=5*x;
if (x>5) and (x<=9) then
y:=9;
writeln(‘Результат Y=’,y);
end.
3. С клавиатуры вводятся координаты точки А(х;y). Определите в какой четверти координатной плоскости лежит точка А(х;y).
y
II I
x
III IV
program tochka;
var x, y:real;
begin
write(‘Введите координату Х=’);
readln(x);
write(‘Введите координату Y=’);
readln(y);
if (x>0) and (y>0) then
writeln(‘Точка А лежит в I четверти’);
if (x<0) and (y>0) then
writeln(‘Точка А лежит в II четверти’);
if (x<0) and (y<0) then
writeln(‘Точка А лежит в III четверти’);
if (x>0) and (y<0) then
writeln(‘Точка А лежит в IV четверти’);
if (x=0) or (y=0) then
writeln(‘Точка лежит на оси’);
end.
7. Задачи для самостоятельного решения:
1. Выведите на экран большее из двух любых чисел, вводимых с клавиатуры.
2. Что больше: периметр квадрата со стороной А или длина окружности радиуса R?
(Периметр квадрата = 4*А, длина окружности = 2*3.14*R).
3. В магазине Вам надо заплатить N рублей. Вы подаете продавцу m купюр по k рублей. Определите сколько денег Вам надо добавить или сколько Вам должны дать сдачи.
4. Из пункта А в пункт Б вышел пешеход со скоростью v1 км/ч. Через время t за ним выехал автомобиль со скоростью v2 км/ч. Догонит ли автомобиль пешехода, если расстояние между пунктами А и Б равно S.
5. Рассчитайте значение функции:
5X6 -37 , X<5
Y = 3X+Z, 5<=X<=11
17X+2Z, X>11
6. В соревнованиях по плаванию спортсмены показали следующие различные результаты: Т1, Т2, Т3. Определить номер победившего спортсмена и его результат.
7. Заданы три стороны треугольника. Является ли он равнобедренным? (Треугольник называется равнобедренным, если он содержит хотя бы две равные стороны).
8. Существует ли треугольник с длинами сторон A, B,C? (Треугольник существует, если любая его сторона меньше суммы двух других).
Персональная подборка для шустриков
9. Дан прямоугольник. Определить, принадлежит ли точка А с координатами (X, Y) данному прямоугольнику.
10. Определить номер подъезда и этажа по номеру квартиры девятиэтажного дома, считая, что на каждом этаже ровно 4 квартиры, а нумерация квартир начинается с первого подъезда.
11. Работа светофора для пешеходов запрограммирована следующим образом: в начале каждого часа в течение трех минут горит зеленый сигнал, затем в течение одной минуты — желтый, а затем в течение двух минут горит красный сигнал и снова три минуты – зеленый, одна — желтый и т. д.
Дано время t, означающее время в минутах, прошедшее сначала очередного часа. Определить, сигнал какого цвета горит для пешеходов в этот момент времени.
Тесты
№ |
t |
цвет |
1 |
2 |
зеленый |
2 |
4 |
желтый |
3 |
5 |
красный |
4 |
15 |
зеленый |
5 |
10 |
желтый |
12. Петя, Катя и Сережа делают из бумаги журавликов. Вместе они сделали S журавликов. Сколько журавликов сделал каждый ребенок, если известно, что Петя и Сережа сделали одинаковое количество журавликов, а Катя сделала в два раза больше журавликов, чем Петя и Сережа вместе?
Входные данные
С клавиатуры вводится одно натуральное число S – общее количество сделанных журавликов (S < 106).
Выходные данные
Нужно вывести три числа, разделенных пробелами – количество журавликов, которые сделал каждый ребенок (Петя, Катя и Сережа).
Примеры:
№ |
Вход |
Выход |
1 |
6 |
1 4 1 |
2 |
24 |
4 16 4 |
3 |
60 |
10 40 10 |