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

Учебное пособие 1068

.pdf
Скачиваний:
13
Добавлен:
30.04.2022
Размер:
742.96 Кб
Скачать

иначе {если B≥C, то MAX:=B, иначе MAX:=C}

3)Вывод (M)

Здесь решение получается с использованием трех полных условных предложений, два из которых внутренние и одно внешнее. Графическая иллюстрация решения приведена на рис. 1.3.

Рис. 1.3. Блок-схема нахождения наибольшего из трех чисел

Решение примера 2 для 4, 5,…чисел приводит уже к более громоздким алгоритмам, то есть с увеличением размерности задачи алгоритм, построенный на базе парных сравнений, может стать необозримым.

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

1)Ввод (A,B,C)

2)MAX:=A

3)Если MAX<B, то MAX:=B

4)Если MAX<C, то MAX:=C

5)Вывод (MAX)

В пунктах 3,4 применяются укороченные условные предложения. Теперь после второго этапа ячейка MAX «помнит» наибольшее из одного числа, то есть само это число, после третьего шага – наибольшее из двух чисел, после четвертого – наибольшее из трех чисел и т.д.

10

4. Обобщая предыдущий пример, покажем, как можно найти наибольшее из n чисел – max {ai, i=1,2,…, n}, приведя решение задачи к циклической процедуре с известным числом повторений

1)Ввод (N,A)

2)MAX:=A(1)

3)для I от 2 до N шаг 1 повторяй: если MAX<A(I), то MAX:=A(I)

4)Вывод (MAX)

Здесь A – имя массива – структурного набора однородных данных. Заметим, что шаг, равный единице настолько популярен, что его можно опустить («по умолчанию»). Записанная конструкция носит название «разветвление в цикле» (рис. 1.4).

Рис. 1.4. Блок-схема отыскания наибольшего из N чисел

 

n

 

5.

Классические задачи определения суммы s = ai

и произведения

 

i=1

 

n

 

 

p = ai

элементов последовательности значений а1, а2, . . .,аn

методом накоп-

i=1

 

 

ления имеют следующее решение

11

1)Ввод (N,A))

2)S:=0 P:=1

3)

Для I от 1 до N шаг 1 повторяй S:=S+A(I); P:=P*A(I)

4)

Вывод (S,P).

Задание. Объяснить необходимость этапа 2). Нарисовать соответствующую блок-схему решения.

6. Дан массив чисел А12, . . .,AN. Определить количество его элементов, равных единице.

1)Ввод (N,A)

2)K:=0

3)Для I от 1 до N шаг 1 повторяй если A(I)=1, то K:=K+1

4)Вывод (К)

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

Рис. 1.5. Подсчет числа элементов массива, равных единице

12

Контрольные вопросы и упражнения

1.Дать определение алгоритма. Перечислить изобразительные средства алгоритмов.

2.В чем заключаются недостатки: а) словесного алгоритма; б) формульнословесного алгоритма?

3.Записать формульно-словесный алгоритм вычисления следующих выражений:

 

 

А

2

+ В

2

,

если

А В ,

а)

 

 

 

 

y =

 

 

 

 

 

 

 

 

 

 

 

 

+ В)

2

,

если

А > В

 

(А

 

 

x

,

если

x < 0 ,

 

 

 

 

 

А

 

 

 

 

б)

 

,

если

х >0,

y = А x

 

 

А

,

если

х =0

 

 

 

 

 

 

 

4.Составить формульно-словесный алгоритм определения корней квадратного уравнения.

5.Дать определение программы.

6.Дать определение центрального процессора, оперативной памяти, вычислителя.

7.Чем отличается знак равенства от знака присваивания?

8.Чем отличается операция ввода от операции присваивания?

9.Дать определение блок-схемы. Перечислить известные блоки и указать их назначение.

10.Перечислить типы вычислительных процессов.

2.Практическая алгоритмизация

2.1. Линейный вычислительный процесс

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

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

Пример 1. Составить блок-схему вычисления выражения

y = (AX + B)2 .

A2 + B2

Предусмотреть вывод значения y, значения числителя и знаменателя.

