Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Файли з довільним доступом




Вправи

Питання для роздумів

Послідовний (текстовий) файл, текстовий формат, дескриптор файлу, текстовий рядок, відкриття файлу, закриття файлу, запис у файл, читання з файлу, функції Input, EOF і LOF.

  1. Який РежимРоботи потрібно вибрати для відкриття текстового файлу, якщо Ви збираєтеся щодня записувати в нього дані про погоду (температуру повітря, атмосферний тиск і т.п.)?
  2. Як Ви думаєте, що відбудеться, якщо кожен текстовий рядок файлу містить 4 елементи, розділених комами, а Ваша програма читання цього файлу містить тільки 3 елементи у CnucкуЗмінних оператора Input? (Підказка: Якщо число рядків у файлі дорівнює 10, буде видане повідомлення про помилку, а якщо дорівнює 12, то ні.)
  3. Що б Ви зробили для того, щоб уникнути переривання роботи програми коду 4.6 у тому випадку, коли робиться спроба помістити в текстове поле екранної форми вміст занадто довгого файлу? (Довжина файлу більше 32000.)
  1. У кодах 4.4 і 4.5 в операторі циклу Do... Loop замініть умову виду Until умовою виду While.
  2. Напишіть програму, що записує у файл текстові рядки, що складаються з трьох значень: прізвища, імені і номера телефону. Ці дані спочатку записані в 3 об'єкти класу ListBox екранної форми.
  3. Напишіть програму, що відкриває файл, створений при рішенні попередньої задачі (вправа 2), читає його рядки за допомогою оператора Line Input і поміщає їх у єдиний об'єкт класу ListBox екранної форми.

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

Зараз ми переходимо до розгляду більш високого рівня представлення даних — до файлів з довільним доступом і базам даних. І перше, з чим Вам необхідно буде познайомитися, — це зі структурою даних, що у них використовується. Вона називається користувацьким типом даних.

Головна відмінність цієї структури даних від розглянутих раніше полягає в тому, що вона містить компоненти (За визначенням, структура — це деяка сутність, що складається із взаємозалежних частин, що називаються компонентами структури. (А поняття сутності ми не визначаємо — це так зване початкове поняття.)) (окремі дані), що можуть мати різні типи!

У середовищі програмістів структуру даних, що ми називаємо користувацьким типом даних, прийнято також називати записом (англ. record), a компоненти цієї структури — полями запису (англ. fields).

Нехай запис складається з n полів (n — ціле число). Кожне поле запису має порядковий номер — від 1 до п. Будемо називати поле, що має номер i (i = 1,..., n), і-м полем запису.

А тепер визначимо важливе поняття, з яким тісно зв'язане поняття запису, — це база даних.

База даних — це множина наборів однакових записів. Під однаковістю ми розуміємо те, що всі записи одного набору складаються з однакової кількості полів та i -і поля всіх записів мають однаковий тип і розмір — довжину в символах.

Набір однакових записів, що відносяться до визначеної теми, називають таблицею бази даних. Така назва не випадкова. Дійсно, цей набір записів легко представити у вигляді рядків таблиці, у якої n стовпців, а і -й стовпець відповідає i -му полю всіх записів.

Приклад 4.6. База даних містить всього одну таблицю - відомості про студентів вашого факультету. Кожен рядок цієї таблиці являє собою впорядкований набір наступних значень:

  • Ім'я — рядок (тип String) довжиною до 15 символів;
  • Прізвище — рядок довжиною до 20 символів;
  • ДатаНародження — дане типу Date (дані цього типу складаються з 8 символів (2 символи на число, 2 символи на місяць і 4 символи на рік));
  • Група — рядок довжиною до 4 символів;
  • Адреса — рядок довжиною до 32 символів;
  • Телефон — рядок довжиною до 15 символів.

Таким чином, таблиця має 6 стовпців. Допустимо, на Вашому факультеті 800 студентів. Це означає, що Ваша таблиця буде складатися з 800 рядків (записів), у яких буде міститися 4800 значень. Кожен рядок складається з 94 символів — виходить, усього в таблиці 75200 символів!

