Предисловие редактора перевода | 5 |
Предисловие | 7 |
|
Глава 1. Обзор языка Ада | 15 |
|
1.1. Простая программа на Аде | 15 |
1.2. Примеры программирования на Аде | 17 |
1.3. Объявление типа и объекта | 22 |
1.4. Структура программы | 28 |
1.5. Подпрограммы | 30 |
1.6. Параметры подпрограмм | 31 |
1.7. Родовые подпрограммы | 34 |
1.8. Пакеты | 35 |
1.9. Абстрактные типы данных | 38 |
1.10. Задачи | 41 |
1.11. Отбор среди входов | 45 |
1.12. Родовые модули | 47 |
1.13. Блоки | 49 |
1.14. Раздельная компиляция | 52 |
1.15. Область действия идентификаторов | 54 |
1.16. Ограниченные сегменты программы | 55 |
1.17. Ограниченные сегменты компиляции и библиотеки | 57 |
1.18. Исключения | 59 |
|
Глава 2. Основные черты языка | 63 |
|
2.1. Введение | 63 |
2.2. Множество символов и лексемы | 63 |
2.3. Простые выражения и оператор присваивания | 66 |
2.4. Условные операторы (операторы if и case) | 69 |
2.5. Операторы повторения | 71 |
2.6. Переход и выход | 74 |
2.7. Примеры программ. Вычисление простых чисел | 77 |
2.8. Объявления идентификаторов | 83 |
2.9. Сегменты программы и блочная структура | 85 |
2.10. Процедуры и параметры | 89 |
2.11. Виды связи параметров | 93 |
2.12. Функции и вырабатывающие значения процедуры | 94 |
2.13. Операторы контроля | 97 |
|
Глава 3. Описание данных | 99 |
|
3.1. Объекты и действия | 99 |
3.2. Система типов в Аде | 100 |
3.2.1. Предопределённые типы | 100 |
3.2.2. Производные типы | 101 |
3.2.3. Уточнения | 104 |
3.2.4. Определения анонимных типов и эквивалентность типов | 101 |
3.2.5. Подтипы | 106 |
3.2.6. Предопределённые атрибуты | 108 |
3.2.7. Классификация типов | 108 |
3.3. Числовые типы | 110 |
3.3.1. Целые типы | 110 |
3.3.2. Плавающие типы | 113 |
3.3.3. Фиксированные типы | 115 |
3.4. Перечисляемые типы | 117 |
3.5. Логические и символьные типы данных | 122 |
3.6. Регулярные типы | 123 |
3.7. Регулярные типы с неуточнёнными границами | 127 |
3.8. Строки | 130 |
3.9. Комбинированные типы (записи) | 131 |
З.10. Вариантные записи | 135 |
3.11. Дискриминанты и параметры типа | 139 |
3.12. Ссылочные типы | 141 |
3.13. Обработка списков | 147 |
3.14. Древовидная таблица символов | 149 |
|
Глава 4. Модульность и структура программы | 155 |
|
4.1. Пакеты: данные и подпрограммы | 155 |
4.2. Синтаксис объявления пакета | 160 |
4.3. Пакет для работы с комплексными числами | 161 |
4.4. Создание ключей «защиты» | 165 |
4.5. Пакет для работы с таблицей имён | 166 |
4.6. Пакет для обработки списков | 167 |
4.7. Перечень используемых модулей | 172 |
4.8. Ограничение видимости | 176 |
4.9. Родовые программные структуры | 179 |
4.10. Родовые пакеты | 183 |
4.11. Структура программы и изменение пространства имён | 186 |
4.12. Восходящая и нисходящая разработки программы | 190 |
|
Глава 5. Задачи | 194 |
|
5.1. Введение | 194 |
5.2. Запуск и выполнение задачи | 196 |
5.3. Синхронизация и взаимодействие задач | 199 |
5.4. Оператор отбора | 204 |
5.5. Родовые задачи | 208 |
5.6. Семейства задач, семейства входов и приоритеты задач | 211 |
5.7. Окончание задачи | 214 |
5.8. Проблема чтения-записи | 215 |
5.9. Раздельная синхронизация и защита | 219 |
5.10. Эффективность многозадачной работы | 224 |
|
Приложение. Сводка синтаксических правил | 230 |