АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

ВКАЗІВНИЙ ТИП ________________________________________________________________

Читайте также:
  1. A formula - formulae (formulas), a crisis - crises, a criterion - criteria, an index - indices, a bacterium — bacteria, an axis — axes
  2. A) Listen to the recording of Text Five and mark the stresses and tunes, b) Repeat the text in the intervals after the model.
  3. A) Listen to the recording of Text Four and mark the stresses and tunes, b) Repeat the text in the intervals after the model.
  4. A) Listen to the recording of Text One and mark the stresses and tunes, b) Repeat the text in the intervals after the model.
  5. A) Listen to the recording of Text Six and mark the stresses and tunes, b) Repeat the text in the intervals after the model.
  6. A) Listen to the recording of Text Two and mark the stresses and tunes, b) Repeat the text in the intervals after the model.
  7. A) Make a round-table talk on the state of film-making in this country. Be ready to make suggestions about the possible improvements in film-making.
  8. A) Read the following extract from an essay by V. Belinsky and summarize it in English.
  9. A) Read the following text dealing with comprehension of literature on school level.
  10. A) Read the following text to figure out the author's approach to foreign-lan- guage teaching. Do you think there is such a problem?
  11. A) Travelling and holiday-making are in a way related to each other. Read the following dialogue for enlarging your topical vocabulary (A — student of English; В — teacher).
  12. A) сумма потребительских стоимостей, который может приобрести рабочий на свою номинальную заработную плату
Структури даних, які розглядались досі, називаються статичними. Такі змінні розміщуються в пам’яті при запуску програми і знаходяться там постійно під час її виконання. Розмір статичних даних можна визначити за описами цих даних. Але використання таких змінних не дозволяє ефективно використовувати пам’ять комп’ютера. На відміну від статичних даних, динамічні дані змінюють свої розміри в процесі виконання програми. Дані, які виникають в вже процесі виконання програми або ж їх розмір під час виконання програми змінюється, називаються динамічними.При необхідності можна розміщувати впам’яті нові змінні і вивільняти пам’ять, коли необхідність в них відпаде. Наприклад, треба в деякій сукупності чисел визначити цифру, яка ділиться на 11 без остачі і починається з цифри 5. Якщо використовувати статичні структури даних, то на початку програми можна зарезервувати пам’ять під масив цілих чисел. Але серед його елементів може взагалі не бути числа, яке задовільняє необхідним вимогам і такий підхід приведе до нераціонального використання пам’яті. В такому випадку, а також, якщо заздалегідь знають, що даних буде багато, застосовують динамічну організацію пам’яті.
     

Для роботи з динамічними об’єктами застосовують тип значень – вказівний. Для нього в мові не зарезервовано стандартного слова, але це також простий тип даних. Якщо ім’я статичної змінної задає адресу даного в оперативній пам’яті, то вказівник на динамічну змінну - лише тип даного, а не розташування його в пам’яті.

Вказівники являють собою змінну цілого типу, що інтерпретується як адреса байту пам’яті, яка містить певний елемент даних. Цим елементом може бути змінна, константа, адреса іншої змінної т.ін.

Звичайно, працюючи з деякою змінною, розробник не цікавиться розміщенням в пам’яті змінних і констант. До них можна просто звернутися за іменем, при цьому Pascal точно знає, де шукати ці змінні і константи.
     

Нехай, програма містить в розділі оголошень такий рядок: VAR f:integer;

VAR Number:integer;

Цим рядком ми вказуємо компілятору на необхідність зарезервувати область в пам’яті, на яку ми будемо посилатися по імені Number.

Адресу, за якою розміщена змінна Number, в пам’яті можна визначити за допомогою оператора @

P1:=@Number;

чи за допомогою функції Addr.

В результаті виконання операції P1:=@Number; в змінну P1 буде записана адреса змінної Number.

У мові Pascal розрізняють типізовані і не типізовані вказівники (покажчики). Вказівник, який може посилатися лише на дані певного типу, називається типізованим, а відповідно тип даних називається базовим. Для оголошення типізованого вказівника використовується символ “^”, який записується перед іменем базового типу даних:

Var <ім’я вказівника>: ^ <ім’я базового типу>;

Загальний вигляд опису вказівного типу:

Type <ім’я вказівного типу>= ^ <ім’я базового типу>;

Значенням вказівного типу є вказівка на динамічну структуру даних, за якою відбувається доступ до цього об’єкта. Після “^” зазначають тип цього динамічного об’єкта, який повинен задаватись лише за допомогою імені типу – стандартного чи попередньо описаного.

Приклад:

Type

v=^integer;

x= ^array [1..10] of real;

y=1..20;

var

y1: ^y;

Значення змінної у1 буде вказівкою на деякий динамічний об’єкт діапазонного типу. Схематично зв’язок вказівника (значення вказівної змінної) і об’єкта, на який він вказує можна показати:

Об’єкт типу у1 ю’ю……..................…....
.................…....
у1


Існує правило, згідно з яким будь-який ідентифікатор у мові Pascal вперше має згадуватись у його оголошенні. Це правило не розповсюджується на іден­тифікатори типів даних, що згадуються як базові типи в оголошеннях покаж­чиків. Інакше кажучи, можна оголосити покажчик на змінні ще не оголошеного базового типу.
     

Приклад оголошення типізованого вказівника на об’єкти.

Синтаксис такого вказівника наступний:

TYPE

ObjType= OBJECT

END;

ObjPtr=^ObjType

Наведемо приклади оголошення типізованих покажчиків.

type {оголошення типів }

vector = аrrау[1..5] of integer;

filetype = file of integer;

BytePtr = ^Byte: {тип покажчика на змінні типу Byte}

IdentPtr = ^IdentRec; {тип покажчика, що посилається на ще не оголошений тип запису}

IdentRec = record {тип запису, компонентом якого є покажчик типу IdentPtr }

Ident: string[15];

Next: IdentPtr;

End;

ArrayPtr = ^ vector; {тип покажчика на масиви типу vector}

TextPtr = ^text; {тип покажчика на текстові,файли }
FilePtr = ^fi1etype: {тип покажчика на типізовані файли }

var {оголошення змінних }

pbyte: BytePtr;

prec: IdentPtr;

parray: ArrayPtr;

pfile: FilePtr;

Нетипізований вказівник не зв'язується з певним типом даних і оголошується як змінна типу pointer. Такі вказівники доцільно використовувати для посилан­ня на дані, тип і структура яких змінюються під час виконання програми.

Оголо­шення нетипізованих вказівників здійснюється згідно з таким синтаксисом:


1 | 2 | 3 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.006 сек.)