На рис. 2.1 приведена блок-схема вычисления требуемых значений данного выражения.

13

Начало

1

А, В, Х

2

С= (АХ+В)2

3

 

 

D =

A2

+ B2

4

y = C D

5

С, D, у

Конец

Рис. 2.1. Блок-схема алгоритма вычисления выражения y = (AX + B)2

A2 + B2

Пример 2. Составить схему алгоритма вычисления одного значения функции

y = sin(ax2 bx c) + cos(ax2 + bx + c) , 2(ax2 bx c)

полагая, что знаменатель не принимает нулевых значений ни на каком наборе исходных данных a,b,c, x.

Для составления схемы алгоритма вычисления функции y сначала надо найти значение числителя, затем, после вычисления знаменателя, разделить на него значение числителя. Однако такой алгоритм не является оптимальным, поскольку нам пришлось трижды вычислять значение выражения, заключенного в скобки. Целесообразнее сначала вычислить значение аргумента синуса (обозначим его z), затем sin(z), cos(z) и, наконец, получив сумму в числителе, разделить ее на 2z. Это позволит уменьшить затраты машинного времени на реализацию такого алгоритма. Блок-схема алгоритма решения этой задачи представлена на рис. 2.2.

14

Начало

a,b,c,x

Z=ax2-bx-c

Y=[sin(z)+cos(-z)]/(2z)

Y

Конец

Рис. 2.2. Блок-схема алгоритма вычисления значения функции y = sin(ax2 bx c) + cos(ax2 + bx + c)

2(ax2 bx c)

Пример 3. Найти сумму членов бесконечной геометрической прогрессии

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

+

1

 

 

1

+ ...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

8

16

 

 

 

 

 

 

 

 

 

 

 

Начало

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

Решение. Первый

 

член геометрической

 

 

 

1

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 =

 

 

 

g = -

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

прогрессии x1=

 

, а значит знаменатель

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g = -

1

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S =

 

 

 

 

 

 

Сумма членов бесконечной убывающей

 

 

 

 

 

 

1g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

геометрической

 

 

прогрессии S =

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

Эта формула используется для решения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

S

 

 

 

задачи (рис. 2.3).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание. Самостоятельно обобщить алго-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

 

 

 

ритм на случай

геометрической прогрес-

сии с произвольными значениями х1 и g.

Рис. 2.3. Решение для примера 3

15

m1 + m2 + m3

Пример 4. Составить блок-схему алгоритма для нахождения координат центра масс трех точек, массы которых m1, m2, m3, а их координаты могут быть записаны как 1, y1),(x2, y2), (х3, у3).

Начало

1

m1, m2, m3

x1, х2, х3, y1, у2, у3

2

r = m1 + m2+m3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m1 x1 + m2 x2 + m

3 x

 

 

 

 

 

 

xc

=

 

3

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m1 y1 + m2 y2 + m

3 y3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yc

=

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xc, yc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решение. Формулы для определения искомых координат

m x + m x + m x

x c = 1 1 + 2 2+ 3 3 ,

m1 m2 m3

yс = m1 y1 + m2 y2 + m3 y3 .

Соответствующая блок-схема изображена на рис.2.4.

Конец

Рис. 2.4. Решение для примера 4

Пример 5. Тело брошено вертикально вверх с начальной скоростью v. Определить, через какое время тело достигает наивысшей точки и на каком расстоянии от земли.

Решение. Путь, пройденный телом, можно определить из уравнения

Начало

1

v

2

t=v/g

3

S=vt-gt2/2

4

t, S

Конец

Рис. 2.5. Решение для примера 5

S = vt -

gt2

,

(1)

2

 

 

 

где v - скорость, g - ускорение свободного падения, t - время движения тела. Дифференцируя путь по t , получаем ско-

рость ds = v - gt. В момент, когда тело дос- dt

тигает наивысшей точки, скорость его равна 0. Следовательно, v - gt=0, откуда t = v g .

Зная t , можно определить расстояние, пройденное телом за это время. Таким образом, получены две формулы, необходимые для решения данной задачи (рис. 2.5).

