Ветвящиеся алгоритмы

 

Для программирования ветвящихся алгоритмов применяются условный оператор и оператор выбора.

Условный оператор имеет следующий формат:

If <логическое выражение> Then <оператор 1>

Else <оператор 2>;

 

Операторы 1 и 2 могут быть простыми или составными. Если логическое выражение, выступающее в качестве условия, ветвления, принимает значения False, то выполняется оператор 2, если True - оператор 1.

Неполная форма условного оператора:

If<логическое выражение> Then <оператор>;

Пример. Из трех данных вещественных чисел X,Y,Z выбрать наибольшее.

Решение. Используем алгоритм с вложенными полными ветвлениями.

Program max 3;

Uses crt;

Var x,y,z, max : real;

Begin

Write('введите x, y, z ');

Readln (x, y ,z);

If x>=y

Then If x>=z Then max:=x Else max:=z

Else If y>=z Then max:=y Else max:=z;

Writeln ('максимальное значение=' , max)

End.

Оператор выбора позволяет программировать ветвления по многим направлениям. Этот оператор организует переход на одну из нескольких ветвей в зависимости от значения заданного выражения(селектора выбора).

Case of

    A1: <оператор 1>;

    A2: <оператор 2>;

     ...

   AN: <оператор N>;

   Else <оператор N+1>

End;

   Здесь K-выражение-селектор, которое может иметь только простой порядковый тип(целый, символьный, логический).

A1,..,AN - константы того же типа, что и селектор, выполняющие роль меток ветвей. Исполнение оператора начинается с вычисления выражения K, полученное значение сравнивается с константами (метками) и выполняется соответствующий оператор. Если ни одна из меток не совпала со значением K, то выполняется оператор после слова else. Метки ветвей также могут быть заданы списком или интервалом.


 

 

 

 

 


     Задача 1.       Дано трехзначное число N.Проверить, будет ли сумма его цифр четным числом.

Решение

program proverka;
uses crt;
var s,a:integer;
begin
write('введите трехзначное число ');
readln(a);
s:=0;
s:=a mod 10;
a:=a div 10;
s:=s+(a mod 10);
a:=a div 10;
s:=s+(a mod 10);
a:=a div 10;
if (s mod 2)=0
then writeln('сумма цифр данного числа является четным числом')
else writeln('сумма цифр данного числа не является четным числом');
end.

Задача 2.       Написать программу, которая по последней цифре числа определяет последнюю цифру его квадрата.

Решение

program kvadrat;
uses crt;
var p:integer;
begin
writeln('введите число');
readln(p);
case p mod 10 of
0:writeln('последняя цифра квадрата данного числа равна 0');
1:writeln('последняя цифра квадрата данного числа равна 1');
2:writeln('последняя цифра квадрата данного числа равна 4');
3:writeln('последняя цифра квадрата данного числа равна 9');
4:writeln('последняя цифра квадрата данного числа равна 6');
5:writeln('последняя цифра квадрата данного числа равна 5');
6:writeln('последняя цифра квадрата данного числа равна 6');
7:writeln('последняя цифра квадрата данного числа равна 9');
8:writeln('последняя цифра квадрата данного числа равна 4');
9:writeln('последняя цифра квадрата данного числа равна 1');
end;
end.

Задача 3.       Написать программу, которая по последней цифре числа определяет последнюю цифру его куба.

Решение

program kvadrat;
uses crt;
var p:integer;
begin
writeln('введите число');
readln(p);
case p mod 10 of
0:writeln('последняя цифра куба данного числа равна 0');
1:writeln('последняя цифра куба данного числа равна 1');
2:writeln('последняя цифра куба данного числа равна 8');
3:writeln('последняя цифра куба данного числа равна 7');
4:writeln('последняя цифра куба данного числа равна 4');
5:writeln('последняя цифра куба данного числа равна 5');
6:writeln('последняя цифра куба данного числа равна 6');
7:writeln('последняя цифра куба данного числа равна 3');
8:writeln('последняя цифра куба данного числа равна 2');
9:writeln('последняя цифра куба данного числа равна 9');
end;
end.

Задача 4.       Даны два действительных числа x и y. Вычислить их сумму, разность, произведение и частное.

Решение

program chisla;
uses crt;
var x,y:real;
begin
writeln('введите два числа');
writeln('число 1:');
readln(x);
writeln('число 2:');
readln(y);
writeln('сумма чисел 1 и 2 равна ',x+y);
writeln('разность чисел 1 и 2 равна ',x-y);
writeln('разность чисел 2 и 1 равна ',y-x);
writeln('произведение данных чисел равно ',x*y);
if y<>0 then
writeln('частное чисел 1 и 2 равно ',x/y)
else writeln ('числа 1 и 2 не имеют частного');
if x<>0 then
writeln('частное чисел 2 и 1 равно ', y/x)
else writeln ('числа 2 и 1 не имеют частного');
end.

 

Сделать бесплатный сайт с uCoz