Оператор ветвления в Pascal
Если в зависимости от первоначального условия должны выполняться различные выражения, то мы будем использовать условный оператор.
Структура условного оператора:
if then else
if then
if then else – зарезервированные слова (если, то, иначе)
Задача 1. Даны два числа. Ответить чему равно большее из них (найти максимальное).
var max,x,y:real;
Begin
writeln('Введите число x ');
readln(x);
writeln(' Введите число y ');
readln(y);
if xy then max:=x else max:=y;
writeln('большее из двух = ',max);
End.
Задача 2. Даны три числа. Найти максимальное.
var max,x,y,z:real;
Begin
writeln(' Введите три числа ');
readln(x,y,z);
if xy then max:=x else max:=y;
if zmax then max:=z;
writeln('большее из трёх =',max);
End.
Задача 3. Задано число a. Кратно ли оно 3.
var а:longint;
Begin
writeln(' Введите число');
readln(а);
if a mod 3 =0 then writeln(a,' кратно 3’)
else writeln(a,' не кратно 3’);
End.
Задача 2-4. Дано число. Дать характеристику числа:
uses crt;
var
a:real;
k,m,p:string;
Begin
writeln('Введите число');
readln(a);
if a
else k:=' положительное';
if a=int(a) then m:=' целое'
else m:='не целое';
if a/2=int(a/2) then p:=' чётное'
else p:=' нечётное ';
writeln('число ',a,' ; ',k,' ; ',m,' ; ',p);
delay(32000);
End.
Задача 5. Даны два числа а и b . Выдать текстовой ответ какое из чисел большее. Предусмотреть ситуацию когда числа равны.(Задача решена двумя способами.Посмотрите в чём отличие между ними).
var a,b,s:real;
Begin
writeln(' Введите число a ');
readln(a);
writeln(' Введите число b ');
readln(b);
if ab then writeln('число а большее')
else
if a=b then writeln('числа равны')
else writeln('число b большее');
End.
var a,b,s:real;
Begin
writeln(' Введите число a ');
readln(a);
writeln(' Введите число b ');
readln(b);
if ab then writeln('число а большее');
if a=b then writeln('числа равны');
if aчисло b большее');
End.
Задача 6. Даны три числа а,b,c. Выдать текстовой ответ какое из чисел (a,b или c) большее.
var a,b,c,m:real;
Begin
writeln(' Введите числa a,b,c');
readln(a,b,c);
if ab then m:=a else m:=b;
if cm then m:=c;
if m=a then writeln('число а большее');
if m=b then writeln('число b большее');
if m=c then writeln('число с большее');
End.
Задача 7. Составить программу которая по введённому номеру дня недели будет выдавать название дня недели (задача решена двумя способами).
program zadacha2_7a;
var k:integer;
Begin
writeln(' Введите номер дня недели');
readln(k);
if k=1 then writeln('понедельник');
if k=2 then writeln('вторник');
if k=3 then writeln('среда');
if k=4 then writeln('четверг');
if k=5 then writeln('пятница');
if k=6 then writeln('суббота');
if k=7 then writeln('воскресенье');
if (k7) then
writeln('такого дня недели нет');
End.
program zadacha2_7b;
var k:integer;
Begin
writeln('введите номер дня недели');
readln(k);
if k=1 then writeln('понедельник') else
if k=2 then writeln('вторник') else
if k=3 then writeln('среда') else
if k=4 then writeln('четверг') else
if k=5 then writeln('пятница') else
if k=6 then writeln('суббота') else
if k=7 then writeln('воскресенье')
else
writeln('такого дня недели нет');
End.
Простые и составные условия.
Условия, которые мы до сих пор использовали являются простыми.
Если после служебного слова if проверяется только одно условие (а mod 3=0; ab; k=1), то такое условие будем называть простым условием.
Если после служебного слова if возникает необходимость проверить сразу несколько условий, то группу таких условий будем называть составным условием.
Задача 8. Даны два числа а,b. Ответить одинакового ли знака введённые числа.
Например:
a | B | Ответ: |
2 2 -2 -2 | 4 -4 4 -4 | Одинакового разного разного одинакового |
var a,b:real;
Begin
writeln('Введите два числa');
readln(a,b);
if (a0) and (b0) then writeln('числа одного знака');
if (aчисла одного знака');
if (a0) and (bчисла разных знаков');
if (a0) then writeln('числа разных знаков');
End.
В примере можно видеть, что работать будет только одна строка из четырёх. Если первое и второе условия объединить, то программа станет более короткой.
var a,b:real;
Begin
writeln('Введите два числa');
readln(a,b);
if ((a0)and(b0)) or ((a
then writeln('числа одного знака')
else writeln('числа разных знаков');
End.
Данную задача решена проще:
var a,b:real;
Begin
writeln('Введите два числa');
readln(a,b);
if a*b0 then writeln('числа одного знака')
else writeln('числа разных знаков');
End.
Операторные скобки
После служебного слова then, или после служебного else будет выполняться только один оператор. Если необходимо, чтобы выполнялось несколько операторов их нужно взять в операторные скобки
begin
end;
Причем, end желательно записывать под begin
Задача 9.Составить программу решающую квадратное уравнение.
uses crt;
var a,b,c:integer;
x,d,x1,x2:real;
Begin
writeln('введите коэффициенты а,b,c');
readln(a,b,c);
d:=b*b-4*a*c; {вычисление дискриминанта}
if d
writeln('уравнение не имеет корней');
if d=0 then
begin
writeln('уравнение имеет 1 корень');
x:=-b/(2*a);
writeln('x= ',x);
end;
if d0 then
begin
writeln('уравнение имеет 2 корня');
x1:=(-b+sqrt(d))/(2*a);
x2:=(-b-sqrt(d))/(2*a);
writeln('x1= ',x1);
writeln('x2= ',x2);
end;
End.