Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

УП Информатика

.pdf
Скачиваний:
73
Добавлен:
22.03.2015
Размер:
549.79 Кб
Скачать

3.Перейти к следующему элементу (i = i + 1).

4.Если A[i] > max, то max = A[i], imax = i.

5.Если i < n, то перейти к п. 3.

6.Максимальный элемент равен A[imax].

Наиболее наглядным способом описания алгоритмов является описание их в виде блок-схем. При этом алгоритм представляется последовательностью блоков, выполняющих определенные функции, и связей между ними; внутри блоков указывается информация, характеризующая выполняемые ими действия: блоки имеют сквозную нумерацию; конфигурация и размеры блоков, а также правила выполнения блок-схем алгоритмов определяются ГОСТ 19.701–90, входящим в Единую систему программной документации.

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

Алгоритм решения задачи поиска максимального элемента в массиве (см. пример 1) представлен в виде блок-схемы (рис. 9).

В соответствии с принципами структурного программирования любая программа составляется на базе основных алгоритмических

структур: линейной, разветвляющейся и циклической. Между этими структурами производится передача управления только вперед, что соответствует в блок-схеме направлению линий потока информации сверху вниз.

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

61

 

1

 

 

 

 

Начало

 

2

 

 

 

 

Ввод n, A(n)

 

3

 

 

 

 

max = A[1]

 

 

imax = 1,

i = 1

 

4

 

 

 

 

i = i + 1

 

5

 

-

 

 

A[i] > max

 

6

+

 

 

 

 

 

 

max = A[i]

-

7

i >= n

 

 

 

 

 

8

 

+

 

 

 

 

 

Вывод A[imax]

9

Конец

Рис. 9. Блок-схема алгоритма поиска максимального элемента

62

4.3. Основные типы алгоритмов

Алгоритм линейной структуры – это алгоритм, в котором блоки выполняются последовательно друг за другом, в порядке, заданном блок-схемой. Такой порядок выполнения называется естественным.

П р и м е р 2 . Вычислить площадь треугольника со сторонами a, b, с по формуле Герона (рис. 10):

S = p ( p a) ( p b) ( p c) ,

где p = (a + b + c) . 2

= a + b + c

p

2

s = p ( p a) ( p b) ( p c)

Рис. 10. Блок-схема алгоритма вычисления площади треугольника по формуле Герона

63

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

полнения некоторого логического условия вычислительный процесс осуществляется по одной или другой ветви.

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

sin(x), если x <= a;

z = cos(x), если a < x < b; tg(x), если x >= b.

Из формулировки задачи видно, что вычислительный процесс имеет три ветви. С помощью блока 3 проверяется выполнение одного условия, по которому выбирается выражение для реализации одной ветви (блок 4). Для определения того, по какой из двух оставшихся ветвей должен идти вычислительный процесс после невыполнения первого условия (переход к блоку 5), необходимо использовать еще один условный блок.

Блок-схема алгоритма вычислений Z представлена на рис. 11.

Здесь в первом условном блоке 3 проверяется условие x <= a и в случае его выполнения осуществляется переход к блоку 4, вычисляющему z = sin(x). Если x > a, то блок 5 проверяет условие x >= b. Ели это условие выполняется, то осуществляется переход к блоку 6, вычисляющему z = tg(x). В противном случае х находится в интервале между a и b, тогда происходит переход к блоку 7, вычисляющему z = cos(x). После вычисления по любой из формул осуществляется переход к общему блоку печати.

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

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

1)перед циклом задать начальное значение переменной, изменяющейся в цикле;

2)изменять переменную перед каждым новым повторением цик-

ла;

64

Рис. 11. Блок-схема алгоритма вычислений значения Z

65

3)проверять условие окончания или повторения цикла;

4)управлять циклом, то есть переходить к его началу, если он не закончен, или выходить из него, если он закончен;

5)три последних действия выполняются многократно. Переменную, значения которой вычисляются машиной и хра-

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

