Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Раздел 3_1.pdf
Скачиваний:
52
Добавлен:
11.02.2016
Размер:
1 Мб
Скачать
☆

ния данных при выполнении цикла Repeat until возможны нарушения алгоритма. Так если величина x после переопределения теоретически равна xmax , а ее реальное значение представленное в ЭВМ на крайне малую величину больше xmax осуществится выход из цикла и последнее значение x=xmax обработано не будет.

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

1.3.4. Вложенные циклы

В ряде практических расчетов приходится проводить обработку величин, являющихся функциями двух или более независимых аргументов, например F = f(X,Y).

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

На рис.1.7 представлен алгоритм расчета по зависимости F=f(xi,xj), причём i=1,2,3,...,n и j=1,2,3,...,m. Т.е. индекс i изменяется от начального значения 1 до конечного n с шагом 1, а индекс j изменяется от начального значения 1 до конечного m с шагом 1. В обоих случаях используется цикл с подсчетом числа проходов.

В данном алгоритме до выполнения проходов циклов вводятся максимальные значения индексов i и j (это соответственно величины n и m).

 

 

 

Начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод n,m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Внешний цикл

 

 

 

i=1, n, 1

 

 

 

 

 

 

 

 

Вывод i

 

 

 

ввод xi

 

 

 

 

 

 

 

 

 

Вложенный цикл

внешнегоОбластьцикла

вложенногоОбластьцикла

 

j=1, m, 1

 

 

 

 

 

 

Вывод j

 

 

ввод yi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F = f(xi,yj)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод F

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вложенный цикл

Внешний цикл

Конец

Рис.1.7 Вложенные циклы с подсчетом числа проходов

Начало

Ввод

xmin, xmax, ∆x, ymin,

ymax, ∆y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x=xmin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

While

 

 

 

 

 

x<=xmax

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y=ymin

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Областьвнешнего цикла

 

 

 

 

 

 

 

While

Областьвложенного цикла

 

 

 

 

y<=ymax

 

 

 

 

 

 

 

 

 

 

 

 

 

F =

f(x,y)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

 

 

 

 

 

Вывод x, y, F

 

 

 

 

 

 

 

 

y=y+

∆y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x=x+

 

∆x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

Конец

Рис.1.8 Вложенные циклы While

13

При организации циклов вначале открывается внешний цикл с параметром цикла i. Сразу же после открытия внешнего цикла выводится текущее значение индекса i и вводится значение аргументов xi. Вывод значения индекса элемента массива позволяет избежать ошибок при вводе большого количества элементов массива.

Затем открывается внутренний (вложенный) цикл с параметром j. Во вложенном цикле производится ввод значения аргумента yj (с предварительным выводом значения индекса j), расчет значений функции F и вывод ее значения.

Рассмотренный алгоритм не является удачным, поскольку для каждого значения xi необходимо вводить весь набор значений yj. Более эффективные алгоритмы работы со вложенными циклами рассматриваются далее.

Если для расчета по функциональной зависимости f, необходимо использовать какие либо коэффициенты, то их значения вводятся до начала циклических вычислений.

На рис.1.8 представлена блок-схема вычислительного процесса с вложенными циклами типа While. По условию задачи величина одного из аргументов x изменяется от значения xmin до значения xmax с шагом ∆x (внешний цикл). Аналогично величина другого аргумента y изменяется от значения ymin до значения ymax с шагом ∆y (вложенный цикл).

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

Области действия циклов могут только вкладываться друг в друга, но не в коем случае не пересекаться.

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

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

деленные процессы.

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

ные имена. При конструировании алгоритма в

 

 

 

 

 

a

 

 

 

 

б

 

 

INPUT1

 

 

 

 

 

блок-схему вместо самого процесса (который был

 

 

 

 

 

 

 

 

OUTPUT1

 

 

описан заранее) вставляют его условное обозначе-

 

 

(m, A)

 

 

 

 

 

 

 

 

 

 

 

 

 

(m, A)

 

 

 

 

 

 

 

 

 

 

 

 

 

ние с указанием имени предопределенного процес-

 

 

Ввод m

 

 

 

 

 

 

 

 

 

 

 

 

са и параметров, обеспечивающих связь предопре-

 

 

 

 

 

 

 

i=1, m, 1

 

 

 

 

 

 

 

 

 

 

 

i=1, m, 1

 

 

 

деленного процесса с общим алгоритмом. В любом

 

 

 

 

Вывод Ai

 

случае предопределенному процессу из основного

 

 

 

 

 

 

 

 

 

 

Ввод Ai

 

 

 

 

 

 

 

 

 

 

 

алгоритма передаются данные для обработки. По-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

сле выполнения предопределенного процесса, по-

 

 

i

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

Конец

 

 

 

 

 

 

 

 

 

 

 

Конец

 

 

 

