- •25. Программный модуль
 - •26Указатели в Паскале. Динамическая память на языке Паскаль
 - •Ссылочные типы. Указатели в Паскале
 - •Операции с указателями
 - •Процедуры и функции для работы с указателями и адресами в Паскале
 - •27. Динамические структуры данных | Связные списки
 - •1 Связное представление данных в памяти
 - •2 Связные линейные списки
 - •2.1 Машинное представление связных линейных списков
 - •2.2 Реализация операций над связными линейными списками
 - •3. Нелинейные разветвленные списки
 - •3.1 Основные понятия
 - •3.2 Представление списковых структур в памяти.
 - •3.3 Операции обработки списков
 - •28. Стек и очередь
 - •29. Системы программирования
 - •30. Языки программирования
 - •33. Накопители на гибких магнитных дисках
 - •35Видеосистема персонального компьютера.
 - •История
 - •Технический обзор
 - •Новые возможности по сравнению с Си
 - •Не объектно-ориентированные возможности
 - •Стандартная библиотека
 - •Объектно-ориентированные особенности языка
 - •Проблемы старого подхода
 - •Инкапсуляция
 - •Описание функций в теле класса
 - •Конструкторы и деструкторы
 - •Другие возможности функций-членов
 - •Наследование
 - •Полиморфизм
 - •Будущее развитие
 - •История названия
 - •Пример №1
 - •Пример №2
 - •Пример №3
 - •Пример №4
 - •Описание и инициализация переменных
 - •Int k; // это переменная целого типа int
 - •Задание и использование констант
 - •Описание и инициализация переменных
 - •Int k; // это переменная целого типа int
 - •Задание и использование констант
 - •5.3.1. Символьные типы
 - •5.3.2. Числовые типы
 - •5.3.3. Типы дата/время
 - •5.3.4. Двоичные типы
 - •5.3.5. Пользовательские типы данных
 - •2. [Проверка домашнего задания]
 - •3. Актуализация знаний и умений учащихся по пройденному материалу
 - •5. Реализация, составление алгоритмов с использованием повторения. Графика в программе Паскаль авс.
 - •6. Ребус. Правильная осанка
 - •9*. Тестирование
 - •Операции над строками
 - •Операции над строками
 - •2. Объединения
 - •Комбинированные типы. Записи
 - •Обработка записей в Паскале
 - •Оператор присоединения в Паскале
 - •Вввод / вывод записей в Паскале
 - •Примеры программ
 
25. Программный модуль
Программа строится на основе программных модулей. Модуль состоит из элементов программного модуля. В модуле нет ничего, кроме инструкций препроцессора и (или) списков операторов.
Как сказано в справочном руководстве по C++, файл состоит из последовательности объявлений.
Здесь нет ничего странного: определение является частным случаем объявления (например, объявление, содержащее инициализацию).
Сложность оператора практически ничем не регламентируется, к ним, в частности, относятся объявления и определения объектов, объявления (или прототипы) и определения функций.
В свою очередь, функция состоит из заголовка, который включает спецификаторы объявления, описатели и инициализаторы и тела.
Тело функции представляет собой блок операторов - список операторов (опять!), заключаемый в фигурные скобки
26Указатели в Паскале. Динамическая память на языке Паскаль
| 
			 
  | 
В ТР имена объектов (переменных и др.) д. б. определены до момента использования их в программе. Как отмечалось ранее, ОП персонального компьютера имеет сегментную структуру. Адрес – совокупность двух 16-ти разрядных слов - сегмента и смещения. (Например: $0060:$01А0).Сегмент - участок памяти, имеющий максимальную длину 64К (65536 байт). Начальный адрес каждого сегмента кратен 16 (т.е. 0, 16, 32, и т.д.), следовательно, два сегмента отстоят друг от друга, по крайней мере, на 16 байт. Сегменты адресуют память с точностью до параграфа. Параграф – фрагмент памяти равный 16 байт. Смещение – линейная адресация в сегменте. Она также имеет 16-ти разрядные адреса и адресует память с точностью до байта. При этом глобальные переменные и типизированные константы размещаются в сегменте данных. Такие переменные называются статическими, а память, выделяемая компилятором для их хранения называется статической памятью.
Локальные переменные размещаются в памяти динамически при активизации подпрограммы. После выполнения подпрограммы память освобождается.
Память, которая выделяется под локальные переменные, называется сегментом стека. Она задается директивой {$M<размер памяти>}. Минимальный размер памяти 1К, максимальный 64К, по умолчанию 16к.
В ТР существует возможность создавать новые переменные в момент работы программы или уничтожать их в соответствие с требованиями задачи. Такие переменные называются динамическими.
Для динамических переменных отводится динамическая память, которая имеет стековую структуру и называется «кучей» (хипом – Heap-куча). Размер хипа задается директивой {$M<размер памяти>}.
Доступ к статическим переменным осуществляется через их имена. Доступ к динамическим переменным осуществляется через указатель на место их расположения в памяти. Многие практические задачи трудно или невозможно решить без использования динамической памяти. Например, обработки массивов больших объемов (более 65536 байт).
Ссылочные типы. Указатели в Паскале
Указатель – это переменная, которая содержит адрес другой переменной (байта памяти). В ТР имеется два вида указателей: указатель на объект некоторого типа (типизированный) и указатель, не связанный с типом. Описание указателей.
Для объявления типизированных указателей используется значок ^, который помещается перед соответствующим типом:
Type T = ^T1; Var A :T; где: T – имя типа; T 1 - базовый тип (любой в т.ч. указатель); ^ - указатель. Примеры: Var a :byte; {выделение памяти для переменной где хранится ее значение} a ;^byte; {выделение памяти для переменной где хранится ее адрес}
Var p1 :^integer; p2, p3 :^real;
Для объявления переменных не связывая их, с каким либо типом данных можно использовать указатель без типа (pointer). Var p :pointer; где: pointer - не типизированный указатель, который занимает в памяти 4 байт (2-байта сегмент, 2байта смещение.).
