Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Лабораторна робота №5. 5.1 Стислі теоретичні відомостіФайли у мові Pascal 5.1 Стислі теоретичні відомості Файлова система, яка реалізується у Borland Pascal, складається з логічних та фізичних файлів. Логічний файл – це змінна файлового типу, яка визначається у мові та використовується як засіб спілкування з фізичним файлом. Ім’я фізичного файлу використовується у програмі один раз під час зв’язку (Assign) його з логічним файлом. У якості фізичних файлів виступають власне файли на диску або пристрою MS-DOS (con, lpt, prn, com, aux, nul). Ввід-вивід даних виконується через буфер – спеціальну область пам’яті. Механізм буферізації дозволяє швидко та ефективно обмінюватись інформацією з різними пристроями. Borland Pascal підтримує три файлових типи: - текстові файли (типа Text); - компонентні файли (типа File Оf …); - безтипові файли (типа File). Текстові файли – це файли, які складаються із кодів ASCII, організовані по рядкам та містять спеціальний код – кінець файлу.
Компонентні файли – файли, які складаються із машинних представлень різних даних. За допомогою цих файлів можна здійснювати обмін даними між дисками та робочою пам’яттю програми. Безтипові файли – низькорівневий канал вводу - виводу для доступу до будь-яких файлів. Вони також, як і компонентні файли, складаються з машинних представлень даних, але працюють, на відміну від останніх, з будь-якими наборами байтів незалежно від їх структури та природи. Для всіх без виключення файлів необхідно попередній зв’язок їх логічних позначень (файлових змінних) з фізичними файлами, наприклад: Var f1:Text; f2:File of Real; f3:File; BEGIN Assign(f1,‘D:\PROGS\file.txt’); { зв’язок f1 з file.txt } Assign(f2,‘C:\file.dat’); { зв’язок f2 з file.dat } Assign(f3,‘file.scn’); { зв’язок f3 з file.scn } ... END.
Файлові змінні не можуть приймати участь в операторах привласнення. При їх використовуванні у якості формальних параметрів заголовків процедур та функцій вони завжди повинні бути описані як Var-параметри. Після завершення роботи з файлом його обов’язково необхідно закрити (Close).
Загальні процедури та функції для роботи з файлами приведені нижче:
Для роботи тільки з текстовими файлами вводяться текст-орієнтовані процедури та функції:
Типізований, або компонентний файл – файл з наборами даних однієї і тієї ж структури типу File of ТипКомпонента, де компонента може мати будь-який тип (у тому числі і введений програмістом), крім тих самих файлів або об’єктів. Для типізованих файлів обидві процедури Reset та ReWrite встановлюють режим читання/запису у відповідності зі значенням системної змінної FileMode (по замовчанню FileMode дорівнює 2), тобто незалежно від вибору процедури відкриття, файл відкривається і для читання, і для запису. Режим FileMode можна змінювати простим привласненням (1 – тільки запис, 0 – тільки читання). Після відкриття типізованого файлу ввід та вивід даних здійснюється стандартними операторами Read та Write, де першим аргументом повинно бути ім’я логічного файлу, а далі йде змінна або їх список того ж типу, що й об’явлений тип компонента файлу. Не має сенсу застосовувати до типізованих файлів оператори ReadLn та WriteLn, так як для них не існує таких понять, як рядок та його кінець, немає признаку кінця файлу. Типізовані файли максимально ефективним засобом зберігають чисельну інформацію, дозволяють зчитувати та записувати складні структури однією командою, наприклад: Type Dim=Array[1..50,1..25] of Word; Var x,y:Dim; f1,f2:File of Dim; BEGIN ... {відкриття файлів f1 та f2} Read(f1,x); {зчитування всього масиву 50х25} ... {обробка масивів} Write(f2,y); { запис усього масиву } ... { закриття файлів } END.
Розмір буферу для типізованих файлів встановлюється автоматично, виходячи з розмірів компонентів. Безтипові файли, разом з іншими можливостями, дозволяють записувати на диск будь-які ділянки робочої пам’яті ПЕОМ та зчитувати їх у пам’ять з диску. Ввід-вивід у безтипові файли здійснюється спеціальними процедурами:
BlockRead(Var f:File;Var Dest;Count:Word[; Var ReadIn:Word]) BlockWrite(Var f:File;Var Source;Count:Word[;Var WriteOut:Word])
Ці процедури здійснюють читання у змінну Dest та запис із змінної Source блоків, які складаються з тієї кількості байтів, яке визначено для буфера файлу f. Count визначає число ємностей буферу, які зчитуються за одне звертання. Воно підкоряється умові:
Count * Розмір_Буферу < 64 K
Необов’язковий параметр ReadIn повертає число буферів, які зчитані поточною операцією BlockRead. Аналогічний параметр WriteOut процедури BlockWrite. Якщо операції запису та читання пройшли успішно, то значення ReadIn та WriteOut будуть дорівнювати відповідним значенням параметру Count. У противному випадку ReadIn та WriteOut будуть утримувати ціле число вдало перенесених блоків. Розмір буферу передачі даних для безтипових файлів по замовченню дорівнює 128 байт. Цей розмір можна задавати явним засобом через параметр BufSize наступних процедур: Reset(Var f:File;BufSize:Word) ReWrite(Var f:File;BufSize:Word) Значення параметру BufSize може бути встановлено від 1 байту до 64 К. Для роботи з типізованими та безтиповими файлами зручно використовувати процедури та функції, які вбудовані в Borland Pascal:
Для роботи з каталогами в Borland Pascal є наступний набір процедур:
Для роботи з файлами та каталогами у мові використовуються також засоби модулів DOS і WinDOS. Компілятор Borland Pascal дозволяє генерувати виконуючий код з перевіркою коректності вводу-виводу – {$I+} та без неї – {$I-}. Цей ключ має локальну схему впливу та може використовуватися у тексті програми потрібне число разів. При {$I-} (по умовчанню {$I+}) виникнення помилки неперерве виконання програми, а продовжить програму з наступного оператору. Для опитування коду помилки вводу-виводу, яка виникла, використовується функція IOResult: Integer. Опитати цю функцію можна тільки один раз після кожної операції вводу або виводу, так як вона своє значення при кожному виклику робить нульовим. Функція повертає значення 0 при вдалому завершенні операції вводу-виводу. Приклад використовування функції IOResult: BEGIN {$I–} Assign(f,‘file.my’);
|