Курсовая работа: Структури даних для обробки інформації

z^:=<значення> (z – це змінна вказівник, а z^ - динамічна змінна, на яку вказує вказівник z).

Щоб змінити значення змінної-вказівника z (направити її на іншу динамічну змінну) необхідно:

z:=<деякий вказівник нв іншу динамічну змінну>

Оскільки динамічна змінна не має імені (а отже не описується в блоці var), то на початку роботи програми пам’ять під дану змінну не виділяється. А відповідна змінна-вказівник ні нащо не вказує. Коли змінна-вказівник ні нащо не вказує, то говорять, що вона вказує на nil.

Щоб виділити пам’ять, необхідно виконати процедуру new(x), де х – змінна-вказівник.

Після виконання даної процедури (new(x)) вказівник x буде вказувати на комірку пам’яті відповідного типу.


Нехай на якомусь етапі роботи програми вказівник a вказує на деяку динамічну змінну, що містить число 5, а b на іншу змінну, що містить число 10 (мал.1)

Після виконання вказівки a ^:=10 (або a ^:= b ^) напрям вказівника a не змінюється, змінюється значення динамічної змінної (в нашому випадку зміниться значення змінної за адресою 1: замість 5 там буде міститися 10)

Якщо ж замість a ^:= b ^ записати a := b , то напрям вказівника a змінюється. Змінна-вказівник a буде вказувати на ту ж змінну, що і вказівник b .(мал 3). Тепер значення динамічної змінної, що знаходиться за адресою 2 можна змінити двома способами: використовуючи вказівник a та вказівник b .

Після виконання вказівок:
a:=b;
a^:=100;
b^:=15;
writeln(a^);
на екрані буде число 15 (а не 100)

Приклад .1 Демонструє зміну напрямків вказівників на дві незалежні динамічні змінні.

var a,b,c:^byte;

begin

new(a);

new(b);

read(a^,b^);

c:=a;


a:=b;

b:=c;

writeln(a^,' ',b^);

end.

Результат роботи програми:

1 2

2 1

В даній програмі використовується лише дві динамічні змінні (дві комірки пам’яті)

Приклад 2 Демонструє перестановку двох динамічних змінних з використанням третьої.

var

a,b,c:^byte;

К-во Просмотров: 714
Бесплатно скачать Курсовая работа: Структури даних для обробки інформації