
- •1.1. Основные этапы создания программы
- •1.2. Алгоритмы
- •2.1. Структура типов в Turbo Pascal
- •Стандартные скалярные типы. Типы целых чисел
- •2.3. Операции побитовой обработки
- •2.4. Представление вещественных чисел в эвм
- •2.5. Символьный тип
- •2.6. Булевский тип
- •2.7. Перечисленный тип
- •2.8. Интервальный тип (диапазон)
- •3.1. Структура программы на turbo pascal
- •3.2. Основные операторы языка
- •3.2.1. Простые операторы
- •3.2.2. Операторы ввода-вывода
- •3.2.3. Структурные операторы
- •3.2.4. Условные операторы
- •3.2.5. Операторы повтора (цикла)
- •4.1. Массивы
- •4.2. Строковый тип
- •4.3. Множества
- •5.1. Процедуры и функции
- •5.2. Процедуры и функции пользователя
- •5.3. Передача параметров по значению и по ссылке
- •5.4. Рекурсивные процедуры и функции
- •6.1. Структура модулей
- •6.2. Компиляция и использование модулей
- •7.1. Записи
- •7.2. Вложенные записи
- •7.3. Записи с вариантами (вариантные записи)
- •7.4. Файлы
- •7.5. Подпрограммы для работы с файлами
- •7.5.1. Процедуры
- •7.5.2. Функции
- •7.6. Примеры программ для обработки файлов
- •7.7. Текстовые файлы
- •8.1. Структура оперативной памяти для программ на Turbo Pascal
- •8.2. Динамические структуры данных
- •8.3. Основные процедуры и функции для работы с динамическими переменными
- •8.4. Динамика выделения памяти в куче
- •8.5. Линейные списки. Способы создания и обработки
- •8.6. Нелинейные списки. Способы создания и обработки
- •Библиографический список
- •Оглавление
- •394026 Воронеж, Московский просп., 14
6.2. Компиляция и использование модулей
Для компиляции основной программы или модулей, использующих другие модули, определены три режима: compile, make и build.
В режиме compile все перечисленные в предложении uses модули должны быть предварительно откомпилированы, и результаты компиляции помещены в одноименные модули с расширением tpu.
В режиме make компилятор проверяет наличие tpu файлов для каждого объявленного модуля. Если какой-либо tpu-файл не найден, то система пытается отыскать паскалевский файл с таким же именем, и если находит, то компилирует его.
Кроме того, в этом режиме система следит за всеми изменениями исходного текста используемого модуля. Если в паскалевский файл внесены какие-либо изменения, то независимо от того, есть ли уже в каталоге соответствующий tpu-файл или нет, система осуществляет его компиляцию перед компиляцией основной программы. Более того, если
100
изменения внесены в интерфейсную часть модуля, то будут перекомпилированы и все другие модули, обращающиеся к нему.
Режим make значительно облегчает процесс разработки программ с множеством модулей, так как программист освобождается от необходимости следить за соответствием существующих tpu-файлов их исходным текстам.
В режиме build система не ищет tpu-файлы, а сама компилирует соответствующие паскалевские тексты.
При компиляции программы или модуля, использующего другие модули, компилятор последовательно отыскивает файлы, содержащие коды используемых модулей, чтобы подсоединить их к компилируемой программе. Порядок поиска таков:
- компилятор просматривает содержимое системного библиотечного файла модулей Turbo TPL, на тот случай, если модуль является стандартным.
- если искомого модуля там нет, то компилятор ищет соответствующий tpu-файл в текущем каталоге.
- если в текущем каталоге файл не найден, то поиск осуществляется в каталогах, заданных в альтернативе Options/Directories/Unit Directories.
- если на предыдущих шагах файл не найден, то компилятор прекращает работу и выдает сообщение, что tpu-файл не найден.
- если компилятор запущен в режиме Compile/Make или Compile/Build, то все указанные шаги должны проводится в поисках исходных текстов используемых модулей.
Если все необходимо хранить код модуля в файле с другим именем, то можно использовать директиву компилятора $U для переопределения имени файла, например:
Uses ($U mas) trap;
101
Компилятор будет искать код модуля trap в дисковом файле mas.
Контрольные вопросы и упражнения
1. Разработать программу для расчета
.
Исходные
данные:
-
одномерный массив размерности
;
- функции;
-
целое число. Расчет суммы и
-
оформить в виде отдельных модулей.
Функции задавать в головной программе.
2. Разработать программу для расчета
.
Исходные
данные:
-
одномерный массив размерности
;
- функции;
-
целое число. Расчет суммы и
-
оформить в виде одного модуля. Функции
задавать в головной программе.
-
Разработать программу для расчета
.
Исходные
данные:
-
одномерный массив размерности
;
- функции;
- норма вектора
.
Расчет суммы и
-
оформить в виде разных модулей. Функции
задавать в головной программе.
4. Разработать программу для расчета интеграла по методу Ньютона.
102
Исходные
данные:
-
вещественные числа;
;
- количество дискретных точек на интервале
интегрирования (
).
Расчет интеграла оформить в виде модуля. Подынтегральную функцию задавать в головной программе.
5.
Разработать программу для решения
обыкновенного дифференциального
уравнения
по методу Эйлера на интервале
с шагом
:
.
Исходные
данные:
-
начало и конец интервала интегрирования;
- значение искомой функции в начальной
точке;
- шаг интегрирования.
Решение дифференциального уравнения оформить в виде модуля. Функцию, являющуюся правой частью дифференциального уравнения, определить в головной программе.
6.
Разработать программу для решения
обыкновенного дифференциального
уравнения
по методу Рунге-Кутта 4-го порядка на
интервале
с шагом
:
,
где
,
,
103
,
.
Исходные
данные:
-
начало и конец интервала интегрирования;
- значение искомой функции в начальной
точке;
- шаг интегрирования.
Решение дифференциального уравнения оформить в виде модуля. Функцию, являющуюся правой частью дифференциального уравнения, определить в головной программе.
7.
Разработать программу для работы с
квадратными матрицами размерности
(умножение, нахождение евклидовой
нормы). Евклидова норма матрицы
вычисляется по формуле
.
Расчет произведения матриц и нормы матрицы оформить в виде отдельных модулей. Матрицы задавать в головной программе.
8.
Разработать программу для работы с
квадратными матрицами размерности
(сложение, умножение, нахождение
евклидовой нормы). Евклидова норма
матрицы
вычисляется по формуле
.
Расчет суммы, произведения матриц и нормы матрицы
оформить в виде одного модуля. Матрицы задавать в головной программе.
9.
Разработать программу для возведения
квадратной матрицы размерностью
в заданную целочисленную степень
.
Расчет степени матрицы оформить в виде
модуля. Исходная матрица и степень
задается в головной программе.
104
10.
Разработать программу для возведения
квадратной матрицы размерностью
в заданную целочисленную степень
.
Расчет степени матрицы оформить в виде
модуля, использующего в свою очередь
модуль перемножения двух матриц. Исходная
матрица и степень задаются в головной
программе.
11.
Найти значение
,
где
-
квадратные матрицы размерности
.
- евклидова норма матрицы
.
Расчет суммы, произведения матриц и нормы матрицы оформить в виде отдельных модулей. Матрицы задавать в головной программе.
12. Разработать программу для работы с векторами: сложение двух векторов, нахождение евклидовой нормы векторов, умножение двух векторов с получением числа.
Евклидова
норма вектора
,
размерностью
определяется по формуле
.
Сложение, умножение векторов и нахождение евклидовой нормы оформить в виде отдельных модулей. Вектора задавать в головной программе.
13. Разработать программу для работы с векторами:
сложение двух векторов, нахождение евклидовой нормы векторов, умножение двух векторов с получением вектора.
Евклидова
норма вектора
,
размерностью
определяется по формуле
.
Сложение, умножение векторов и нахождение
105
евклидовой нормы оформить в виде отдельных модулей. Вектора задавать в головной программе.
14. Разработать программу для работы с векторами: сложение двух векторов, нахождение евклидовой нормы векторов, умножение двух векторов с получением матрицы.
Евклидова
норма вектора
,
размерностью
определяется по формуле
.
Сложение, умножение векторов и нахождение евклидовой нормы оформить в виде отдельных модулей. Исходные вектора задавать в головной программе.
15. Разработать программу для работы с комплексными числами (сложение и умножение). Комплексное число определить как запись. Сложение и умножение комплексных чисел оформить в виде отдельных модулей. Комплексные числа задавать в головной программе.
16. Разработать программу для работы с комплексными числами (сложение и умножение). Комплексное число определить как запись. Сложение и умножение комплексных чисел оформить в виде одного модуля. Комплексные числа задавать в головной программе.
17. Разработать программу для работы с комплексными числами (нахождение модуля и деление). Комплексное число определить как запись. Нахождение модуля и деление комплексных чисел оформить в виде одного модуля. Комплексные числа задавать в головной программе.
18. Разработать программу для работы с комплексными числами (нахождение модуля и деление). Комплексное число определить как запись. Нахождение модуля и деление комплексных чисел оформить в виде отдельных модулей. Комплексные числа задавать в головной программе.
19.
Разработать программу для поиска корня
нелинейного уравнения
на отрезке
с заданной
106
точностью
методом половинного деления. Алгоритм
метода половинного деления:
Пусть
уравнение
имеет один корень на отрезке
,
это означает, что
.
Формально процедура решения выглядит
так:
1..
Если
,
то решение найдено.
2.
В противном случае: если
,
то
.
А если
,
то
;
Переход к шагу 1.
20.
Разработать программу для решения
квадратного уравнения с заданными
коэффициентами
.
Решение квадратного уравнения оформить
в виде модуля. Коэффициенты уравнения
задавать в головной программе.
ЗАНЯТИЕ 7. ЗАПИСИ. ФАЙЛЫ