Динамические структуры данных. Задание практикума. Язык Паскаль. Вылиток А.А - 7 стр.

UptoLike

- 7 -
Заметим, что возможны случаи, когда синтаксически верное
обозначение переменной не имеет смысла. Тогда программа, в которой
встретилось такое обозначение, не может быть исполнена (или её исполнение
приведёт к ошибке). Например, обозначение a[i]ошибочно, если имя a в
программе не означает массив. Если это имя описано с помощью var a :
array[1..5] of integer, а значение индекса i во время исполнения
программы равно 6, то обращение к a[i] приведёт к ошибке, так как не
существует компоненты массива с таким индексом.
Следует проявлять осторожность и при работе с указателями. Если,
например, значение указателя q не определено или равно nil, то обращение
к q приведёт к ошибке.
Теперь рассмотрим операции над ссылочными значениями одного и того
же типа. В Паскале ссылки можно присваивать и сравнивать на равенство и
неравенство. Присваивание осуществляется, как обычно, с помощью оператора
присваивания:
<ссылочная переменная> := <ссылочное выражение> ,
где <ссылочная переменная> обозначение переменной ссылочного
типа, <ссылочное выражение>это
либо пустая ссылка nil, либо
ссылочная переменная, либо вызов функции ссылочного типа.
Пусть переменные p и q имеют значения, изображенные на схеме:
Тогда логические выражения p=q и q<>nil дают значение "ложь". После
присваивания q:=p (результат изображен на рисунке)
значение q до присваивания
равно nil
значение q после присваивания
совпадает со значением p, т.е. q
ссылается на тот же объект, что и p
логические выражения p=q и q<>nil дают значение "истина".
Если объект, созданный с помощью оператора new, больше не нужен
программе, его целесообразно уничтожить, чтобы он зря не занимал место в
оперативной памяти (на его месте могут быть созданы другие объекты).
Уничтожение динамического объекта осуществляется оператором
процедуры dispose(<ссылочное выражение>). Значением
выражения,
указанного в качестве фактического параметра должна быть ссылка на уже
существующий динамический объект (иначе ошибка). Этот объект перестает
существовать, a ссылка на него удаляется из множества значений ссылочного
p
35
q
nil
p
35
q
{ q:=p }
p
35
q
nil
       Заметим, что возможны случаи, когда синтаксически верное
обозначение переменной не имеет смысла. Тогда программа, в которой
встретилось такое обозначение, не может быть исполнена (или её исполнение
приведёт к ошибке). Например, обозначение a[i]ошибочно, если имя a в
программе не означает массив. Если это имя описано с помощью var a :
array[1..5] of integer, а значение индекса i во время исполнения
программы равно 6, то обращение к a[i] приведёт к ошибке, так как не
существует компоненты массива с таким индексом.
       Следует проявлять осторожность и при работе с указателями. Если,
например, значение указателя q не определено или равно nil, то обращение
к q↑ приведёт к ошибке.
       Теперь рассмотрим операции над ссылочными значениями одного и того
же типа. В Паскале ссылки можно присваивать и сравнивать на равенство и
неравенство. Присваивание осуществляется, как обычно, с помощью оператора
присваивания:
 <ссылочная переменная> := <ссылочное выражение> ,
где <ссылочная переменная> – обозначение переменной ссылочного
типа, <ссылочное выражение> – это либо пустая ссылка nil, либо
ссылочная переменная, либо вызов функции ссылочного типа.
      Пусть переменные p и q имеют значения, изображенные на схеме:

p
                   35
q    nil


Тогда логические выражения p=q и q<>nil дают значение "ложь". После
присваивания q:=p (результат изображен на рисунке)

p                                                   p
                   35            { q:=p }                                 35
q    nil                                            q

значение q   до   присваивания                 значение q     после присваивания
равно nil                                      совпадает со значением p, т.е. q
                                               ссылается на тот же объект, что и p
логические выражения p=q и q<>nil дают значение "истина".

      Если объект, созданный с помощью оператора new, больше не нужен
программе, его целесообразно уничтожить, чтобы он зря не занимал место в
оперативной памяти (на его месте могут быть созданы другие объекты).
      Уничтожение динамического объекта осуществляется оператором
процедуры dispose(<ссылочное выражение>). Значением выражения,
указанного в качестве фактического параметра должна быть ссылка на уже
существующий динамический объект (иначе ошибка). Этот объект перестает
существовать, a ссылка на него удаляется из множества значений ссылочного


                                   -7-