
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Параметры значения – данные параметры описываются в заголовке , могут изменять свои значения на ряду с прочими переменными , но эти изменения будут строго локальными и не передадутся в вызывающее параметры, то есть изменение параметров значения внутри подпрограмм не изменяет значения , подставленных на их место аргументов (фактических параметров ). При вызове подпрограмм , как параметра – значения , так же как и любой локальной переменной , отводится место для хранения данных в стеке . Эти отведенные места памяти в параметрах и локальных переменных равны столько времени , сколько выполняется подпрограмма . После завершения работы подпрограммы значение локальных переменных и параметров – значения является не доступными , поскольку они выгружены из стека .
Параметры – переменные.
При объявлении параметры - переменные отличаются от параметров – значения синтаксическим описанием , а именно : пред параметрами – переменными ставиться ключевое слово Var .
Пример :
Procedure p (a,b: byte ; Var c:char );
Параметры значений параметры переменных
В отличие от параметров - значений параметры – переменных позволяют изменять значения передаваемых в подпрограммы фактических параметров находящихся при вызове подпрограмм на месте параметров – значений . Такой способ передачи параметров называется – передача по ссылке (по адресу ), при этом в подпрограмму передаются не значения аргументы , а его адрес . При вызове подпрограммы для параметров переменной не отводится память в стеке как для параметров – значений ,
а подпрограммы получают возможность работать с тем местом памяти , где постоянно храниться значение переменных являющейся фактическим параметром , то есть параметр – значения работают с мнимым значением фактических параметров , а параметры - переменных работают с реальным значением фактических параметров . На местах параметров переменных при вызове подпрограмм должны указываться идентификаторы переменных , тогда как на местах параметры значений возможно ставить как значения , так и переменные . Параметры значения используются в основном как входные параметры подпрограмм , а параметры переменные могут использоваться как входные и как выходные параметры подпрограмм .
Примеры показывающие практические особенности подпрограмм .
Var
A1,b1,k:bayte;
Procedure p (p_a ,p_b :byte; var p_k:byte );
Begin
P_a:=p_a+p_b;
P_b:=p_a+3;
P_k:=p_b+p_a;
End;
Begin
A1:=10;
B1:=10; (a)
K1:=10;
P(a1,b1,k ); (б)
End. (в)
Параметры –константы.
Подобно параметрам – переменным возможно использовать параметры – константы , которые доступны только для чтения . При описании такого параметра используются ключевое слова Const .
Синтаксическое описание
Procedure P(const b :byte );
В теле подпрограммы не допускается присваивания значению формальному параметру – констант . В случаях когда формальные параметры не должны изменить своего значения в ходе выполнения подпрограммы , в место параметра – значения следует использовать параметры – констант , то есть он должен позволить защитится от случайных присваиваний . При использовании параметра – констант структурированного типа компилятор может генерировать более эффективный код , отличающийся от аналогичного использования параметра – значения .
Подпрограммы: Использование процедур .
Реализуем программу которая будет выполнять ввод 2 текстов и нахождение символов, которые присутствуют в обоих текстах и вывод их на экран, и отдельный вывод всех отсутствующих символов.
Uses crt ;
Type
Tset=st of char;
Tstring=string[200];
Const
Mn_symbol:tset=[‘a’..’z’];
Var
Str1, str2 :tstring;
Mn_str1,mn_str2,mn_result1,mn_result2:tset;
Procedure input _text(zapros :string; var mn_xx:tset; varstr_xx:tstring);
Var
I:byte;
Ch:char;
Begin
Write(zapros);
I:=1;ch:=#0;
Mn_xx:=[];
While (i<=200) and (ch<>#13) do
Begin
Ch:=readkey;
If ch In mn_symbol then
Begin
Write (ch);
Str_xx:=str_xx +ch;
Mn_xx:=mn_xx+[ch]
Inc(i0;
End;
End;
Writelb;
End;
Procedure Output_Mn ( Comment : Strinq ; mn_xx: TSet );
Var
ch: char;
Beqin
writeln (Comment);
for ch : ‘a’ to ‘ z’ do
if ch in mn_ xx then
write ( ch:2)
writeln;
End;
Beqin
Clrscr;
Input_ text (‘Введите текст № 1’ ‘mn_ str1, str1);
Input_ text (‘Введите текст № 2’ ‘mn_ str2, str);
Mn_result1:= mn_str1*mn str2
Mn rsult2:= mn_ symbol-(mn_str1+mn_str2);
Outpt _ Mn ( ‘ символы одновременно присутствующие в текстах:’, mn_result1);
Outpt _ Mn ( ‘ символы отсутствующие в текстах:’, mn_result2);
Readkey;
End.
Лекция №4
Подпрограммы. Процедуры. Определение процедур. Подпрограммы. Глобальные и локальные переменные. Формальные и фактические параметры подпрограмм. Параметры-значения, параметры-переменные, параметры-константы. Функции. Определение функций. Структурированные типы данных в качестве параметров подпрограмм.