Списки. Динамічна память.. Розрізняють звичайну і динамічну память організації комп'ютера. В оперативній памяті можна розмістити обмежену кількість даних,

Презентация:



Advertisements
Похожие презентации
8 Практична робота 11 Налагодження готової програми За новою програмою Урок 38.
Advertisements

Запити Ассess ПЛАН Перехресний запит Доповнення таблиці Вилучення записів Створення нової таблиці.
Вміст клітин. Введення та редагування даних різного типу.
1 Підпрограми- процедури (Turbo Pascal 7.0) Підпрограми- процедури (Turbo Pascal 7.0)
Вказівники Вказівник (або покажчик) – особливий тип даних, значенням якого є адреса певного байта оперативної памяті. Значення покажчика - це беззнакове.
Основи алгоритмізації та програмування Надання значень величинам. Вказівки присвоєння та введення.
База даних (БД) це структурована сукупність взаємопов'язаних даних певної предметної області (реальних об'єктів, процесів, явищ тощо). це структурована.
Типи даних мови Visual Basic та їх опис. Опис величин Величина - це об'єкт, який має стале або змінне значення. Основні характеристики величин: ім'я,
8 За новою програмою Урок 31 Практична робота 10 Складання та виконання лінійних алгоритмів опрацювання величин в навчальному середовищі програмування.
Проектування та редагування запитів в базах даних Проектування та редагування запитів в базах даних.
Урок 25 5 клас ЛІНІЙНІ АЛГОРИТМИ.
Ковальчук О.М КОМАНДИ РОЗГАЛУЖЕННЯ (Turbo Pascal 7.0) КОМАНДИ РОЗГАЛУЖЕННЯ (Turbo Pascal 7.0) Інформатика-11 Тема-4 Ковальчук О.М., 2007.
Підготували: Бондарчук О., Сірий О.. § Визначники Усі визначники незалежно від свого порядку, мають однакові властивості, тому їх краще всього демонструвати.
Урок 24 5 клас СЕРЕДОВИЩЕ ОПИСУ SCRATCH Й ВИКОНАННЯ АЛГОРИТМІВ .
Коротка О.Б.. Це зрозуміла та точна інструкція (указівка) виконавцю, як йому реалізувати певну послідовність дій, призначених досягнути поставленої мети.
Текстовий редактор для учнів 5 класу. Дізнатися, що таке текстовий редактор та текстовий процесор Правила вводу тексту.
Структура програми. Вказівки введення й виведення.
Операційна система Windows. Вікна, їх елементи. Інформаційна система Апаратна: Системний блок Монітор Клавіатура Миша Принтер сканер Програмна: Програми.
В ТП 7.0 існує тип даних STRING (рядок), спеціально призначений для обробки рядків (ланцюгів символів). Він не відноситься до простих типів даних і займає.
ПРОФІЛЬНА ІНФОРМАТИКА 10 КЛАС Масиви. Створення консольних проектів у C#
Транксрипт:

Списки. Динамічна память.

Розрізняють звичайну і динамічну память організації комп'ютера. В оперативній памяті можна розмістити обмежену кількість даних, зокрема, змінних. Є задачі коли заздалегідь не відомо, скільки змінних буде. У цьому випадку організовують динамічну память. Принцип динамічної організації пам'яті полягає в тому, що змінні займають память за необхідністю, опрацьовуються і в потрібний момент вивільняють память. Для роботи з такими змінними використовують тип даних- вказівник. Якщо ім'я статистичної змінної задає адресу даного в оперативній пам'яті, то вказівник на динамічну змінну – лише тип даного, а не його розташування в пам'яті. Тип даних вказівник описують за допомогою символу ^ у розділі type так: Type =^ ; В розділі var вказівники на динамічні змінні оголошують: Var : ;

