Вложенные операторы условия (If then else If then else)
Если <оператор1> или <оператор2> является условным оператором, то такая конструкция называется вложенным условным оператором.
Пример №1: Расчет функции
Program yslovie;
Var x,y: real;
Begin
Write (‘x=’);
Readln (x);
If x<0 then y:=x+3
else
If x>4 then y:=exp(x-6)
else y:=sqr(x);
Writeln (‘y‘,x:8:2);
Readln ;
End.
Пример №2: Расчет функции
Programyslovie;
Var x,y: real;
Begin
Write (‘x=’);
Readln (x);
If x<-1 then y:=1/x^2
Else
If x<=2 then y:=x^2
else y:=4;
Writeln (‘y‘,x:8:2);
Readln ;
End.
Практикум. Вычисление корней квадратного уравнения.
Составим программу для нахождения корней квадратного уравнения AX2 + ВХ + С= 0.
1.Уравнение является квадратнымтолько при А ¹ 0.
Тогда оно имеет 2 корня, которые в некоторых случаях могут быть равными.
2. При А=0 уравнение переходит в линейное.
3. При А=В=0 уравнение вырождается, то есть вообще не содержит неизвестного. (отсутствует член с X).
Для нахождения корней квадратного уравнения необходимо исследовать знак дискриминанта уравнения D.
1. Если D>0, то имеются два корня,
2. Если же D<0, то действительных корней нет.
3. Учитывая сказанное, построим алгоритм решения в виде блок-схемы с ветвлениями (рис. 65.1).
Программа может иметь следующий вид:
Наберите программу и проверьте ее работу при различных наборах коэффициентов (а, b, с), например, (0, 1, 2); (0, 0, 5); (1, 1, -6) и т.д.
Задачи и упражнения
Составить программу нахождения действительных корней квадратного уравнения
Ax2 +Bx2 - c
Корни квадратного уравнения находятся по формуле
при этом могут возникнуть три случая:
1. D=b2-4ac>0, тогда оба корня уравнения действительны и различны, т.е.,
2. D=b2-4ac=0, тогда оба корня уравнения действительны и равны между собой, т.е.,
3. D=b2-4ac<0, тогда уравнение не имеет действительных корней
Program discriminant;
Uses CRT;
Var a,b, c, x1, x2, D,: real;
Begin
CLRSCR;
Write (‘введите коэффициент при старшей степени’);
Readln (a);
Write (‘введите коэффициент при младшей степени степени’);
Readln (b);
Write (‘введите свободный член’);
Readln (с);
If a<>0 then
Begin
D:=sqr(b)-4*a*c;
If D<0 then
writeln (‘нет действительных корней, D<0’);
else
Begin
x1:=sqr((-b)+scrt(D))/(2*a);
x2:=sqr((-b)-scrt(D))/(2*a);
writeln (‘x1=’,x1:6:2, x2=’,x2:6:2);
end;
end;
If b<>0 then
writeln (‘x=’, -c/b:6:2);
else
If c<>0 then
writeln (‘нет решения’);
else
writeln (‘бесконеч. множ. решений’);
End.
Операторы выбора case
Условный оператор if ...then обеспечивает ветвление только с двумя вариантами выбора.
Если нужно описать действия, которые связаны с множественными ветвлениями, то необходимо использовать более мощный оператор - оператор выбора.
Оператор состоит:
1. из выражения (селектора)
2. и списка вариантов.
Формат записи оператора выбора:
Оператор служит для выбора одного из помеченных вариантов действия (операторов), в зависимости от значения "параметра". Оператор имеет вид:
Из "списка помеченных операторов" выполняется оператор с меткой, включающей значение "параметра", иначе оператор после слова Else. Конструкция Else "оператор" может отсутствовать.
Схема работы оператора case такова:
1. Сначала вычисляется значение селектора, следующего за словом case.
2. Затем выполняется оператор с константой выбора равной значению селектора.
3. Если ни одна из констант не равна текущему значению селектора, то исполняется оператор, стоящий после слова else.
Часть else <оператор> в тексте программы можно опустить. Тогда, если среди констант селектора отсутствует нужное значение, выполнение оператора case ни к чему не приведет.
Используем оператор case для вычисления функции
Y = (1 + Х + Х2) , в которой N принимает целые значения (1, 2, 3).
В этом примере на экран выводится запрос на ввод значения аргумента Х и показателя степени N.
Введенный показатель используется затем как значение селектора.
В зависимости от значения селектора реализуется тот или иной вариант расчета функции Х1:
- если N=1 - то вариант, помеченный как 1,
- если N=2 - то вариант с меткой 2 и т.д.
- Если в качестве N в начале работы программы будет введено число, не значащееся среди констант выбора (например, 9), то на экран будет выведено сообщение «Нет данных».
Мы рассмотрели пример, когда каждому оператору в списке case предшествует только одна константа выбора (1, 2 или 3).
Однако в общем случае перед каждым оператором может быть список констант (<список 1>, <список 2> в записи формата оператора case).
Кроме того, может быть указан интервал изменения констант. Такой интервал обозначается двумя точками «..».
Приведем простой пример селектора, содержащего списки констант выбора.
Составим программу, с помощью которой можно было бы ввести номер месяца, а программа ответила бы, какому времени года соответствует этот месяц.
В качестве констант выбора могут использоваться:
1. целые числа (integer),
2. символы (char),
3. логические значения (boolean),
4. а также пользовательский тип.
Пример операторов для определения порядка целого числа N от 0 до 999:
Case N of
0..9: writeln('однозначное');
10..99: writeln('двузначное');
Writeln('трехзначное')
else writeln('Число "N" не входит в указанный диапазон') end;
Приведем пример программы случайного предсказания одного из десяти вариантов ближайшего будущего с вероятностью 1/20, в остальных случаях - вы "неудачник".
PROGRAM FUTURE;
var N: word;
Begin
writeln('ПРЕДСКАЗАНИЕ БУДУЩЕГО');
Randomize; N:=Random(20)+1;{ N - случайное число от 1 до 20 }
writeln; write('Вас ожидает _');
Case N of
1: writeln('счастье'); 6: writeln('здоровье');
2: writeln('пятерка'); 7: writeln('деньги');
3: writeln('дорога'); 8: writeln('любовь');
4: writeln('двойка'); 9: writeln('встреча');