
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Компиляция модулей .
В отличие от программы , модуль нельзя запустить на выполнение как самостоятельную программу . Модуль компилируют не зависимо от программы , которая его использует . Компилировать модуль необходимо на диск , а не в память . После компиляции модуля создается файл с расширением .tpu и именем эквивалентным имени . раs-файла , в котором находится исходный текст модуля . После компиляции модуля можно запустить программу , которая его использует , но при этом необходимо в пункте Options, Directories,unit directorec указать путь где находится tрu-файл . после каждого изменения в тексте модуля его необходимо перекомпилировать .
Существует 3 типа компиляции :
Compile (alt-F9)
Make (F9)
Build – в меню ‘Compile’
Если компилировать программу в режиме Compile , в которой подключено ряд модулей uses M1, M2 , то эти модули должны быть предварительно откомпилированы в tpu – файлы.
Если компилировать основную программу в режиме Make, то компилятор проверяй наличие Tpu – файлов для каждого модуля . Если какой – либо из файлов не обнаружен, то ищется одноименный файл с расширением .раs и если файл найден , то он компилируется . Таким образом если произведены изменения в раs-файле , то независимо от того есть ли в каталоге tpu – файл или нет , система осуществляет его компиляцию перед компиляцией основной программы .
В режиме Build существующие tpu – файла игнорируется и система пытается отыскать и откомпилировать соответствующие раs- файлы для каждого подключаемого к программе модуля . В этом случае можно быть уверенным , что учтены все сделаны изменения в модулях.
Подключение модулей
К основной программе модули подключаются в порядке их перечисления в директиве Uses , то есть с лева на право . В этом же порядке будут срабатываться и блоки инициализации . Блоки инициализации работают только при подключение модулей к основной программе .Если при подключение модуля к модулю , то инициализации не будет .
Под каждый подключенный к программе модуль в ОЗУ отводиться блок памяти . При чем , модуль в процессе выполнения программы находится в памяти даже если в программе не используется ни одной библиотечной процедуры модуля . Потому чем больше модулей подключаются к программе ,тем больше памяти расходуется .
Порядок подключения модулей оказывает влияние на доступность библиотечных типов данных , переменных, процедур и функций. Библиотечными называют те типы переменных и подпрограмм , которые описаны в интерфейсных частях модуля. Они являются доступными в подключающих их программах и модулях .
Пусть модуль М1 и М2 в своих интерфейсных частях содержат такие одноименные элементы , как типы данных , переменные и подпрограммы и их реализуют по разному . Если в основной программе подключающий эти модули будет происходить обращение к этим элементам , то обращение будет эквивалентно обращению к элементам последнего из подключенных модулей М1 , М2 . Если такие же одноименные элементы описаны и в основной программе , то они перекрывают элементы модулей .
Это правило не обходимо учитывать для того чтобы гарантировать корректность обращения между модулями и основной программой .
В Паскале допускается возможность обращения к библиотечным типам данных , процедурам , функциям и переменным из основной программы непосредственно указывая к какому модулю они принадлежат .
«имя модуля». «имя типа »
«имя модуля». «имя переменой »
«имя модуля». «имя подпрограммы»
Пример построения модулей .
{Модуль М1 , М1 .pas M1.tpu }
Unit M1;
Interface
Type
M_type=Boolean ;
Var
M,n:char;
Procedure add- (x1,x2:m_type; var rez :m_type);
Procedure mul_1 (x1,x2:m_type; var rez :m_type);
Procedure out_1 ( rez :m_type);
Implementation
Uses crt;
Var
J:integer;
Procedure add_;
Begin
Rez:=x1or x2;
End;
Procedure Mul_1 (x1,x2:m_type; var rez :m_type);
Begin
Rez:=x1*x2;
End;
Procedure Out _1;
Begin
Write(rez);
Readkey;
End;
Begin
M:=’a’;
N:=’$’;
j:=1;
End.
{Модуль М2 , М2 .pas M2.tpu }
Unit M2;
Interface
Type
M_type=real ;
Var
M,n:byte;
Procedure add- (x1,x2:m_type; var rez :m_type);
Procedure mul_2 (x1,x2:m_type; var rez :m_type);
Implementation
Uses crt;
Var
J:integer;
Procedure Out _1(rez:m_type);
Begin
Write(rez:4:2);
Readkey;
End;
Procedure add_;
Begin
Rez:=x1+x2;
Out_2(rez) ;
End;
Procedure Mul_2;
Begin
Rez:=x1*x2;
Out_2(rez);
End;
Begin
M:=22;
N:=1;
J:=2;
{При запуске программы перед выполнением её оперативного блока выполняются блоки инициализации сначала М2, М1 , где присваивается переменным значения m,n,j}
End.{основная программы М12.pas V12.exe }
Uses M2 ,M1;
Var
C:m_type; из М1 Boolean
C1:M2.M_type ; из М2 Real
M:Boolean; переписывает м в М1и М2
Begin
M:=true ;
Write (n); ‘$’ из М1
Write(M2.n); 1 из М2
Write(m); True из основной программы
Write(m1.m ); ‘а’ из М1
Add_ (false,false,c); из М1
Out_1(c) ; false
M2.add_(2,2,c1); из М2 4.00
Mul_1 (true ,false,c); из М1
M1.out_1(c); False из М1
Mul_2(2,3,c1); 6.00 изМ2
{недопустимые}
Write(j); - неизвестный идентификатор
Out_2(c1); - неизвестный индекс
Add_(false , true,c1); несовместимость типов
End.
Модули М1 и М2 имеют одноименный библиотечный тип M_type, переменные m,n , процедуру Add_ . Переменная J- локальная . В модуле М2 локальной является процедура Out_2 , которая недоступна в основной программе