Завдання 1. Файли рядків (слів).
Стр 1 из 2Следующая ⇒ Короткі теоретичні відомості. Програма, яка написана мовою Pascal, повинна якимось чином обмінюватись даними з зовнішніми пристроями (отримувати дані з клавіатури, магнітного диска, виводити дані на екран, принтер і т.д.) Для роботи з зовнішніми пристроями використовуються файли. Файли - це значення файлового типу даних - ще одного стандартного складного типу в мові. (Послідовний) файл - це послідовність однотипних компонент, яка має ознаку кінця і оброблюється послідовно - від початку до кінця. Порядок компонент визначається самою послідовністю, подібно до того, як порядок слідування чергового кадру кінофільму визначається його розташуванням на кіноплівці. У будь-який момент часу доступний тільки один елемент файла (кадр кінофільму). Інші компоненти доступні тільки шляхом послідовного просування по файлу. У результаті виконання програми відбувається перетворення одного текстового файла (який називається Input) в інший текстовий файл (який називається Output). Обидва ці файли є стандартними і використовуються для введення /виведення даних. Над файлами можна виконувати два явних виду дій: Перегляд (читання) файла. Створення (запис) файла - виконується шляхом приєднання нових компонент у кінець початково порожнього файла. Файли, з якими працює програма, повинні бути описані в програмі. Частина файлів (що уявляють собою фізичні пристрої) має в операційній системі стандартні імена. Наприклад, для читання даних з клавіатури і виведення результатів на екран монітора ми користуємось стандартними файлами Input і Output. Файл - принтер має ім’я Prn: Імена нестандартних файлів, що використовуються в програмі, необхідно описувати у розділі змінних. Описання файлового типу відповідає діаграмі:
Файловий тип
Файл, компоненти якого є символами, називається текстовим. Він має стандартний тип Text: Type Text = File of Char;
Приклади: Type ExtClass = File of Person; CardList = File of Integer; Var F: Text; Data: File of real; List1, List2: CardList; Class10A, Class10B: ExtClass;
Для роботи з нестандартними файлами ім’я файлу повинно бути зв’язане з реально існуючим об’єктом - зовнішнім пристроєм. Якщо нам необхідно обробити дані з файлу, що знаходиться на магнітному диску і який має (зовнішнє) ім’я D:\ExtName.dat, ми повинні повідомити системі, що працюючи з файлом IntName (читаючи з нього дані або записуючи до нього дані), ми працюємо з файлом ExtName.dat, що знаходиться на диску D:. Для ототожнення внутрішнього імені файлу з зовнішнім іменем використовується процедура Assign (< внутрішнє ім’я >, < ' зовнішнє ім’я ' >). Після того, як ім’я файлу описано і визначено, можна приступити до роботи з файлом. При використанні нестандартних файлів треба пам’ятати, що перед роботою необхідно відкрити їх, тобто зробити доступними з програми. Для цього треба застосувати одну з двох наступних процедур: Процедура Rewrite (<ім’я файлу >) - відкриває файл для запису. Якщо файл раніше існував, всі дані, що зберігались у ньому, знищуються. Файл готовий до запису першої компоненти. Процедура Reset (<ім’я файлу >) - відкриває файл для читання. Файл готовий для читання з нього першої компоненти. По закінченню роботи з файлом (на запис) він повинен бути закритий. Для цього використовується процедура Close (<ім’я файлу >). Ця процедура виконує всі необхідні машинні маніпуляції, що забезпечують збереження даних у файлі. Для обміну даними з файлами використовують процедури Read і Writе. Процедура Read (<ім’я файлу >,<список введення >), читає дані з файлу (по замовченню ім’я файла - Input). Список введення - це список змінних.
Процедура Writе (<ім’я файлу >,<список виведення >), записує дані у файл (по замовченню ім’я файлу - Output). Список виведення - це список виразів. Якщо F - файл типу Text, то у списку введення/виведення допустимі змінні/вирази типу Integer, Real, Char, String[N]. В інших випадках типи всіх компонент списку повинні співпадати з типом компоненти файлу. При роботі з файлами застосовують стандартні логічні функції: Eof (F) (end of file) - стандартна функція - признак кінця файлу. Якщо файл F вичерпаний, то Eof(F) = True, в протилежному випадку Eof(F) = False. Eoln (F) (End of line) - стандартна функція - признак кінця рядка текстового файлу. Якщо рядок текстового файлу F вичерпаний, то Eoln(F) = True, в протилежному випадку Eoln(F) = False. Функція Eoln визначена тільки для файлів типа Text. Звичайно в програмах використовують або текстові файли, або файли, компонентами яких є структуровані дані (наприклад, записи). Треба пам’ятати, що дані файлових типів неможна використовувати в якості компонент інших структур даних. Наприклад, неможна визначити масив, компонентами якого є файли, запис, полем якої є файл.
Основні задачі обробки файлів.
Задача 1. Злиття (об’єднання) файлів. Дано файли F і G. Треба сформувати файл Н, який містить всі компоненти як F, так і G. Алгоритм полягає у послідовному і почерговому перегляді файлів F і G і запису чергової компоненти в Н. Почерговість визначається порівнянням значень ключів компонент F і G. Оформимо алгоритм у виді процедури:
Procedure FileMerge(var F, G, H: OurFile); Var X, Y: Component; Flag: Boolean;
Procedure Step(var U:OurFile; var A, B:Component); begin Write(H, A); If Eof(U) then begin Write(H, B); Flag:= False end else Read(U, A) end;
Procedure AppendTail(var U: Ourfile); Var A: Component; Begin While not(Eof(U)) do begin Read(U, A); Write(H, A) end end;
Begin Reset(F); Reset(G); Rewrite(H); Flag:= True; Read(F, X); Read(G, Y); While Flag do If X.Key < Y.Key then Step(F, X, Y) else Step(G, Y, X); AppendTail(F); AppendTail(G); Close(H) End; Хід роботи.
1. Виконати свій варіант із завдання. 2. Записати програму як файл в бібліотеку. 3. Відкомпілювати її і запустити на виконання 4. Записати відкоректовану програму, вихідні данні та результат роботи програми. Контрольні питання.
1. Дати поняття файлового типу даних. 2. Основні задачі обробки файлів. 3. Визначити операції та функції над даними файлового типу.
4. Описати різні типи файлів. 5. Дати поняття текстовому файлу. Особливості роботи з файлом даного типу. 6. Сортування файлів. Алгоритм сортування злиттям. 7. Задача корегування файлу. Завдання 1. Файли рядків (слів). 1. Знайти в файлі F всі слова-палендроми та зробити з них файл G. 2. Знайти в файлі F входження слова p, змінити його на слово q, отримавши новий файл G. 3. Знайти в файлі F всі слова, які являють собою числа в десятковому запису та отримати числовий файл G, який містить всі знайдені числа. 4. Знайти в файлі F всі слова з однієї букви та зайві пробіли між словами (пробіл повинен бути 1), та, видаливши пробіли, отримати новий файл G, а до файлу Q записати слова з однієї букви. 5. Знайти в файлі F всі слова, які зустрічаються більш ніж 1 раз, та скласти файл G, вилучивши з F всі знайдені слова. 6. В файлі F знайти всі слова, які мають подвійні букви та скласти з них файл G. 7. Знайти в файлі F всі слова, які мають підслово p та скласти з них файл G. 8. Дано файл F. Відсортувати його в алфавітному порядку. 9. Дано слово p та файл F. Знайти в файлі F всі слова, які можна скласти з букв слова p. 10. Дано текстовий файл, що містить символьні рядки. Скласти файли ‘q1.txt’ і ‘q2.txt’, які містять відповідно слова парної і непарної довжини. Вивести вміст нових файлів. Ім’я даного файлу задається користувачем. 11. Дано текстовий файл, що містить символьні рядки. Знайти кількість рядків, що починаються символом ‘a’. Ім’я даного файлу задається користувачем. 12. Дано файл, компонентами якого є символьні рядки. Знайти найдовше слово серед слів, друга літера якого ‘e’. Якщо їх декілька, вивести останнє. Якщо таких слів немає, вивести повідомлення ‘NO’. Ім’я даного файлу та рядка задається користувачем. 13. Дано файл, компонентами якого є дійсні числа. Знайти суму квадратів компонент. Ім’я файлу задається користувачем. Результат округлити до сотих. 14. Написати програму, яка дописує у файл 5 введених користувачем цілих чисел, а потім підраховує суму усіх чисел у файлі. У файлі кожен елемент даних повинен знаходитися в окремому рядку. На екран вивести всі числа з файлу та суму.
15. Написати програму, яка дописує у файл ‘phone.txt’ прізвище sname, ім’я name та номер телефону tel абонента. У файлі кожен елемент даних повинен знаходитися в окремому рядку. Вивести дані, що містяться у файлі (про кожного абонента у один рядок). 16. Дано файл, компонентами якого є дійсні числа. Знайти найбільшу з його компонент. Ім’я файлу задається користувачем. Результат округлити до сотих.
Читайте также: Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|