
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Функции
Общая структура функций совпадают со структурой процедур . Отличительная черта в синтаксисе–записи
Синтаксис записи .
Function «имя » ( «список формальных параметров »): «тип возвращенного значения »;
Label
Const
Type
Var
…..
Begin
«тело функции»
End;
Типом возвращенного значения может быть любой тип , определенный в паскале . Идентификатор функций возвращает после вызова скалярное значение заданного в описании типа . Для приведения функции значения её имя должно хотя бы один раз появиться в левой части оператора присваивания в теле самой функции . Если такого присваивания произведено то при вызове функции возвращает не определенное значение .
Вызов функции осуществляется путем указания её имени и списка фактических параметров . Поскольку имя функции при вызове представлены собой возвращение значения , то вызов не может приходить обособленно , как в случае процедур . Он осуществляется в выражениях , в вызовах других подпрограммах . Однако в Паскале предусматривается возможность расширения функции (см . обособленный вызов функции ).
Синтаксис вызова функции
«Имя переменной »:= «имя функций » ( «фактические параметры »);
Имя переменной должно быть совместимо по типу со значением , возвращаемого функцией .
Пример – функция суммы элементов массива .
Type
Massiv_1=array [1..5] of byte;
Const
A:massiv_1=(1,2,3,4,5);
B:massiv_2 = (5,6,7,8,9);
Var
I:byte ;
Function sum_mas (p:massiv_1):longint;
Var
S:longint ;
Begin
S :=0;
For i:=1 to 5 do
Inc(s,p[i]);
Sum_mas:=s;
End;
Var
Sum :longint;
Begin
Sum :=sum_mas(a);
Write(‘Сумма ’,sum);
Write (‘Сумма ’, Sum_mas (b));
End.
Если функция кроме изменения своих переменных изменяет какие – либо глобальные значения и производит действия не связанные с вычислением своего значения , то говорят , что функция имеет побочный эффект .
Необходимо учитывать порядок следования параметров и совместимость формальных и фактических параметров , по типу . Нельзя конструировать структурированные типы в локальный параметр , необходимо использовать уже известные идентификаторы типов это же правило нужно использовать для значения возвращающий функции .
Procedure P(k= record
I:char;
B:byte;
End; )
Правильный вариант
Type
Res=record
I:char ;
B:byte;
End;
………
Procedure p(k:res);
Обособленный вызов функций
Паскаль дает возможность вызывать функцию , не использовав при этом возвращающие ей значение .Чтобы этот вызов был возможном , используются директива компилятора {$X+} , которая устанавливается в начале программного кода . Обычно режим разрешения обособленного вызова функции устанавливается по умолчанию .
{$X-} – запрещение обособленного вызова функции
Пример
{$X+} {$X-}
Uses crt; Uses crt;
….. ……
Readkey; readkey;
End. End.
Для соблюдения хорошего тонна программирования , в случаях , если результат работы подпрограммы не нужен для дальнейшего использования , то необходимо оформлять данную подпрограмму как процедуру .