Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы Алгоритм и Програм.doc
Скачиваний:
7
Добавлен:
14.09.2019
Размер:
407.04 Кб
Скачать

1. Разветвляющиеся вычислительные процессы

Разветвляющиеся вычислительные процессы – это процессы, в которых происходит выбор одного из нескольких возможных направлений вычислительного процесса в зависимости от значений исходных данных или промежуточных результатов вычислений.

В языке Pascal существует ряд средств, с помощью которых можно организовать разветвление в программе [Л1, стр. 51 - 54]. Одним из таких средств является условный оператор if.

Общий вид оператора if:

If логическое_выражение then оператор1 еlse оператор2;

где оператор1, оператор2 – простые или составные операторы.

Составной оператор представляет собой последовательность операторов, заключенных в операторные скобки begin - end.

Выполнение оператора if:

  1. вычисление значения логического выражения;

  2. в случае, если его значение равно true (истина), выполняется оператор1, в противном случае - оператор2;

  3. управление передается оператору, следующему за оператором if.

Допускается форма оператора if без конструкции else:

If логическое_выражение then оператор1;

В этом случае оператор1 выполняется, когда значение логического_выражения равно true (истина), в противном случае управление передается оператору, следующему за оператором if.

Пример 1. Вычислить значение функции y(X)

Программа Схема алгоритма

Program Prim1;

var

a,x,y : real;

begin

writeln('Введите а, x');

readln(a,x);

if x>a then

y:=a*sin(x)

else

y:=1- sqr(x);

writeln('y=', y:7:2);

end.

Исходные данные: Результат:

I вариант a = 2.3; x = 5.5 y = -1.62

II вариант a = 12.1; x = 3.7 y = -12.69

Примечание.

В операторе вывода writeln('y=', y:7:2) указан формат вывода y:7:2 для значения переменной y, где число 7 определяет общий размер поля, отводимого в строке вывода для размещения значения переменной, а число 2 указывает количество разрядов для дробной части этой переменной.

Пример 2. Вычислить значение функции y(x)

Программа Схема алгоритма

P rogram Prim2;

var

a,b,x,y : real;

begin

writeln('Введите a, b, x');

readln(a,b,x);

if x<=1 then y:=abs(a*x+b)

else

if x>=2 then y:=exp(-x)+1

else y:= exp(4.5*ln(x));

writeln('y=', y:5:2);

end.

Примечание.

Для вычисления выражения x4.5 в программе

используется эквивалентное выражение:

x4.5=e4.5*lnx

Исходные данные: Результат:

I вариант a = 1.4; b = 3; x = -5.2 y= 4.28

II вариант a = 2.8; b = -4; x = 1.5 y= 6.20

III вариант a = 2; b = 6; x = 4 y= 1.02

Пример 3. Вычислить значение функции y(x)

Примечание.

В этом примере нужно предусмотреть выдачу на экран сообщения, (например, “Нет решения”) при возникновении так называемой исключительной (аварийной) ситуации [Л1, стр. 17], которая может произойти в случае, если знаменатель дроби 1/(a+x) равен нулю.

Программа Схема алгоритма

Program Prim3;

label 1;

var

a,b,x,y : real;

begin

writeln('Введите a, b, x');

readln(a,b,x);

if x<=b then if (a+x)<>0 then y:=1/(a+x)

else

begin

writeln('Нет решения');

goto 1;

end

else y:=1+b*x;

writeln('y=', y:6:3);

1: end.

Примечания.

1. В операторе if перед словом else после слова end нельзя ставить точку с запятой.

2. В данной программе используется оператор безусловного перехода goto 1; где 1метка, которая указывает, к какому оператору нужно перейти (Л1, стр. 47).

Метка выбирается пользователем и должна быть описана в разделе описаний программы, например так: label 1;

Исходные данные: Результат:

I вариант a = 4.35; b = 3; x = 2.85 y= 0.139

II вариант a = -1; b = 5; x = 1 Нет решения

III вариант a = 2.5; b = 3.7; x = 6.4 y=24.680

Пример 4. Вычислить значение функции y(x)

Примечание.

В этом примере исключительные ситуации могут возникнуть в случаях, если выражение (cx+d) меньше или равно нулю и выражение (dx-3) меньше нуля, т.е. в случаях невозможности выполнения вычисления логарифма отрицательного числа или числа, равного нулю, а также вычисления корня квадратного из отрицательного числа.

Схема алгоритма