Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ к лр (Программирование).doc
Скачиваний:
18
Добавлен:
15.03.2016
Размер:
1.91 Mб
Скачать

3.2 Разветвляющийся алгоритм

Пример 2.Составить блок-схему алгоритма вычисления угла перекладки руля судна в произвольный момент времени. Характер изменения угла перекладки руля изображен на рис. 2.

Рисунок 2 – Характер изменения угла перекладки руля

Программа:

Program Primer2;

Uses Crt;

Var a1,t,t1,t2,t3:real;

Begin

Write(‘Введите параметр t1:’);

Readln(t1);

Write(‘Введите параметр t2:’);

Readln(t2);

Write(‘Введите параметр t3:’);

Readln(t3);

Write(‘Введите время t:’);

Readln(t);

Write(‘Введите значение угла alfa1, уз:’);

Readln(a1);

If t<t1 then a:=a1*t/t1 else

If t<t2 then a:=a1 else

If t<t3 then a:=a1*(t3-t)/(t3-t2) else a:=0;

Writeln(‘Угол перекладки руля alfa=’, a:1:3);

Readkey;

End.

Блок-схема алгоритма вычисления угла перекладки руля судна в произвольный момент времени представлена на рис.3.

Рисунок 3 – Блок-схема разветвляющегося алгоритма

Дополнительно рассмотрим несколько вариантов написания команды условия в зависимости от вида блок-схемы (рис.4 – рис.6). В данных примерах показаны записи команд от самой краткой до самой полной.

Рисунок 4 – Условие с действиями на одной (а) и двух ветках (б)

Команда (вариант а):

If x<0 then y:=2+x;

Команда (вариант б):

If x<0 then y:=2+x else y:=sqr(x);

Рисунок 5 – Взаимное расположение условий:

последовательное (а) и вложенное (б)

Команда (вариант а):

If x<0 then y:=2+x;

If x<=2 then y:=sqr(x);

Команда (вариант б):

If x<0 then y:=2+x else

If x<=2 then y:=sqr(x) else y:=x-1;

Рисунок 6 – Условие с двумя действиями на каждой ветке

Команда:

If x<0 then

begin

y:=2+x;

z:=5-x;

end

else

begin

y:=sqr(x);

z:=x*x*x;

end;

Последняя запись представляет собой полный вариант написания команды условия (см. п.2.5). Парная команда begin-end в команде условия If применяется, когда на какой-либо ветке имеется два и более действия. При этом под действиями подразумеваются не только формулы, но и, например, ввод данных, вывод на экран, циклы, другие условия и т.д.

3.3 Циклический алгоритм

Пример 3. Составить алгоритм решения задачи извлечения квадратного корня из действительного положительного числа, основанный на построении монотонной последовательности, сходящейся к корню.

Для решения задачи используем рекуррентную формулу, т.е. формулу, позволяющую выразить (n+1)-й член последовательности через значение её предыдущего члена по формуле

,

Условием окончания процесса является выполнение неравенства , где -характеризует требуемую точность вычислений.

Так как число членов последовательности заранее неизвестно, то в данном примере необходимо использовать цикл с неизвестным числом повторений (см. п.2.6). Блок-схема вычисления квадратного корня из действительного числа представлена на рис. 7.

Программа:

Program Primer3;

Uses Crt;

Var a,e:real;

X:array [1..100] of real;

Begin

Write(‘Введите число, для которого вычисляется корень:’);

Readln(a);

Write(‘Введите значение первого члена последовательности:’);

Readln(X[1]);

Write(‘Введите величину погрешности:’);

Readln(e);

n:=1;

Repeat

X[n+1]:=0.5*(X[n]+a/X[n]);

Z:=abs(X[n+1]-X[n]);

n:=n+1;

Until Z<=e;

Writeln(’Значение корня заданного числа’,X[n+1]:2:3);

Readkey;

End.

Пример 4. Составить блок-схему алгоритма численного интегрирования определенного интеграла методом трапеций.

Как известно, вычисление определенного интеграла сводится к вычислению площади криволинейной трапеции, ограниченной функцией f(x), осью абсцисс и прямыми линиями и (рис. 8) по формуле

Приближенное значение этой площади легко вычисляется, если криволинейную трапецию заменить прямолинейной. Точность повышается, если отрезок a, b разбить на несколько участков, для каждого вычислить площади трапеций и просуммировать их. В конечном итоге получим

,

где n – число участков разбиения (чем больше n, тем точнее результат).

Рисунок 8 – Вычисление площади фигуры, ограниченной линиями

для нахождения определенного интеграла

Так как число участковn задаем мы сами, то число вычислений, и, следовательно, повторений, известно. Поэтому для решения данной задачи используем цикл с известным числом повторений. Блок-схема представлена на рис. 9.

Рисунок 9 – Блок-схема с использованием цикла

с заданным числом повторений

Дополнительно представим еще два примера решения задач в виде блок-схем на сортировку одномерного массива (рис. 10-а) и поиск максимального элемента матрицы (рис. 10-б).

а) б)

Рисунок 10 – Блок-схемы решения задач с массивами:

а – сортировка одномерного массива; б – нахождение максимального элемента матрицы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]