КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Im : realEND; Таким чином можна ввести тип, даними якого є комплексні числа. Тип complex є записом, який складається з двох полів: дійсної (ге) і уявної (im) частин комплексного числа. Оскільки обидва поля належать до одного типу, то означення типу можна записати так: TYPE complex = RECORD re,im: real END; 2.12. Вказівники До цього часу ми зустрічались з змінними, описаними в розділі var з описом імені змінної та її типом. Такі змінні Н. Вірт назвав статичними. Ці змінні можна використовувати, якщо відомо скільки пам’яті потрібно буде програмі. Але існує ряд задач, для яких неможливо наперед передбачити об’єм необхідної пам’яті. В цих задачах потрібний інший підхід: змінні потрібно формувати динамічно, не зв’язуючи їх з структурою програми. Так як засобів для явного опису таких змінних немає, то звертатися до них по імені неможливо. До таких змінних звертаються через вказівники, що створюються при формуванні динамічних змінних. Приклад однонаправленого списку схематично можна зобразити наступним чином:
Вказівник вказує на наступний елемент. Всі елементи списку мають однаковий формат. Верхнє поле кожного елемента використовується для вказування адреси наступного елемента. Якщо елемент не має наступного елемента , то вказівнику в ньому присвоюється значення Nil. Опис типу “ вказівник ” має вигляд: ^Ідентифікатор типу Приклад Type Link=^object; Var P: Link; ЗмІнна Р є вказівником на дані типу object. Вказівник – це адреса, а вказівникова змінна – це вмістиме ,що міститься по даному адресу. Приклад. Описати динамічну структуру даних, що є однонаправленим списком. Кожний елемент цієї структури має два поля. Перше поле відводиться під дійсне число, а друге – містить адресу наступного елемента динамічної структури. Type Point=^Data; Data=record R:real; Next:point End; Var A:Point; А – ідентифікатор,що має тип вказівника Спочатку значення A неозначено, оскільки описана структура даних не створена і вказівник не вказує адресу початкового елемента динамічноі структури. Щоб створити таку структуру в Паскалі передбачена процедура New(A). Ця процедура створює перший елемент динамічної структури і розміщує адресу цієї структури в вказівник, тобто в змінну А. Пам’ять для розміщення елементів динамічної структури береться зовні програми. Цю пам’ять принято називати “ кучею” в результаті виконання процедури New. В зв’язку з введенням в Паскалі типу данних вказівник в стандарті мови передбачена константа з іменем Nil. Nil –це вказівник, який ні на що не вказує, тобто він має значення Nil. В Паскалі є процедура Dispose,форма запису якої має вигляд Dispose(Ідентифікатор) З допомогою цієї процедури звільняється пам’ять, занята структурами даних, на які вказує посилання. Звільнена пам’ять повертається в секцію Heap(‘’куча’’). Приклад Var Q:^t; Begin … …
|