У загальному випадку база даних може містити не одну, а багато різних таблиць. Ці таблиці найчастіше тісно зв'язані між собою — у них містяться стовпці з однаковими назвами і з однаковими даними.

Зберігаються такі складні бази даних в особливих файлах — файлах баз даних. Про них ми докладно розповімо в гл. 5. А зараз обмежимося порівняно простим випадком, коли база даних містить всього одну таблицю.

Таблиці, подібні до тієї, що приводилася в прикладі 4.6, зручно зберігати у вигляді файлів, що називаються файлами довільного доступу.

Головна відмінність файлів довільного доступу від розглянутих раніше файлів з послідовним доступом (текстових файлів) полягає в наступному: усі записи цих файлів мають постійну довжину і порядковий номер. Це дозволяє поводитися з ними на зразок того, як веде себе плейер із записами на компакт-диску: відразу, без послідовного їхнього перегляду, знаходити потрібний Вам запис і щось з ним робити.

Але для записів у таких файлах не підходять ті типи даних, з якими Ви вже встигли познайомитися. Розглянемо новий тип даних, що застосовується у файлах довільного доступу. Він називається користувацьким типом даних.

Користувацький тип даних проголошується в такий спосіб:

Private Type Ім’яТипуДаних Елемент 1 As ТипЕлементу 1...... Елемент N As ТипЕлементу N End Type

Замість ключового слова Private перед словом Type може бути записане ключове слово Public. (Нагадаємо, що якщо використовується слово Private, то оголошувана змінна локальна, а якщо Public — то вона глобальна.)

Ім’яТипуДаних — це ім'я, що привласнюється обумовленому типу даних.

Елемент 1,..., Елемент — це назви полів запису, для яких ми створюємо користувацький тип даних.

ТипЕлементу 1,..., TunЕлементу N — це стандартні, відомі Вам типи даних, що будуть знаходитися в цих полях запису. Єдине обмеження — усі дані типу String повинні мати фіксовану довжину!

Після визначення користувацького типу даних необхідно оголосити змінні, котрі будуть мати цей тип.

Робиться це звичайним чином:

Dim Ім’яЗмінної As Ім’яТипуДаних

Приклад 4.7. Для таблиці бази даних із прикладу 4.6 можна визначити наступний користувацький тип даних:

Код 4.7

А тепер вирішимо наступну задачу: оголосимо змінну Студент, що має користувацький тип ДаніПроСтудента, і знайдемо довжину запису, для будь-якого значення цієї змінної:

Код 4.8

Наступною Вашою задачею буде вивчення операторів Visual Basic, що дозволяють створювати файли довільного доступу і працювати з ними. До них відносяться:

  • оператори відкриття і закриття файлів;
  • оператори запису у файл і читання з файлу.

Відкриття файлу. Для відкриття файлу прямого доступу використовується оператор Open з наступним синтаксисом:

Open ІмяФайлу For Random As #ДескрипторФайлу Len = ДовжинаЗапису

Ім’яФайлу і ДескрипторФайлу — визначаються так само, як в операторі Open для текстових файлів (див. попередній розділ). Але на відміну від текстових файлів тут не робиться розходження між файлами для запису і для читання: усі вони відкриваються в одному режимі, що визначається ключовим словом Random.

Крім того, у даному випадку оператор Open містить ключове слово Len, слідом за яким вказується ДовжинаЗапису — ціле число. Воно повинне дорівнювати довжині змінної користувацького типу, що застосовується для збереження одного запису файлу.

Закриття файлів. Для закриття файлів довільного доступу використовується оператор Close. Його синтаксис і логіка роботи нічим не відрізняються від синтаксису і логіки роботи оператора Close для закриття текстових файлів.

3апис у файлу. Для включення у файл довільного доступу нового запису застосовується оператор Put, що має наступний синтаксис:

Put # ДескрипторФайлу, НомерЗапису, Ім’яЗмінної

ДескрипторФайлу — це ідентифікатор відкритого файлу прямого доступу, у якому міститься запис.

НомерЗапису — це номер, що матиме запис, який поміщається у файл. Номером може бути тільки ціле додатне число.

Ім’яЗмінної — це ім'я змінної користувацького типу, значенням якої є запис, що поміщається у файл.

