КрНУ

Інформаційний портал – Коледжу Кременчуцького національного університету імені Михайла Остроградського!

Ветвление: составленная команда, логическое выражение, команда ветвление IF. Команда CASE.

Основные разделы темы.
1. Составной оператор.
2. Пустой оператор.
3. Логическое выражение.
4. Определения логических операций.
5. Условный оператор IF.
6. Две формы оператора IF.
7. Полная форма оператора IF.
8. Краткая форма оператора IF.
9. Оператор GOTO.
10. метка.
11.Вложенный IF.
12. Оператор выбора CASE.
Разветвление
Ветвление – это такая алгоритмическая конструкция, когда операторы прерывают линейную последовательность операций и алгоритм может пойти по одной из двух или нескольких ветвей в соответствии с заданным условием.
Составной оператор.
Составной оператор – это группа операторов, ограниченная операторными скобками begin и end. Составленный оператор компилятор рассматривает как один оператор.
begin
< оператор 1>;
. . .
< оператор n>;
end;
Замечание. Запись begin end; или ;; называется пустой командой.
В дальнейшем под командой или оператором будем понимать пустую, простую или
составленную команду.
Логическое выражение
Условные операторы и операторы выбора обеспечивают выполнение или невыполнение некоторого оператора в зависимости от справедливости условия, что проверяется.
Логическое выражение-это способ записи на языке программирования условий для поиска необходимых данных. Логическое выражение может принимать значение true (истина) или false (ложное значение).
Логические выражения просты и составлены. Простые-это два арифметических выражения,
Соединенные символом отношения, а составные-это простые логические выражения,
соединены логическими операциями not, and или or. Приоритет выполнения логических операций такой: 1) not 2) and 3) or.

Пример2. Двойное неравенство 1 < x < 5 как сложное логическое выражение записывают так: (1 < х) and (x < 5). Совокупность неровностей вида х< 1; х >5 так: (х < 1) ог (х > 5). Простые логические выражения, из которых состоят сложные, всегда берут в круглые скобки.
Условный оператор IF.
Оператор разветвления if имеет две формы: полную и короткую.
1. Полная форма оператора ветвления выглядит так:
if < логическое выражение > then < оператор 1 >
else < оператор 2>;
Действие оператора. Если логическое выражение истинно, то выполняется оператор 1,
в противном случае – оператор 2.
Пример. Пусть а = 5. Тогда в результате выполнения команд
if а < 7 then
begin
b: = а-2; с: = 1 + 2 * а
end
else
begin
b := 2 + 5* а; с := 12 – 4 * (а – 3)
end;
получим b = 3, с = 11.
Задача. Вычислите значение b и с, Если а = 8.
2. Краткая форма команды ветвления if выглядит так:
if < логическое выражение > then < оператор>;
Действие оператора. Если логическое выражение истинно, то выполняется оператор,
иначе выполняется оператор, который находится после данной конструкции.
Пример. Пусть х = 25. Тогда в результате выполнения команд
if х > 12 then у := 2 * х; z := 10;
if x < 5 then z := 10 + х / 2;
получим у = 50, z = 10.
Задача2:
Составить программу вывода на экран самого большого из двух чисел.
PROGRAM prim1;
USES Crt;
var
x,y : real;
begin
ClrScr; (* очистка экрана *)
Writeln (‘введите два числа’);
Readln(x,y);
IF x>y THEN Writeln(x)
ELSE Writeln(y);
end.
Задача 3.
Решить квадратное уравнение вида ax2
+ bx +c = 0
План решения задачи :
1. задать коэффициенты a, b, c.
2. вычислить значение дискриминанта.
3. проверить значение дискриминанта, в зависимости от полученного
результата, выполнить то или иное действие.
program kvyr;
var
a,b,c : integer;
x1,x2,d : real
begin
writeln(‘введите коэффициенты квадратного уравнения’);
read(a,b,c);
d:=b*b-4*a*c;
if d>=0 then begin
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln(‘корни x1=,x1,’ x2’,x2)
end
else if d=0 then writeln(‘x1=x2=’,-b/(2*a))
else writeln(‘нет решения’);
end.
Оператор GOTO.
Оператор goto-это оператор безусловного перехода. Он предназначен для изменения последовательности выполнения операторов в программе путем передачи управления
некоторому оператору с меткой.
goto <метка>;
Метка может стоять перед любым оператором в программе. Она отделяется от оператора двоеточием (:)
<метка> : < оператор >;
Метка может быть идентификатором или числом от 0 до 9999. Метки нужно заранее объявить в разделе label:
label <список меток>;
Замечание. Нельзя передавать управление команде, которая находится в внутри подпрограммы или в середине составляющей команды.
Вложенный IF
Один оператор if может входить в состав другого оператора if. В этом случае говорят о вложенности операторов.
 Вариант 1.