16

Пример 6. Ангар длиной l имеет поперечное сечение в форме полукруга радиуса r (рис. 2.6). Составить алгоритм вычисления площади поверхности S и объема V ангара.

l

2r

Рис. 2.6. Схема ангара

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

S= 12 (2πrl)+ 2 ( 12 πr2 ) = πr( r + l ),

аобъем V равен половине объема кругового цилиндра:

V= 12 (πr2l ).

Исходными данными для вычислений являются числовые значения переменных r, l (рис. 2.7).

Начало

r, l, π

S=π r (r+ l)

V=0,5πr2l

S, V

Конец

Рис. 2.7. Блок-схема алгоритма вычисления площади поверхности S и объема V ангара

17

Контрольные вопросы и упражнения

1.Дать определение линейного вычислительного процесса.

2.Каким образом представляется на блок-схеме линейный вычислительный процесс?

3.Составить блок-схему вычисления следующих выражений:

а)

P =

NK 2

M

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

(K + L)2

 

 

 

б)

Y =

AX 2

+ B AB, вывести значения Y и подкоренного выражения.

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

Y = sin(ax2 + bx + c) + 2cos(ax2 + bx + c) , где ax2 + bx + c 0 .

3 ax2 + bx + c

5.Составить блок-схему алгоритма для вычисления длины окружности L , если задана площадь соответствующего круга S .

6.Составить блок-схему для чтения температуры в градусах Цельсия и пе-

чати ее в градусах Кельвина, Фаренгейта, Реомюра (T 0 K = T 0C + 273,15;

T 0 R = 0,8T 0C; T 0 F = 1,8T 0C + 320 ).

7.Даны величины A и B . Найти их сумму, произведение, среднее арифметическое, среднее геометрическое. Составить блок-схему.

8.Даны две числовые величины A и B . Поменять местами содержимое ячеек, в которых они находятся:

а) с использованием вспомогательной ячейки; в) без использования вспомогательной ячейки. Составить блок-схему.

9.Моменты инерции J твердых тел с массой m относительно оси вращения выражаются следующими зависимостями:

а) для сплошного однородного цилиндра с радиусом Rц :

 

 

 

 

J =

1

 

mR2

;

 

 

 

 

2

 

 

 

 

 

 

 

ц

 

 

 

 

 

 

 

 

 

 

 

б) для полого цилиндра с внутренним радиусом R1 и внешним радиусом R2 :

J =

1

m( R2

+ R2

) (считать в задаче 2R1=R2);

 

2

1

2.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

в) для однородного шара с радиусом Rш :

 

 

 

 

 

 

J =

 

2

mR2 .

 

 

 

 

 

5

 

 

 

 

 

 

 

 

ш

 

 

 

 

 

 

 

 

 

 

 

Составить блок-схему алгоритма для определения геометрических размеров указанных тел, если J и m известны и для всех тел одинаковы.

10. Для приготовления известково-цементного состава необходимо A% известкового теста, В% белого цемента, С% поваренной соли, D% пигмента, остальное составляет вода. Составить алгоритм для расчета необходимого количества воды F[кг]при приготовлении Q[кг] состава. Составить блок-схему алгоритма.

18

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

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

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

да

нет

или

x > y

x < y

 

x > y

 

 

 

 

x : y

 

 

 

 

 

 

 

x = y

Ветви в свою очередь также могут быть разветвленными, то есть могут также содержать блоки проверки выполнения условий (блоки ЕСЛИ).

Пример 1. Составить блок-схему вычисления переменной y

 

Начало

 

 

1

x

 

да

2

нет

 

 

 

 

 

 

 

x > 0

 

3

 

4

x

y =

x

y =

2

 

 

5

y

 

 

 

 

 

 

x,

если

x > 0;

 

 

 

 

 

y =

 

 

 

 

 

x

 

 

 

 

 

 

x ≤ 0.

2 ,

если

 

На рис. 2.8 приведена блок-схема алгоритма вычисления значений y. Ветвление происходит по двум взаимоисключающим ветвям.

Конец

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

19