ОПЕРАТОРЫ ВЕТВЛЕНИЯ
Краткие теоретические сведения
Операторы ветвления предназначены для выбора к исполнению одного из воз- можных действий (операторов) в зависимости от некоторого условия (при этом одно из действий может быть пустым, т. е. отсутствовать). В качестве условий выбора ис- пользуется значение логического выражения.
В Паскале имеются два оператора ветвления: условный оператор if и оператор множественного выбора case.
Условный оператор if
Формат оператора :
if <условие> then <оператор1> else <оператор2>;
В переводе с английского языка данные форматы можно определить как: ЕСЛИ<условие>ТО<оператор1>ИНАЧЕ<оператор2>
Выполнение условного оператора начинается с вычисления значения логическо- го выражения, записанного в условии. Значением логического выражения является ис- тина (True) или ложь (False). Если условие истинно, то выполняется <оператор1>, в противном случае - <оператор2>. После служебных слов Then и Else могут выпол-
няться несколько операторов. Как объяснить, какие операторы должны быть выполне- ны? В этом случае на помощь приходят операторные скобки Begin и End, которые от- мечают соответственно начало и конец требуемой группы операторов.
Примечание. После <оператора1>, то есть перед служебным словом Else, символ ";" (точка с запятой) не ставится!!!
Условные
конструкции могут содержать не одно, а несколько условий. Для объ- единения этих условий в одном условном
операторе применяются следующие логиче- ские
операции: NOT (отрицание), AND ("и"), OR ("или"), XOR
(исключающее "или"). Обозначения
и результаты этих операций рассмотрены на 14 шаге. Приведем пример: запишем
на языке Pascal формулу:
Соответствующий ей условный оператор будет выглядеть следующим образом: If (x>=0) and (x<=14) Then y:=x-12 Else y:=x*x;
Примечания.
1. Отношения, стоящие слева и справа от знака логической операции, должны быть заключены в скобки, поскольку логические операции имеют более высокий приори- тет.
2. Принят следующий приоритет операций: NOT;
AND, *, DIV, MOD; OR, XOR, +, -;
операции отношения.
В некоторых случаях оператор после служебного слова Else может отсутство- вать. Тогда условный оператор будет выглядеть так:
If <условие> Then <оператор>;
В качестве операторов, располагающихся после служебных слов Then и Else, могут выступать другие условные операторы.
Пример 1.
Вычислить частное двух целых чисел. В связи с тем, что делить на нуль нельзя, организовать контроль ввода данных.
Для контроля вводимых значений делителя используем оператор условного пере- хода if ... then ... else.
program Pr1; var
А, В : integer;
Rezult: real;
Begin
Write('Введите значение делимого А: '); Read(A) ; Write('Введите значение делителя В: '); Read(В) ; if B=0 {Контроль ввода числа B}
then Writeln('Ha нуль делить нельзя') {Условие выполнено}
else {Условие не выполнено}
begin
Rezult := А / В;
Writeln('Частное чисел ',А,' и ' ,В, ' = ', Rezult);
end;
End.
Пример 2.
Выбор минимального из трех введенных целых чисел.
Для того, чтобы выбрать минимальное из трех введенных чисел, нужно выбрать наименьшее сначала из двух и запомнить в переменную m, а затем значение m срав- нить с третьим числом.
Используемые переменные: a, b, c – вводимые числа, m – минимальное из них Program pr2;
Var a, b, c, m: integer; BEGIN
Write('a, b, c='); readln(a, b, c); {ввод исходных чисел}
if a<b then m:=a else m:=b; {выбор минимального из a и b}
if c<m then m:=c; {сравнение с третьим числом}
writeln('Мin=', m); {вывод результата}
END.
Результат:
1 случай:
a, b, c= 15 6 9 Мin=6
2 случай:
a, b, c= 1 45 4 Мin=1
3 случай:
a, b, c= 25 16 9
Мin=9
Пример 3.
Решение квадратного уравнения вида ax2 + bx + c = 0.
Используемые переменные: a, b, c – коэффициенты квадратного уравнения, d - дискриминант, x1, x2 – корни уравнения
Program pr3;
Var a, b, c, d, x1, x2: real; Begin
Write('a, b, c='); readln(a, b, c); {вводим коэффициенты квадратного
уравнения}
d:=sqr(b)-4*a*c; {вычисляем дискриминант}
if d>0 then begin {если дискриминант положительный, то
вычисляем два корня}
x1:=(-b+sqrt(d))/(2*a); writeln('x1=', x1:6:2);
x2:=(-b-sqrt(d))/(2*a); writeln('x2=', x2:6:2) end
else if d=0 then begin { иначе, если дискриминант равен 0, то
вычисляем один корень} x1:=-b/(2*a); writeln('x=', x1:6:2) end
else writeln('Корней нет'); {иначе выводим сообщение
‘Корней нет’}
End.
Результат:
1 случай:
a, b, c= 1 -2 1
x= 1.00
2 случай:
a, b, c= 1 -6 8
x1= 4.00
x2= 2.00
3 случай:
a, b, c= 5 1 2 Корней нет
Пример 4.
Определить, есть ли в записи трехзначного числа хотя бы одна нечетная цифра.
Используемые переменные: a- вводимое трехзначное число,
a1, a2, a3 – его цифры
Program pr4;
Var a, a1, a2, a3: integer; Begin
Write('a='); readln(a); {ввод исходного числа}
a1:= a div 100; {1-я цифра} a2:= (a div 10) mod 10; {2-я цифра} a3:= a mod 10; {3-я цифра}
if (a1 mod 2=1) or (a2 mod 2=1) or (a3 mod 2=1) {Если 1-я цифра нечетная,
then writeln('Yes') else writeln('No'); или 2-я нечетная, или
3-я нечетная, то выводим ‘Yes’, иначе выводим ‘No’}
End.
Результат:
1 случай:
a=418
Yes
2 случай:
a=246
No
Пример 5.
![]() |
Решение
Точка будет принадлежать заштрихованной области, если она лежит внутри
большого круга (x2+y2 <25) И, одновременно, за пределами малого круга (x2+y2>4).
Program pr5; Var x,y: real; Begin
Write('введите x y ');
readln (x,y); {ввод координат точки}
if (sqr(x)+sqr(y)<25) and (sqr(x)+sqr(y)>4) {проверка условия принадлежности}
then writeln('точка попадает в заштрихованную область') else writeln('точка не попадает в заштрихованную область');
end.
Результат:
1 случай:
введите x y 2 2
точка попадает в заштрихованную область
2 случай:
введите x y 2 5
точка не попадает в заштрихованную область
Пример 6.
Введено трехзначное число. Изменить число, увеличив все четные цифры на 2, а цифру 8 заменить на 0.
Решение
Для решения задачи необходимо разбить его на цифры. Каждую цифру следует изменить следующим образом: если цифра четная и меньше 8, то увеличить ее на 2, иначе, если цифра 8, то заменить ее на 0.
Используемые переменные: n – вводимое число, a,b,c – его цифры
Program pr6;
Var n,a,b,c:Integer; begin
write('введите n'); readln (n); {ввод числа}
a:=n div 100; {1-я цифра}
b:=n div 10 mod 10; {2-я цифра}
c:=n mod 10; {3-я цифра}
{проверяем каждую цифру и изменяем ее}
if (a mod 2=0) and (a<8) then a:=a+2 else if a=8 then a:=0; if (b mod 2=0) and (b<8) then b:=b+2 else if b=8 then b:=0; if (c mod 2=0) and (c<8) then c:=c+2 else if c=8 then c:=0;
n:=a*1000+b*100+c*10+d; {формируем число из измененных цифр}
writeln('n= ',n); {вывод результата}
end.
Результат:
введите n 1824
результат 1046
Оператор множественного выбора case
Если один оператор if может обеспечить выбор из двух альтернатив, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов. Он состоит из выражения, называемого селектором (selection — выбор альтернати- вы), и списка параметров, каждому из которых предшествует список констант выбо- ра (список может состоять и из одной константы).
Формат записи оператора case:
case <выражение-селектор> of
<список1>: <оператор1; >
<список2>: <оператор2; >
…
<списокN>: <onepaторN> else <оператор>
end;
Оператор case работает следующим образом. Сначала вычисляется значение вы- ражения-селектора, затем обеспечивается реализация того оператора, константа выбо- ра которого равна текущему значению селектора. Если ни одна из констант не равна текущему значению селектора, выполняется оператор, стоящий за словом else. Если слово else отсутствует, активизируется оператор, находящийся за словом end, т. е. пер- вый оператор за границей case.
Пример 7.
Составить программу, которая выводит меню и выполняет указанные действия с заданными целыми числами:
1 - произведение двух чисел 2 - частное двух чисел
3 - сумма двух чисел
Используемые переменные: а,b – вводимые числа, n – номер операции
program pr7;
var a,b,n: integer; begin
writeln('1 – произведение двух чисел'); writeln('2 – частное двух чисел'); writeln('3 – сумма двух чисел'); write('введите номер операции '); readln(n);
write('введите два числа'); readln(a,b); case n of
1: writeln('произведение=',a*b);
2: writeln('частное=',a/b:4:2);
3: writeln('сумма=',a+b);
else writeln('неправильный номер операции'); end;
end.
Результат:
1 – произведение двух чисел 2 – частное двух чисел
3 – сумма двух чисел введите номер операции 2 введите два числа 3 5 частное=0.60
Пример 7.
Ввести первую букву времени года и вывести соответствующее название време- ни года на русском языке.
Program pr7; Var N: char; Begin
writeln ('введи первую букву времени года '); readln (N); case N of
'з' , 'З' : writeln ('зима');
'в', 'В' : writeln ('весна');
'л', 'Л' : writeln('лето');
'о', 'О' : writeln('осень')
else writeln('Нет такого времени года');
end;
End.
Результат:
введи первую букву времени года о осень
Контрольные вопросы
1. Условные операторы. Оператор if. Формат, описание. Основные правила ис- пользования. Особенности использования вложенного оператора if.
2. Примеры использования оператора if.
3. Оператор выбора case. Формат, описание.
4. Правила использования оператора сase. Примеры использования.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.