if <Умова1> then
if < Условие 2> then < Оператор 2.1>
else <Оператор 2.2>
else <Оператор1>;
 Вариант 2.
if < Условие 1> then < Оператор 1 >
else if < Условие 2 > then < Оператор2>
else <Оператор3>;
 Вариант 3.
if < Условие 1 > then
if < Условие 2> then <Оператор1>
else <Оператор2>;
Если Условие 1, Условие 2… проверяемые не влияют друг на друга, то есть последовательность их вычисления не принимается во внимание, в тексте программы их
рекомендуется располагать в определенном порядке. Условие, с наибольшей
вероятностью которая принимает значение true, должна стоять на первом месте, с
меньшей вероятностью — на втором и т.д. Это ускорит выполнение программы.
Следует знать:
 при вложенности операторов каждое else соответствует тому then, которое непосредственно ему предшествует (вариант 3);
 конструкций со степенью вложенности более 2-3 необходимо избегать через
сложность их анализа при отладке программы;
 – в условных операторах часто используют Составной оператор begin.. .end;
 в условных операторах точка с запятой не ставится после then и перед else;
Задача 4.
Сравнение возраста
var agel,age2: integer;
begin
write (‘введите возраст брата:’); readln (agel);
38
write(‘Введите возраст сестры: ‘); readln(age2);
if agel>age2 then writeln(‘Брат старше.’)
else if agel<age2 then writeln(‘Сестра старше.’)
else writeln (‘они близнецы.’);
end.
Задача 5.
.Проверка числа на четность
var n: integer;
begin
write (‘введите целое число:’); readln (n);
write(‘Число ‘,n, ‘ — ‘);
if n mod 2=0 then writeln(‘четное’)
else writeln(‘нечетное’);
end.
Оператор выбора CASE.
Оператор выбора case является обобщением оператора if и используется для выбора одного из нескольких направлений дальнейшего хода программы.
case <выражение>
<список значений 1> : < оператор 1>;
. . .
< список значений n> : < оператор n>
else < оператор n + 1>
end;
где-либо
 выражение — это простая переменная целого, символьного, перечисленного или логического типа;
 списки значений-константы или диапазоны, тип которых должен совпадать с
типом выражения. Если список значений состоит из нескольких элементов, то они перечисляются через запятую, диапазоны записываются через «..».
 else < оператор n+1> можно не писать, тогда получаем короткую форму команды case.
 точка с запятой не ставится после последнего элемента списка выбора.
Действие оператора. Если значение выражения совпадает с некоторым значением из списка, то выполняется оператор соответствующий этому значению, а другие операторы этой конструкции не выполняются. Если значение выражения не совпадает ни с одним
значением из списка значений, то выполняется оператор n+1. В случае короткой формы—следующая команда после команды case.
Задача 6.
Пусть населенные пункты обозначены номерами от 1 до 8. Стоимость одного билета до
пункта N определяется так:
22, N = 1
25, N = 2,3,4
30, N = 5,6
Cena=
39
35, N = 7,8.
Сколько стоит Т билетов до населенного пункта, номер которого пользователь должен ввести с клавиатуры?
program Biletі;
uses Crt;
var N, m, сепа : integer;
begin
clrscr;
writeln (‘введите номер пункта и количество билетов:’); readln (N, m);
case N
1 : сепа:=22;
2..4 : сепа:=25;
5,6 : cena:=30
else сепа:=35
end;
write(m, ‘ билетов до пункта ‘, N, ‘ стоят ‘);
writeln(m * сепа);
end.