
- •Var «Имя переменной »:set of «базовый тип » ;
- •Построение множеств :
- •Массив множеств.
- •Операция со множествами .
- •Операция включения и исключения одиночного элемента: реализуется с помощью .
- •Достоинство и недостатки множеств:
- •1 Способ : через определение соответствие типа
- •2 Способ : в разделе описания переменных:
- •Массивы записей
- •Записи со стартовыми значениями .
- •Вложенные записи
- •Оператор присоединения.
- •Вариантные записи .
- •Глобальные и локальные переменные
- •Вызов подпрограмм .
- •Формальные и фактические параметры .
- •Параметры подпрограмм.
- •Параметры – переменные.
- •Параметры –константы.
- •Функции
- •Обособленный вызов функций
- •Вложенные подпрограммы
- •Дальний и ближний вызов подпрограмм . Дальний вызов
- •Ближний вызов.
- •Подпрограмма с не типизированными параметрами .
- •Опережающее описание подпрограмм .
- •Рекурсивные подпрограммы
- •Внешние подпрограммы.
- •Процедуры и функции как параметры подпрограмм .
- •Расположение блоков программы в памяти .
- •Сегментный и адресный типы данных .
- •Динамическое распределение памяти
- •Динамические структуры используются в следующих случаях :
- •Ссылочный тип данных . Работа с адресами.
- •Синтаксис описания переменой ссылочного типа :
- •Основные операции с ссылочными переменными
- •Операция разыменования к указателям типа pointer .
- •Присваивание разыменование ссылок
- •Операция сравнивания
- •Процедуры работы с динамической памятью
- •Выделение блока памяти.
- •Процедура освобождения памяти
- •Выделение блока памяти из кучи
- •Процедура очистки памяти
- •Процедура маркировки адреса динамической памяти.
- •Процедура освобождения памяти
- •Функции анализа свободной памяти в «куче»
- •Управление размерами динамической памяти и размером стека.
- •Предопределенные указатели Администратор дп(кучи) .
- •Особенности при выделение блоков
- •Анализ ресурсов дп при размещение динамических данных.
- •Линейные динамические списки.
- •Определение элемента однонаправленного линейного списка.
- •Организация динамических списков и операции над ними.
- •1.Организация списка типа стек.
- •2.Формирование списка типа очередь(fifo).
- •Добавление элемента
- •Просмотр списка
- •Вставка элемента
- •Удаление узла из существующего списка.
- •Удаление текущего узла списка.
- •Удаление всего списка.
- •Открытие файла на запись (перезапись).
- •Буфер ввода-вывода.
- •Запись данных в файл.
- •Чтение данных из файла(read,readln).
- •Файлы ввода/вывода. Текстовые файлы. Процедуры работы с текстовыми файлами. Запись и чтение в текстовый файл информации различного типа (числовая, строковая). Процедуры работы с текстовым файлами.
- •Запись и чтение символьной информации.
- •Запись и чтение числовой информации
- •Запись и чтение строковой информации.
- •Типизированные файлы.
- •Доступ к компонентам файла осуществляется с помощью следующих процедур:
- •Добавление записи в типизированный файл
- •Удаление записи
- •Другие функции используемые при прямом доступе
- •Не типизированные файлы и операции над ними.
- •Структура модуля .
- •Var «библиотечные переменные »
- •Раздел реализации.
- •Компиляция модулей .
- •Подключение модулей
- •Закольцованность модуля.
Расположение блоков программы в памяти .
Сегментный и адресный типы данных .
Существует 2 основных типа распределения памяти : статическое и динамическое .
Статическое распределение предполагает , что память под переменные отводятся в начале работы программой единицы и освобождается поле завершения ее работы . Со статической памятью непосредственно связи сегмента данных , в которых хранятся значения глобальных переменных , в процессе выполнения программы – статических переменных . Обращение осуществляется по их именам . память , отводится под статические переменные не используется системой под какие - либо переменные не используется системой под какие – либо переменные не используются .В процессе работы переменные нельзя удалить статическую переменную из памяти и нельзя выделить новый блок в этой памяти .
Динамическое распределение памяти
Динамическое распределение предполагает изменение ее суммарного доступа объема в ходе выполнения программы как в сторону уменьшения , так и в сторону увеличения . При динамическом распределении память отводится под данные и освобождается участки различной длинны , необходимы пользователю . При таком распределение памяти данные не обозначаются именем переменной и обращение к ним производится не по именам , а по ссылке , через ссылочную переменную или указатель (косвенная адресация ). Ссылки указатель содержат адрес блока динамической памяти (Ссылочная переменная содержаться в статической памяти ). Динамические данные , создаваемые и ликвидируют по мере надобности динамические переменные . С динамической памятью связанны динамические структуры , представляет собой данные , размер который в процессе выполняется заранее не известен , или когда память под них отводится в ходе выполнения программы .
Динамические структуры используются в следующих случаях :
Когда используются переменные , имеющие большой размер , необходимые в одних частях программы и не нужные в других .
Когда необходимо построить последовательность или какую – либо другую структуру , размер который изменяется в широких пределах и является трудно предсказуемым.
Ссылочный тип данных . Работа с адресами.
Для работы с адресами в Paskal используется специальный тип Pointer , который называется указательным , а переменная данного типа – указателем. Указатель – переменная , код адреса какого-либо элемента памяти . Тип Pointer занимает 4 байта , состоит из 2х слов : адрес сегмента и смещения , записанные как сплошные 32 бита P:pointer; Однако для работы с адресами может использоваться другой адресный тип , называется ссылочным типом , основная деятельность которого связанна с организацией и работой как с динамической , так и со статическими структурами данных . Сами ссылочные переменные и указатели находится в статической памяти . При объявлении ссылочных переменных обычно строится ссылочный тип данных , но можно непосредственно в Var , хотя различные виды описаний могут привести к несовместимости типов по адресу .
Синтаксис описания переменой ссылочного типа :
Type
«имя типа »=^ «базовый тип »;
Var
«имя ссылочной переменной»: «имя типа»; или
«имя ссылочной переменной» : ^ «базовый тип »;
Пример описания:
Type
P_int=^integer ;
P_Hoat=^real;
Var
Ptr0, ptr1:p_int;
Ptr :^integer;
Ptr_f:p_hoat;
P_ch:^char;
………
Ссылочные переменные Ptr0 и Ptr1 не будут совместимы с Ptr по адресу , не смотря на то что являются ссылками на один тип . В этом случае операция по пересылке адреса невозможна для не совместимых переменных . Представлены несовместимые по адресу переменные являются совместимые по ссылке . то по типу субъекта , на который ссылаются (смотри раз именование ).
Лекция №8
Ссылочный и указательный типы данных. Основные операции с ссылочными переменными. Работа с адресами. Примеры.