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

m1031

.pdf
Скачиваний:
1
Добавлен:
15.11.2022
Размер:
573.28 Кб
Скачать

Ввод a, b, c

p

a b c

2

 

S

p( p a)( p b)( p c)

Вывод S, p

Рис. 1. Линейный алгоритм

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

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

Пример. Разработать алгоритм для вычисления значения функции Y при условии, что X вводится до вычисления и выражен в градусах:

 

2

при x 0,

sin x

 

 

 

 

cos x при x 0.

(1)

Так как X − угловая величина, выраженная в градусах, то его необходимо перевести в радианы, используя формулу перевода:

X r

 

X

 

 

 

 

.

(2)

180

 

 

 

 

 

В зависимости от введенного значения X вычисление алгоритма может пойти по одной из двух возможных ветвей вычисления. Пример алгоритма приведен на рис. 2.

1.Вводится значение X в градусах.

2.Вычисляется значение Хr по формуле (2).

3.Проверяется значение X. Если Х > 0, то алгоритм пойдет по

ветке да, вычисляется Y sin X r2 , затем будет выведено значение X в градусах и полученное значение Y.

11

4. В противном случае, если X 0, алгоритм пойдет по ветке

нет, вычисляется значение

Y cos X

r

,

затем будет выведено

 

 

значение X в градусах и полученное значение Y.

 

Ввод X

 

 

X

 

 

X

 

r

180

нет

 

 

 

 

 

да

Х > 0

 

 

 

 

 

 

 

 

Y sin X

2

 

 

 

 

 

 

r

 

Y cos X r Вывод X, Y

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

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

Циклическим называют такой алгоритм, в котором определенный участок алгоритма повторяется конечное число раз с различными значениями.

Пример. Разработать алгоритм для вычисления значения функции Y при следующих условиях: Y = sin X, где X = 0°, 2°, 4°, 6°, 10°.

Так как X выражено в градусной величине, то необходимо предусмотреть формулу перевода X в радианы. Следует учесть, что количество повторений цикла заранее не известно.

1. Вводится начальное значение Xn = 0°, конечное значение Хk = 10° и шаг изменения величины X: h = 2°.

2. Промежуточной величине X присваивается начальное значение Xn.

3.Вычисляется значение X в радианах (Хr).

4.Вычисляется значение функции Y при X = Xn.

12

5.Выводится полученный результат Y и X.

6.С использованием шаговой формулы увеличивается значение X на шаг h, т.е. к текущему значению X прибавляется шаг h.

7.Проверяется условие проверки значения X. Если новое значение X не превысит конечное значение Хk (выражение примет значение ложно), то вычисления повторятся с пункта 3 до тех пор, пока выражение не примет истинного значения.

Такой алгоритм называется циклом с постусловием (рис. 3).

 

Ввод X

, X

, h

 

 

 

 

n

k

 

 

Х = X

 

 

 

 

 

 

n

 

 

 

X

 

 

X

 

 

 

r

180

 

 

 

 

 

 

 

 

 

 

 

Y sin X

 

 

 

 

 

 

r

 

 

Вывод X, Y

 

Х = X + h

 

нет

Х > X

 

 

 

 

 

 

 

 

 

k

 

 

 

да

 

 

 

 

 

Рис. 3. Циклический алгоритм с постусловием

Рассмотрим этот же пример для реализации цикла с пред-

условием (рис. 4).

1. Вводится начальное значение Xn = 0°, конечное значение Хk = 10° и шаг изменения величины X: h = 2°.

2.Промежуточной величине X присваивается начальное значение Xn.

3.Проверяется условие на достижение конечного значения

Хk(X Хk). Если выражение принимает значение истина, то алгоритм начинает вычисление тела цикла (повторяемой части). Если

13

же условие принимает значение ложь, то алгоритм уходит на завершение задачи.

4.Вычисляется значение X в радианах (Хr).

5.Вычисляется значение функции Y при X = Хn.

6.Выводится полученный результат Y и X.

7.С использованием шаговой формулы увеличивается значение X на шаг: к текущему значению X прибавляется шаг h. Затем алгоритм возвращается на проверку условия для нового значения X (к пункту 3).

