- •Тема 2.2. Основные понятия языка программирования высокого уровня Free Pascal
- •Системы программирования
- •Интегрированная среда разработки FreePascal
- •Введение в язык Паскаль Характеристика языка программирования Паскаль
- •Основные понятия технологии программирования
- •Алфавит языка Паскаль
- •Структура программы на Паскале
- •Типы данных
- •Стандартные типы данных
- •Структуры данных
- •Строковый тип
- •Структурированные переменные
- •Представление основных структур программирования на языке Паскаль Операции и выражения
- •Арифметические операции и выражения
- •Логические операции
- •Оператор присваивания
- •Составной оператор
- •Условный оператор
- •Процедура write
- •Процедура ввода
- •Оператор выбора
- •Операторы повторений
- •Оператор цикла с предусловием
- •Оператор цикла с постусловием
- •Оператор цикла с параметром
- •Метки и операторы перехода
- •Работа с массивами
- •Операции над строками
- •Функция Length
- •Функция Upcase
- •Функция Сopy
- •Функция Pos
- •Процедуры Insert и Delete
- •Процедура Str
- •Процедура val
- •Практические примеры работы со строковыми данными
- •Оператор присоединения with
- •Процедуры и функции Паскаля
- •Формальные и фактические параметры
- •Типизированные константы
- •Interface
- •Implementation
- •Interface
- •Interface
- •Implementation
- •Файловый тип данных Типизированные файлы
- •Текстовые файлы
Interface
type
Complex = record
re, im : real;
end;
procedure AddC (x, y: Complex; var z: Complex);
procedure MulC (x, y: Complex; var z: Complex);
Если теперь в основной программе написать предложение
Uses Cmplx;
то в программе станут доступными тип Complexи две процедуры –AddCиMulCих модуляCmplx.
Все константы и переменные, объявленные в интерфейсной части модуля, объединяются с глобальными константами и переменными основной программы и помещаются компилятором в общий сегмент памяти.Порядок появления различных разделов объявлений в тексте модуля произвольный.
Исполняемая часть модуля начинается зарезервированным словом IMPLEMENTATION и содержит описания подпрограмм, объявленных в интерфейсной части. В ней могут объявляться локальные для модуля объекты – вспомогательные типы, константы, переменные, а также метки, если они используются в инициирующей части.
Все подпрограммы, заголовки которых присутствуют в интерфейсной части, должны быть описаны в исполняемой части. При этом в исполняемой части можно не повторять список формальных параметров (и тип результата для функции). Исполняемая часть модуля может содержать локальные подпрограммы, доступные только в пределах данного модуля.
Инициирующая часть завершает модуль. Она может отсутствовать вместе с начинающим ее словом beginили быть пустой – тогда сразу заbegin следует признак конца модуля (end с точкой).Не рекомендуется делать инициирующую часть пустой – лучше ее опустить.
В инициирующей части размещаются исполняемые операторы, составляющие некоторый фрагмент программы. Эти операторы исполняются до передачи управления основной программе и обычно используются для подготовки ее работы. Например, в этой части могут инициироваться переменные, открываться нужные файлы и т.п.
Пример реализации модуля, включающего две процедуры – сложение и умножение комплексных чисел – приведен ниже.
Unit Cmplx;
Interface
type
Complex = record
re, im : real;
end;
procedure AddC (x, y: Complex; var z: Complex);
procedure MulC (x, y: Complex; var z: Complex);
Implementation
procedure AddC;
begin
z.re := x.re + y.re;
z.im := x.im + y.im
end;
procedure MulC;
begin
z.re := x.re * y.re - x.im * y.im;
z.im := x.re * y.im + x.im * y.re
end;
end.
При компиляции модулей Паскаль создает специальный файл, который самостоятельно не выполняется. Определены три режима компиляции: COMPILE(<Alt>+<F9>),MAKE<F9> иBUILD. Рекомендуется компилировать модули в режимеCOMPILE, используя комбинацию клавиш <Alt>+<F9>, а основную программу – в режимеRUNили просто нажав <Ctrl>+<F9>. При компиляции основной программы в текущем каталоге, а затем в каталоге, объявленном опциейUnitDirectoriesосуществляется поиск подключаемых модули. Если какой-либо из файлов не обнаружен, система ищет одноименный файл с расширениемPASи компилирует его. При этом система следит за возможными изменениями исходного текста любого используемого модуля. Если вPAS-файл (исходный текст модуля) внесены изменения, то независимо от наличия скомпилированного модуля система осуществляет его перекомпиляцию. Более того, если изменения внесены в интерфейсную часть модуля, то будут перекомпилированы также и все другие модули, обращающиеся к нему.
