При обробці будь-яких даних , які складаються з одноманітних записів , в тому числі і списків , треба над окремими елементами виконувати такі дії :
· послідовне просування по елементах списка ;
· редагування елементу з заданим ключем ;
· додавання елементу до ключового і після нього ;
· видалення елементу з заданим ключем .
При виконанні ціх дій цілісність списка не повинна порушуватись .
55.Циклічні списки, особливості структури, пошук елементу у списку, заміна змісту елементу.
Разновидностью связных списков является кольцевой (циклический, замкнутый) список. Он тоже может быть односвязным или двусвязным. Последний элемент кольцевого списка содержит указатель на первый, а первый (в случае двусвязного списка) — на последний.
Замена содержания элемента:
56.Вставка нового елементу у певне місце списку, вилучення елемента списку з певними даними, логіка виконання, фрагмент програми.
Алгоритм:
1) Знаходимо місце куди треба вставити есемент
2) Виконуємо переадресацію
(новий елемент вже створено)
1) Додавання елементу до списку
P:=first;
While (p<>Nil) and (P^.Name^<>4) do
P:=P^Next;
Pn^.Next:=P^.Next;
P^.Next:=Pn;
2) Видалення елементу зі списку
P:=first;
While (p<>Nil) and (P^.Next^.Name^<>6) do
P0:=P^.Next;
P^.Next:=P^.Next^.Next;
Despose(p0);
57.Бінарне дерево, структура вузла, зв'язок вузлів.
В програмуванні бінарне дерево -- дерево структура даних, в якому кожна вершина має не більше двох дітей. Зазвичай такі діти називаються правим та лівим. На базі бінарних дерев будуються такі структури, як бінарні дерева пошуку та бінарні купи.
58. Object Pascal.Бінарне дерево пошуку, розташування вузлів, обход вузлів.
Бінарне дерево - кінцева кількість вузлів другого ступеня, кожен з яких або порожній, або складається із кореня(вузла) , який зв'язан з двома різними бінарними деревами, які звуться лівим і правим піддеревами.
Найбільш поширене значення мають так звані дерева пошуку, які дають змогу сортувати вхідну послідовність. Обхід вузлів дерева LVR дає сортовану послідовність.
Найбільш поширена операція це обхід вузлів дерева
Існує три види обходу вузлів:
1. Зверху вниз: VLR (корінь відвідується до піддерев)
2. Зліва направо: LVR
3. Знизу угору: LRV(корінь відвідується після піддерев)
59.Object Pascal.Пошук елемента в структурі дерева пошуку, показати на схемі дерева.
Процедура пошуку в бінарному дереві отримує на вході значення k, яке необхідно знайти, та вказівник Х на корень того піддерева, в якому слід шукати.
SEARCH (x, k) 1 if x = NULL or k = val [x]
2 then return x
3 if k < val [x]
4 then return SEARCH (left [x], k)
5 else return SEARCH (right [x], k)
В процесі пошуку ми рухаємось від кореня, порівнюючи значення k зі значенням в поточній вершині х. Якщо k < val [x], пошук рекурсивно продовжується в лівому піддереві (k може бути тільки там згідно умови впорядкованості), інакше - у правому піддереві. Очевидно, що довжина шляху не перевищує висоти дерева, тому час пошуку є O (h), де h - висота дерева.
60.Object Pascal.Модулі, призначення, загальна структура, (розділи: інтерфейс, реалізація, ініціалізація), приклад.
Модуль — функціонально завершений фрагмент програми, оформлений у вигляді окремого файла.
· Інтерфейс: набір визначень взаємодії різнотипного програмного забезпечення.
· Реалізація: Програма на компільованій мові за допомогою компілятора (особливої програми) перетвориться (компілюється) в машинний код (набір інструкцій) для даного типу процесора і далі збирається в виконавчий модуль, який може бути запущений на виконання як окрема програма. Іншими словами, компілятор переводить вихідний текст програми з мови програмування високого рівня в двійкові коди інструкцій процесора.
· Ініціалізація:
· Приклад: Program P2;
uses module1, module2, module3; .........
61.Object Pascal.Вкладеність модулів, доступність ідентифікаторів, показати на прикладі.
Модульна структуризація використовується при побудові великих програм. У випадках, коли в програмі використовується велика кількість різних процедур і функцій усі підпрограми розбиваються на окремі значеннєві групи, що оформляються, компілюються і зберігаються у виді окремих файлів-модулів.
(я не знаю, что он имел ввиду под доступностью идентификаторов, думаю какие могут быть имена переменных)
Имя состоит из буквы, за которой могут следовать буквы, цифры или символ подчеркивания. (Имя может начинаться с символа подчеркивания, но этого не желательно делатель т.к. с него начинаются большинство системных программ) Нельзя в качестве имен использовать ключевые слова, и стандартные имена, которые служат для обозначения некоторых констант, типов, процедур, функций, файлов и др. объектов. Эти имена распознаются компилятором без их дополнительного описания в программе.
Приклад: Var plosha, x_c, y_c
62.Object Pascal.О'єктноорієнтований підхід до програмування, три принципи ООП(наслідування, інкапсуляція, поліморфізм, їх коротка характеристика), переваги перед звичайним підходом.
Об'є́ктно-орієнто́ване програмува́ння (ООП) — одна з парадигм програмування, яка розглядає програму як множину «об'єктів», що взаємодіють між собою. Основу ООП складають три основні концепції: інкапсуляція, успадкування та поліморфізм.
Наслідування: Наслідування дозволяє при побудові нового об'єкту використовувати раніш визначений об'єкт .
Інкапсуляція: об’єкт вміщує не тільки дані, але і правила їх обробки, оформлені в вигляді виконуваних фрагментів(методів).
Поліморфізм:концепція в програмуванні, відповідно до якої використовується спільний інтерфейс для обробки даних різних спеціалізованих типів.
Переваги: Одною з переваг ООП є краща модульність програмного забезпечення (тисячу функцій процедурної мови, в ООП можна замінити кількома десятками класів із своїми методами) На відміну від традиційних поглядів, коли програму розглядали як набір підпрограм, або як перелік інструкцій комп'ютеру, ООП програми можна вважати сукупністю об'єктів.
63.Класс, його складові: поля і методи, синтаксис, приклад (ламана ліня).
В рамках ООП данные называются полями объекта, а алгоритмы - объектными методами.
Класс, в одном из значений этого термина, обозначает структурированный тип
данных в Object Pascal.
Частка полів і методів у об'єкті можуть виконувати суто допоміжну роль саме у цьому об'єкті і ззовні не потрібні . Щоб їх ізолювати від користувача (або , краще , ізолювати користувача від них) і зробити програму ільш компактною , вони розташовуються у спеціальному розділі опису типу об'єкту , після службового слова рrіvate (скритий) .
type
ObjectType = object
Звичайні поля та методи
prіvate
Скриті поля та методи
end .
64.Опис заголовків методів і їх реалізація, порядок розташування, інкапсуляція.
Після того, як у модулі описаний новий клас, у нижченаведеній частині вихідного тексту необхідно описати реалізацію всіх його методів (якщо вони є). Щоб компілятор зрозумів, до якого класу відноситься конкретна підпрограма, перед її назвою вказується ім'я відповідного класу і крапка:
function TMyClass.GetCount: Integer;
begin
Result := Count;
end;
Инкапсуляция есть объединение в единое целое данных и алгоритмов обработки данных. В рамках ООП данные называются полями объекта, а алгоритмы - объектными методами.
Инкапсуляция позволяет в максимальной степени изолировать объект от внешнего окружения. Она существенно повышает надежность разрабатываемых программ, т.к. локализованные в объекте алгоритмы обмениваются с программой сравнительно небольшими объемами данных, причем количество и тип этих данных обычно тщательно контролируются.
65.Наслідування, доступність полів і методів, статичне зв'язування методів.
Вы можете объявить класс, происходящий от определённого другого класса, в блоке type указанием родительского класса в скобках после слова class, используя следующий синтаксис:
type
ИмяКласса = class (РодительскийКласс)
Пример :
TPrinter = class (TOutputDevice)
. . .
end;
66.Поліморфізм, віртуальні методи, переваги і недоліки.
Полiморфiзм - можливiсть використовувати одне iм'я методу для рiзних по змiсту процедур в залежностi вiд об'єкта-власника або параметрiв, якi передаються.
Переваги – інкапсуляція, недоліки – наслідування.
67.Constructor i destructor віртуальних методів, їх призначення і дії, які вони виконують (ініціалізація полів класу), приклади.
Конструктор - це метод, що викликається тільки один раз у момент створення екземпляра об'єкта відповідного класу.
Приклад:
constructor CreateMyObject(MySize: Integer);
Деструктор - це метод, що викликається тільки один раз у момент знищення екземпляра об'єкта відповідного класу.
68.Методи класу, їх призначення, приклад.
В Object Pascal реалізований новий тип методів - віртуальні методи (для їхнього опису існує зарезервоване слово virtual). Описати віртуальний метод можна так.
type
TCar = class(TObject)
procedure Move; virtual;
end;
Такі методи в класах-нащадках можуть бути перекриті методами з однойменними заголовками. Щоб явно вказати компілятору, що визначений метод перекриває віртуальний метод батька, треба використовувати ключове слово override.
type
TMAZ = class(TCar)
procedure Move; override;
end;
Віртуальні методи оптимізовані для максимальної швидкодії, динамічні - для максимальної економії пам'яті (створення компактного коду).
69.Динамічні масиви одно- і двовимірні, створення і використання, приклади.
Динамическим называется массив, размер которого может меняться во время исполнения программы.
byteArray : Array of Byte; // Одномерный массив multiArray : Array of Array of string; // Многомерный массив