UkrReferat.com
найбільша колекція україномовних рефератів

Всього в базі: 75834
останнє поновлення: 2016-11-29
за 7 днів додано 10

Реферати на українській
Реферати на російській
Українські підручники

$ Робота на замовлення
Реклама на сайті
Зворотній зв'язок

 

ПОШУК:   

реферати, курсові, дипломні:

Українські рефератиРусские рефератыКниги
НазваВикористання динамічних змінних (реферат)
Авторukrreferat.com
РозділІнформатика, компютерні науки
ФорматWord Doc
Тип документуРеферат
Продивилось854
Скачало156
Опис
ЗАКАЧКА
Замовити оригінальну роботу

Реферат на тему:

 

Використання динамічних змінних

 

В процесі компіляції програми для змінних виділяється пам'ять

конкретного розміру, яка зберігається за змінними на весь період роботи

програми. Такі змінні є статичними, доступ до відповідних областей

пам’яті здійснюється за їх іменами.

 

Такий спосіб не є ефективним, особливо коли невідомо які розміри пам'яті

потрібні для зберігання даних. Змінні, які з'являються в процесі роботи

програми або їх розмір може змінюватись при її роботі називають

динамічними змінними.

 

Для таких даних пам'ять виділяється на етапі виконання програми, крім

того, така пам'ять може бути визволеною ще до кінця програми.

 

Динамічна змінна явно не описується, до неї немає доступу по імені.

Замість цього використовується спеціальна змінна - вказівник, значенням

якого є адреса пам'яті, де розміщується динамічний об'єкт.

 

Вказівники можна описувати в програмі з допомогою символу ^, наприклад:

 

 

 

Var Vkaz1,Vkaz2:^Integer;

 

       R,Т:^Rеа1;

 

 

 

Такий опис ще не виділяє пам'ять для змінних, він тільки означає, що

змінні Vkaz1 та Vkaz2 є вказівниками на дані цілого типу, а змінні R і Т

- вказівники на дійсне дане.

 

Виділення пам'яті здійснюється спеціальним оператором New, наприклад:

 

 

 

New(T);

 

 

 

Після цієї операції вказівник Т придбає значення адреси пам'яті для

дійсної змінної. Щоб отримати доступ до цієї області пам'яті, треба знак

^ записати після вказівника, наприклад:

 

 

 

Т^;=16.4;

 

Writeln(T^);

 

 

 

Над динамічними змінними можна виконувати такі ж операції, як і над

статичними, наприклад:

 

 

 

R^:=T^+20;

 

If R^<30 Then T^:=40;

 

 

 

Вказівники, в свою чергу, можна тільки присвоювати один одному та

порівнювати на рівність чи нерівність між собою, наприклад:

 

 

 

T:=R;

 

If T<>R Then T:=Nil;

 

 

 

Треба бути уважними при вживанні динамічних змінних та вказівників.

Розглянемо приклад фрагменту програми:

 

 

 

R^:=10.5;

 

T^:=16.2;

 

R:=T;

 

 

 

Якщо замість останнього оператору вжити оператор R^:=Т^, то вказівники

будуть зв'язані з різними комірками пам'яті, в яких записано одне й теж

число 16.2.

 

Динамічною змінною може бути також рядок або масив, наприклад:

 

 

 

Type Strichka=String[50];

 

         Mas=Array[1..40] of Real;

 

Var VkazStr:^Strichka;

 

       VkazMas:^Mas;

 

 

 

Якщо треба виділити пам'ять під масив достатньо виконати оператор:

 

 

 

New(VkazMas)

 

 

 

Тепер в циклі можна ввести значення його елементів:

 

 

 

For i:=l to 40 do Read(VkazMas^[i]);

 

 

 

Як бачимо, до елементу масиву можна звертатися, вживаючи ім'я

VkazMas^[i].

 

Якщо в процесі виконання програми яка-небудь змінна стане непотрібною,

її можна вилучити з пам'яті за допомогою оператора Dispose, наприклад:

 

 

 

Dispose(VkazMas);

 

 

 

Це значить, що пам’ять, яка була виділена під масив звільнена, а сам

вказівник VkazMas матиме невизначене значення.

 

 

"

 

"

 

,Подібна операція буває корисною при необхідності економити пам’ять.

 

В мові Pascal можна, також використовувати нетиповані вказівними, які,

на відміну від типова них, не зв’язані з конкретним типом. Такі

-----> Page:

0 [1]

ЗАМОВИТИ ОРИГІНАЛЬНУ РОБОТУ