нет да

Ввод X

, X

, h

 

 

 

n

 

k

 

Х = X

 

 

 

 

 

 

n

 

 

 

Х < X

 

 

 

 

 

 

k

 

 

 

X

 

 

X

 

 

r

180

 

 

 

 

 

 

 

 

 

 

 

Y sin X

 

 

 

 

 

 

r

 

Вывод X, Y

Х = X + h

 

Рис. 4. Циклический алгоритм с предусловием

Пример. Разработать алгоритм для вычисления значения функции Y при следующих условиях: Y = sin X, где X = 0°, 20°, 4°, 16°, 90°. Число повторений цикла N заранее известно, оно равно 5 (X = X1; X = X2; X = X3; X = X4; X = X5), поэтому возможно применение цикла с параметром.

1.Вводится количество значений X: N = 5.

2.Параметр цикла i принимает значение, равное 1: вводится значение X1; затем i принимает значение, равное 2: вводится X2.

14

Таким образом поэлементно вводятся все значения X. Параметр цикла изменяется с 1-го значения по N с шагом 1.

3.Параметр цикла i принимает значение, равное 1.

4.Вычисляется значение X в радианах (Хr).

5.Вычисляется значение функции Y при значении X = X1.

6.Выводится полученный результат Y и X.

7.Затем алгоритм возвращается в начало цикла, увеличивает значение параметра цикла на шаг, равный 1 (i = 2), и повторяет вновь вычисления с пункта 4, но для нового значения X. Когда значение параметра превысит значение N, алгоритм уйдет на завершение работы.

Рассмотренный алгоритм иллюстрирует цикл с параметром

(рис. 5).

Ввод N i = 1, N Ввод Xi

i = 1, N

X

 

 

X

r

180

 

 

 

 

 

 

 

 

 

 

Y sin X

r

 

 

 

 

 

Вывод X ,

Y

 

 

 

i

 

 

Рис. 5. Циклический алгоритм с параметром

15

4.4. Комбинированные алгоритмы

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

Пример. Разработать алгоритм для вычисления произведения отрицательных элементов (PRO) в массиве М, количество элементов массива N задается перед просчетом.

Для реализации данного алгоритма применяются циклический и разветвляющийся алгоритмы (рис. 6).

Ввод i = 1, Ввод

PRO i = 1,

N

N

Mi

= 1 N

нет

 

M

< 0

 

 

 

 

 

да

i

 

 

 

 

 

 

 

 

PRO = M

· PRO

 

 

 

i

 

 

 

Вывод PRO

Рис. 6. Комбинированный алгоритм (цикл с параметром и разветвление)

1.Вводится размерность массива N.

2.Параметр цикла i принимает значение, равное 1, и вводится значение M1; затем i принимает значение, равное 2, и вводится М2. Таким образом поэлементно вводятся все значения М. Параметр цикла изменяется с 1-го значения по N с шагом, равным 1.

3.Переменной PRO присваивается значение 1.

4.Параметр цикла i принимает значение, равное 1.

16

5. Проверяется переменная M1. Если М1 < 0, тогда переменной PRO будет присвоено новое значение:

новое значение = текущее значение PRO (пункт 3) · М1. Если переменная М1 ≥ 0, то алгоритм возвратится в начало

цикла, увеличивая значение параметра цикла на шаг, равный 1 (i = 2), и повторит вычисления с пункта 4, но для нового значения

М2.

6. Цикл будет повторяться N раз, а по окончании работы цикла значение переменной PRO будет выведено.

Пример. Разработать алгоритм для нахождения минимального элемента (MIN) последовательности М, количество элементов последовательности N задается перед просчетом.

Для реализации этого алгоритма используют циклический и разветвляющийся алгоритмы (рис. 7).

Ввод N

i = 1, N

Ввод Mi

MIN = M1

i = 1, N

нет

Mi < MIN

да

MIN = Mi

Вывод MIN

Рис. 7. Комбинированный алгоритм (цикл с параметром и разветвление)

