- •Краткий справочник по Турбо Паскалю 7.0 Петрозаводск
- •Краткий справочник по Турбо Паскалю 7.0
- •Оглавление
- •Введение
- •Таблицы кодировки символов Коды 0…127 (кодировка ascii)
- •Коды 128…255 (альтернативная таблица)
- •Типы данных в Турбо Паскале 7.0
- •1. Среда Турбо Паскаля
- •1.1. Запуск
- •Структура основного экрана
- •Зарезервированные слова
- •Таблицы истинности логических операций
- •Литература Список использованной литературы
- •Список рекомендуемой литературы
- •1.3. Команды текстового редактора
- •Команды текстового редактора Турбо Паскаля
- •1.4. Справочная система
- •Заключение
- •1.5. О режиме отладки
- •2. Язык Турбо Паскаль
- •2.1. Знакомство с языком Паскаль
- •Идентификаторы
- •Константы
- •Выражения
- •Старшинство операций в логическом выражении
- •2 11 3 6 4 5 7 10 8 1 9 12
- •2.6.2. Процедуры и функции из библиотеки Graph
- •2.6. Графика в Турбо Паскале
- •2.6.1. О графическом режиме
- •2.2. Структура программы
- •Общая структура программ в тп 7.0
- •Структура программы в виде рбнф
- •2.5.4. О переменных-указателях и динамической памяти
- •Процедуры и функции для текстовых файлов
- •Процедуры для нетипизированных файлов
- •2.3. Описание данных
- •2.3.1. Простые типы данных
- •2.3.2. Строки. Строковые функции и процедуры
- •Процедуры и функции для работы с символами и строками
- •Стандартные средства обработки файлов
- •2.5.3. Работа с файлами
- •2.3.3. Структуры данных. Массивы
- •2.3.4. Об использовании функций и процедур
- •2.5. Дополнительные структуры данных
- •2.5.1. Множества
- •2.5.2. Записи
- •Цикл со счетчиком
- •2.3.5. Функции и процедуры из библиотеки System Математические
- •Прочие функции и процедуры
- •Преобразования типов данных
- •2.3.6. Процедуры и функции из библиотеки Crt
- •2.4.3. Структуры цикла
- •Цикл с предусловием
- •Цикл с постусловием
- •2.4.2. Структуры ветвления Безусловный переход
- •Условный переход (ветвление)
- •Многовариантный выбор
- •2.3.7. Функции и процедуры пользователя
- •2.4. Операторы
- •2.4.1. Последовательные структуры Присваивание
- •Ввод и вывод данных
2.5.4. О переменных-указателях и динамической памяти
В ТП 7.0 существует возможность работы с динамическими структурами данных. Это позволяет эффективно использовать память компьютера.
Динамической называется переменная, память для которой выделяется во время работы программы. У динамической переменной нет имени, - к ней можно обратиться только при помощи специальной переменной, - переменной-указателя.
Переменная-указатель – переменная целого типа – это адрес байта памяти, содержащей другое данное (переменную, константу, адрес другой переменной и т.п.). Любой ссылочный (адресный) тип данных определяет множество значений, которые являются указателями (ссылками) на значения какого-либо другого типа данных. Указатели и динамические переменные позволяют создавать сложные динамические структуры данных, такие как связанные списки и деревья. [5, 7]
Описание переменной-указателя
1) ИмяУказателя : ^ Тип – типизированный указатель;
2) ИмяУказателя : Pointer – нетипизированный указатель;
Здесь Тип – тип переменной, на которую ссылается переменная-указатель с именем ИмяУказателя; Pointer – любой стандартный тип ссылочных (адресных) данных.
Нетипизированные указатели особенно удобны для динамического размещения данных, структура и тип которых меняется в ходе выполнения программы.
Для указателей в ТП 7.0 допустимы только операции сравнения и присваивания. Указателю можно присваивать значение указателя того же типа, константу NIL (пустой указатель) или адрес объекта, определенный с помощью стандартных функций модуля System - Addr (ИмяПеременной) (оператора @ИмяПереиенной) и Ptr(СегментнаяЧастьАдреса, Смещение).
Объем динамической памяти, а также целого блока динамически распределяемой памяти – кучи, называемой Heap-областью, - регулируется с поиощью директивы компилятора {$M}, причем минимальный размер ее равен нулю, а максимальный – объему всей свободной памяти DOS. Использование в программе для обозначения адреса переменной типизированного адресного оператора @ возможно лишь при установленном режиме {$T+} директивы-переключателя {$T} или при активизации пункта меню Options/Compiler/Typed @ operator.
Для выделения памяти новой динамической переменной используется процедура New(ИмяУказателя). После завершения работы с динамической переменной следует освободить динамическую память, применив к ней процедуру Dispose(ИмяУказателя) и присвоить затем этой переменной значение NIL. Таким образом, перед каждым повторным вызовом оператора New должен стоять вызов оператора Dispose. В начале работы программы значения указателей равны NIL (они ни на что не ссылаются).
Значением любого указателя является адрес байта памяти, а данные, которые размещены по этому адресу (значение динамической переменной), доступны при указании после имени переменной знака ^.
Для динамического распределения памяти, помимо процедур New и Dispose, в TP 7.0 служат процедуры GetMem и FreeMem. Для динамического распределения целого блока динамически распределяемой памяти - кучи, в TP 7.0 служат процедуры Mark и Release. Подробнее см. [6, 7].
30