П р и м е р 4 . Вычислить и вывести на печать значения выражения

у = ( a3 ) , если x изменяется от 0 до 3 с шагом 0,1. a2 + x2

Перед выполнением тела цикла необходимо задать начальное значение параметра x, равное 0 (на рис. 12 эту функцию выполняет блок 3). Затем 31 раз выполнить вычисление (блок 4) и вывод значений функции y (блок 5). После каждого выполнения тела цикла необходимо изменить параметр x на величину шага, равного 0,1 (эту функцию выполняет блок 6), и проверить условие продолжения цикла: x <= 3 (блок 7).

Блок-схема такого алгоритма представлена на рис. 12.

Рассмотренный циклический вычислительный процесс является циклом с постусловием, так как сначала выполняется тело цикла, а затем проверяется «условие» и, если оно истинно, то выполняется тело цикла. Особенность такой организации цикла в состоит том, что тело цикла обязательно выполняется хотя бы один раз. Возможна другая организация цикла, при которой проверка условия его выполнения осуществляется перед реализацией тела цикла. Та-

кой цикл называется циклом с предусловием.

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

1) задает начальное значение параметра цикла;

66

2)выполняет тело цикла;

3)изменяет значение параметра цикла на величину шага (приращения);

4)осуществляет проверку условия дальнейшего выполнения цикла: если результат проверки «истина», то переходит к пункту 2,

впротивном случае цикл завершается.

 

1

 

 

 

Начало

 

 

2

 

 

 

Ввод a

 

 

3

 

 

 

x = 0

 

 

4

 

 

 

y =

a 3

 

 

+ x

 

 

a 2

2

 

5

 

 

 

Вывод y

 

 

6

 

 

 

x = x + 0,1

+

7

 

 

x <= 3

 

 

 

 

8

-

 

 

 

 

 

Конец

 

Рис. 12. Блок-схема алгоритма вычисления циклического процесса

67

Блок-схема алгоритма, рассмотренного на рис. 12, с использованием блока модификации представлена на рис. 13.

1

Начало

2

Ввод a

3

x = 0, x < 3

4

y =

 

a 3

a 2

+ x 2

 

5

Вывод y

6

x++

7

Конец

Рис. 13. Блок-схема алгоритма вычисления циклического процесса с использованием блока модификации

Реализация блока модификации без указания начального значения параметра цикла, его приращения и условия продолжения цикла приведет к организации «бесконечного» циклического вычислительного процесса.

68

Рассмотренные ранее примеры циклических процессов относятся к циклам с известным (или заданным) число повторений.

Кроме циклов с известным числом повторений, существуют циклические процессы, в которых число повторений заранее не определено. Это циклы с неизвестным числом повторений [3].

Пример 5. Вычислить значения членов бесконечного ряда:

 

x2

 

x3

xn

x,

 

 

,

 

, ...

 

, ...

 

 

 

2 !

 

3 !

n !

с точностью до члена ряда, меньшего ε = 0,001.

Здесь имеет место итерационный цикл, так как заранее не известно, при

каком n выполняется условие xn ≤ ε . Таким образом, вычисления необходи- n !

мо выполнять до тех пор, пока очередной член ряда по абсолютной величине не станет меньше заданной точности ε = 0,001.

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

Блок-схема алгоритма вычислений представлена на рис. 14.

При вычислении текущего члена ряда используется рекуррентная форму-

ла

yn = yn − 1 x / n , которая получается следующим образом:

yn / yn − 1 = x / n .

Чтобы использовать эту формулу для вычисления первого члена ряда, необходимо задать перед циклом начальное значение y0 = 1. Параметром, из-

меняющимся в этом цикле, является номер члена ряда n. Формула для вычисления текущего члена ряда имеет вид

y = y x / n .

69

Рис. 14. Блок-схема алгоритма вычисления циклического процесса с неизвестным числом повторений

Контрольные вопросы

1. Каким требованиям должен удовлетворять алгоритм?

70