Читання з файлу. Для витягу запису з файлу довільного доступу застосовується оператор Get, що має такий синтаксис:

Get # ДескриторФайлу, НомерЗапису, Ім’яЗмінної

ДескрипторФайлу — це ідентифікатор відкритого файлу довільного доступу, з якого витягається запис.

НомерЗапису — це номер запису, що витягається з файлу.

Ім’яЗмінної — це ім'я змінної користувацького типу, значенням якої є запис, що витягається з файлу.

Приклад 4.8. Приведемо програму додатка, за допомогою якого користувач спочатку заповнює 6 вікон списку даними про студентів із прикладу 4.7 (використовуючи системні вікна введення), після чого ці дані поміщаються у файл довільного доступу.

Екранна форма додатка із заповненими списками представлена на мал. 4.4.

Мал. 4.4. Екранна форма для демонстрації роботи програми запису даних у файл довільного доступу

Усім вікнам списку ми привласнили те саме ім'я — List. При цьому вони перетворилися в масив об'єктів (у кожного списку з'явився індекс, значення якого знаходиться в межах від 0 до 5).

Заповнення всіх 6 вікон списку починається після натиснення командної кнопки з написом Внести дані у списки. Процедура для цієї події представлена кодом 4.9.

Код 4.9.

Запис даних з вікон списків у файл прямого доступу з ім'ям Студенти.raf починається після натиснення командної кнопки з написом Перенести дані зі списків у файл. Процедуру для цієї події представляє код 4.10.

Код 4.10

Оголошення користувацького типу ДанихПроСтудента з прикладу 4.7 було представлено раніше — див. код 4.7.

Представлена програма заповнення масиву за допомогою вікон списку має істотний недолік. Якщо Ви помітите, що якісь дані, які вже занесені до списку, мають помилку, виправити цю помилку можна буде почавши вводити всі дані заново! В останньому розділі даної глави буде розглянутий спосіб вводу даних у списки, який не має цього недоліку (Цей спосіб допускає використання об'єктів ComboBox (замість об'єктів ListBox)).

Прикладом використання файлу прямого доступу може служити програма, представлена кодом 4.11. З її допомогою користувач може ознайомитися зі списком дат народження студентів, відомості про які знаходяться у файлі з ім'ям Студенти.raf.

Код 4.11

У програмі ми використовували нову для Вас функцію Trim. З її допомогою можна видалити зайві пробіли, з яких починається і якими закінчується рядок символів.

Результат роботи цієї програми приведений на мал. 4.5.

Мал. 4.5. Екранна форма для демонстрації роботи програми читання даних з файлу довільного доступу (читання дат народження)

На закінчення визначимо ще 3 оператора: перейменування, копіювання і знищення файлів. Ці оператори можна застосовувати як до текстових файлів, так і до файлів довільного доступу.

Оператор перейменування файлу. Синтаксис цього оператора наступний:

Name СтареІм’я As НовеІм’я

СтареІм’я і НовеІм’я — це рядки, що визначають маршрут до файлу зі старим ім'ям і маршрут до цього ж файлу з новим ім'ям.

Оператор копіювання файлу. Цей оператор має наступний синтаксис:

FileCopy Ім’яФайлу Ім’яФайлуКопії

Ім’яФайлу і Ім’яФайлуКопії — це рядки, що визначають маршрут до файлу-оригіналу і маршрут до створюваної копії файлу-оригіналу.

0пepатоp знищення файлу. Синтаксис оператора такий:

Kill Ім’яЗнищуваногоФайлу

Приклад використання цього оператора Ви можете знайти в коді 4.11. У приведеній програмі створений файл прямого доступу з ім'ям Студенти.raf (Для даного файлу ми придумали розширення raf, взявши перші букви словосполучення random-access file — файл із довільним доступом.) наприкінці її роботи знищується через непотрібність.

Нові поняття:

запис, поле запису, база даних, таблиця бази даних, користувацький тип даних, файл довільного доступу, функція Trim видалення зайвих пробілів, перейменування файлу, копіювання файлу, знищення файлу.




Поделиться с друзьями:


Дата добавления: 2014-12-23; Просмотров: 566; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.041 сек.