М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
reginaarslanov
reginaarslanov
05.12.2021 23:08 •  Информатика

Имеется программа: 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?

👇
Ответ:
nastya632011
nastya632011
05.12.2021
А) В точке А в программе существует переменная 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 могут быть уничтожены, когда выполнение программы достигнет конца блока, в котором они объявлены, или когда процедура, в которой они объявлены, завершится.
4,5(40 оценок)
Проверить ответ в нейросети
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