величин, являющихся результатами расчета. Пере-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чень оговоренных параметров (как передаваемых

 

Рис.1.9 Предопределенные процессы:

 

предопределенному процессу, так и возвращаемых

 

ввода (INPUT1) и вывода (OUTPUT1)

 

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

значений элементов одномерного массива

14

Ввод Yi
Конец
i
Конец
Рис.1.10 Схема использования предопределенных процессов
i=1, n, 1
i
OUTPUT1
(n,Y)
i
Yi=f(Xi)
Yi=f(Xi)
i=1, m, 1
i
i=1, n, 1
INPUT1
(n,X)
Ввод Xi
Начало
Начало
Ввод n
i=1, n, 1

предопределенного процесса.

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

номерного массива X содержащего n элементов. Будем использовать предопределенные процессы: INPUT1 для описания

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

значений элементов одномерного массива. Следует отметить что при предвари-

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

ным процессам имена данных – формальные параметры. Так количество элементов

массива отражается переменной с именем m, а для массива используется имя A

(Рис.1.9).

При использовании предопределенных процессов в блок-схеме алгоритма (Рис.1.10) используются специальные символы, в которых вместо формальных пара-

метров подставляются фактические параметры – имена данных, используемые в разрабатываемой блок-схеме алгоритма: для указания количества элементов массива – n, а для одномерных массивов имена X и Y.

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

1.4. Некоторые приемы, используемые при разработке алгоритмов

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

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

Провести расчет значения функции y по условию:

 

y=f1(x) если a ≤ x ≤ b;

 

y=f2(x) в любом другом случае.

 

Для корректной формулировки условий ветвления рассмотрим числовую ось с вы-

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

 

На оси x можно выделить три области:

−

- ∞ ≤ x < a - интервал изменения x от - ∞ до a, но не включающий значение a;

−

a ≤ x ≤ b - замкнутый интервал (сегмент, отрезок) изменения x от a до b включая

 

значения a и b на границах отрезка;

 

 

15

− b < x ≤ + ∞ - интервал изменения x от b до +∞, но невключающий значение b.

 

y=f2(x)

y=f1(x)

y=f2(x)

x

 

x < a

a ≤ x and x ≤ b

x > b

 

a

 

b

 

 

Рис.1.11 Размещение областей действия функций на числовой оси

 

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

ции отношения <, ≤, =, ≠, ≥,

> и логические операции and, or, not (и, или, нет). Так как

согласно синтаксису алгоритмических языков записи вида a ≤ x ≤ b недопустимы, форму-

лировку условия a ≤ x ≤ b следует преобразовать в a ≤ x

and

x ≤ b. Т.е. две операции

отношений (a ≤ x), (x ≤ b) объединить логической операцией and.

 

 

Поэтому в рассмотренном примере необходимо использовать условия:

 

 

a≤x and x≤b

 

 

(a≤x и x≤b)

вместо

a≤x≤b;

 

 

x<a or x>b

 

 

 

 

(x<a или x>b)

вместо

«в любом другом случае».

 

 

Поскольку условия a ≤ x and

x ≤ b и x < a or x > b являются взаимно исключаю-

щими, для организации ветвления можно использовать только одно из них.

 

 

 

 

а

 

 

 

 

 

да б

 

 

 

 

 

 

 

 

 

 

в

 

 

 

 

 

 

г

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

a ≤ x

 

 

 

 

 

 

 

y=f2(x)

 

 

 

 

 

 

 

y=f1(x)

 

 

 

 

 

 

a ≤ x

and

 

 

y=f1(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

and

 

 

 

x ≤ b

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

да

 

x ≤ b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

a ≤ x

 

 

 

 

 

x< a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y=f1(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

and

 

 

 

 

 

or

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

x < a да

 

 

 

 

 

 

x ≤ b

 

 

 

 

 

x > b

 

 

 

 

 

 

 

 

 

 

 

 

or

 

 

 

y=f2(x)

 

 

 

 

 

 

 

 

 

y=f1(x)

 

 

 

 

 

 

y=f2(x)

 

 

y=f2(x)

 

 

x > b

 

 

 

 

 

 

нет

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.1.12 Варианты организации ветвления

 

 

 

 

 

 

 

 

 

 

Каждый из вариантов блок-схем представленных на рис.1.12 отражает рассмотренный алгоритм. Чаще всего используются варианты а и б. Варианты в и г используются реже, поскольку если условие ветвления выполняется, приходится дважды производить расчет искомой функции. Например, в варианте в независимо от условий всегда производится расчет y=f2(x), но если выполняется условие a≤x and x≤b значение y рассчитывается во второй раз (переопределяется) по зависимости y=f1(x).

При составлении блок-схем следует по возможности использовать компактное оформление ветвлений. Например, требуется установить возможность построения треугольника из трех отрезков, длины которых представлены значениями переменных a, b, c. Известно, что в любом треугольнике сумма длин двух любых сторон всегда больше длины третьей стороны. Варианты оформления оговоренного алгоритма представлены на рис.1.13. Схема a подробно отражает алгоритм, но громоздка. Схемы б и в компактны и удовлетворяют синтаксису алгоритмических языков. Обратите внимание на запись условия ветвления в схемах б и в. В тех случаях, когда требуется одновременное выполнение условий a+b>c, a+c>b, b+c>a используются логические операции and (и) объединяющие отдельные условия, отраженные операциями отношений (схема б). Если требуется выполнение хотя бы одного условия невозможности построения треугольника a+b<c, a+c<b, b+c<a (схема в), используются логические операции or (или).

16

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

 

 

 

да

 

 

 

 

а

 

 

 

 

б

 

 

 

 

 

в

 

 

a+b>c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

да

 

a+b>c

да

a+b<c

да

 

 

 

 

 

 

a+c>b

 

and

 

 

or

 

 

 

 

 

 

 

 

 

 

 

 

 

a+c>b

 

 

a+c<b

 

 

 

 

 

нет

 

 

 

 

 

да

 

and

 

 

or

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b+c>a

 

b+c>a

треугольник

b+c<a

треугольник

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

построить

 

 

 

 

построить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

можно

нет

 

 

 

нельзя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

треугольник

 

 

треугольник

 

 

треугольник

 

треугольник

 

 

 

 

 

 

 

построить

 

 

построить

 

 

построить

 

построить

 

нельзя

 

 

можно

 

 

нельзя

 

можно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.1.13 Варианты оформления ветвления

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

Например, необходимо выделить положительные значения переменной x, квадрат которых больше 0,1 и меньше 1. Так как область положительных значений x больше области 0.1<x2<1, то в первую очередь необходимо отделить положительные значения x, а потом удовлетворяющие условию 0.1<x2<1. Логическое условие для отделения значений x следует записать в виде: x>0 и (0.1<x2 и x2<1).

Обработка исключительных ситуаций. При разработке алгоритмов и программ для ПЭВМ практически всегда используется алгебраический подход. Т.е. при описании вычислений используются не численные значения данных, а их имена (наборы различных

символов: буквы, цифры и т.п.). Численные значения этим

 

 

 

 

 

 

 

 

 

 

 

 

данным присваиваются непосредственно во время выполне-

 

 

 

Начало

 

 

 

 

 

ния вычислений на ПЭВМ, и поскольку знать их заранее

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

INPUT1

 

 

 

 

 

чаще всего невозможно в определенных ситуациях некото-

 

 

 

 

 

 

 

 

 

 

 

(n,X)

 

 

 

 

 

рые вычислительные операции выполнить просто невоз-

 

 

 

Ввод a

 

 

 

 

 

можно (например, деление на ноль, вычисление логарифма

 

 

 

i=1, n, 1

 

 

 

 

 

отрицательного числа при положительном основании и т.

 

 

 

 

 

 

 

 

п.). Поэтому при разработке алгоритмов необходимо прово-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b=a+xi

 

 

 

 

 

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

 

 

 

b = 0

 

 

да

алгоритм блоки обрабатывающие подобные исключитель-

 

 

 

 

 

 

 

 

ные (сбойные) ситуации.

 

 

нет

 

 

 

xi, “расчет

 

 

 

 

 

 

 

 

 

 

 

 

Например, (Рис.1.14 ) необходимо произвести расчет

 

 

 

 

 

 

 

невозможен”

 

yi=a xi/b

 

 

 

 

 

 

 

 

 

 

 

 

по зависимости: yi=a xi/(a+xi), когда i=1,2,3…n.

 

xi, yi

 

 

 

 

 

Здесь возможна исключительная ситуация “деление на

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ноль”, когда значение a+xi=0. Поэтому в цикле до прове-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

дения расчета значения yi предусмотрено вычисление зна-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чения промежуточной переменной b= a+xi. Если значение

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

 

 

 

 

 

b отличается от нуля, проводится расчет yi и вывод значе-

 

 

Рис.1.14 Обработка

ний xi и yi. Если значение b равно нулю, то расчет yi не

 

 

исключительной ситуации

производится, а выводятся значение xi сопровождаемое со-

 

 

 

 

 

 

 

 

 

 

 

 

17

общением ”расчет невозможен”.

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

Подобным образом обрабатываются и другие исключительные ситуации.

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

На рис.1.15 рассмотрены два приема на-

 

 

 

а

 

 

 

б

 

 

 

 

 

 

 

 

 

 

 

 

хождения минимального значения элементов

i=1, n, 1

xmin= x1

одномерного массива X.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=2, n, 1

 

 

 

 

 

 

 

Для поиска минимального значения

i=1

да

 

 

 

 

 

 

 

 

xmin в цикле (вариант а) используется усло-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

or

 

 

 

 

 

 

 

 

да

вие i=1 или xi < xmin .

xi < xmin

 

 

 

 

xi < xmin

 

 

 

 

 

 

 

 

xmin=xi

 

 

 

 

При выполнении первого прохода цикла

нет

 

 

 

нет

 

 

 

xmin=xi

(i=1) переменной xmin присваивается значе-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

i

ние первого элемента массива x1. Поскольку в

 

 

 

 

 

дальнейших проходах циклах условие i=1 вы-

полняться не будет, анализ проводится по ус-

Рис.1.15 Поиск минимального значения

 

ловию xi < xmin и при выполнении этого усло-

вия переменной xmin присваивается значение элемента массива xi.

Если условие i=1 или xi < xmin не выполняется значение переменной xmin остается неизменным и осуществляется переход к следующему проходу цикла.

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

Аналогично осуществляется поиск максимального значения xmax (только условие ветвления меняется наi=1 или xi > xmax).

Вариант б используется реже (смысл его ясен из рисунка). Следует лишь обратить

внимание на организацию просмотра массива - значение параметра цикла i

изменяется

начиная с 2 (что не всегда удобно при работе с массивами).

 

 

 

 

 

 

 

 

 

Расчет накапливаемых сумм и накапливаемых произведений. На рис.1.16 а при-

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

 

 

 

 

 

а

 

 

б

и количества положительных элементов массива X.

s=0,

 

 

 

 

 

f = 1

k=0

 

 

 

 

 

 

Другими словами необходимо рассчитать накапли-

 

 

 

 

 

 

 

 

 

 

i=1, n, 1

i=1, n, 1

 

 

 

 

 

 

ваемые суммы:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

n

 

 

 

 

 

да

 

 

f=f i

 

s = ∑xi ,

k = ∑1.

xi>0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

 

 

 

 

 

 

i=1

i=1

нет

 

 

 

 

s=s+xi,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

xi >0

xi >0

 

 

 

k=k+1

 

 

 

 

 

 

В подобных случаях до осуществления подсче-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.1.16 Расчет на-

 

 

 

 

 

 

та в цикле накапливаемых сумм s и k их значения

 

i

 

 

 

 

 

капливаемых сумм и

обнуляем.

 

 

 

 

 

 

 

 

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

На рис.1.16б

приведен фрагмент блок-схемы

 

 

 

 

 

 

 

 

 

 

 

 

 

для вычисления факториала. Факториалом f целого числа n называется величина, получаемая путем последовательного перемножения ряда натуральных чисел от 1 до n:

n

f = ∏ i

i =1

18

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

На блок-схемах и в формулах часто используется сочетание двух символов для изображения факториала. Так сочетание символов n! отражает одно численное значение равное факториалу n.

Рассмотрим (Рис.1.17а ) более сложный вычислительный процесс с вложенными циклами и предопределенными процессами. Например, требуется провести расчет суммы n членов ряда имеющего вид:

z

≈ ∑n

x i

=

x 1

+

x 2

+

x 3

+ ...

x i

+ ...

x n

i!

1!

2!

3!

i!

n !

 

i =

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Врасчетной зависимости используется факториал.

Валгоритме на рис.1.17 используется разработанный ранее предопределенный про-

цесс «INPUT1».

До

выполнения

проходов

внешнего

 

 

Начало а

 

 

 

 

 

цикла значение накапливаемой суммы z об-

 

 

 

Начало б

нуляется.

Во внешнем

цикле с

подсчетом

 

 

INPUT1

 

 

 

 

 

числа проходов (параметр цикла i) вычисля-

 

 

(n,X)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

INPUT1

 

 

 

 

 

 

 

 

 

 

 

 

ется значение накапливаемой суммы z. При

 

 

z = 0

 

 

 

 

(n,X)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

каждом проходе внешнего цикла во вложен-

 

Внешний цикл

 

z = 0

 

 

ном цикле рассчитывается значения очеред-

 

 

i=1, n, 1

 

Цикл

ного члена ряда xi/i! и производится сумми-

 

 

 

 

 

 

 

 

 

 

 

 

i! = 1

 

 

 

 

 

 

 

 

 

 

 

i=1, n, 1

рование его со значением накапливаемой суммы

 

 

 

Вложенный

 

 

 

 

 

 

 

 

 

 

 

z. Таким образом, при каждом проходе внеш-

 

 

 

 

Расчет факториала

 

 

 

 

цикл

 

 

( i, i! )

 

него цикла значение z увеличивается на вели-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чину xi/i!.

 

 

 

 

 

 

i!=i! j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z = z + xi/i!

 

 

 

 

 

 

 

 

Вложенный цикл

 

 

 

Во вложенном цикле с подсчетом числа

 

 

 

 

Цикл

 

 

 

j

 

проходов (параметр цикла j) производится

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

расчет накапливаемого произведения (расчет

 

 

 

 

 

 

 

 

 

 

 

 

z = z + xi/i!

 

 

Вывод

значения факториала i!). Поэтому до прохо-

 

 

Внешний цикл

 

 

 

 

z

дов вложенного цикла накапливаемому про-

 

 

 

i

 

 

 

 

 

 

 

 

 

 

изведению i! присваивается значение равное

 

Вывод

 

Конец

единице.

 

 

 

 

 

 

 

 

 

 

 

z

 

 

 

 

 

Алгоритм предопределенного процесса

 

 

 

 

 

 

 

 

 

 

Конец

 

 

 

 

 

расчета значения факториала представлен на

 

 

 

 

 

 

 

рис.1.18. В предопределенный процесс из ос-

 

Рис.1.17 Вложенные циклы

 

 

 

 

 

новного алгоритма передается значение i, а

 

 

 

а - подробная схема;

предопределенный процесс передает основ-

 

 

 

б – компактное представление.

ному алгоритму рассчитанное значение факториала i!.

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

Чаще всего (как в рассмотренном алгоритме):

начальное значение накапливаемой суммы должно быть равным нулю;

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

пример, при расчете значения суммы членов ряда:

19

e x

≈ 1 + x

+ x

2

+ x

3

+ ...

x

i

+ ... x

n

= 1

n

 

i

Расчет факториала

 

 

 

 

 

+ ∑ x

 

(i,

i!)

 

 

1!

2!

3!

 

i!

n!

 

i =1

i!

i! = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В этом случае уместно назначить начальное значение накап-

 

Цикл

 

ливаемой суммы равное 1, поскольку после завершения проходов

 

j=1, i, 1

 

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

 

 

i!=i! j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итерационный вычислительный процесс основан на ис-

Цикл

 

пользовании метода последовательных приближений («метода ите-

 

j

 

раций»). Сущность метода заключается в последовательном уточне-

Конец

 

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

 

Рис.1.18 Расчет

 

приблизительно (в первом приближении). Причём в каждом после-

факториала

 

дующем проходе цикла (итерации) для определения уточнённого

 

 

 

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

ла.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Такие вычисления проводятся до

 

тех пор, пока изменение значения переменной на

двух соседних итерациях не станет меньше установленной ранее величины (итерационно-

го допуска).

 

 

 

 

 

 

 

 

 

 

 

 

 

Начало

а

Начало

б

Классическим

условием

окончания итераци-

 

 

онного вычислительного процесса по абсолютному

Ввод

Ввод

 

 

 

x0, ε

 

x0, ε

 

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

 

 

|xm -xm-1|≤ε

 

 

 

 

 

 

 

 

 

 

 

 

где: xm и xm-1 - значения переменной на текущей

 

 

xm-1=x0

 

xm-1=x0

 

(m) и предыдущей (m-1) итерациях,

m - номер ите-

 

 

 

 

 

рации, ε - абсолютный итерационный допуск.

 

 

 

 

 

 

Repeat

 

На рис.1.19 приведена блок - схема нахожде-

 

xm=f(xm-1)

 

 

 

ния корня

уравнения x=f(x)

методом простых

Вывод

xm=f(xm-1)

 

итераций.

 

 

 

 

 

 

 

 

 

 

 

 

 

xm

Вывод

 

Корнем уравнения x=f(x) называют такое зна-

 

 

 

 

 

 

 

xm

 

чение x, подстановка которого в уравнение превра-

 

 

 

 

 

 

a= xm-xm-1

 

 

 

щает его в тождество.

 

 

 

 

 

 

 

 

 

 

a= xm-xm-1

 

В начале вычислительного процесса в память

 

 

 

 

 

 

xm-1=xm

 

 

 

ПЭВМ вводят значение корня, принятое в первом

 

 

 

xm-1=xm

 

 

 

 

 

 

приближении (x0) и значение абсолютного итера-

 

 

 

да

Until a ≤ ε

 

ционного допуска ε.

 

 

 

 

 

 

 

 

 

 

 

 

a ≤ ε

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В процессе прохода циклов для расчета зна-

нет

 

Конец

Конец

 

чения xm (значение корня на текущей итерации) ис-

 

 

 

 

пользуют значение xm-1 (значение корня на преды-

 

Рис.1.19 Итерационный процесс

 

дущей итерации). Вот почему перед началом цик-

 

 

 

 

а – функциональная схема;

 

лических вычислений выполняют присвоение xm-

 

 

 

 

 

б – компактная схема.

 

1=x0.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При каждом проходе цикла определяют уточненное значение корня xm, выводят (ес-

ли необходимо) полученную величину и определяют рабочую переменную a = | xm - xm-1|,

значение которой понадобится в конце каждого прохода цикла для проверки условия за-

вершения итерационного цикла (a ≤ ε). Если это не сделать, то после переопределения ве-

личины xm-1= xm, проверку условия окончания циклов выполнить невозможно.

 

 

Операция xm-1= xm необходима для перехода к следующему проходу цикла и назы-

вается - переопределение величины xm-1. Уточнения значения корня уравнения x=f(x)

будут повторяться до тех пор, пока не выполнится условие |xm - xm-1|≤ ε.

 

 

 

 

 

 

 

 

 

 

 

20

 

 

 

 

 

 

 

 

Можно использовать и несколько более строгое условие окончания итерационного процесса |xm - xm-1|<ε.

При разработке алгоритмов итерационных циклических вычислений следует обращать внимание на сходимость итерационного процесса. Итерационный процесс сходится, если от итерации к итерации величина |xm - xm-1| непрерывно уменьшается.

Если итерационный процесс не сходится, то получить решение невозможно. В этом случае имеет смысл попытаться использовать другой метод (алгоритм) нахождения корня. Более подробно некоторые алгоритмы нахождения корней алгебраических и трансцендентных уравнений приведены в 3-ей части данного пособия.

Итерационный расчет суммы членов ряда. При работе с рядами

 

обычно суммируется заданное число членов ряда в цикле с подсчетом чис-

s = 0,

ла проходов (см. рис.1.17). Однако в ряде случаев при расчете желательно

k = 1

оценивать сходимость ряда, т.е. проводить суммирование с оценкой воз-

 

можной погрешности в определении суммы членов ряда. Следует отме-

a=1/xk

тить, что точное определение погрешности затруднительно, но оценить ее

 

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

да

Например (рис.1.20), необходимо с допуском ε определить сумму членов

a < ε

ряда:

 

 

 

 

 

нет

s ≈ 1 +

12 +

13 + L +

1k

+ L = ∑

1k

s = s+a,

x

x

x

x

k =1

x

k = k+1

До проведения суммирования обнуляется значение накапливаемой

 

суммы s и устанавливается начальное значение переменной k. При каждом Рис.1. 20 Сумма

проходе цикла значение очередного члена ряда a=1/xk сравнивается с

членов ряда

итерационным допуском и если оно больше или равно допуску произво-

 

дится суммирование и подготовка к следующему проходу (k=k+1), а если меньше, то

осуществляется выход из цикла.

 

 

 

 

Приемы работы с массивами.

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

В одномерном массиве одним индексом (одна координата);

В двухмерном массиве двумя индексами (две координаты).

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

Максимальное значение индекса указывает его размер по данной координате. Обычно для индексации элементов массива используют переменные с именами i,

j, а для указания размеров массивов n, m.

Ниже представлены структуры: одномерного массива (Рис.1.21) и двухмерного мас-

сива (Рис.1.22).

 

 

 

 

 

 

 

 

 

 

 

 

Изменение индекса i →

 

 

 

 

Размер массива ↓

 

1

2

3

4

…

i-1

i

i+1

…

n-2

n-1

n

 

X1

X2

X3

X4

…

Xi-1

Xi

Xi+1

…

Xn-2

Xn-1

Xn

21

← Изменение индекса i ↓ Размер массива по координате i

 

 

 

 

Рис. 1. 21 Структура одномерного массива.

 

 

 

 

 

Изменение индекса j →

 

Размер массива по координате j ↓

 

1

 

2

3

…

j-1

j

j+1

 

…

m-1

m

 

 

 

 

 

 

 

 

 

 

 

 

 

1

X1,1

 

X1,2

X1,3

…

X1,j-1

X1,j

X1,j+1

 

…

X1,m-1

X1,m

2

X2,1

 

X2,2

X2,3

…

X2,j-1

X2,j

X2,j+1

 

…

X2,m-1

X2,m

:

:

 

:

:

 

:

:

:

 

 

:

:

i-1

Xi-1,1

 

Xi-1,2

Xi-1,3

…

Xi-1,j-1

Xi-1,j

Xi-1,j+1

 

…

Xi-1,m-1

Xi-1,m

i

Xi,1

 

Xi,2

Xi,3

…

Xi,j-1

Xi,j

Xi,j+1

 

…

Xi,m-1

Xi,m

i+1

Xi+1,1

 

Xi+1,2

Xi+1,3

…

Xi+1,j-1

Xi+1,j

Xi+1,j+1

 

…

Xi+1,m-1

Xi+1,m

:

:

 

:

 

 

:

:

:

 

 

:

:

n-1

Xn-1,1

 

Xn-1,2

Xn-1,3

…

Xn-1,j-1

Xn-1,j

Xn-1,j+1

 

…

Xn-1,m-1

Xn-1,m

n

Xn,1

 

Xn,2

Xn,3

…

Xn,j-1

Xn,j

Xn,j+1

 

…

Xn,m-1

Xn,m

Рис. 1.22 Структура двухмерного массива.

Для квадратной матрицы (двухмерный массив с одинаковыми размерами по обеим координатам n=m) существует понятие “главная диагональ”, которая объединяет элемен-

ты массива с индексами 1,1; 2,2; 3,3; … i,i;…n,n.

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

Обработка массивов с шагом индекса отличным от 1. Если необходимо обраба-

тывать не все элементы массива подряд, а с ша-

 

 

 

 

Начало

а

 

 

Начало б

 

 

Начало c

гом индекса (параметра цикла) большим 1 ис-

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

пользуют приемы рассмотренные на Рис.1.23.

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

Например, необходимо провести расчет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

по формуле Y=f(X) для каждого k-го элемента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1,n,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1,n,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1,n,1

массива X размером n. Можно использовать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цикл с заданным числом проходов с парамет-

 

 

 

 

 

Xi

 

 

 

 

 

 

 

 

 

Xi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi

ром цикла i изменяющимся от 1 до m=n/k с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

i

 

 

шагом 1 (вариант а). Следует отметить, что m –

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

целая часть от деления n/k. Для индексации

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m=n/k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=k

 

 

 

 

 

i=1

 

обрабатываемых элементов массива использу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ется дополнительная переменная p=i k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1,m,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

While i≤n

 

 

 

 

While i≤n

 

 

Другой подход (вариант б) заключается в

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p=i k

 

 

 

 

 

 

Yi=f(Xi)

 

 

 

 

Yi=f(Xi)

 

использовании цикла While с параметром цикла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i изменяющимся от значения k до максималь-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод

 

 

 

 

 

 

 

Вывод

 

 

 

 

 

 

 

 

Yp=f(Xp)

 

 

 

 

 

 

 

Xi,Yi

 

 

 

 

 

 

 

Xi,Yi

 

 

ного значения ≤ n с шагом k. Переопределе-

 

Вывод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ние параметра цикла производится после обра-

 

 

 

 

Xp,Yp

 

 

 

 

 

 

 

 

 

i=i+k

 

 

 

 

 

i=i+k

 

 

ботки очередного элемента массива X по фор-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

муле i=i+k.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если необходимо обрабатывать элементы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

 

 

 

 

 

 

 

Конец

 

 

 

Конец

массива, начиная с первого, то используют ал-

 

 

 

Рис. 1.23

 

Обработка одномерных массивов

22

горитм варианта б, но параметр цикла изменяется от 1 до n с шагом k (вариант c). Обработка данных на отрезках. В ряде расчетов задаются пределы изменения не-

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

Например, следует получить массив результатов Y, используя расчет по формуле Yi=f(Xi), когда изменение величины X задается в виде: Xmin≤Xi≤Xmax и число точек (зна-

чений Xi ) на отрезке [Xmin

, Xmax] равно n.

 

 

 

 

 

 

 

 

Начало

a

 

 

 

 

 

 

 

 

 

Начало б

 

Предварительно определяется шаг

изме-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

 

 

 

 

нения аргумента путем деления длины отрезка

Ввод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xmin, Xmax, n

 

 

 

 

 

 

 

Xmin, Xmax, n

 

 

 

 

 

 

 

 

 

 

на количество шагов, которое на 1 меньше за-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данного количества точек n:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X max − X min

 

 

 

 

 

 

 

∆X =

X

max

−X

min

 

 

 

 

n = 1 +

 

 

 

∆X=(Xmax-Xmin)/(n-1).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

∆X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n −1

 

 

 

 

 

 

 

∆X* =

Xmax − Xmin

 

 

Для обработки массива X используется цикл с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n −1

 

 

подсчетом числа проходов. Параметр цикла i

 

 

 

 

 

 

 

 

i=1,n,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

изменяется от 1 до n с шагом 1, а расчет теку-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i=1,n,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi=Xmin+∆X (i-1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi=Xmin+∆X* (i-1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ле:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Yi=f(Xi)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi=Xmin+∆X (i-1).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Yi=f(Xi)

 

 

 

 

 

 

 

 

 

 

 

Вывод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом: X1=Xmin,

X2=Xmin+∆X,

…,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi,Yi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Xi,Yi

 

 

 

 

 

 

 

 

Xn=Xmax. Блок-схема подобного алгоритма при-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ведена на рис.1.24 (вариант a).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

Реже задаются пределы изменения пере-

 

 

 

 

 

 

 

 

Конец

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

менной (аргумента) и шаг изменения ее вели-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

 

чины, но результаты расчета, как и ранее, тре-

 

 

 

Рис. 1.24

Обработка данных на отрезках

 

буется оформить в виде массивов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Например, следует получить массив результатов Y, используя расчет по формуле Yi=f(Xi), когда величина X изменяется в пределах: Xmin≤Xi≤Xmax с шагом ∆X. В этом случае предварительно определяется n - число точек на отрезке [Xmin , Xmax] по формуле n=1+(Xmax-Xmin)/∆X. В приведенной формуле учтено, что рассматриваемый отрезок (закрытый интервал) [Xmin , Xmax]включает граничные точки. Так как результат деления (Xmax-Xmin)/∆X не является целым числом, то производится его преобразование в целое путем округления или отсечения дробной части. Следовательно при определении Xmax= Xmin+∆X (n-1)возможна ошибка. Поэтому рассчитывается новое (уточненное) значение шага ∆X*=(Xmax-Xmin)/(n-1), которое может несколько отличаться от заданного ∆X, но при этом в расчете будет обрабатываться Xn= Xmax. Блок-схема подобного алгоритма приведена на рис.1.24 (вариант б).

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

условию. Пусть имеется одномерный массив X содержащий n элементов. Требуется

из

элементов этого массива имеющих положительные значения сформировать массив Y,

причем количество элементов массива Y заранее неизвестно.

 

Блок-схема, отражающая оговоренный алгоритм приведена на рис.1.25.

 

Используются следующие индексы элементов массивов: для массива X - i,

для

массива Y - j.

Как видно из рисунка, при формировании массива Y до циклических процедур обнуляется значение индекса j, а затем для просмотра массива X организуется цикл с парамет-

23

ром i. При выполнении каждого прохода цикла проверяется условие xi<0. Если условие

не выполняется (значение xi положительно

Начало

j=0

 

или равно нулю), то производится расчет ин-

Ввод

 

i=1,m,1

декса j и значение элемента заданного масси-

n

i=1, n, 1

Вывод

 

ва xi присваивается элементу формируемого

i=1,n,1

да

yi

массива yj. Если условие xi<0 выполняется,

Ввод

xi < 0

i

то осуществляется переход к следующему

xi

нет

 

проходу цикла.

i

j = j+1

Конец

После завершения проходов цикла по-

yj=xi

 

 

 

следнее значение индекса j присваивается пе-

 

 

 

ременной m (количество элементов массива Y)

 

i

 

значение которой используется для вывода

 

m = j

 

значений элементов массивом Y. В рассмот-

 

 

ренном алгоритме принято, что ноль относит-

Рис. 1.25

Формирование одномерного массива.

ся к положительным числам.

 

 

 

Обработка двухмерного массива. На рис.1.26 представлен фрагмент блок-схемы обработки двумерного массива (матрицы). Подобные массивы имеют строки и столбцы. В

нашем случае номер строки (сверху вниз) отражается индексом i, а

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

номер столбца (слева направо) отражается индексом j. На пересе-

 

i =1,n,1

 

 

 

 

 

 

чении i-ой строки и j-го столбца располагается элемент массива xij.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z = 0

 

 

 

 

 

 

Количество строк – n, количество столбцов – m.

 

 

 

 

 

 

 

 

k = 0

 

 

 

 

 

 

В рассмотренном алгоритме для каждой строки рассчитывает-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ся среднее арифметическое значение (si) ее элементов удовлетво-

 

j =1,m,1

 

 

 

 

 

 

ряющих заданному условию xij< 2 (ищется сумма подобных эле-

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ментов строки z и ее значение делится на количество суммируемых

 

xij < 2

 

 

 

 

 

 

 

 

 

 

 

 

 

элементов k).

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z = z + xij

Внешний цикл с параметром цикла i обеспечивает просмотр

 

 

 

 

 

 

 

 

k = k + 1

строк (i=1,2,3…n). Во вложенном цикле с параметром j после-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

довательно (j=1,2,3…m) просматриваются элементы i-ой строки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j

 

 

 

 

 

 

и производится расчет накапливаемых сумм z и k.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Перед вложенным циклом производится обнуление накапли-

 

k=0

 

 

да

ваемых сумм z и k. Затем выполняется m проходов вложенного

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

цикла и по их завершению производится расчет среднего арифме-

 

 

 

 

 

 

 

 

 

 

si =0

 

 

 

 

 

z

 

 

 

тического значения si. Если в строке отсутствуют элементы масси-

 

si =

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

ва, удовлетворяющие условию xij< 2, то после просмотра строки

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k=0 и возникает исключительная ситуация (деление на ноль). В

 

 

 

i

 

 

 

 

 

 

этом случае расчет переменной si не производится и ей присваива-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ется значение равное нулю.

Рис.1.26

Расчет

Результатом выполнения рассмотренного процесса будет од-

среднего значения

номерный массив S, содержащий n элементов.

Обработка главной диагонали квадратной матрицы. В некоторых прикладных за-

дачах обработке подлежит не вся матрица, а только ее диагональ. Например, следует найти максимальное значение отрицательных элементов главной диагонали матрицы размером (n,n). Элементы главной диагонали матрицы имеют одинаковые значения индексов i и j поэтому при просмотре главной диагонали используется цикл с подсчетом числа проходов когда в качестве параметра цикла используется только один индекс i изменяющийся от 1 до n с шагом 1.

24

Следует отметить, что в рассматриваемой блок-схеме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

для обеспечения определения максимального из отрицатель-

 

 

k = 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ных значений xii используется рабочая переменная k. До цикла

 

i =1,n,1

 

 

 

 

 

переменной k присваивается значение равное 1. Введение та-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

кой рабочей переменной позволяет успешно использовать рас-

 

 

Xii<0 и

да

смотренный ранее (Рис.1.15) алгоритм нахождения минимакс-

 

 

 

 

 

 

 

 

 

(i=1 или

 

 

 

 

 

ных значений

 

 

 

 

 

x ii<xmax)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

xmax= xii

Задача сортировки. В практике вычислений встречают-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k=k+1

ся задачи, когда с целью упорядочения размещения элементов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

массивов производится их перестановка (сортировка). Чаще

 

 

 

i

 

 

 

 

 

всего производится сортировка по возрастанию (убыванию)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

численных значений элементов массивов.

 

 

Рис. 1.27 Обработка главной

Рассмотрим наиболее простой способ сортировки, кото-

 

диагонали матрицы

рый называется «сортировка посредством перестановки по

 

 

 

 

 

 

 

 

 

 

 

 

 

 

индексам». Фрагмент блок-схемы такого вычислительного

 

 

 

 

 

 

 

 

 

 

 

 

 

 

процесса приведен на рис.1.28.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n = N-1

 

 

 

 

 

Задан массив X содержащий N элементов. Необходимо

 

 

i =1,n,1

 

 

 

 

 

переставить

элементы данного массива, расположив их

 

по

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

возрастанию численных значений.

 

 

 

 

k = i+1

 

 

 

 

 

 

 

 

 

 

m = i

 

 

 

 

 

До выполнения проходов внешнего цикла с параметром

 

 

 

 

 

 

 

 

 

 

j = k,N,1

 

 

 

 

 

i рассчитывается значение рабочей переменной n (индекс

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

предпоследнего элемента массива). Процесс сортировки

на-

 

 

 

xj ≤xm

 

 

 

 

 

чинается с

первого элемента массива. Последовательными

 

нет

 

 

 

 

 

 

 

 

 

 

 

m = j

 

сравнениями во вложенном цикле ищется наименьший эле-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мент массива, причем в процессе поиска запоминается индекс

 

 

 

 

 

 

 

j

 

 

 

 

 

текущего наименьшего элемента m = j. После того как про-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

смотрен N

-ый

элемент массива, можно поменять местами

1

-ый

 

 

 

p = xi

 

 

 

 

 

 

 

 

 

 

 

xi = xm

 

 

 

 

 

элемент с наименьшим элементом, индекс которого в этот мо-

 

 

 

xm = p

 

 

 

 

 

мент известен. Затем эта процедура повторяется, начиная со

 

 

 

 

 

 

 

i

 

 

 

 

 

второго, с третьего, …, и, наконец, с предпоследнего элемента

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

массива.

 

 

 

 

 

Рис.1.28 Сортировка с

Операция перестановки элементов массива выполняется

перестановкой по индексам

с использованием рабочей переменной p, которая использует-

ся для временного (на период перестановки элементов) хранения значений данных (как буферное запоминающее устройство в ЭВМ).

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

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

рим разработку блок-схемы алгоритма нахождения корней квадратного уравнения a x2 + b x + c = 0.

Как известно в зависимости от величины дискриминанта

 

d =

b2 – 4ac воз-

можны следующие варианты:

 

 

 

 

 

 

 

 

 

 

d > 0

-

корни вещественные и разные :

x1

=

−b + d

,

 

x2 =

−b −

d ;

 

 

 

 

 

2a

 

 

 

 

 

2a

 

d = 0

-

корни вещественные и равные :

 

 

x 1 = x 2

 

=

 

- b

;

 

 

 

 

 

2a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

25

 

 

 

 

 

 

 

 

 

 

d < 0 -

корни комплексные :

x1 =α+βi, x2 =α−βi,

α=

- b

, β=

d

;

 

 

 

 

2a

 

2a

 

где i =

−1 - мнимая единица.

 

 

 

 

 

 

Один из вариантов блок-схемы рассмотренного алгоритма представлен на рис.1.29. До организации ветвлений определяется

 

 

 

 

Начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

значение

дискриминанта

d

 

необходимое для

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод a,b,c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

анализа ситуации. Первое ветвление по условию

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d

≥ 0

позволяет выделить ветви соответст-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d=b -4ac

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вующие случаю вещественных корней, а второе

 

 

 

 

 

 

 

 

 

 

 

 

then

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ветвление по условию d

 

=

0 выделяет ветвь,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d ≥ 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

соответствующую случаю равных корней.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

then

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

else

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В данной схеме одна операция предусмат-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α =

 

- b

,

 

 

 

else

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ривается для вывода значений вещественных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2a

 

 

 

x1

=

 

 

− b +

d

,

 

 

 

 

 

корней (как различных, так и равных).

Другая

 

 

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

2a

 

 

 

 

 

 

 

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

 

 

β =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 a

 

 

 

 

x 2 =

− b −

d

 

 

 

 

случая комплексных корней, когда выводятся:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2a

 

 

 

 

 

 

 

 

 

значение вещественной части комплексного кор-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ня (α) и величина коэффициента при мнимой

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x1 = x 2

= - b

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

части (β).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод α, β

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2a

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Более глубокий анализ вычислительной си-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

туации показывает, что значения каждого из ко-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод x1, x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

эффициентов уравнения могут быть равными

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нулю, а это ведет уже к изменению структуры

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Конец

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

уравнения.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 1.29

Расчет корней

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Так при a=0 получается линейное уравне-

 

 

 

 

 

 

 

квадратного уравнения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ние bx+c=0, корень которого x=c/b. В этом слу-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

чае алгоритм представленный на рис.1.29 непри-

меним. Если коэффициенты a=0 и b=0 то решения не существует.

 

 

 

 

 

 

 

 

 

 

Поэтому для общего случая, когда заранее величины коэффициентов неизвестны,

имеет смысл использовать алгоритм представ-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ленный на блок-схеме рис.1.30. В этой блок-

 

 

 

да

 

 

 

 

 

 

 

 

схеме в качестве предопределенного процесса

a=0

 

 

 

 

да

 

 

 

 

 

 

 

 

используется

 

 

описанный ранее

алгоритм

вы-

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b=0

 

 

 

 

 

 

 

 

 

 

 

числения корней квадратного уравнения пред-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EQUATION

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ставленный на рис.1.29.

 

 

 

 

 

 

 

 

 

 

 

 

(a,b,c)

 

 

 

 

 

 

Решения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Организация ветвящихся алгоритмов мо-

 

 

 

 

 

 

 

 

 

 

x=c/b

 

 

нет

жет осуществляться в различных формах, но

 

 

 

 

 

 

 

 

Вывод x

 

 

 

всегда

необходимо

учитывать

особенности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

операторов алгоритмического языка,

на кото-

Рис.1.30 Схема нахождения корней уравне-

ром в последствии будет составлена програм-

 

 

 

ния a x2+b x+c=0

 

 

ма, реализующая алгоритм.

 

 

Особое внимание

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

следует обращать на формулировку логических условий ветвления.

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

26