Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Praktikum_po_programmirovaniyu.doc
Скачиваний:
23
Добавлен:
09.12.2018
Размер:
2.5 Mб
Скачать

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. Разработать программу для расчета

.

Исходные данные: - одномерный массив размерности ; - функции; - целое число. Расчет суммы и - оформить в виде одного модуля. Функции задавать в головной программе.

  1. Разработать программу для расчета

.

Исходные данные: - одномерный массив размерности ; - функции; - норма вектора . Расчет суммы и - оформить в виде разных модулей. Функции задавать в головной программе.

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. ЗАПИСИ. ФАЙЛЫ