Программирование разветвляющихся алгоритмов

Для организации разветвления в программе, в Паскале используются следующие операторы:

1. Условный оператор.

2. Оператор варианта.

3. Оператор перехода

Условный оператор

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

If Q Then B1 [Else B2];

Блок-схема:

 
  Программирование разветвляющихся алгоритмов - student2.ru

Программирование разветвляющихся алгоритмов - student2.ru Программирование разветвляющихся алгоритмов - student2.ru (Else) - +(Then)

B2
B1
Программирование разветвляющихся алгоритмов - student2.ru Программирование разветвляющихся алгоритмов - student2.ru

 
  Программирование разветвляющихся алгоритмов - student2.ru

Q - выражение, принимающее логическое значение;

B1, B2 – любые операторы, в единственном числе;

Выполняются:

1. Вычисляется выражение Q, которое имеет логическое значение.

2. Если это значение True, то выполняется оператор B1. Если же Q имеет значение False, то в случае полной формы условного оператора выполняется оператор B1 , а в случае неполной формы управление передается следующему оператору программы.

Так, как операторы B1 и B2 могут быть любыми, а значит и условными, то возникает конструкция двусмысленная:

Программирование разветвляющихся алгоритмов - student2.ru 1

If Q Then If Q1 Then B1 Else B2;

Программирование разветвляющихся алгоритмов - student2.ru 2

Для устранения двусмысленности введено правило, что часть Else относится к ближайшему слева свободному условию. И структура записи следующая:

If Q Then

If Q1 Then

B1

Else

B2;

Если по смыслу задачи необходимо, чтобы оператор понимался в смысле 1 , то его надо поставить в операторные скобки:

If Q Then

Begin

If Q1 Then

B1;

End

Else

B2;

Задача1:

Даны 2 различных числа. Найти максимальное из этих чисел.

Пример:

Исходные данные: A=10, C=15

Результат: Максимальное число =15

Решение:

Program Vet1;

Var A,C,Max:Integer;

Begin

Writeln(’Введите 2 различных числа’);

Readln(A,C);

If A>C Then

Max:=A

Else Max:=C;

Write(’Максимальное число = ’,Max);

End.

Задачи:

1. Даны 2 числа. Вывести первое число, если оно больше второго и оба числа, если это не так.

2. Даны 2 различных числа. Найти C=Max/Min.

3. Составить программу вычисления значения Y по введенному значению X.

Программирование разветвляющихся алгоритмов - student2.ru Y= (X+2)2 , X>=0

X-2 ,X<0

4. Даны числа А, B, Х. Составить программу вычисления значения Y.

Программирование разветвляющихся алгоритмов - student2.ru (X+2)2 , X<A

Y= X-2 ,A<=X<=B

2*X ,X>B

5. Даны 3 различных числа. Найти максимальное из этих чисел.

6. Даны 3 числа. Определить сколько среди них нулей.

7. Даны 3 числа. Определить сколько среди них отрицательных и сколько

положительных чисел.

Использование составного оператора

Если по смыслу задачи, в зависимости от условий, надо выполнять либо одну, либо другую группу операторов, то их надо их надо превратить в один составной оператор (заключить в операторные скобки):

Begin

операторы;

End;

If Q Then

Begin

A1;

A2;

:

An;

End

Else

Begin

B1;

B2;

:

Bn;

End;

Задача 2:

Даны 2 различных числа. Вычислить x=(y+z)2; - где y=max*2; z=max/min;

Решение:

Program Vet2;

Var A,C,Max,Y:Integer;

Z,X:Real;

Begin

Writeln(’Введите 2 различных числа’);

Readln(A,C);

If A>C Then

Begin

Y:=A*2;

Z:=A/C;

End

Else

Begin

Y:=C*2;

Z:=C/A;

End;

X:=SQR(Y+Z);

Write(’X = ’,X);

End.

Задача 3.

Даны числа A, C. Решить линейное уравнение A*X=C с полным анализом.

Решение:

Program Vet3;

Var A,C,X:Real;

Begin

Writeln(’Введите 2 числа’);

Readln(A,C);

If A=0 Then

If B=0 Then

Writeln(’X -любое’)

Else

Writeln(’Решений нет’)

Else

Begin

X:=C/A;

Writeln(’X=’,X);

End;

End.

Задачи:

1. Даны X,Y (Х<>Y). Меньшее из этих двух чисел заменить полусуммой, а большее их удвоенным произведением

2. Даны числа A, B, C. Решить уравнение AX2+BX+C=0 с полным анализом.

3. Даны 3 числа. Найти разность большего и меньшего из этих чисел

4. Если сумма трех различных чисел X,Y,Z меньше единицы, то меньшее из X,Y заменить полусуммой Y и Z, иначе большее из X и Y заменить произведением Х*Y.

Наши рекомендации