Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по информатике и программированию.doc
Скачиваний:
74
Добавлен:
18.12.2018
Размер:
3.14 Mб
Скачать

Алгоритмы линейной структуры

Вычислительный процесс, в котором все действия выполняются последовательно в порядке их записи строго по одному разу, называется линейным. К такому процессу сводится вычисление значения величин, задаваемых формулами. В общем виде схема линейного алгоритма имеет вид:

Рис.1.Схема алгоритма линейной структуры.

Пример 1.Требуется вычислить площадь поперечного сечения ствола по формуле эллипса g=·D· d/4, где D - наибольший диаметр сечения ствола, d - наименьший диаметр сечения ствола, число =3.1416.

В примере используются четыре переменные D,d,g, . Переменной нзывается величина, значение которой может меняться в процессе работы алгоритма. Каждой переменной отводится определённое место в памяти ЭВМ (ячейка памяти). В эту ячейку помещается текущее значение переменной. Вновь вычисленное значение переменной пересылается в ту же ячейку. Ясно, что при этом "старое содержимое" ячейки теряется.

Можно записать схему алгоритма так

начало ввод D,d, g=· D· d/4 вывод g конец

Рис.2.Схема алгоритма решения примера 1.

Поскольку мы составляем алгоритм для его дальнейшего выполнения на ЭВМ, мы должны поместить исходные данные в память ЭВМ (блок ввода данных) и после завершения вычислений "изъять" из памяти полученный результат (блок вывода результатов).

Алгоритмы разветвляющейся структуры.

Пример 2. Составить схему алгоритма вычисления значения y=(2x+3)/(3x-4).

На первый взгляд, алгоритм нахождения значения y кажется линейным, но это не так. Приведём схему алгоритма.

начало ввод x d=3x-4 d=0 да невозможно

вычислить y

нет

. у=(2x+3)/d вывод y конец

Рис.3.Схема алгоритма решения примера 2.

В блоке 3 осуществляется проверка условия: равен ли нулю знаменатель при данном значении x. Если это условие выполняется, то переходим по стрелке "да" на блок 4 и выводим сообщение о невозможности вычисления y. Если условие не выполняется, то переходим по стрелке "нет" к блоку 5, где вычисляется y.

Это пример разветвляющегося процесса.

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

Фрагмент схемы алгоритма с разветвлением задается так:

нет условие да

ветвь 1 ............ ........... ветвь 2

Рис.4.Схема разветвления.

Если условие выполняется, то проработает ветвь 2, иначе - ветвь 1. Возможны ситуации, когда одна из ветвей не содержит никаких действий. Такое разветвление называют обходом. Схематично это выглядит так:

нет

условие

да

ветвь 1 .

Рис.5.Схема разветвления-обхода.

В свою очередь ветвь 1 и (или) ветвь 2 могут содержать проверки других условий. Такие разветвляющиеся процессы будут рассмотрены ниже (примеры 3 и 4). После составления схемы алгоритма необходимо тщательно проверить её. Для этого используют метод выполнения алгоритма "вручную". При этом проверяющий выполняет алгоритм шаг за шагом и фиксирует на бумаге все промежуточные результаты.

Пример 3.Вычислить

x + a , если x = 3

y = x - a , если x > 3

x2 + a2  , если x < 3

Имеется три формулы для вычисления y. Выбор той или иной формулы зависит от заданных условий.

Предлагается следующая блок-схема решения этой задачи.

начало ввод x,a x>3 да y=x-a

нет

x=3 да y=x+a

нет

y=x2 +a2   Вывод y Конец

Рис.6.Схема алгоритма решения примера 3.

Пример 4. Даны различные x,y,z.. Вычислить u=min(x,max(y,z)).

Схема алгоритма выглядит так:

начало ввод x,y,z y>z да r= y

нет

  r=z

x<r да u=x

нет

u=r вывод u конец

Рис.7.Схема алгоритма решения примера 4.

Была введена дополнительная переменная для хранения максимального значения r=max(y,z) .

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

Такими наборами, например, для данной задачи будут

1) x=1, y=2, z=3 2) x=1, y=3, z=2

3) x=5, y=2, z=3 4) x=5, y=3, z=2

Нетрудно найти ответы для этих исходных данных. Искомое u будет равно соответственно 1,1,3,3.