Математика | ||||
Л.Коггунготон Мосва 1974 Учебник по языку КОБОЛ, позволяющий быстро изучить язык читателям, не знакомым с программированием. В начале книги читатель знакомится в общих чертах с основными идеями программирования и получает представление о простейших эле-ментах и понятиях КОБОЛа. Затем дается более формальное описание отдельных элементов языка и приводятся простые при- меры его применения. Далее систематически описывается КОБОЛ, исползуемый на на практике. Книга, как и сам язык КОБОЛ, предназначена главным образованиедля тех. кто связан с решением экономических задач, а также задач, в которых приходится обрабатывать большие массивы данных Она представляет большой интерес как для специа-листов различной квалификации, так и для студентов и аспирантов соответствующих специальностей. | ||||
1.1. О КНИГЕ ЦЕЛЬ КНИГИ Эта книга рассчитана на две категории читателей. 3 первую очередь она предназначена для пользователей вычислительных машин: руководителей учреждений или администраторов, контролеров продукции, бухгалтеров, ревизоров, научных работников, банковских управляющих, агентов фирм, студентов. Одни пользователи прибегают или собираются прибегнуть к помощи вычислительных машин в качестве случайных клиентов, другие либо считают, что основная часть их работы должна выполняться вычислительной машиной, либо непосредственно отвечают за использование в фирме вычислительной машины. Вторая категория читателей — это люди, обслуживающие вычислительную машину и желающие получить более простое введение в КОБОЛ, чем описания языка, обычно предоставляемые в руководствах для экономистов. Нет нужды объяснять, как полезна будет книга для второй категории читателей. Они могут прочесть ее от начала-до конца (или начиная с гл. 2, если они знакомы с основными понятиями программирования) и приступить к составлению собственных программ на КОБОЛе. Более спорна польза этой книги для первой категории читателей. Некоторые руководители и администраторы ничего не желают знать о вычислительных машинах — по их словам, они хотят использовать эти машины, но знать о их работе хотят не более, чем о работе телефона. Было бы интересно исследовать, в какой мере этот подход обусловливает то, что им часто не удается заставить вычислительную машину работать с полной отдачей; но здесь нам достаточно сказать, что данная книга предназначена не для таких руководителей. С другой стороны, многие руководители действительно интересуются вычислительными машинами, и эта книга предназначена именно для них. Некоторые из них сами смогут писать программы, многие поймут, что неплохо знать больше о вычислительных машинах и что не стоит слишком беспокоиться о том, необходимо ли им это знать. Знания, полученные ими из этой книги, в какой-то степени помогут им улучшить взаимопонимание с людьми, обслуживающими вычислительные машины, объяснить, чего они хотят от вычислительной машины, понять недостатки вычислительных машин, установить и осознать реальные ограничения, возникающие при программировании. Книга вполне может служить полезным введением в программирование вообще, равно как и в язык КОБОЛ в частности, но она не является специальной монографией на тему «Вычислительные машины для администратора» — много превосходных книг на эту тему уже существует. В еще меньшей степени она является книгой по основам вычислительных машин, или по общим методам программирования, или по принципам обработки данных с помощью электронных вычислительных машин. Конечно, время от времени в данной книге приходится касаться более широких вопросов, но, по существу, эта книга охватывает лишь узкую область, преследуя ограниченную цель: установить некоторые контакты между руководителем и его вычислительной машиной. Я надеюсь, что книга достаточно удобна для чтения: читать ее не так легко, как роман,— все же предполагается, что читатели готовы сконцентрировать внимание и затратить на чтение какие-то усилия,— но и, вероятно, не так трудно, как учебник игры в шахматы или бридж (программирование мало чем отличается от хитроумной игры, скажем от некоторой усложненной формы пасьянса). Тем не менее она написана так, что ее можно читать в автобусе или в поезде, в автомобиле или в самолете, и по этой причине (и по другим) в ней нет упражнений, хртя иногда читателю предлагается закончить или изменить какой-то пример или всесторонне разобрать приведенные примеры. Гораздо важнее, чем упражнения, следующее: читателю необходимо постоянно думать о применении прочитанного к своей области и спрашивать себя: «Как бы я использовал эту программу в своей работе? Какие бы названия я присвоил данным, если бы я программировал свои собственные записи?» Это на самом деле единственный путь применить программистские знания к вашим собственным потребностям. Набор отдельных примеров из частных областей применения не представляет интереса для тех, кто не использует этих областей применения, недостаточен для тех, кто их использует, и, в известном смысле, затемняет сущность универсальных вычислительных машин и языков про-• граммирования. 1.1.2. ВАШИ ПОЗНАНИЯ В ОБЛАСТИ ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ Программу можно написать, обладая лишь минимальным запасом знаний о том, как работает вычислительная машина (трудность состоит в том, чтобы убедить обучающихся, что это действительно так). Вполне разумно предполагать, что каждый, кто приступает к изучению книги по программированию, имеет этот минимальный запас знаний; все, что вам необходимо, можно узнать из одноднев. 1.1. О книге 11 пого курса повышения квалификации или из самого элементарного шк-дения. Если вы понимаете, что — «информация» может быть «введена» в машину при помощи карт или бумажных лент, на которых пробиты группы отверстий для представления букв и цифр; - что эти карты или ленты порождают группы из шести или восьми электрических имульсов для каждого символа информации; — что эти группы импульсов могут быть сохранены и запомнены в особых «ячейках» хранилища вычислительной машины (иногда именуемого «памятью» или «феррито-вой памятью», потому что она составлена из магнитных колец, или «ферритовых сердечников») и могут обрабатываться и по мере необходимости выбираться («выводиться») из памяти, например могут быть отпечатаны, то вы не найдете в этой книге ни одного места, неясного по причине недостаточного понимания работы вычислительных машин. В частности, не нужно совсем ничего знать о двоичной арифметике, восьмеричном или шестнадцатеричном кодировании или о других подобных вещах; вы можете оперировать только буквами, цифрами, словами и другими знакомыми понятиями. Желательно знать некоторые характеристики перфокарт, лент, печатающих устройств и других «периферийных» устройств вычислительной машины, поскольку они представляют собой средства общения машины с внешним миром. 1.1.3. ТЕМА КНИГИ Критерий, который я всюду в этой книге старался применять, состоит в следующем: нужно ли это знать начинающему? поймет ли он? захочет ли использовать? Или, с другой стороны, не следует ли это опустить, потому что это запутает на данном этапе начинающего,— лучше отложить это, так как позднее, когда начинающий будет лучше знаком с языком, он сможет это легче усвоить; или не слишком ли будет зависеть такая языковая возможность от вашей конкретной машины или от реализации языка, которую вы используете. Кроме того, иногда мне приходилось более поверхностно, чем хотелось бы, касаться методов программирования, которые, строго говоря, не являются частью КОБОЛа. Это, разумеется, субъективное мнение, отражающее мою собственную квалификацию и практический опыт, и я не могу ожидать, что каждый с этим согласится. Могу только надеяться, что любой опытный программист, просмотрев эту книгу, не осудит ее, если в ней отсутствуют его собственные любимые приемы программирования или если в ней сделана попытка простыми словами объяснить то, что, как он знает, на самом деле гораздо сложнее. В конце концов, книга написана лишь одним человеком, а не является результатом работы какого-либо комитета. Один тип особых трудностей при принятии решений порождается большим числом различных используемых реализаций КОБОЛа. Данная книга соответствует, вообще говоря, нижнему уровню КОБОЛа Американского национального института стандартов (American National Standards Institute's COBOL) —АНИС КОБОЛ, хотя я и отступал от него (изредка) там, где казалось, что обучающиеся могут извлечь пользу, например, из применения запятой и точки с запятой. Тем не менее некоторые реализации, широко используемые в настоящее время, написаны до того, как был опубликован стандартный вариант АНИС, и, конечно, нельзя критиковать их за то, что они не согласуются со стандартом (в некоторых отношениях нестандартные варианты справедливо могут претендовать на то, что они лучше, чем стандартный). Было бы почти невыполнимой задачей, безусловно выходящей за рамки элементарной книги, указать все отличия какой-либо реализации языка от языка, описываемого здесь. Я выбрал компромисс, заключающийся в указании наиболее вероятных пунктов, в которых программисту следует проверять, не является ли его КОБОЛ особым, т. е. отличным от стандартного. Это не должно отпугивать изучающего язык; эти расхождения, возможно, в большей степени касаются специалиста, чем новичка! Не следует также думать, что выражение «нижний уровень КОБОЛа» означает, что вы изучаете нечто худшего качества; нижний уровень КОБОЛа является совершенно самостоятельным языком программирования, и на самом деле многие опытные программисты считают его вполне достаточным для написания практически полезных и эффективных программ и вовсе не беспокоятся о том, чтобы изучать или использовать более развитые и сложные свойства, которые чаще всего обеспечивают лишь более сжатые способы для осуществления того, что может быть сделано на нижнем уровне. 1.1.4. ПЛАН КНИГИ Глава 1 предназначена для начинающих, которые обладают минимальными знаниями о вычислительной машине. В ней описывается, каким образом простой процесс, который мы выполняем не задумываясь, может быть описан несколько более формальным образом, приближающимся к языкам вычислительных машин. Этот простой пример использован для иллюстрации программирования циклов и условий. Каждый, кто имеет хоть какой-то опыт программирования, может начинать с гл. 2. В ней простой процесс, описанный в первой главе, записан, как процедура на КОБОЛе, и объяснены элементы раздела процедур с тем, чтобы дать краткое предварительное поня- 1.2. О программах 13 тис об элементах КОБОЛа; после этого мы переходим к «шести про-< i им урокам», каждый из которых при помощи программ на КОБОЛе имюстрирует некоторые черты разделов данных и процедур. В главе 3 рассматриваются возможности более развитого КОБОЛа, которые проще и экономичнее описываются не при помощи иллюстрирующих программ, а при помощи систематического и пожения в повествовательной форме. По мере необходимости часть материалов повторяется в гл. 1, 2 и 3, но этот метод обладает тем преимуществом, что читатель уже п.! первых порах получает представление о языке КОБОЛ как о ра-(И1ЧСМ инструменте; это позволит ему писать работающие программы к концу ознакомления с гл. 2, если не раньше. Во всех случаях, повторяющиеся части являются важными и основными и нет ничего плохого в том, что они рассматриваются в разных аспектах! Наконец, гл. 4 иллюстрирует использование КОБОЛа; это делается не при помощи отдельного набора примеров для какого-то специального применения, а посредством описания прикладных программ, которые являются «строительными блоками»для любых программ. При чтении этой главы администратор должен начать понимать, насколько хорошо подходит КОБОЛ для той работы, которую он хочет выполнять с помощью вычислительной машины. Гла-ii;i 4 содержит также практические советы по написанию программ и другую информацию, которая будет полезна начинающему программисту. 1.2. О ПРОГРАММАХ 1.2.1. МОДЕЛЬНАЯ ПРОГРАММА Для пояснения понятия программы и ее конструкции очень хорошо подойдет простая арифметическая программа" Предположим, что у нас есть список чисел, расположенных парами: 123 145 234 701 321 543 .-. . ... и т. д., и мы хотим сложить числа каждой пары, а после сложения всех пар отпечатать наибольшую из полученных сумм. Если список состоит только из трех приведенных выше пар, то результатом будет число 935, являющееся суммой чисел 234 и 701. Простота этой программы не должна ввести вас в заблуждение, что она тривиальна. Как мы покажем, она заключает в себе коренные черты программы для вычислительной машины и основные принципы, делающие вычислительную машину таким полезным орудием. Предисловие редактора перевода О КОБОЛе........... 1. Введение.........................., 1.1. О книге........................ 1.1.1. Цель книги.................... 1.1.2. Ваши познания в области вычислительной техники 1.1.3. Тема книги.................... 1.1.4. План книги.................... 1.2. О программах...................... .2.1. Модельная программа............... .2.2. Многократное повторение: циклы......; . . .2.3. Выход из цикла................ . . . .2.4. Принятие решений................ .2.5. Хранение инструкций............... .2.6. Программа для нахождения информации..... 2. Начальный КОБОЛ......................... 2.1. Элементы КОБОЛа....................... 2.1.1. Вводный КОБОЛ.................... . 2.1.1.1. Словарь программ, написанных на КОБОЛе . . . 2.1.1.2. Структура программ, написанных на КОБОЛе . . 2.1.1.3. Еще раз о парах чисел............. 2.1.2. Подготовка программы.......:........... 2.1.2.1. Компиляция.................... 2.1.3. Раздел данных...................... 2.1.3.1. Записи...................... 2.1.3.2. Описания записей................. 2.1.3.3. Записи в памяти................. 2.1.3.4. Массивы..................... 2.1.3.5. Назначение массивов.............. . . 2.1.3.6. Образование названий.............. 2.2. Шесть простых уроков..................... 2.2.1. Программа АЛЬФА...............'...: 2.2.1.1. Раздел данных.................. 2.2.1.2. Раздел процедур................. 2.2.1.3. Как разделы данных и процедур работают совместно 2.2.2. Программа БУСЫ.................... 2.2.2.1. Поля, пробелы и заполнители......: . . . . 2.2.3. Программа ВИЛЛИ.................... 2.2.3.1. Сравнения и решения............. 2.2.4. Программа ГУСЬ..................... 2.2.4.1. Литералы.................. . . . . 2.2.5. Программа ДОМ..............,,,..... 2.2.5.1. Рабочая память. Счетчики . ........... 2.2.6. Программа ЕНОТ..............'...... 2.2.6.1. Рабочая память. Временная память ... .......'. 2.3. Вариации на тему «Пары-Чисел». Решения........... 2.4. Разделы идентификации и оборудования....... .... . 3. Более развитый КОБОЛ....................... 60 3.1. Введение.........:.................. 60 3.2. Структура данных и память.................. 60 3.2.1. Уровни и групповые данные................ 60 3.2.2. Массивы со многими записями............. 63 3.2.3. Рабочая память...................... 67 3.2.4. Элементарные данные................... 69 3.2.4.1. Символы редактирования.............. 69 3.2.4.2. Положение данных................ 71 3.2.4.3. Фраза ДЛЯ................... 75 3.2.5. Литералы и ЗНАЧЕНИЕ................. 76 3.3. Обработка данных....................... 79 3.3.1. Арифметические операции................. 80 3.3.2. Оператор ПОМЕСТИТЬ.................. 83 3.3.3. Операторы ПРИНЯТЬ и ВЫДАТЬ........... 85 3.3.4. Сравнения........................ 87 3.4. Изменение последовательности.................... 91 3.4.1. Введение........................ 91 3.4.2. Следствие.......................... 91 3.4.3. Множественные сравнения................ 93 3.4.4. Другие условные операторы................ 94 3.4.5. Оператор ПЕРЕЙТИ К... В ЗАВИСИМОСТИ ОТ....... 95 3.4.6. Оператор ВЫПОЛНИТЬ................. 96 3.4.6.1. Оператор ВЫПОЛНИТЬ и передача управления . 99 3.4.6.2. Оператор ВЫПОЛНИТЬ со счетчиком...... 101 3.4.7. Оператор ОСТАНОВИТЬ.................. 102 3.5. Табличная обработка и использование фразы ПОВТОРЯЕТСЯ . . Ю2 3.5.1. Введение......................... 102 3.5.2. Элементарный пример.................. Юз 3.5.2.1. Решение..................... 105 3.5.3. Индексы . ........................ 108 3.5.4. Таблица в памяти.................... 109 3.5.5. Фраза ПОВТОРЯЕТСЯ на групповом уровне '....... Ill 3.5.6. Присвоение значений в рабочей памяти......... 116 3.5.6.1. Фраза ПЕРЕОПРЕДЕЛЯЕТ............ П7 3.5.6.2. Правила применения фразы ПЕРЕОПРЕДЕЛЯЕТ . П9 3.5.7. Ввод и вывод в табличной форме ............. 119 3.5.8. Табличная обработка в разделе процедур......... 122 3.5.8.1. Поиск в таблице................. 123 3.5.8.2. Внутренняя обработка............. 129 3.5.9. Двумерные таблицы.................... 133 3.5.9.1. Структура и память................ 133 3.5.9.2. Обработка двумерных таблиц........... 138 3.5.9.3. Процедура.................... 145 3.6. Магнитная лента........................ 148 3.6.1. Введение........................ 148 3.6.2. Фразы идентификации.................. 150 3.6.3. Форматные фразы..................... 151 3.6.4. Дополнительные сведения о магнитной ленте....... 153 3.7. Устройства прямого доступа................... 155 3.7.1. Характеристики и применения............... 155 3.7.2. Модуль произвольного доступа в КОБОЛе........ 160 I. Применение КОБОЛа........................ 162 4.1. «Строительные блоки» и малые программы......,...:. 162 4.1.1. Классификация стандартных программ........... 164 4.1.2. Классификация по проверкам и процессам обработки . . 4.2. Операции с одним массивом (неупорядоченным)....... 4.2.!. Несколько стандартных процедур общего назначения . . 4.2.1.1. Проценты.................... 4.2.1.2. Исправление....... . . . ,...... 4.2.1.3. Сравнения внутри записи............ 4.2.1.4. Средние.................... 4.2.2. Изменение формата, расширение, комбинирование записей 4.2.3. Переблокировка.................... 4.2.4. Контроль данных................... 4.2.5. Сортировка...........•........... 4.2.5.1. Сортировка и слияние............. 4:2.5.2. Модуль сортировки в КОБОЛе........ 4.3. Упорядоченные массивы................... 4.3.1. Работа с последовательностями записей........ 4.3.1.1. Выявление пропусков.............. 4.3.1.2.'Буквенная нумерация.............. 4.3.2. Устранение повторений................. 4.3.3. Выделение одиночных записей ...... <....... 4.3.4. Выделение повторяющихся записей........... 4.3.5. Пробел при смене поля................ 4.3.6. Составление таблиц................... 4.3.7. Концевая запись.................... 4.3.8. Головная запись и прочие задачи........... 4.4. Работа с двумя массивами.................. 4.4.1. Выбрасывание..................... 4.4.2. Замена......................... 4.4.3. Слияние........................ 4.4.4. Исправление...................... 4.4.5. Выборка......................... 4.4.6. Варианты и искажения........•......... 4.4.7. Работа с массивами .........;......... 4.5. Печать и оформление..................... 4.5.1. Печатающее устройство . ................ 4.5.2. Экономия бумаги.................... 4.5.3. Групповые указатели.................. 4.5.4. Управление переходом на новую страницу....... 4.5.5. Графический вывод.................. . 4.6. Блоки в программе....................... 4.7. Практическое программирование................ 4.7.1. Структура программы.........;........ 4.7.2. Бланк для программирования.............. 4.7.3. Составление программы................. 4.7.3.1. Проверка программы.............. 4.7.4. Контроль выполнения циклов............. . 4.7.5. Блок-схемы и таблицы вариантов решений....... 4.7.6. Проверка готовой программы.............. 4.7.6.1. Отладка.................... АЛЛ. Общение с машиной.................. 4.7.8. Если что-то не ладится . ............... 4.7.9. Документация..................... 4.8. Заключение......................... 4.8.1. Модули АНИС КОБОЛа................ 4.8.2. Последние советы................... Цена: 50руб. |
||||