Файл: Брага, В. В. Основы технологии машинной обработки статистической информации [учеб. пособие].pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 17.10.2024
Просмотров: 143
Скачиваний: 0
В разделе процедур описывается последовательность операций обработки данных. Каждая операция в этом разделе представля ется в терминах, имеющих определенный смысл. Этот раздел оди наков для всех типов машин.
РАЗДЕЛ ПРОЦЕДУР знает операции, которые должны быть выполнены при решении данной задачи. Наиболее важным элемен том раздела процедур является глагол. Глаголы бывают:
арифметические: ВЫЧИСЛИТЬ; ввода—вывода: ЧИТАТЬ, ПИСАТЬ, ОТКРЫТЬ, ЗАКРЫТЬ,
ПРИНЯТЬ, ВЫВЕСТИ; выбора последовательности вычислений — ПЕРЕЙТИ, ВЫПОЛ
НИТЬ;
. перемещения данных — ПЕРЕМЕСТИТЬ, ПРОСМОТРЕТЬ; прекращение вычислений — ОСТАНОВИТЬ и ряд других. Каждый глагол выполняет в программе одну или несколько
функций. Так, например, глагол ПЕРЕМЕСТИТЬ дает возмож ность передать данные с одного поля на другое или несколько дру гих полей. (Поле, или зона, — это место (в памяти ЭВМ) хранения определенных данных для дальнейшей обработки или для печати.)
Глаголы ОТКРЫТЬ и ЗАКРЫТЬ соответственно начинают и прекращают операции над массивами, т. е. по команде ОТКРЫТЬ транслятору сообщается, что одни массивы будут использоваться в качестве входных, другие в качестве выходных; по команде ЗА КРЫТЬ выполняются операции, завершающие обработку мас сивов.
Глаголы ЧИТАТЬ и ПИСАТЬ вводят и выводят логические записи, т. е. по этим командам данные, записанные ранее на ма шинные носители, заносятся в оперативную память машины или выводятся из нее.
Программа ввода данных обычно строится так, что после чте ния и обработки одной записи возвращаются к чтению следующей записи, и так до тех пор, пока не будут прочитаны и переработаны все записи.
Глагол ОТКРЫТЬ обозначает начало обработки массива или нескольких массивов. Предписание об открытии массивов должно быть сделано раньше предписания ЧИТАТЬ или ПИСАТЬ. Нужно отметить, что каждый массив, упоминаемый в предписании ОТ КРЫТЬ, должен быть указан в разделе данных под рубрикой ОМ (описание массивов).
Глаголы ЧИТАТЬ и ПИСАТЬ служат для ввода и вывода за писей в машину и из машины.
Глагол ЧИТАТЬ служит для ввода записи из вводимого мас сива в оперативную память ЭВМ и делает ее доступной для обра ботки, а глагол ПИСАТЬ — для перенесения записи в выводимый массив.
Команды перемещения данных, состоят из глаголов ПЕРЕМЕ СТИТЬ и ПРОСМОТРЕТЬ. Глагол ПЕРЕМЕСТИТЬ служит для перемещения данных внутри машины с одного места памяти на
62
другое. Данные в исходном поле при этом сохраняются. При пе ремещении должны соблюдаться определенные правила: зоны, в которые происходит перемещение, должны по размерам соответ ствовать зонам, из которых происходит перемещение данных. В принимающей зоне можно заменять нули на пробелы, можно поставить десятичные точки и запятые, которые определяют рас положение перемещаемого числа.
Для выполнения арифметических операций данные должны быть представлены в цифровом элементарном виде. Данные для
алгебраических операций определяются |
с помощью шаблона, и |
|
это означает, |
что результат выполнения |
операции будет выражен |
абсолютными |
числами.' |
|
Операция ВЫЧИСЛИТЬ производит: сложение чисел с разме щением результата в последней операнде., Максимально можно сложить данные десяти операнд. Результатом не может быть опе
ранда, в которой размещена постоянная |
величина (константа): |
||
вычитание нескольких величин из |
одного числа |
с |
размеще |
нием результата, как и при сложении, |
в последней |
операнде; |
|
умножение двух чисел с определением результата. |
Результат |
||
всегда располагается в последней операнде; |
|
|
деление одного числа на другое; результат размещается в по следней операнде. Остаток от деления в КОБОЛе не может быть использован.
Для всех арифметических операций применяется округление, если, конечно, оно необходимо. Кроме того, возможна проверка делителя на нуль.
КОБОЛ построен на базе английского языка, и запись про грамм на КОБОЛе с применением лексики русского языка не сколько затруднительна из-за того, что слова КОБОЛа' не скло няются и не изменяются по падежам. Но независимо от этих осо бенностей программы, написанные на КОБОЛе, в русском варианте могут быть транслированы в язык машины.
Организация ввода данных и вывода их из ЭВМ — одна из са мых сложных работ. Для организации этой работы вместе с глаго лами ввода и вывода употребляется понятие (артикль) или за пись. При обработке данных этот термин означает один элемент или несколько сгруппированных элементов.
|
|
Запись |
|
|
9999 |
99999 |
999 |
9999 |
99999 |
элемент |
элемент |
элемент |
элемент- |
элемент |
Примером могут служить данные об объеме продукции, о зара ботной плате работающего и т. д. Все данные документа, относя щиеся к одному работающему, и будут составлять содержание од ной записи. С одного документа, заполненного на работающих, допустим на одном предприятии, формируется массив записей. Та-
ва
ким образом, если в задаче участвует несколько видов документов, создается несколько массивов записей. Массив — последователь ность связанных общим отношением артиклей, записанных на об щий носитель информации. Массив может быть двух типов: мас
сив, содержащий |
одинаковые |
артикли одной |
и той же длины и |
структуры и массив, составленный из артиклей |
переменной длины |
||
и различной структуры. |
|
|
|
Программирование на алгоритмическом языке КОБОЛ рассмот- |
|||
трим на примере |
конкретной |
задачи. Прежде |
всего программист |
описывает массивы и составляет блок-схему к задаче.
1. Описание массивов. Имеется два массива данных: M l и М2.
В каждом из этих массивов содержится некоторое количество за писей определенной структуры. Массив M l состоит из записей (ЗАП 1), содержащих следующие данные:
NI7P |
|
|
НАЗВ |
|
|
|
|
|
С О — |
НЗ |
|
I I I I I I I I 1 I I I I I I I I I I I I I I I 1 I I I I I I I I I I I 1. |
|||||||||||
где № ПР — шифр продукта |
(четырехзначный) ; |
|
|||||||||
НАЗВ —наименование продукта |
(20 знаков) ; |
|
|||||||||
|
СО — остаток на начало периода разработки |
(6 знаков); |
|||||||||
|
НЗ — нормативные запасы |
(6 знаков). |
|
|
|||||||
Массив М2 состоит из записей |
(ЗАП 2), содержащих |
следующие |
|||||||||
данные: |
|
|
|
|
|
|
|
|
|
п |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
NI1P1 |
|
|
|
|
|
К |
|
|
|
Р |
I |
I |
I |
I |
I |
|
I |
I |
I |
I |
I |
I . |
где № |
ПР 1 — шифр продукта |
(четырехзначный) ; |
|
||||||||
|
К — количество |
(5 знаков); |
|
|
|
|
|||||
|
П — отличительная |
отметка |
прихода |
] |
|
||||||
|
(Р — отличительная |
|
|
|
|
|
} 1 знак. |
||||
|
отметка |
расхода |
) |
|
|||||||
2. |
Составление |
блок-схемы. |
|
Блок-схема |
составляется по зара |
нее составленной схеме описания задачи. Предположим, в нашей
схеме заданы такие |
условия: |
|
|
|
|
|
1. |
Если № ПР и № ПР1 не совпадают, перейти к печати ошибки. |
|||||
2. |
Если в записи |
ЗАП2 — код П |
(приход), |
сделать |
сложение: |
|
СО + |
К = Н О . |
|
|
|
|
|
3. Если в записи |
ЗАП2 — код Р |
(расход), |
сделать |
вычитание: |
||
с о - |
к = н о , |
|
|
|
|
|
где НО — новый остаток. |
|
|
|
|
||
4. |
Если НО <С НЗ, печатать |
«недостача». |
|
|
||
5. |
Если НО ^ НЗ, создать |
новый |
массив МЗ, состоящий из за |
писей т-ипа ЗАП1 (назвать эти записи ЗАП 3). |
|
||
Структура |
записи ЗАП 3: |
|
|
NnP2 |
НАЗВ ПР2 |
НО |
Н32 |
I I I I 1 I I I I I I I I I I [ I I I I I I I I 1 I I 1 I I 1 I I I I I 1
64
где |
№ |
ПР2 — шифр продукта нового |
остатка (четырехзнач |
|
|
ный) ; |
|
|
НАЗВ |
ПР 2 — наименование продукта |
(20 знаков); |
|
НО |
— новый остаток (6 знаков) ; |
|
|
Н32 |
—нормативный запас (6 знаков). |
Последовательность машинной обработки можно представить в виде блок-схемы (рис. 8).
Рассмотрим каждый блок блок-схемы (нумерация нижеследую щих пунктов соответствует нумерации блоков на рис. 8).
Ввод |
данных |
Р-2 |
Ордіаноб |
М1 |
и М2 |
10 |
|
X |
|
да |
|
|
Сложение |
|
Исследование |
на |
р.з |
11 |
|
|||
конец |
массива |
|
|
|
|
со+к=но |
|
|
нет |
|
|
|
|
Вычитание |
|
Сравнение |
|
|
РА |
12 |
|||
НПР и NI1P1 |
|
|
НЗ-НО^Д |
|
|||
|
I E |
|
|
|
|
Печать |
|
Сравнение кода |
ti |
|
|
13 |
" ~ |
||
|
|
|
|
|
"недостача |
||
|
|
|
|
|
|
t |
-О |
Вычитание |
|
|
|
14 |
Печать |
||
СО-к-'НО |
|
|
|
ошидки |
|
||
|
|
|
|
|
|||
|
I |
|
|
|
|
Создание |
нового |
Сравнение НО с Из |
|
|
15 |
||||
|
|
|
|
|
|
массива |
МЗ |
|
Л |
|
|
|
|
|
|
Передать |
|
|
|
|
|
|
|
Передать |
|
|
|
|
|
|
|
НАЗВ-*НАЗвПР2 |
|
|
|
|
|
||
Передать |
|
|
|
|
|
|
|
из-* |
нзг |
|
|
|
|
|
|
Рис. 8. Блок-схема машинной обработки
1. |
Массивы M l и |
М2 вводятся в |
оперативное |
запоминающее |
||
устройство (ОЗУ) ЭВМ с магнитных |
лент или |
магнитных |
дисков. |
|||
2. |
Осуществляется |
проверка, весь |
массив |
M l |
и М2 |
введен |
в ОЗУ или нет; если «да», управление передается блоку 10, а если «нет» — блоку 3.
3. |
Происходит |
сравнение |
шифров продуктов в массивах |
M l |
||
и М2; в случае неравенства |
осуществляется |
печать |
ошибки |
по |
||
блоку |
14, а в случае равенства управление передается |
блоку 4. |
|
|||
4. |
Этот блок |
определяет |
тип введенного |
данного «количе- |
||
* о |
|
|
|
|
|
65 |
О З а к а з № 321
ство». Если «количество» имеет код П (приход), то управление
передается блоку 11, в противном случае — блоку |
5. |
|
|
||||||
5. |
В этом блоке производится |
вычисление нового остатка |
(НО) |
||||||
6. |
После того, как вычислен |
новый остаток, |
он |
сравнивается |
|||||
с нормативным запасом |
(НЗ) и затем |
в зависимости |
от результата |
||||||
сравнения управление .передается блоку 12 или блоку 7. |
|
||||||||
7—9. Шифр продукта N ПР1, наименование продукта НАЗВ, |
|||||||||
величина |
нормативного |
запаса НЗ из |
массива |
M l |
перемещается в |
||||
массив МЗ. |
|
|
|
|
|
|
|
||
10. |
По |
этому блоку |
выполняется |
команда |
«Останов» |
(конец |
|||
задачи). |
|
|
|
|
|
|
|
|
|
11. |
Сложение остатка |
на начало периода разработки СО |
(мас |
||||||
с и в а м ! ) |
с количеством |
К (массива М2) и получение суммы или |
|||||||
нового остатка НО, после чего осуществляется |
переход на блок 15 |
12.В этом йлоке находят разность между нормативным за пасом НЗ и новым остатком НО; когда результат отрицательный, осуществляется переход к блоку 13.
13.Печатается слово «недостача».
14.Печатается ошибка.
15.Формируется новый массив МЗ.
Программа к этой задаче на языке КОБОЛ имеет следующий вид:
РАЗДЕЛ ИДЕНТИФИКАЦИИ . ПРОГРАММА. РАСЧЕТ.
АВТОР. ПЕТРОВ.
ДАТА-НАПИСАНИЯ. НОЯБРЬ 1972 ГОДА. РАЗДЕЛ ОБОРУДОВАНИЯ.
СЕКЦИЯ КОНФИГУРАЦИИ. РАБОЧАЯ-МАШИНА. МИНСК-32. МАШИНА-ТРАНСЛЯТОР. МИНСК-32. СЕКЦИЯ ВВОДА-ВЫВОДА. УПРАВЛЕНИЕ МАССИВАМИ.
ВЫБРАТЬ МАССИВ-1 НАЗНАЧИТЬ МЛ КОД МАССИВА МІ. ВЫБРАТЬ МАССИВ-2 НАЗНАЧИТЬ МЛ КОД МАССИВА М2. ВЫБРАТЬ МАССИВ-ПЕЧАТИ НАЗНАЧИТЬ ПУ.
ВЫБРАТЬ МАССИВ-3 НАЗНАЧИТЬ МЛ КОД МАССИВА МЗ. УПРАВЛЕНИЕ-ВВОДОМ-ВЫВОДОМ.
ПРИМЕНИТЬ |
СТАНДАРТНАЯ |
МОДИФИКАЦИЯ |
ДЛЯ M l . |
|
ПРИМЕНИТЬ |
СТАНДАРТНАЯ |
МОДИФИКАЦИЯ |
ДЛЯ |
М2. |
ПРИМЕНИТЬ |
СТАНДАРТНАЯ |
МОДИФИКАЦИЯ |
ДЛЯ |
МЗ: |
РАЗДЕЛ ДАННЫХ. СЕКЦИЯ МАССИВОВ.
ОМ M l ЗАПИСЬ ДАННЫХ ЗАП 1
БЛОК С О Д Е Р Ж И Т 10 ЗАПИСЕЙ МЕТКА ЗАПИСИ СТАНДАРТНАЯ.
01ЗАП1.
02 N ПР ШАБЛОН 9 (4).
02 НАЗВ ШАБЛОН X (20).