Блок-схема

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

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

переменная выражение

Здесь переменная — это символическое имя некоторой ячейки памяти, а выражение представляет собой обычно алгебраическое выражение, значение которого присваивается переменной (помещается в память по соответствующему адресу). Стрелкой-«-изображается операция записи в память. Таким образом, приведенный выше блок означает следующее: «Вычислить выражение справа от стрелки и записать результат по адресу, задаваемому символическим именем, расположенным слева от стрелки». В качестве примера мы можем рассмотреть блок

x?y2-2

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

Статья 431 - Картинка 1

Можно также поместить оба предложения в один блок:

Статья 431 - Картинка 2

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

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

Статья 431 - Картинка 3

Аналогичнаблок конец символизирует окончание блок-схемы:

Статья 431 - Картинка 4

Информация, вводимая с перфокарт, обозначается на блок-схеме в виде блока, по форме напоминающего перфокарту. Внутри такого блока пишутся имена ячеек, в которые был осуществлен ввод. Так, например, блок

Статья 431 - Картинка 5

означает «Считать три числа с перфокарт и запомнить первое по адресу х, второе — по адресу у, и третье — по адресу z». Вывод на печать обозначается на схеме в виде блока, по форме напоминающего неровно оторванный лист выдачи. Список имен ячеек, содержимое которых должно быть распечатано, приводится внутри блока.

Статья 431 - Картинка 6

означает «Распечатать содержимое ячеек а, bи с».

Отдельные блоки блок-схемы соединяются с помощью стрелок. При чтении блок-схемы мы просто просматриваем ее в порядке, определяемом направлением стрелок, предполагая, что при прохождении каждого из блоков выполняются соответствующие ему вычисления. На рис. П.1 приведена блок-схема программы, вводящей с карт два числа, S иТ, вычисляющей их сумму SUM, разность DIF и распечатывающей результаты в порядке S, Т, SUM и DIF.

Статья 431 - Картинка 7

Простая блок-схема.

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

Статья 431 - Картинка 8

ЭТОТ блок соответствует проверке текущего содержимого ячейки памяти с именем А. Если в момент перехода к этому блоку содержимое А было равно 10, то порядок продолжения вычислений определяется стрелкой ДА. В противном случае нужно идти по стрелке НЕТ.

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

Статья 431 - Картинка 9

или блоками такого вида:

Статья 431 - Картинка 10

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

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

2+bх+с=0

При этом предполагается, что а и с не равны 0. Корни уравнения, как известно, определяются по формуле

Статья 431 - Картинка 11

В блоке проверки условий исследуется значение дискриминанта D=b2—4ас. Если D положителен, то у нас получаются действительные корни, как и отмечено на блок-схеме. Значения корней вычисляются и распечатываются с соответствующим заголовком. (Распечатываемый заголовок на блок-схеме обозначается с помощью последовательности символов, заключенных в кавычки.) В случае когда D отрицателен, вычисляются действительные и мнимые части корней, REAL и IMAG, и также распечатываются с соответствующими заголовками. Просмотрите блок-схему рис. П.2 и убедитесь в том, что если значениями коэффициентов уравнения, вводимых с перфокарт, являются соответственно 1,2 и 5, то в результате работы программы будет распечатана следующая выдача:

Статья 431 - Картинка 12

Рис. Блок-схема программы для решения квадратных уравнений.

COMPLEX ROOTS REAL PART IS 1 IMAGINARY PART IS 2

Если же коэффициенты равны соответственно 1, 1 и — 6, то полученная выдача будет содержать

REAL ROOTS

2 -3