На етапі компіляції память для масивів та записів тут не надається (сам вказівник займає 4 байти). Память для даних, про можливість появи яких попереджає вказівник, буде надана на етапі виконання програми за допомогою процедури new: new( ); Тільки тепер утворилась динамічна змінна, імя якої має такий вигляд: ^. Розрізняють операції над вказівником на динамічну змінну та операції над самою динамічною змінною. З динамічною змінною можна виконувати операції, визначені для даних відповідного базового типу. Над вказівниками визначені такі операції переадресації 1. := ; 2. :=nil; 3.Процедура dispose вивільняє память на котру вказує її параметр. Після чого ця память може бути розподілена повторно.

Розрізняють такі динамічні лінійні структури: 1.Стек. Включення і виключення даних відбувається з його вершини. 2.Черга. Включається даних – з кінця, а виключення – з початку. При роботі з чергою краще використовувати два вказівника: один на початок і один на кінець. 3.Список. Елементи впорядковані по певній ознаці і від одного елементу формується увесь стек. Включення і виключення даних відбувається в будь-якому місці ланцюга, як і пошук потрібного місця, що теж відбувається по ознаці по котрій створений список. Прийнято виділяти слідуючі типи зв'язаних списків: Однозв'язні (однонапрямлені) – лінійні списки; Однозв'язні-циклічні списки; Двозвязні (двонапрямлені) – лінійні списки; Двонапрямлені циклічні списки; Якщо елемент списку знає не тільки слідуючий, а і попередній, то в списку можливий рух в двох напрямках. Для такої організації достатньо ввести додакткове поле в котрому знаходиться вказівник на попередній елемент: Data

Робота з стеком Створення (доповнення новим елементом) S:=nil; {стек пустий} New(nov); {виділення памяті для нового елемента стека} nov^.inf:=10; { в новий елемент заноситься його інформація} nov^.prt:=S; S:=nov; Видалення dat:=S^.inf; {зчитування інформації з інформаційного поля з вершини стека в змінну dat} nov:=S; {встановка на вершину стека допоміжного вказівника} S:=nov^.prt; {вказує на слідуючий елемент. Переміщення вказує вершини стека} dispose(nov); {видаляє елемент}

Робота з чергою Створення (доповнення новим елементом) nach:=nil; {стек пустий і nach вказує на початок черги} kon:=nil; {kon вказує на кінець черги} New(p); {виділення пам'яті для першого елемента} p^.inf:=10; p^.prt:=nil; { в новий елемент заноситься його інформація} nach:=p; kon:=nil; Доповнення новим елементом new(p) {виділення пам'яті для нового елемента} p^.inf:=5; {занесення інформації в новий елемент} p^.prt:=nil; kon^.prt:=p; kon:=p; Видалення dat:=nach; {з'явилась нова змінна для вилучення і збереження елемента} p:=nach; {установка на видаляємий елемент} nach:=p^.prt; {вказує на слідуючий елемент} dispose(p); {видаляє елемент}

Зразок задачі з використання списку Побудувати динамічну структуру даних наведену нижче. X1x4x3x1 X1x2x2 Program structura; Type Point=^ITEM ITEM=record Data:integer; right,left:= Point; end; Var first,p: Point; Begin New(p); First:=p; Read(p^.data; New(p^.left); {побудуєм 1-й елемент} {продовження на наступному слайді}

Read(p^.left^.data; {2-й} New(p^.rigth); Read(p^.rigth^.data; {4-й} p:=p^.left; New(p^.left); p^.right:=nil; p:=p^.left; Read(p^.data); {3-й} p^.right:=nil; p^.left:=first; p:= first^.right; p^.left:=first^.left; p^.right:= first^.left^.left; Write(x1x4x3x1); p:=first; Writeln(p^.data); {1-й} p:=p^.right; Writeln(p^.data); {4-й} p:=p^.right; {продовження на наступному слайді}

Writeln(p^.data); {3-й} p:=p^.left; Writeln(p^.data); {4-й} p:=first; Write(x1x4x3x1); Writeln(p^.data); {1-й} p:=p^.left; Writeln(p^.data); {2-й} p:=p^.left; Writeln(p^.data); {3-й} Readkey; End. Можна також використати writeln(p^.data,p^.left^.data,p^.left^.left,^.data); замість writeln(p^.data); p:=p^.left; writeln(p^.data); p:=p^.left; writeln(p^.data);