17

1.Вводится размерность массива N.

2.Параметр цикла i принимает значение, равное 1, и вводится значение М1; затем i принимает значение, равное 2, и вводится М2. Таким образом поэлементно вводятся все значения М. Параметр цикла изменяется с 1-го значения по N с шагом, равным 1.

3.Переменной MIN присваивается значение первого элемента последовательности M1.

4.Параметр цикла i принимает значение 2, так как первый элемент последовательности уже задействован в работе.

5.Проверяется переменная М2. Если М2 < MIN, тогда переменной MIN будет присвоено значение, равное М2, затем алгоритм вернется в начало цикла. Если переменная М2 ≥ 0, то алгоритм вернется сразу в начало цикла.

6.Параметр цикла i будет увеличен на шаг, равный 1, и примет значение, равное 3, затем алгоритм повторит вычисления с пункта 5 до тех пор, пока параметр не станет больше N.

7.По окончании вычисления цикла переменная MIN будет выведена.

Пример. Разработать алгоритм для нахождения количества элементов (KOL) матрицы больше заданного числа А. Размерность матрицы N и M задается перед просчетом совместно с числом А.

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

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

1.Вводится размерность матрицы: количество строк N, количество столбцов M и число А.

2.Параметр первого цикла i отвечает за изменение номера строки (будет изменяться с шагом, равным 1) и принимает значение, равное 1.

3.Параметр второго цикла j отвечает за изменение номера столбца (будет изменяться с шагом, равным 1) и принимает значение, равное 1.

4.Вводится значение М11.

18

Ввод N, M, A

i = 1, N j = 1, M

Ввод Mij

KOL = 0 i = 1, N j = 1, M

нет

Mij > A

да

KOL = KOL + 1

Вывод KOL

Рис. 8. Комбинированный алгоритм (вложенный цикл с параметром и разветвление)

5.Алгоритм возвращается во внутренний цикл для смены номера столбца j = 2.

6.Вводится значение М12.

7.Алгоритм возвращается во внутренний цикл для смены номера столбца j = 3. Алгоритм выполняется с пункта 6 до тех пор, пока j не примет значение больше M.

8.Затем алгоритм вернется на внешний цикл, изменит значение номера строки i = 2 (до тех пор, пока i не превысит значение N).

9.Параметр второго цикла j = l.

10.Вводится элемент М21.

19

11.Алгоритм возвращается во внутренний цикл для смены номера столбца j = 2.

12.Вводится значение М22. Алгоритм повторит свои действия

спункта 7 для новых значений i и j.

13.Когда все элементы матрицы будут введены, переменной KOL будет присвоено значение 0: KOL = 0.

14. Далее идет обработка матрицы подобно ее вводу (см. рис. 8). В теле цикла осуществляется проверка элемента матрицы: Мij > А. Если да, то переменная KOL принимает значение KOL = KOL + 1, в противном случае она не изменяет своего значения.

15. По окончании работы внешнего цикла осуществляется вывод значения переменной KOL.

Вопросы для самоконтроля

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

2.Что включает в себя понятие алгоритмической системы?

3.В чем заключается процесс алгоритмизации?

4.Каковы правила построения схем алгоритмов?

5.Что представляют собой линейные, разветвляющиеся, циклические алгоритмы? Приведите примеры схем таких алгоритмов.

6.Каким образом представляются в алгоритмах простые и сложные ветвления? Приведите примеры.

7.Какова структура цикла? Укажите необходимые блоки.

8.Какие типы циклов существуют? Дайте определение. Какие управляющие структуры реализуют эти циклы?

9.Рассмотрите задачу табулирования функции с использованием циклов разного типа.

10.Каковы правила организации вложенных циклов?

11.Какой алгоритм называется комбинированным?

Упражнения для закрепления материала

Разработать алгоритм для нижеследующих задач.

1.Определить, является ли заданное число простым.

2.Найти все пифагоровы числа на заданном интервале [n, m]. Пифагоровы числа удовлетворяют условию: а2 + b2 = с2.

3.Разложить заданное число на простые множители.

20

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