Предисловие | 10 |
|
Г л а в а 1. Основы теории программирования | 13 |
|
§ 1.1. Основные понятия | 13 |
1.1.1. Буквы, связи, конструкции (13). 1.1.2. Слова, алфавиты, классификация |
конструкций (16). 1.1.3. Общая структурная схема цифровой |
программно-управляемой машины (24). 1.1.4. Принципы действия |
программно-управляемой машины (27). |
§ 1.2. Элементы теории формальных языков | 30 |
1.2.1. Синтаксис формального языка (31). 1.2.2. Семантика формального |
языка (37). |
§ 1.3. Системы счисления | 39 |
1.3.1. Позиционные системы счисления (39). 1.3.2. Перевод чисел из одной |
системы счисления в другую (46). 1.3.3. Формы представления чисел в |
машинах (49). |
§ 1.4. Элементы математической логики | 53 |
1.4.1. Понятия логических связей, логического значения и высказывания (53). |
1.4.2. Двоичные функции и алгебро-логические операции (55). |
1.4.3. Основные свойства алгебро-логических операций и логических связей (57). |
1.4.4. Полные системы алгебро-логических операций и логических связей (60). |
1.4.5. Понятие предиката (62). |
§ 1.5. Элементы теории алгоритмов | 64 |
1.5.1. Понятие алгоритма (64). 1.5.2. Первичные алгоритмы (67). 1.5.3. Понятие |
операции (70). 1.5.4. Натуральные алгоритмы (72). 1.5.5. Полное определение |
алгоритма (75). 1.5.6. ЭВМ как физическая реализация алгоритма выполнения |
программ (76). |
|
Г л а в а 2. Язык логических схем и машинные языки | 78 |
|
§ 2.1. Язык логических схем (ЯЛС) | 78 |
2.1.1. Алфавит ЯЛС (78). 2.1.2. Первичные структуры языка логических схем (79). |
2.1.3. Язык операндов, связанный с ЯЛС (83). 2.1.4. Элементарные операторы |
(84). 2.1.5. Операторы; их классы, применяемые в ЯЛС (85). 2.1.6. Знаки |
операторов и операторов, зависящих от параметров (86). 2.1.7. Запись |
алгоритма на ЯЛС. Логическая схема и расшифровка операторов (87). |
2.1.8. Правило выполнения алгоритма, заданного на ЯЛС (89). 2.1.9. Выражения. |
Замыкания операторов. Обобщённые операторы (91). 2.1.10. Соглашения, |
упрощающие запись алгоритмов (92). 2.1.11. Совмещение алгоритмов (94). |
§ 2.2. Машинные языки операндов | 94 |
2 2 1 Язык чисел с фиксированной запятой (94). 2.2.2. Сумматоры (95). |
2.2.3. Прямой код (97). 2.2.4. Обратный код (98). 2.2.5. Дополнительный код (100). |
2.2.6. Кодирование чисел с фиксированной запятой в машинах (101). 2.2.7. Язык |
чисел с плавающей запятой. Представление чисел в ЭВМ (102). |
2.2.8. Кодирование цифро-буквенной информации (104). |
§ 2.3. Машинные алгоритмические языки | 106 |
2.3.1. Элементарные машинные операции (106). 2.3.2. Арифметические |
операции (108). 2.3.3. Поразрядные операции над машинными словами и |
переносы (111). 2.3.4. Логические операции (113). 2.3.5. Операции, изменяющие |
содержимое регистра команд (114). 2.3.6. Операции перехода (115). |
2.3.7. Операции, изменяющие содержимое индексного регистра (117). |
2.3.8. Операции над буквенной информацией (117). 2.3.9. Машинные |
алгоритмические языки. Системы команд (118). |
|
Г л а в а 3. Программирование | 124 |
|
§ 3.1. Основные этапы процесса решения задачи на ЭВМ | 124 |
3.1.1. Математическая формулировка задачи (124) 3.1.2. Разработка методики |
решения задачи (125). 3.1.3. Разработка алгоритма решения задачи (125). |
3.1.4. Программирование (128). 3.1.5. Отладка программы (128). 3.1.6. Подготовка |
исходных данных. Решение задачи на ЭВМ (129). |
§ 3.2. Языки программирования | 131 |
3.2.1. Формальные алгоритмические языки (131). 3.2.2. Неалгоритмические |
формальные языки программирования (133). 3.2.3. Не вполне формализованные |
знаковые системы (133). |
§ 3.3. Программирование на языке ЭВМ | 134 |
3.3.1. Связь между распределением памяти и составлением команд (134). |
3.3.2. Символические адреса (135). |
§ 3.4. Операторный метод программирования | 137 |
3.4.1. Сущность операторного метода программирования (138). 3.4.2. Организация |
программ (142). |
§ 3.5. Некоторые приёмы программирования | 143 |
3.5.1. Операторы, зависящие от параметров. Индексация (143). |
3.5.2. Программирование в относительных адресах. Базирование (147). |
3.5.3. Построение циклов (151). 3.5.4. Логические шкалы (155). 3.5.5. Выделение |
подпрограммы (157). |
|
Г л а в а 4. Равносильные преобразования алгоритмов | 161 |
|
§ 4.1. Понятие равносильности алгоритмов. Комплексы. Равносильные |
преобразования | 161 |
§ 4.2. Однородный комплекс. Эквивалент однородного комплекса | 163 |
§ 4.3. Распознавание равносильности однородных комплексов с помощью |
их эквивалентов | 166 |
§ 4.4. Полная система равносильных преобразований однородных |
комплексов | 169 |
§ 4.5. Действия над однородными комплексами. Пакеты однородных |
комплексов | 174 |
4.5.1. Сложение однородных комплексов. (175). 4.5.2. Умножение однородных |
комплексов (176). 4.5.3. Единичные и обратные комплексы (177). 4.5.4. Пакеты |
однородных комплексов. Равносильность пакетов (177). |
§ 4.6. Основные равносильные преобразования алгоритмов, заданных на ЯЛС | 178 |
§ 4.7. Равносильные преобразования, не связанные с внутренними свойствами |
операторов | 179 |
§ 4.8. Основные преобразования логических операторов | 183 |
§ 4.9. Равносильные преобразования нелогических операторов | 185 |
§ 4.10. Перестановки операторов | 187 |
§ 4.11. Подчинённость оператора предикату | 188 |
§ 4.12. Вопрос о полноте системы основных равносильных преобразований |
алгоритмов. Область их применений | 190 |
|
Г л а в а 5. Математическое обеспечение ЭВМ | 191 |
|
§ 5.1. Понятие математического обеспечения ЭВМ | 191 |
§ 5.2. Классификация программ, еходящих в систему математического |
обеспечения ЭВМ | 194 |
5.2.1. Операционная система (195). 5.2.2. Система средств программирования |
(203). 5 2.3. Приложения. Система средств поддержания математического |
обеспечения в рабочем состоянии (207). |
§ 5.3. Математическое обеспечение ЭВМ как интерпретация ряда понятий |
теории алгоритмов | 208 |
§ 5.4. Системное программирование | 212 |
§ 5.5. Дополнительные сведения о формальных языках | 215 |
5.5.1. Формальные грамматики (215). 5.5.2. Формальные языки, порождаемые |
индуктивными грамматиками (216). 5.5.3. Формальные языки, порождаемые |
дедуктивными грамматиками (218). 5.5.4. Связь между индуктивными и |
дедуктивными грамматиками (22 1). 5.5.5. Формальная семантика формального |
языка (222). 5.5.6. Сущность трансляции (224). |
|
Г л а в а 6. Символическое программирование | 225 |
|
§ 6.1. Понятие автокода или языка символического программирования |
(языка ассемблера) | 225 |
§ 6.2. Алфавит языка символического программирования | 228 |
§ 6.3. Первичные структуры языка символического программирования | 229 |
§ 6.4. Символические адреса | 232 |
§ 6.5. Язык операндов, срязанный с языком символического программирования | 235 |
§ 6.6. Операторы языка символического программирования | 243 |
6.6.1. Одиночные действующие операторы (243). 6.6.2. Макрооператоры (251). |
6.6.3. Операторы описания конструкций из операторов и распределения |
памяти (254). 6.6.4. Операторы описания и распределения памяти (258). |
6.6.5. Операторы — отладочные средства (261). |
§ 6.7. Выполнение записей на языке символического программирования | 262 |
§ 6.8. Общая характеристика языков символического программирования |
для машины «Минск-32» и системы IBM-360 | 265 |
|
Г л а в а 7. Введение в алгоритмический язык АЛГОЛ-60 | 267 |
|
§ 7.1. Алфавит алгоритмического языка АЛГОЛ | 268 |
§ 7.2. Первичные структуры в АЛГОЛе | 269 |
§ 7.3. Переменные. Массивы. Описания типа | 271 |
§ 7.4. Язык операндов, связанный с АЛГОЛом | 272 |
§ 7.5. Указатели функций | 274 |
§ 7.6. Выражения в АЛГОЛе | 275 |
7.6.1. Логические выражения (275). 7.6.2. Арифметические выражения (276). |
7.6.3. Именующие выражения (277). 7.6.4. Вычисление выражений (278). |
§ 7.7. Операторы | 279 |
7.7.1. Составной оператор (280). 7.7.2. Блок (281). 7.7.3. Оператор |
присваивания (282). 7.7.4. Оператор перехода (282). 7.7.5. Описание |
переключателя (283). 7.7.6. Оператор процедуры (284). 7.7.7. Описание |
процедуры (284). 7.7.8. Вычисление значения- функции (287). 7.7.9. Процедуры-коды. |
Процедуры вводами выдачи (287). 7.7.10. Побочный эффект (290) 7.7.11. Пустой |
оператор (290). 7.7.12. Оператор цикла (290). 7.7.13. Оператор «если» (292). |
7.7.14. Альтернативный оператор (293). |
§ 7.8. АЛГОЛ-программа. Примечания в ней | 293 |
§ 7.9. Алгоритм выполнения АЛГОЛ-программы | 294 |
§ 7.10. Заключительные замечания | 300 |
|
Г л а в а 8. Введение в алгоритмический язык ФОРТРАН | 302 |
|
§ 8.1. Алфавит алгоритмического языка ФОРТРАН | 302 |
§ 8.2. Первичные структуры в ФОРТРАНе | 303 |
§ 8.3. Переменные. Массивы | 305 |
§ 8.4. Указатели функций | 307 |
§ 8.5. Выражения | 308 |
8.5.1. Логическое выражение (308). 8.5.2. Арифметическое выражение (309). |
§ 8.6. Операторы | 311 |
8.6.1. Метка (312). 8.6.2. Операторы присваивания (312). 8.6.3. Операторы |
перехода (313). 8.6.4. Условные операторы (314). 8.6.5. Оператор продолжения (314). |
8.6.6. Оператор останова (315). 8.6.7. Оператор цикла (315). 8.6.8. Оператор |
процедуры (317). |
§ 8.7. Файлы и их описания | 317 |
8.7.1. Файл. Два типа файлов (317). 8.7.2. Оператор описания файлов (318). |
§ 8.8. Операторы ввода (вывода) | 319 |
8.8.1. Список ввода (вывода) (319). 8.8.2. Операторы ввода (вывода) без |
форматов (320). 8.8.3. Операторы ввода (вывода) с форматом (322). 8.8.4. Оператор |
задания формата (323). |
§ 8.9. Описания в ФОРТРАН-программах | 327 |
8.9.1. Спецификаторы типа (327). 8.9.2. Управление выводом на печать (336). |
8.9.3. Операторы, задающие различные сведения (336). 8.9.4. Подпрограммы (341). |
§ 8.10. ФОРТРАН-программа | 347 |
|
Г л а в а 9. Введение в алгоритмический язык PL/1 | 349 |
|
§ 9.1. Алфавиты алгоритмического языка PL/1 | 349 |
§ 9.2. Первичные структуры в PL/1 | 351 |
§ 9.3. Переменные. Массивы. Структуры | 354 |
§ 9.4. Указатели функций | 360 |
§ 9.5. Выражения | 361 |
9.5.1. Арифметическое выражение (361). 9.5.2. Символьное выражение (363). |
9.5.3. Логическое выражение (363). 9.5.4. Скалярное выражение (365). 9.5.5. |
Выражения над массивами (365). 9.5.6. Выражения над структурами (366). |
§ 9.6. Описание данных | 367 |
9.6.1. Описатели данных (367). 9.6.2. Описатели имени входа (373). 9.6.3. |
Описатели размещения данных в памяти (375). 9.6.4. Описатели массивов и |
старших структур (378). 9.6.5. Описатели эквивалентности (379). 9.6.6. Описатели |
начальных данных (381). 9.6.7. Описатель отождествления структур (382). 9.6.8. |
Описатели файлов (383). |
§ 9.7. Операторы | 385 |
9.7.1. Блок (386). 9.7.2. Операторы присваивания (387). 9.7.3. Оператор |
перехода (391). 9.7.4. Оператор «если» (391). 9.7.5. Оператор цикла (391). |
9.7.6. Пустой оператор (393). 9.7.7. Оператор останова (393). 9.7.8. Описание |
процедуры (394). 9.7.9. Оператор процедуры. PL-программа (394). 9.7.10. Оператор |
входа в процедуру (397). 9.7.11. Оператор обращения к процедуре (397). 9.7.12. |
Оператор возврата (398). 9.7.13. Оператор конца (399). 9.7.14. Оператор размещения |
данных (399). 9.7.15. Оператор освобождения памяти (401). 9.7.16. Оператор ожидания |
(402). 9.7.17. Оператор описания данных (402). 9.7.18. Операторы ввода-вывода (403). |
§ 9.8. Средства прерывания | 419 |
9.8.1. Ситуации прерывания (419). 9.8.2. Оператор задания реакции на прерывание (423). |
9.8.3. Оператор отмены реакции на прерывание (424). 9.8.4. Оператор, имитирующий |
ситуацию прерывания (424). 9.8.5. Оператор вывода на дисплей (424). |
§ 9.9. Встроенные функции | 425 |
|
Г л а в а 10. Введение в алгоритмический язык КОБОЛ | 433 |
|
§ 10.1. Алфавит алгоритмического языка КОБОЛ | 434 |
§ 10.2. Первичные конструкции языка КОБОЛ | 435 |
10.2.1. Зарезервированные слова (435). 10.2.2. Слова пользователя (436). |
§ 10.3. Структура КОБОЛ-программы | 439 |
§ 10.4. Раздел идентификации | 440 |
§ 10.5. Раздел оборудования | 441 |
10.5.1. Секция конфигурации (441). 10.5.2. Секция ввода-вывода (442). |
§ 10.6. Раздел данных | 444 |
10.6.1. Сущность описания данных (444). 10.6.2. Описание данных (448). 10.6.3. Секция |
массивов (455). 10.6.4. Секция рабочей памяти (456). 10.6.5. Секция связи (457). |
§ 10.7. Язык операндов, соответствующий языку КОБОЛ | 457 |
§ 10.8. Выражения, используемые в КОБОЛе | 459 |
10.8.1. Арифметическое выражение (459). 10.8.2. Логическое выражение (460). |
§ 10.9. Раздел процедур КОБОЛ-программы | 465 |
10.9.1. Структура раздела процедур (465). 10.9.2. Типы операторов |
§ 10.10. Арифметические операторы | 467 |
10.10.1. Повелительные арифметические операторы (467). 10.10.2. Условные |
арифметические операторы (469). |
§ 10.11. Операторы управления порядком выполнения процедур | 469 |
10.11.1. Операторы ПЕРЕЙТИ, ИЗМЕНИТЬ и ОСТАНОВИТЬ (470). |
10.11.2. Операторы ВЫПОЛНИТЬ и ВЫЙТИ (471). |
§ 10.2. Операторы ввода-вывода | 474 |
10.12.1. Операторы ОТКРЫТЬ и ЗАКРЫТЬ (474). 10.12.2. Операторы ЧИТАТЬ и ПИСАТЬ |
(475). 10.12.3. Операторы ПРИНЯТЬ и ВЫДАТЬ (476). |
§ 10.13. Операторы переноса | 477 |
10.13.1. Операторы ПОМЕСТИТЬ и ПРОСМОТРЕТЬ (477). 10.13.2. Оператор СОРТИРОВАТЬ |
(478). |
§ 10.14. Операторы связи с программами | 479 |
10.14.1. Операторы ВЫЗВАТЬ, ВЫЙТИ-ИЗ-ПРОГРАММЫ и ОСВОБОДИТЬ (479). 10.14.2. |
Оператор ВОЙТИ (480). |
§ 10.15. Оператор ЕСЛИ | 480 |
§ 10.16. Семантика КОБОЛа | 481 |
10.16.1. Особенности языка КОБОЛ (481). 10.16.2. Алгоритм выполнения КОБОЛ-программ |
(482). |
|
Литература | 486 |
Предметный указатель | 489 |