- •Затверджую Начальник спеціальної кафедри № 5
- •Методична розробка
- •Тема 1. Мови асемблера та їх використання для побудови базових елементів системних програм.
- •Тема 1/9
- •Контрольні запитання про таблиці системних програм
- •Короткі теоретичні відомості
- •Побудова процедур визначення відношень порядку для групи ключових полів
- •Основні типи відношень в процедурах пошуку Відношення рівності та нерівності
- •Відношення порядку
- •2. Модифікація таблиць за результатами лінійного та двійкового пошуку
- •3. Побудова процедур визначення мір близькості для ключових полів Відношення подібності
- •4. Програмування пошуку за мірами близькості
- •Структура програмного шаблона виконання роботи
- •Рекомендації з модифікації і розширення функцій модулів
- •Завдання на роботу
Короткі теоретичні відомості
Таблиці як двовимірні агрегати даних, які визначають функціональну залежність між окремими характеристиками, використовують в системних програмах та системах управління базами даних для відтворення даних при виконанні програм і маніпуляцій з базами даних.
Побудова процедур визначення відношень порядку для групи ключових полів
Для розв’язання будь-яких задач з використанням програмування на мові С треба створити сховища даних, здатні зберігати достатні обсяги інформації. Для ініціалізації та заповнення динамічно створених масивів необхідно створити спеціальну процедуру, що копіює значення з попередньо визначеного масиву.
Якщо ж пряма або безпосередня адреса запису таблиці наперед невідома, то для вибірки відповідного запису з таблиці необхідно виконати ряд порівнянь у відповідності з визначеними відношеннями рівності та порядку.
Основні типи відношень в процедурах пошуку Відношення рівності та нерівності
При пошуку за прямою адресою та лінійному пошуку в невпорядкованих таблицях перевіряються відношення рівності або нерівності для вибірки потрібних записів та елементів. Набори операцій мови С/C++ "=" та "!=" існують для всіх визначених типів даних і полів таблиць створюються за умовчанням для кожного як порівняння кожної пари полів основної структури. Однак для типів даних з динамічними складовими нерівність полів вказівників ще не свідчить про нерівність даних, що знаходяться за вказівниками. Тому операції "=" та "!=" для типів даних з динамічними складовими необхідно перевизначити. Стандартна функція ANSI C strcmp перевіряє саме відношення нерівності рядків і може успішно використовуватись в різних варіантах лінійного пошуку.
Приклад функції порівняння
// порівняння рядків за відношенням нерівності
int neqKey(struct recrd* el, struct keyStr kArg)
{return (strcmp(el->key.str, kArg.str)||
el->key.nMod != kArg.nMod);
}
Відношення порядку
Впорядкування таблиць за ключовими полями стає можливим лише у випадку впорядкування кодів кожного з цих ключових полів. Відношення порядку встановлюються для даних з одновимірними множинами визначення (доменами) значень. Всі числові і перенумеровані типи даних, в тому числі і полів мають визначені відношення порядку. Тому набори операцій мови С/C++ "=" та "!=", які створюються за умовчанням, необхідно розширити додатковими операціями відношень мови С "<", "<=", ">=" та ">", в тому числі з урахуванням полів з вказівниками.
Для визначення відношення порядку багатокомпонентних типів необхідно, щоб кожний компонент мав відношення порядку, і щоб узагальнююче відношення будувалося за допомогою монотонних функцій. Відношення порядку завжди визначаються при побудові індексів в реляційних системах управління базами даних (СУБД), наприклад, в більшості SQL-серверів як зважене об’єднання полів, а в деяких системах, наприклад у FoxPro, припустимий вираз індексу, що визначає функцію полів.
Приклад функцій порівняння
// порівняння структур за відношенням порядку
int cmpStr(unsigned char* s1, unsigned char* s2)
{unsigned n;
while(s1[n]==s2[n]&&s1[n]!=0)n++;
return s1[n]-s2[n];
}
int cmpKey(struct recrd* el, struct keyStr kArg)
{ int i=cmpStr((unsigned char*)el->key.str,
(unsigned char*)kArg.str);
if(i)return i;
return el->key.nMod - kArg.nMod;
}
Системні програми в процесі свого виконання використовують власну вбудовану інформаційну базу (IБ), а також будують ІБ задачі про текст на заданій вхідній мові.