- •Введение
- •1. Общие положения
- •1.1. Понятие алгоритма. Данные в задачах и алгоритмах
- •1.2. Понятие о технологии разработки программ. Принципы и этапы разработки программ
- •1.3. Состав документации по отдельным этапам
- •1. Задача
- •9. Структурные тесты
- •1.4. Нисходящая разработка и нисходящая отладка
- •2. Процесс разработки программы на примере решения типовой задачи
- •2.1. Разработка алгоритма и программы уровня 0 с заглушками
- •2. Входные данные
- •3. Выходные данные
- •5. Функциональные тесты
- •6. Метод
- •7. Алгоритм
- •8. Программа на паскале. Диалоговый вариант
- •9. Структурные тесты
- •2.2. Отладка программы с заглушкой
- •2.3. Общая схема перехода от метода к алгоритму решения
- •2.4. Разработка алгоритма и программы для примера
- •2. Входные данные
- •5. Функциональные тесты
- •6. Метод
- •7. Алгоритм
- •8. Программа на паскале
- •9. Структурные тесты
- •2.5. Отладка полной программы
- •2.6. Список заданий
- •3. Организация хранения данных с позиций эффективности отладки и использования программы
- •3.1. Как лучше хранить, вводить и выводить данные
- •3.2. Использование текстовых файлов для хранения входных и выходных данных
- •3.3. Использование параметров в Паскаль-программах
- •3.4. Задание
- •4. Некоторые методы решения типовых задач
- •4.1. Поиск экстремальных значений (максимума, минимума) в одномерном массиве
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.2. Поиск элемента, удовлетворяющего заданному условию
- •2. Входные данные
- •6. Метод
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.3. Задача со сложной логикой
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •4.4. Упорядочение одномерного массива
- •3. Выходные данные
- •6_А. Метод включения
- •6_Б. Метод пузырька
- •4.5. Список заданий
- •5. Работа с двумерными массивами (матрицами)
- •5.1. Схема обработки матриц
- •5.2. Ввод и вывод матрицы
- •5.3. Пример решения задачи
- •3. Выходные данные
- •6. Метод
- •5.4. Список заданий
- •6. Оформление алгоритмов в виде процедур
- •6.1. Основные положения
- •6.2. Кодирование процедур на языке Паскаль
- •6.3. Специфика оформления процедур ввода – вывода
- •6.4. Рекомендации по оформлению процедур
- •6.5. Примеры разработки процедур
- •3. Выходные данные
- •6. Метод
- •3 Истина, если все элементы строки больше 1, ложь, в противном случае . Выходные данные
- •7. Описание процедуры
- •8. Кодирование на паскале
- •9. Структурные тесты
- •2. Входные данные
- •3. Выходные данные
- •4. Аномалии не рассматриваем
- •6. Метод
- •7. Алгоритм
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •8. Кодирование на паскале
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •8. Кодирование на паскале
- •2. Входные данные
- •3. Выходные данные
- •6. Метод
- •7. Описание процедуры
- •8. Кодирование на Паскале
- •6.6. Список заданий
- •7. Внешние модули (unit) в турбо-Паскале
- •7.1. Суть и описание модуля
- •7.2. Связь модуля с другими модулями и главной программой. Область действия описаний объектов
- •7.3. Специфика оформления процедур ввода – вывода в модулях
- •7.4. Примеры оформления процедур во внешних модулях
- •7.5. Задания
- •7.6. Обработка многомодульных программ в среде турбо-Паскаль
- •8. Контрольные вопросы к главе 1
- •К главе 2
- •К главе 3
- •К главе 6
- •К главе 7
- •Заключение
- •Литература
- •Приложение 1. Базовые структуры алгоритмов
- •Приложение 2. Простые типы в Паскале
- •Приложение 3. Структура типов данных в языке Паскаль
- •Содержание
7.5. Задания
1. В задачах Cond_2иm.0оформить процедуры ввода и вывода входных данных. Разместить процедуры в отдельном модуле.
2. В задаче mas_3преобразовать вариант с внутренними процедурами, разместив процедуры в отдельном модуле.
3. В задаче mas_3оформить процедуры ввода и вывода входных данных так, чтобы файловые переменные и операции с файлами были локализованы в процедурах. Разместить процедуры в отдельном модуле.
7.6. Обработка многомодульных программ в среде турбо-Паскаль
● Стандартный процесс обработки программы, написанной на языке высокого уровня, состоит из трех шагов:
- трансляция(компиляция) программы; результат -объектный модульв машинных кодах или на ассемблере в относительных адресах и с неразрешенными внешними ссылками (т.е. с отсутствующими адресами вызываемых модулей);
- редактирование межмодульных связей("линковка"); результат -разрешение внешних ссылок, состоящее в установлении связей между модулями программы;
- загрузка(размещение модуля в оперативной памяти по конкретному адресу; результат –исполняемый модуль) ивыполнение.
Особенностью обработки программ в среде турбо-Паскаль является совмещение этапа редактирования связей с этапом компиляции, из-за чего головной модуль programи внешние модули компилируются по-разному.
Результатом компиляции программной единицы programявляется .exe-модуль. Результатом компиляции программной единицыunitявляется специфический для турбо-Паскаляtpu-модуль. К моменту компиляции программыprogram все используемые ею модули должны быть откомпилированы, так как компилятор ищет готовые .tpu-файлы.
● Порядок подготовки многомодульной программы к исполнению неоднозначен и зависит от используемых опций компилятора.
Возможные режимы компиляции: Compile, Make, Build.
Опция Compile– компиляция файла, находящегося в текущем окне. Если в компилируемой программе содержатся обращения к нестандартным модулям, последние должны быть заранее откомпилированы и храниться на диске в виде .tpu-файлов.
Для сохранение результатов компиляции на диске следует:
в поле опции Options/Directories/Exe&Tpudirectoryзадать имя директории, где будет сохранен результат компиляции;
проверить значение опции Compile/Destination: если это значение –Disk, то нажатьEsc; значение сохранится; если значение –Memory,то нажатьEnter; значение изменится наDisk.
Опция Make– компилируется файл, заданный опциейCompile/Primaryfileили, если он не указан, последний редактировавшийся файл; при этом предварительно компилируются все модули,упомянутые вUsesи нескомпилированные или измененные.
Опция Build– перекомпилируются все файлы с расширением .pas, имена которых указаны в оператореUsesкомпилируемого модуля.
● Реально существует только две схемы компиляции многомодульных программ, которыми и следует пользоваться.
Компиляция снизу (раздельная)
В режиме Compileкомпилируются все модулиUnit(результат компиляции – файлы .tpuна диске), а затем -Program(результат компиляции и одновременного редактирования связей - .exe).
Компиляция сверху
В режиме BuildилиMakeинициируется компиляция головного модуля (Program). Используемые им модулиUnitавтоматически компилируются по цепочке.
Этот способ кажется предпочтительным из-за своей простоты для программиста, так как достаточно запустить на компиляцию только главный модуль. Однако он имеет два серьезных взаимосвязанных недостатка:
отсутствие контроля компиляции отдельных модулей;
приобретение навыка обработки многомодульных программ по жесткой схеме, нетипичной для других языков (например, для Фортрана и Си).
Поэтому эта схема может быть рекомендована только после приобретения навыка раздельной компиляции.