- •Дані як основа, з якою працює програмне забезпечення. Модифікація даних. Вимоги до даних в частині швидкості пошуку та модифікації. Навести приклади із баз даних різного призначення.
- •Структура даних мови Object Pascal, коротка характеристика складених типів даних, приклади використання.
- •Масиви статичні та динамічні, переваги та недоліки. Використання масивів для організації роботи з даними. Заповнення масивів з файлу.
- •Формування типізованого файлу на базі таблиці Excel. Приклад програми.
- •Масиви статичні та динамічні. Додавання, видалення та модифікація даних (робота із даними). Приклад програмного коду.
- •Стек: призначення, приклади, застосування. Організація та робота стеку на базі масиву. Приклад програмного коду.
- •Черга: призначення, приклади , застосування. Організація та робота черги на базі масиву. Приклад програмного коду.
- •Пошук даних в масиві. Послідовний та бінарний методи пошуку. Переваги та недоліки. Приклад програмного коду.
- •Сортування масивів на місці, метод вставок.
- •Сортування масивів на місці, метод простого вибору.
- •Сортування масивів на місці, прості та складні алгоритми сортування. Приклад програмного коду (але не бульбашкою).
- •Сортування масивів на місці, метод Shaker (одночасний пошук мінімального та максимального елементів.
- •Динамічний список: призначення, організація, формування, ініціалізація, наприклад з файлу. Переваги та недоліки порівняно з масивами. Приклад програмного коду.
- •Лінійний динамічний список: додавання, видалення та модифікація даних (робота з даними, порівняти із масивами). Приклад програмного коду.
- •Кільцевий динамічний список: переваги та недоліки порівняно з лінійним. Додавання, видалення та модифікація даних (робота із даними). Порівняти з лінійним. Приклад програмного коду.
- •Сортування даних у динамічних списках по одному та декільком полях. Приклад програмного коду.
- •Стек: призначення, приклади , застосування. Організація стеку за допомогою лінійного динамічного списку. Приклад програмного коду.
- •Включення/забирання елемента до/з стеку. Приклад програмного коду.
- •Включення/забирання елемента до/з черги. Приклад програмного коду.
- •Черга: призначення, приклади застосування. Організація черги за допомогою лінійного динамічного списку. Приклад програмного коду.
- •Формування черги: принципи вставки заявок у чергу, використання приоритетів при формування черги. Позачерговий пріоритет (0).
- •Визначення характеристик черги: середня довжина черги, середній час виконання заявки.
- •Наведіть алгоритми додавання (insert) заявки у чергу.
- •Наведіть алгоритми обслуговування (service) заявки у черзі.
- •Робота із плоским файлом. Додавання, видалення та модифікація даних (робота із даними). Файли переповнення. Порівняти з масивами та списками. Приклад програмного коду.
- •Пошук даних у плоских файлах (послідовний та бінарний). Сортування файлів по одному та декільком полям. Приклад програмного коду.
- •Пошук даних у плоских декількох логічно зв’язаних файлах. Приклад програмного коду.
- •Індексні файли: призначення, створення та використання. Переваги та недоліки. Приклад програмного коду.
- •Сторінкова організація файлу: переваги та недоліки порівняно з плоским файлом. Файли переповнення.
- •Індексна організація файлу. Одно- та багаторівнева індексація. Переваги та недоліки порівняно з плоским файлом. Ознаки необхідності реорганізації файлу. Навести схему з поясненнями.
- •Динамічна організація при сторінковій організації файлу, організація файлів переповнення. Навести схему з поясненнями.
- •Файли прямого доступу. Визначення адрес в залежності від значення даних. Функції хешування. Файл переповнення. Загальні алгоритми.
- •Функції хешування: алгоритми ділення, складання.
- •Функції хешування: алгоритми зсуву розрядів, .
- •Функції хешування: алгоритми ділення, .
- •Колізії при хешуванні, шляхи (декілько) розв’язання цих проблем.
- •Дерева: загальна характеристика, структура вузла, приклади використання.
- •Бінарні дерева пошуку: приклади призначення, структура вузла, алгоритм формування.
- •Бінарні ідеально сбалансовані дерева: приклади призначення, структура вузла, алгоритм формування.
Масиви статичні та динамічні, переваги та недоліки. Використання масивів для організації роботи з даними. Заповнення масивів з файлу.
Масив – це упорядкована множина, що складається з фіксованого числа однотипних об’єктів. Над масивами не існує операцій додавання та видалення без зсуву елементів, але інколи такі операції розглядаються і для таких структур. Масив представляє собою лінійну структуру з послідовним (лінійним) розташуванням елементів у пам’яті
Масиви за своєю організацією можуть бути статичними: кількість елементів, а значить і розмір виділеної пам’яті для них визначається під час компіляції програми, а також динамічними: кількість елементів яких визначається і може бути змінена як в одну так і в іншу сторону під час виконання програми. Останній варіант є більш практичним за рахунок суттєвої економії оперативній пам’яті при обробці заздалегідь невизначеної довжини послідовності.
type
Приклад опису та використання статичного масиву
type
Person=record
Name:string[15];
YearOfBirth:integer;
end;
Mas1=array[1..3] of Person;
Const M:Mas1=((Name:’Ivanov’; Age:45),(Name:’Петров’; Age:55).
Приклад опису та використання динамічного масиву
type
Person=record
Name:string[15];
YearOfBirth:integer;
end;
Mas1=array of Person;
var P:Person; M:Mas1;
begin
SetLength(M,3);
Формування типізованого файлу на базі таблиці Excel. Приклад програми.
Таблиця з Excel зберігається з розширенням "Текстовые файлы(с разделителями
табуляции)*.txt";
отриманий файл відкрити у Word'і як текстовий, та за допомогою команди "Пошук та заміна"
замінити знаки табуляції на проміжки;
проміжки у значеннях полів замінити на підкреслення (наприклад, назва кафедри:
"Інтелектуальні інформацйні системи" замінити на "Інтелектуальні_інформацйні_системи"
проміжків у атрибутах записів не повинно бути, це пов'язано з тим, що значення
атрибута читається з рядка до першого проміжка;
кому в дійсних числах замінити на крапку.
Треба мати на увазі, що код програми необхідно пристосовувати до особливостей
типів та імен атрибутів записів
begin
DecimalSeparator:='.';
assignfile(Excel_txt,'Клієнти_tab.txt'); assignfile(Ft,'Client.typ');
reset(Excel_txt); rewrite(Ft);
while not Eof(Excel_txt) do
begin
readln(Excel_txt,St);
Memo1.Lines.Add(St);
end; reset(Excel_txt); readln(Excel_txt,St);
while not Eof(Excel_txt) do
begin readln(Excel_txt,St);
St:=St+' '; I:=1; St1:='';
while St[I] <> ' ' do
begin St1:=St1+St[I];
Inc(I);end;
P.Name_ID:=StrToInt(St1);
while St[I] = ' ' do Inc(I);
Масиви статичні та динамічні. Додавання, видалення та модифікація даних (робота із даними). Приклад програмного коду.
Масив – це упорядкована послідовність однотипних елементів, кожен з яких має один і той же тип. Тип елементів зветься базовим і може бути будь-яким, навіть структурованим, наприклад, запис (record), який має заздалегідь визначений об’єм пам’яті. Масиви зберігаються в оперативній пам’яті комп’ютера. Елементи масиву розміщені впорядковано, кожен має свій номер, який називається індексом. Доступ до елементів масиву відбувається шляхом вказування імені масиву та його порядкового номера у послідовності, тобто використовується прямий метод доступу. Індексом може бути будь-який арифметичний вираз ординального типу.
Масиви за своєю організацією можуть бути статичними: кількість елементів, а значить і розмір виділеної пам’яті для них визначається під час компіляції програми, а також динамічними: кількість елементів яких визначається і може бути змінена як в одну так і в іншу сторону під час виконання програми. Останній варіант є більш практичним за рахунок суттєвої економії оперативній пам’яті при обробці заздалегідь невизначеної довжини послідовності.
Видалення даних з масиву. Це набагато складніша операція, тому що вона складається із певної низки доволі довгих операцій з масивом, які виконуються за наступним алгоритмом:
Виконати пошук елементу, який потрібно видалити.
Якщо його знайдено, то можна застосувати два шляхи:
1)Починаючи із номера знайденого елементу у циклі виконується пересув елементів на один ліворуч (в напрямку до початку масиву) до кінця масиву, таким чином з послідовності зникає елемент, який необхідно видалити. При цьому не залишається порожнього елементу в масиві, але треба пам’ятати, що процес обміну елементів при зсуві вимагає набагато більше часу, ніж порівняння.
2)У структурі елементу заздалегідь необхідно передбачити поле, яке буде означати: дійсний це елемент або виключений із послідовності. У знайденому елементі робиться помітка про його виключення із послідовності. Перевага цього підходу полягає в тому, що уникається така довготривала операція, як переміщення елементів. Цей алгоритм можна застосовувати як для несортованих масивів, так і для сортованих. Недоліком є те, що залишаються „дірки” у масиві, якщо їх буде багато, то обробка масиву суттєво уповільнеться.
Додавання даних у масив. Якщо масив невідсортований і динамічний, то додавання нового елементу зводиться до збільшення кількості елементів на одиницю (1) і додаванню його у кінець. Для статичного масиву додавання нового елементу можливо тільки у випадку, якщо є вільні порожні елементи масиву у кінці, або „дірки” при попередньому видаленні елементу шляхом помітки його як недійсного.
Якщо масив відсортований, то можна застосувати два підходи:
1)Знайти місце вставки, зсунути елементи праворуч на 1, записати новий елемент на звільнене місце.
2)Дописати новий елемент в окремий додатковий масив. При необхідності пошуку спочатку виконати пошук в основному масиві бінарним алгоритмом, а потім у додатковому - звичайним послідовним. Якщо об’єм основного масиву достатньо велекий, а додаткового – навпаки, то цей підхід може суттєво зменшити час роботи програми. Через певний відрізок часу звичайно ці два масиви об’єднують в один масив та знову відсортувують його.
