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