Робота з файлами

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
КН
Кафедра:
Кафедра ЕОМ

Інформація про роботу

Рік:
2003
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Основи алгоритмізації та програмування

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти і науки України Національний університет “Львівська Політехніка” Кафедра ЕОМ Звіт про виконання лабораторної роботи № 7 з курсу „Основи алгоритмізації та програмування” Тема: Робота з файлами. Виконано: стдент групи КІ-14 Сорокевич М.І. Перевірено: Ногаль М.В. Львів – 2003 МЕТА РОБОТИ: Навчитися працювати з файлами засобами мови Pascal. Теоретичні відомості Обробка файлів засобами мови Паскаль Файл – це сукупність логічно пов'язаних та організованих певнним чином даних на зовнішньому носії інформації (диску). Розширення можливостей вводу і виводу реалізується використанням файлових змінних.Файловий тип складається із лінійної∙ послідовності компонент, котрі в свою чергу можуть мати любий тип за виключенням файлового або структурного, до складу якого входить файловий тип. Якшо слово of і тип компоненти відсутні то використовуються нетиповані файли. Паскаль розглядає три класи файлів: типовані, нетиповані, текстові, Типований файл складається із записів (компонент) одного з допустимих у Паскалі типів. Всі компоненти типованого файла мають однаковий розмір, що визначається розміром базового елемента. Тому можливим є доступ до кожного запису файла за його номером. Типованані файли є файлами прямого доступу і відкриваються одразу для читання і для запису.Це так звані дискові файли, які складаються з нумерованої∙ послідовності деякого типу. Нетипованані файли Паскаль розглядає як сукупність символьних або байтових значень, незалежно від того, елементами яких даних вони є. Практично це означає, що кожен файл типований чи текстовий може розглядатись як нетипований, важливим є лише його розмір. Нетиповані файли забезпечують максимальну швидкодію при вводі/виводі інформації, оскільки не потребують затрат часу на перетворення даних. Нетиповані файли також відкриваються для вводу/виводу одночасно. Текстовий файл складається з послідовності рядків символів, кожен з яких закінчується парою кодів #13#10 ("перевід рядка", "повернення каретки"). Оскільки рядки файла мають різну довжину, то текстові файли є файлами послідовного доступу. Тобто, ввід/вивід n-го рядка файла можливий лише після зчитування/запису попередніх (n-1) рядків, а сам файл відкривається тільки для читання або тільки для запису. Кожному файлу в програмі ставиться у відповідність файлова змінна одного з трьох типів (за класом файла). А процес роботи з файлами включає наступні етапи: - опис файлової∙ змінної∙(типи text, file of <базовий тип>, file); - встановлення зв'язку між файловою змінною та конкретним фізичним файлом (процедура Assign); - відкривання файла (процедури Reset, Rewrite, Append); - обмін даними з файлом - ввід/вивід (процедури Read, Readln, BlockRead, Write, Writeln, BlockWrite); - закриття файла (процедура Close). Кожен клас файлів має свої∙особливості при виконанні названих етапів. Крім наведених операцій Паскаль дозволяє здійснювати аналіз помилок при роботі з файлами (за допомогою функці IOResult), переміщення по файлу (процедура Seek, функція SeekPos), встановлення статуса кінця рядка та кінця файла (функці∙EOLn, EOF, SeekEOLn, SeekEOF), визначення розміру файла (функція FileSize), перейменування (процедура Rename) та витирання файла (процедура Truncate) та інші дії. Список стандартних процедур та функцій для роботи з файлами наведений далі. Перелік стандартних процедур та функцій модуля System для роботи з файлами Процедури Append (Var f:text); Відкриває існуючий текстовий файл для доповнення (запису в кінець); f - файлова змінна. Assign (Var f; name:string); Пов'язує файлову змінну f з зовнішнім файлом, ім'я якого задається параметром name (змінна або символьний рядок). Якщо файл розташований в іншому каталозі,то необхідно вказати шлях до нього. Reset (Var f[:file;recsize:word]); Відкриває існуючий файл і встановлює вказівник на його початок: текстовий файл відкривається тільки для читання, типований і нетипований файли – читання і запису. Для нетипованого файла додатково задається розмір запису у байтах. Rewrite (Var f[:file;recsize:word]); Створює і відкриває новий файл або відкриває для запису існуючий (занесена попередньо у файл інформація при цьому витирається). Close (Var f); Закриває відкритий файл. Seek (Var f; n:longint); Встановлює вказівник файла на компоненту з номером n. BlockRead (Var f:file;Var buf; n:word; [; Var result:word]); Читає з нетипованого файла n записів даних у область пам'яті, виділену для змінної∙ buf; f - змінна нетипованого файла; buf - змінна довільного типу, що задає буферну область, куди заноситься інформація з файла; result - (необов'язковий параметр) повертає число фактично зчитаних блоків. BlockWrite (Var f:file; Var buf; n:word;[; Var result:word]); Записує у файл n блоків даних з області пам'яті змінної buf (див. BlockRead). Erase (Var f); Витирає закритий файл, який представляє змінна f. Rename (Var f;newname:string); Перейменовує закритий файл, представлений змінною f на нове ім'я,задане параметром newname. Flush (Var f:text); Переносить у текстовий файл інформацію з буфера виводу. Read (f,v1[,v2,...vk]); Якщо f - типований файл, то читає біжучу його компоненту у змінну v1. Якщо f - текстований файл,то читає одне або більше послідовних значень у змінні v1,...vk. Readln (Var f:text; v1[,v2,...vk]); Виконує Read-процедуру текстового файла з наступним переходом на новий рядок. SetTextBuf (Var f:text; Var buf[;size:word]); Створює буфер користувача для обміну даними з текстовим файлом; buf - змінна достатнього розміру, щоб вмістити всю інформацію; size - (необов'язковий параметр) визначає розмір буфера. Без нього буфер має розмір змінно∙buf. Truncate (Var f); Витирає частину файла, яка розташована за позицією курсора. Write (f,v1[,v2,...vk]); Якщо f - типований файл, то записує значення змінної∙ v1 у біжучий компонент файла. Якщо f - текстовий файл, то заносить значення змінних v1,..vk у біжучий рядок файла. Writeln (Var f:text;v1[,v2,...vk]); Заносить дані у текстовий файл як процедура Write, виставляючи в кінці маркер кінця рядка. Функції. EOF (Var f):boolean true - при досягненні кінця файла; false - в інших випадках. f - змінна відкритого файла будь-якого класу. EOLn (Var f:text):boolean true - при досягненні кінця рядка; false - в інших випадках. f - змінна текстового файла. FilePos (Var f):longint Номер запису файла, на якому розташований вказівник. f - змінна типованого або нетипованого файла. FileSize (Var f):longint Кількість записів (розмір) файла. Розмір файла в байтах можна визначити: FileSize(f)*Sizeof(a), де Sizeof(a) - довжина компоненти файла. IOResult: word Повертає код результату виконання останньоїоперації.∙Функція без параметрів вводу/виводу: при успішному завершенні - 0, при невдалому - код помилки. SeekEOF(Var f:text):boolean Стан кінця для відкритого текстового файла. Кінцеві пропуски та знаки табуляцій ігноруються. SeekEOln(var f:text):boolean Стан кінця рядка в текстовому файлі. Кінцеві пропуски та знаки табуляцій ігноруються. ЗАВДАННЯ Програмно організувати створення нового типованого файла з записів (кількість записів – 5..10). Аналізуючи в програмі дані зі створеного файла записів, виконати над ними задані перетворення та вивести на екран дисплея вказану в індивідуальному завданні інформацію. Варіант 7. Відлагодити та реалізувати розроблену програму. Дані про розподіл стипендії по групах 2-го курсу: Група │ Кількість студентів │ Отримують стипендію │ Староста Вивести список груп, вказавши прізвище та ім'я старости, в яких понад 70% студентів отримують стипендї. program lab7; {$APPTYPE CONSOLE} uses SysUtils; const n=7; type styp=record grupa: string[6]; kilk: byte; otrym_st: byte; starosta: string[20]; end; var st: file of styp; st_buf: styp; i: integer; begin assign(st,'st_file.txt'); rewrite(st); writeln('Vvedit'' dani pro stypendiju v ',n,' grupah'); for i:=1 to n do begin with st_buf do begin writeln('Grupa ',i,':'); write(' Nazva grupy - '); readln (grupa); write(' Kil''kist'' studentiv - '); readln (kilk); write(' Otrymuyut'' stypendiju - '); readln(otrym_st); writeln(' Prizvyshche ta imja starosty (do 20 symvoliv):'); write(' '); readln(starosta) end; write(st,st_buf); end; close(st); reset(st); writeln('Spysok grup, v jakyh >70% studentiv otrymuyut'' stypendiju:'); while not eof(st) do begin read(st,st_buf); with st_buf do if otrym_st / kilk > 0.7 then writeln(' ',grupa,' - ',starosta); end; close(st); readln end. Висновок: На цій лабораторній роботі я навчився працювати з файлами засобами мови Pascal і склав програму, яка створює типований файл і виводить потрібну нам інформацію з нього.
Антиботан аватар за замовчуванням

31.03.2013 13:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!