- 4 - 1. ЛАБОРАТОРНАЯ РАБОТА "ПЕЧАТЬ МАШИНОГРАММЫ" 1.1. Цель работы Ознакомиться с различными вариантами выдачи результатов работы программ ( машинограммы, видеокадры), со структурой ма- шинограмм, научиться проектировать детальные, итоговые строки, строки заголовка и окончания, оформлять чертеж формы докумен- та, научиться использовать в программах на Паскале записи и массивы записей (таблицы). 1.2. Методические указания к лабораторной работе Получение выходных данных (результатов) на печатающем стройстве представляет хорошее средство общения ЭВМ с челове- ком. Различные ведомости, распечатки, выходные документы, конструкторско-технологическая документация (в общем случае машинограммы) на бумажном носителе могут использоваться чело- веком в течение длительного времени. Соответствующим образом оформленные машинограммы становятся документами, имеющими юри- дическую силу. В последнее время значительное распространение получила безбумажная информатика, когда результат решения задачи может быть записан ЭВМ не только на бумагу, но и на другие машинные носители или выдан на экран дисплея. Но и в случае использова- ния видеокадров вместо машинограмм можно выделить общие момен- ты в проектировании соответствующих программ. Особенностью машинограмм, используемых в АСУП, является их большой объем, что вынуждает применять специальные средства по обеспечению возможности повторной печати, а также выбора из выходных данных только необходимых по запросу. 1.2.1. Структура и проектирование машинограммы Структура программы может быть различной в зависимости от конкретных условий, но можно выделить и общие моменты. Чаще всего машинограмма печатается по листам, размеры которого во многом определяются характеристиками используемого печатающего устройства. Для обычно используемой перфорированной бумаги, сфальцованной в стопу, и барабанных печатающих устройств максимально возможная длина листа составляет 72 строки, а с учетом полей не превышает 66 строк. Максимальная ширина листа определяется техническими характеристиками печатающего уст- ройства и составляет 128-160 символов для машин типа ЕС и 80 символов для микроЭВМ. Ширина бумаги позволяет получать на микроЭВМ документы стандартного формата А4 (11), а на ЕС ЭВМ - формата А3 (12). Большие возможности для получения машинограмм различных видов у современных матричных (игольчатых) и лазерных принте- ров: тут и печать высокого качества, и различные шрифты, и уп- равление шагом по вертикали и горизонтали, и возможность печа- ти графических изображений. Если машинограмма небольшая по ши- рине, то на одном листе АЦПУ можно разместить несколько стра- ниц. Наиболее типичны следующие варианты: первый - на листе располагаются слева и справа два экземпляра одной и той же страницы; второй - на листе по горизонтали располагаются две подряд идущие страницы, в этом случае лист сгибается пополам и - 5 - таким образом подшивается. В некоторых случаях применяют двустороннюю печать, но это требует усложнения программы для печати сначала всех нечетных, затем всех четных листов, кроме того, в машинограммах большого объема имеется большая вероят- ность повреждения бумаги. Двустороннюю печать целесообразно применять на микроЭВМ при печати на отдельных листах, а не на рулонной бумаге или бумаге, сфальцованной в стопу. Листы машинограммы могут быть различного типа: заголовок машинограммы, листы основной части, окончание машинограммы. Заголовок и окончание, если они присутствуют, печатаются один раз по машинограмме и содержат название и код документа, све- дения об организации, для которой был составлен документ, дату выдачи документа, общие итоги, место для виз, подписей, печа- тей и т.д. На листах основной части машинограммы также можно выде- лить заголовок и нижнюю часть (подножие) листа, а также основ- ную часть листа. Заголовок листов основной части одержит, как правило, название и код машинограммы, сведения об объекте, по которому выдается этот лист, номер листа, дату выдачи, наиме- нования и номера печатаемых реквизитов. На втором и последую- щих листах машинограммы может печататься упрощенный заголовок, содержащий номер листа и номера реквизитов (граф). В нижней части листа (подножие листа) может печататься контрольная сум- ма, количество строк на листе и другая информация. В некоторых случаях вид заголовка и нижней части листа определяется ГОСТом и представляет собой рамку с угловым штампом. Основная часть листа содержит два вида строк: детальные и итоговые. Детальные строки - это наиболее повторяемые строки в машинограмме, одна детальная строка машинограммы, как правило, соответствует одной записи входного файла. Итоговые строки вы- даются при смене значений определенных, так называемых, ключе- вых реквизитов (ключей), по завершению группы записей с одина- ковым значением ключей. В итоговых строках печатаются суммы по отдельным реквизитам детальных строк, количество записей или просто производится разделение отдельных частей машинограммы строками пробелов. Между ключевыми реквизитами устанавливается иерархия, старший уровень имеет реквизит, который наиболее редко изменяется. Как правило, это первый ключевой реквизит сортировки входного файла. При изменении значения ключевого реквизита перед печатью соответствующей итоговой строки должны быть выданы все итоговые строки низшего уровня, например, при изменении номера цеха перед итоговой строкой по цеху выдается итоговая строка по последнему участку в данном цехе. По концу обрабатываемых данных (концу файла) выдаются итоги всех уров- ней. Любая строка машинограммы состоит из отдельных реквизитов или полей. Часть полей представляет собой константы и не изме- няется в процессе выдачи всей машинограммы, остальные поля - переменные, частота их изменения определяется частотой измене- ния соответсвующего реквизита. Таким образом, в машинограмме могут быть выделены такие структурные элементы: лист, строка, поле. Соответственно это отражается и в стуктуре программы. Проектирование машинограммы заключается в определении пе- речня всех данных, их формы представления, группировке данных по предметным областям, определении порядка следования данных, определении печатаемых наименований и способов кодирования данных, определении общего представления машинограммы. Резуль- - 6 - татом проектирования машинограммы является чертеж формы доку- мента, определяемый ГОСТом. Лучше всего использовать лист с размерами, определяемыми реальным листом печатающего уст- ройства ЭВМ. Одна клетка такого листа представляет один печа- таемый символ. Постоянные поля записывают в том виде, в каком они должны печататься. Переменные поля отмечают по их макси- мальной длине в зависимости от типа данных, например, 9 - циф- ровой тип, А - буквенный тип, Х - буквенно-цифровой. В боль- шинстве случаев проектирование машинограммы целесообразно на- чинать с проектирования детальных и итоговых строк, а затем - заголовков. Обычно предусматривается, что десятичная точка итоговых значений располагается на той же позиции, что и у соответствующих полей детальных строк. 1.2.2. Программы печати машинограмм Структура программы печати определяется структурой полу- чаемой машинограммы и структурой входных данных. Для обеспече- ния перехода на новый лист вводится промежуточная переменная: номер отпечатанной строки, которая сравнивается (больше или равно) с определенной в программе длиной листа. Чтобы был от- печатан первый лист, а также в других случаях, когда требуется перейти к новому листу, например после печати итоговой строки соответствующего уровня, указанной переменной присваивается значение равное длине листа. Если отпечатанный лист короткий, то для перехода на начало следующего листа могут использо- ваться соответствующие команды управления печатающим уст- ройством или циклически выполняется протяжка пустых строк (пробелов). В виде внутренних подпрограмм оформляется чтение входных файлов, печать заголовка, печать детальной и итоговых строк. Такая структура программы позволяет легко читать ее исходный текст и производить изменения при сопровождении программы. 1.3. Порядок выполнения работы 1.3.1. Разработать форму машинограммы: определить пере- чень полей данных, их полные и краткие наименования, выделить ключевые поля, определить форматы детальной и итоговой строк, заголовка и окончания машинограммы и листов основной части. Нарисовать чертеж формы документа. 1.3.2. Написать, отладить программу, проверить все вари- анты обработки на контрольном примере. 1.3.3. В отчет по лабораторной работе включается: постановка задачи с чертежом формы документа; иерархическая схема программы; блок-схема программы; текст программы; контрольный пример. 1.4. Задания Ввести массив записей (NMAX = 200), которые должны быть отсортированы по первому и второму полю. Ввести длину листа машинограммы. Распечатать таблицу в виде машинограммы по листам. Пре- дусмотреть печать двух уровней итогов: по первому ключевому полю и общий итог. - 7 - В контрольном примере выдать не менее трех листов маши- нограммы, последний лист может быть не полный. Названия машинограмм и структуры записей: 1). Наличие вагонов: пункт прибытия, номер поезда, коли- чество вагонов. Итоги: количество поездов и вагонов. 2). Участники соревнований: страна, фамилия спортсмена, номер, возраст в годах. Итоги: количество человек и средний возраст. 3). Члены сборной команды: специализация, фамилия, дата рождения, масса. Итоги: количество человек и средняя масса. 4). Результаты конькобежного чемпионата: фамилия участни- ка, номер, дистанция, очки. Итоги: количество дистанций и очки. 5). Наличие товаров в магазинах: наименование магазина, наименование товара, цена, количество. Итоги: стоимость товара. 6). Количество жителей: страна, национальность, количест- во жителей. Итоги: количество национальностей и жителей. 7). Вырабатываемая электроэнергия: регион, тип элект- ростанции, мощность. Итоги: количество атомных электростанций и общая мощность. 8). Количество проданных билетов: пункт прибытия, номер поезда, тип вагона, количество билетов. 9). Наличие детей: группа, фамилия, средний балл, коли- чество детей. Итоги: количество студентов и детей. 10). Количество сданных экзаменов: факультет, фамилия, средний балл, количество сданных предметов. Итоги: среднее ко- личество сданных экзаменов. 11). Состояние строительства: район, наименование объек- та, процент готовности, количество работающих. Итоги: коли- чество объектов и работающих. 12). Состояние успеваемости: район, учебное заведение, количество неуспевающих, общее количество учащихся. Итоги: ко- личество неуспевающих и количество учащихся. 13). Наличие вагонов в депо: наименование депо, путь, грузоподъемность, количество вагонов. Итоги: количество ваго- нов и общая грузоподъемность. 14). Капитал фирмы: название фирмы, код акционера, адрес акционера, сумма акций. Итоги: количество акционеров и стои- мость акций. 1.5. Контрольные вопросы 1). Виды строк заголовков. 2). Получение итоговых данных. 3). Окончание машинограммы. 4). Печать машинограмм по листам. 5). Варианты печати несколько страниц на одном листе.