Операторы ветвления и выбора
Условный оператор: пример вычисления значения функции
Вычислить значение функции
при значениях:
В приведенном ниже примере использовано вложение одного условного оператора в другой. Обратите внимание: во вложенном условном операторе if каждое простое условие взято в скобки. Это делается потому, что приоритет операций сравнения ниже приоритета логических операций, и в отсутствие скобок компилятор строил бы конструкцию вида ln(a) and x, что привело бы к ошибке.
program ex02_02;
const a=0.2; b=5; z=1;
var x,y: real;
begin
write('введите x:'); readln(x);
IF (x<ln(a)) THEN y:=a*sqr(sin(x))+b*x
ELSE
IF (x>ln(a)) and (x<=b) THEN y:=a*x
ELSE y:=sqrt(2.5*a*a*a+sqr(b-z*x));
end.
Результат работы программы:
введите x:2
y = 0.4000
Оператор выбора: пример определения числа дней в месяце
Вывести на экран число дней в месяце.
Для наглядности принято, что год не високосный. Для случая, когда введен неверный номер месяца, использован вариант по умолчанию:
program ex02_03;
var M, D: integer;
begin
writeln('Введите номер месяца:');
read ( M );
case M of
2: begin D := 28; end;
4,6,9,11: begin D := 30; end;
1,3,5,7,8,10,12: D := 31;
else D := -1;
end;
if D > 0 then
writeln('В этом месяце ', D, ' дней.')
else
writeln('Неверный номер месяца');
end.
Результат работы программы:
Введите номер месяца:14
Неверный номер месяца
Введите номер месяца:2
В этом месяце 28 дней.
Вычисление дня недели по дате
Вычислить номер дня недели по введенной дате. Входные данные: day – число месяца, month и year – месяц и год. Вычисление производится по формуле:
где:m и y – месяц и год по древнеримскому календарю (год в Древнем Риме начинался с марта),с – номер столетия, переменная Y – номер года в столетии. Квадратные скобки означают, что надо взять целую часть выражения.
Чтобы вычислить год и месяц по древнеримскому календарю, необходимо выполнить действия:
1) если месяц month равен 1 или 2, то год year уменьшить на единицу;
2) иначе выполнить: m = month - 2; если m меньше нуля, то прибавить 12.
Результат – номер дня недели (0 – воскресенье).
В программе используются условный оператор и оператор выбора, а также операции целочисленного деления div и получения остатка от целочисленного деления mod.
program DayOfWeek;
{вычисляет день недели по введенной дате}
var
{ вводимые данные }
day, month, year: integer;
dow: integer; {результат: номер дня недели}
d,m,c,y:integer;
begin
write('введите через пробел день, месяц и год: ');
readln(day, month, year);
if (month=1) or (month=2) then year:=year-1;
m:=month-2;
if m<=0 then m:=m+12;
c:=year div 100;
y:=year mod 100;
d:=(day + (13*m-1) div 5 +y+ (y div 4) +
(c div 4) - 2*c + 777) mod 7;
case d of
0: writeln('воскресенье');
1: writeln('понедельник');
2: writeln('вторник');
3: writeln('среда');
4: writeln('четверг');
5: writeln('пятница');
6: writeln('суббота');
end;
readln;
end.
Пример работы программы:
введите через пробел день, месяц и год: 10 12 2016
суббота
Операторы цикла