| Оператор ветвления на Паскале
В языке Паскаль имеется оператор ветвления. Другое его название - условный оператор. Формат полного оператора ветвления следующий:
if <логическое выражение> then <оператор1> else <оператор2> ;
Здесь if - "если", then - "то", else - "иначе".
Можно также использовать не полную форму ветвления:
if <логическое выражение> then <оператор1>;
! Признаком завершения алгоритма ветвления является "точка с запятой". Перед словами then и else знаки препинания не ставятся.
При составлении условий в ветвящихся алгоритмах используются операции отношений и логические операции.
Примеры реализации программ имеющие ветвления.
Задача 1. Дано число, выяснить дробное оно или целое.
1-й вариант
| 2-й вариант
| var a,x:real; begin writeln('Введите число '); read(a); x:=Round(a); if a=x then write('Число а целое ') else write('Число а дробное '); end. | var a,x:real; begin writeln('Введите число '); read(a); x:=Frac(a); if x<>0 then write('Число а дробное ') else write('Число а целое '); end. |
- Составные(сложные ) условия.
Задача 2. Даны три отрезка, выяснить, могут ли они образовывать треугольник. Решение: var a,b,c:real; begin writeln('Введите размеры отрезков'); read(a,b,c); if (a<b+c) and (b<a+c) and (c<a+b) or ((a<>0) and (b<>0) and (c<>0)) then write('Образуют') else write('Не образуют'); end.
Вложенные операторы if .
! При использовании вложенных операторов if слово else относится к последнему if, у которого нет еще else.
Задача 3. Определить количество корней квадратного уравнения по дискриминанту. Решение: var a,b,c,d:real; begin writeln('Введите коэффициенты a, b и c '); read(a,b,c); d:=sqr(b) - 4*a*c; if d>=0 then if d>0 then write('Два вещественных корня ') else write('Один вещественный корень') else write('Нет вещественных корней'); end.
| Блок-схема алгоритма, определяющая количество корней квадратного уравнения по дискриминанту.
|
Блоки операторов .
Если требуется выполнить последовательность действий(несколько операторов подряд), то ее заключают в блок образуемый операторами begin и end.Пример: if x > 3 then begin s1, s2, s3, s4 end; (здесь s1-s4 символически обозначают операторы). Эта группа (begin s1, s2, s3, s4 end;) называется составным оператор, или операторной скобкой. Она как бы говорит компилятору, что данный блок операторов нужно рассматривать как единое целое.Задача 4. Вычислить корни квадратного уравнения. Решение: var a,b,c,d:real; x1,x2:real; begin writeln('Введите коэффициенты a, b и c '); read(a,b,c); d:=sqr(b) - 4*a*c; if d<0 then write('Уравнение не имеет вещественных корней ') else if d=0 then write('У уравнения один корень', -b/(2*a):6:2 ) else {ниже идет составной оператор} begin x1:=(-b + sqr(d))/2*a;x2:=(-b - sqr(d))/2*a;write(' Первый корень ', x1:6:2,' Второй корень ', x2:6:2); end;end.Ветвления по ряду условий. Оператор Case.Используя несколько операторов if , можно производить ветвления по ряду условий. Так же, для этой цели можно использовать оператор Case. Пример: Задача 4. Преобразование введенного введенного числа из диапазона (0..4) в его словесное представление. Решение:
С оператором if | С оператором Сase | var Num:integer; begin writeln('Введите число: '); read(Num); if Num = 0 then writeln(' Нуль ');
if Num = 1 then writeln(' Один ');
if Num = 2 then writeln(' Два ');
if Num = 3 then writeln(' Три ');
if Num = 4 then writeln(' Четыре ');
else write('Введено другое число')
end.
| var Num:integer; begin writeln('Введите число: '); read(Num); case Num of 0: writeln(' Нуль ');
1: writeln(' Один ');
2: writeln(' Два ');
3: writeln(' Три ');
4: writeln(' Четыре ');
else write('Введено другое число') end;
end. |
<<
| |