Новое на сайте

Стек ("магазин")
Учебник
03 Окт 2010

Начнем с рассмотрения примера. Пусть в трубку с запаянным концом закатываются шарики. Извлекать их можно только в обратном порядке: тот шарик, что закатился последним, будет извлечен первым.

Пример стека
Процедура Dispose
Учебник
03 Окт 2010

Динамическая переменная, созданная процедурой New, может быть «стерта» только процедурой Dispose.

Общий вид:

dispose(R);

Здесь R – ссылочная переменная, указывающая на ту динамическую переменную, которую следует стереть. После стирания динамической переменной R^ нельзя использовать значение R, такая ошибка может привести к порче памяти и другим серьезным последствиям.

Операции над указателями (ссылочными переменными
Картинки
02 Окт 2010

Рассмотрим действия со ссылочными переменными на следующей схеме. Пусть Q и R указывают на различные компоненты динамических переменных типа C:

C = record
	I: integer;
	P: point
end;

Пусть в памяти машины размещены две цепочки динамических переменных. Выполним четыре различных операций: Q := R; Q^ := R^; Q^.I := R^.I; Q^.P := R^.P;

a) После выполнения оператора Q := R; переменная Q указывает на ту же динамическую переменную, что и R.

Операции над указателями
Учебник
02 Окт 2010

Значение ссылочной переменной R можно присваивать другой ссылочной переменной того же типа.

Пример 1. Пусть Q, R: ^point; тогда оператор Q := R; зашлет в Q тот же адрес, что хранится в R.

Рассмотрим действия со ссылочными переменными на следующей схеме. Пусть Q и R указывают на различные компоненты динамических переменных типа C:

C = record
	I: integer;
	P: point
end;

Процедура New
Учебник
30 Сен 2010

Резервирование места в памяти под динамическую переменную и засылка ее адреса в ссылочную переменную R выполняется при обращении new(R). При этом выделяется столько ячеек памяти, сколько требует динамическая переменная, с которой связана R. Эти все данные система получает из раздела описания типов в программе.

Динамические переменные, созданные посредством процедуры new(R), называют также указанными переменными (указатель R).

Ссылочные и динамические переменные
Учебник
30 Сен 2010

Обращение к динамической переменной происходит посредством ссылочной переменной, которая содержит адрес соответствующей динамической переменной.

Под ссылочную переменную транслятор отводит место в памяти машины; эта переменная имеет имя и явно упоминается в программе. Ссылочные переменные образуют новый тип данных – "ссылки" (указатели).

Динамические переменные, как правило, имеют тип "запись" (record), т.к. должны содержать, помимо значения (целого, вещественного и т.п.), ссылку на другую динамическую переменную связанной структуры.

Формирование динамических данных
Картинки
30 Сен 2010
  1. Найти и зарезервировать место в памяти для компоненты.
  2. Заслать ссылку на эту компоненту (адрес) в ссылочную переменную R.
  3. Присвоить полю I значение 5.
  4. Присвоить некоторой ссылочной переменной Q значение R (скопировать).
  5. Найти и зарезервировать место в памяти для новой компоненты.
  6. Заслать в переменную R адрес этой компоненты.
  7. Заслать в поле I значение 10.
  8. Заслать в поле P значение Q.
Указатели, или ссылки (Pointer)
Учебник
28 Сен 2010

Когда транслятор анализирует разделы var в программе (основная ветка, функции, процедуры), он отводит для каждой переменной соответствующее число ячеек памяти и закрепляет их за данной переменной на все время работы блока. Такие переменные называют статическими. Они не могут быть использованы системой под другие нужды, даже если в процессе дальнейшей работы программы эти переменные больше не понадобятся.

Указатели - динамические типы данных
Картинки
28 Сен 2010

Принцип распределения в памяти данных при динамической организации.

Прямоугольники. Процедуры Rectangle, Bar и Setfillstyle
Учебник
21 Сен 2010

Модуль Graph включает несколько процедур для вывода на экран прямоугольников. Самая очевидная из них – это rectangle. Данная процедура принимает четыре параметра – координаты верхнего левого и нижнего правого угла. В результате получается прямоугольник без заливки. Цвет контура можно задать с помощью процедуры setcolor до того, как будет вызвана процедура rectangle.