farmprofi
?>

Имеется программа: program dynamic; var x: ^Boolean; y: Boolean; begin{А} new(x); {B}x^ := true; y := not x^; {C} dispose(x); {D}writeln(y); end. ответить на следующие вопросы: А) Какие переменные существуют в каждой из точек А, В, С и D и каковы их значения в эти моменты? Б) Почему объекты (переменные), создаваемые процедурой new и уничтожаемые процедурой dispose, называются динамическими? Почему им не дают имена? В) Можно ли переменной x присвоить ссылку на переменную y? Можно ли с процедуры dispose уничтожить переменные x и y?

Информатика

Ответы

whitecatrussia5398
А) В точке А в программе существует переменная x типа указатель на Boolean и переменная y типа Boolean. В момент выполнения программы в точке А никакие значения не присвоены этим переменным, они являются неинициализированными.

В точке B происходит создание объекта типа Boolean и присвоение указателю x ссылки на этот объект. К значению, на которое ссылается x, присваивается значение true. Значение переменной y присваивается результат операции отрицания (not) над значением, на которое ссылается x. В итоге y принимает значение false.

В точке C происходит уничтожение объекта, на который указывает x, с помощью процедуры dispose. Значение переменной x после уничтожения объекта становится неопределенным.

В точке D происходит вывод значения переменной y на экран. Так как объект, на который до этого указывал x, был уничтожен, и значение y было вычислено до уничтожения объекта, y принимает значение false.

Б) Объекты, создаваемые процедурой new и уничтожаемые процедурой dispose, называются динамическими, потому что их создание и уничтожение происходит во время выполнения программы, в отличие от статических объектов, которые объявляются при компиляции программы. Динамические объекты не имеют имен, потому что их создание может происходить динамически и не зависит от конкретного имени, которое может быть присвоено переменной, ссылка на которую будет храниться в указателе.

В) Нет, переменной x нельзя присвоить ссылку на переменную y. Так как x является указателем на Boolean, его значение должно быть ссылкой на объект типа Boolean, но y не является объектом, а простой переменной типа Boolean.

Нет, с процедуры dispose нельзя уничтожить переменные x и y. Процедура dispose используется для освобождения памяти, выделенной под объекты, указатели на которые хранятся в переменных, но не для уничтожения самих переменных. Переменные x и y могут быть уничтожены, когда выполнение программы достигнет конца блока, в котором они объявлены, или когда процедура, в которой они объявлены, завершится.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Имеется программа: program dynamic; var x: ^Boolean; y: Boolean; begin{А} new(x); {B}x^ := true; y := not x^; {C} dispose(x); {D}writeln(y); end. ответить на следующие вопросы: А) Какие переменные существуют в каждой из точек А, В, С и D и каковы их значения в эти моменты? Б) Почему объекты (переменные), создаваемые процедурой new и уничтожаемые процедурой dispose, называются динамическими? Почему им не дают имена? В) Можно ли переменной x присвоить ссылку на переменную y? Можно ли с процедуры dispose уничтожить переменные x и y?
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

Лилит_Шутова
expozition
Vladimirovna
Chuhnin195107364
olartamonov6
Староческуль-Станиславовна
Чему равна основание 8-ричной системы счисления
Telenkovav
sveta073120
vera141187
yaart-klementiev29
borisovaks496
Чиркина999
e90969692976
Алексей424
Klicheva_Ermachenkova1536