4778

Файлы и задачи их обработки

Лабораторная работа

Информатика, кибернетика и программирование

Файлы и задачи их обработки Содержание. Понятие последовательного файла как структуры данных, в которой хранится информация на внешних носителях. Операции с файлами открытие, закрытие, чтение, запись. Задача корректировки файла. Цель. Освоит...

Русский

2012-11-26

64 KB

53 чел.

Файлы и задачи их обработки

Содержание.  Понятие последовательного файла как структуры данных, в которой хранится информация на внешних носителях. Операции с файлами: открытие, закрытие, чтение, запись. Задача корректировки файла.

Цель:. Освоить понятие файла как основной формы хранения и обработки информации на внешних носителях и изучить основные задачи обработки файлов.    

Задание:  Предварительно изучив лекционный и теоретический материал, выполнить задания, изложенные в разделе Ход занятия.

Литература:

1. М.С. Львов, А.В.Спиваковский, С.В.Белоусова. Основы программирования на языке Паскаль. Херсон: МИБ, 1997.- 153 с.

2. В.М.Заварыкин, В.Г.Житомирский, М.П.Лапчик. Основы информатики и вычислительной техники. М.: Просвещение, 1989.- 207с.

3. Конспект лекций.

Теоретический материал

Файлы. Управление файлами.

Программа, написанная на языке Паскаль, должна каким-то образом обмениваться данными с внешними устройствами (получать данные с клавиатуры, магнитного диска, выводить данные на экран, принтер и т.д.) Для работы с внешними устройствами используются файлы.  Файлы - это значения файлового типа данных - еще одного стандартного сложного типа в языке.

(Последовательный) файл - это последовательность однотипных компонент, снабженная признаком конца и обрабатываемая последовательно - от начала к концу.

Порядок компонент определяется самой последовательностью, подобно тому, как порядок следования очередного кадра кинофильма определяется его расположением на кинопленке. В любой момент времени доступен только один элемент файла (кадр кинофильма). Другие компоненты доступны только путем последовательного продвижения по файлу.

Над файлами можно выполнять два явных вида действий:

1.Просмотр (чтение) файла.

2.Создание (запись) файла - выполняется путем добавления новых компонент в конец первоначально пустого файла.

Файлы, с которыми работает программа, должны быть описаны в программе. Часть файлов (представляющих собой физические устройства) имеет в операционной системе стандартные имена. Например, для чтения данных с клавиатуры и вывода результатов на экран монитора мы пользуемся стандартными файлами Input и Output. Файл - принтер имеет имя Prn:

Имена нестандартных файлов, используемых в программе, необходимо описывать в разделе переменных. Описание файлового типа соответствует диаграмме:

 

<Имя типа> = File of  <тип компоненты>

 

Файл, компоненты которого являются символами, называется текстовым и имеет стандартный тип Text:

Примеры:

Type

ExtClass = File of Person;

CardList = File of Integer;

    

Var

F : Text;

Data : File of real;

List1, List2 : CardList;

Class10A, Class10B : ExtClass;

Для работы с нестандартными файлами имя файла должно быть отождествлено с реально существующим объектом - внешним устройством. Для отождествления внутреннего имени файла со внешним именем используется процедура Assign.

Assign(< внутреннее имя >, < 'внешнее имя'>).

После того, как имя файла описано и определено, можно приступить к работе с файлом. При использoвании нестандартных файлов следует помнить, что перед работой необходимо открыть их, т.е. сделать доступными из программы. Для этого нужно применить одну из двух следующих процедур:

  •  Процедура Rewrite(<имя файла>) - открывает файл для записи. Если файл ранее существовал, все данные, хранившиеся в нем, уничтожаются. Файл готов для записи первой компоненты.
  •  Процедура Reset(<имя файла>) - открывает файл для чтения. Файл готов для чтения из него первой компоненты.
  •  По окончании работы с файлом (на запись) он должен быть закрыт. Для этого используется процедура Close(<имя файла>). Эта процедура выполняет все необходимые машинные манипуляции, обеспечивающие хранение данных в файле.

Для обмена данными с файлами используют процедуры Read и Writе.

  •  Процедура Read(<имя файла>, <список ввода>) читает данные из файла (по умолчанию имя файла - Input). Список ввода - это список переменных.
  •  Процедура Write(<имя файла>, <список вывода>) записывает данные в файл (по умолчанию имя файла - 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, ключи которых удовлетворяют условию: значение ключа - целое число из интервала ]Min, Max[.

Program FileForm;

    Type Component = Record

              Key: Integer; { поле ключа }

              Data: String[20] { поле данных}

            End;

OurFile = File of Component;

     

Var F, G : OurFile;

Max, Min : Integer;

X: Component;

Begin

    Read(Max, Min);

    Assign(F, 'D:InpFile.dat');   {определено значение F }

    Assign(G, 'D:OutFile.dat');   {определено значение G }

    Reset(F);     {файл F открыт для чтения}

    Rewrite(G);     {файл G открыт для записи}

    While not(Eof(F)) do begin   {цикл чтения F - записи G}

      Read(F, X);  

      If (X.Key < Max) and (X.Key > Min)  then Write(G, X)

     end;

    Close(G)     {файл G закрыт}

   End;

Основные задачи обработки файлов.

Задача 1. Добавление элемента к файлу. Дан файл F и элемент X типа Component. Расширить F, включив в него компоненту X с сохранением упорядоченности.

Вот, наверное, единственно возможное решение:

  1.  Переписывать покомпонентно F в новый файл G до тех пор, пока F^.Key < X.Key ;
  2.  Записать X в G;
  3.  Переписать "хвост" файла F в G;
  4.  Переименовать G в F.

Задача 2. Удаление элемента из файла. Дан файл F и число K - значение ключа удаляемых элементов. Сократить F, удалив из него все компоненты с ключом K.

Решение аналогично решению задачи 1:

Переписывать покомпонентно F в новый файл G до тех пор, пока F^.Key < X.Key ;

Пока F^.Key = K читать F;

Переписать "хвост" файла F в G;

Переименовать G в F.

Задача 3. Слияние файлов. Даны файлы F и G. Требуется сформировать файл H, содержащий все компоненты как F, так и G.

Алгоритм состоит в последовательном и поочередном просмотре файлов F и G и записи очередной компоненты в H. Очередность определяется сравнением значений ключей компонент 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.

Задача корректировки файла.

Задача корректировки файла является одной из основных задач обработки файлов. Рассмотрим ее формулировку:

Исходные данные задачи - корректируемый файл F, файл корректировок G. Результат - откорректированный файл H.  Будем считать, что файл F имеет тип OurFile. Тогда файл H имеет тот же тип. Файл корректировок G состоит из записей с вариантами:

Type

      CorСomponent = record

    Key: Integer;

job: (Include, Change, Exclude); {включить, изменить, исключить}

Case job of

 Include, Change: Data: String[20];  Exclude: ()

end

End;

       CorFile = File of CorComponent;

Var G : CorFile;

Это означает, что файл корректировок содержит компоненты, которые нужно включить в основной файл, компоненты, которые нужно исключить из файла и компоненты, содержание которых нужно изменить (с учетом содержания как основного файла, так и файла корректировок).

Файл F предполагается упорядоченным (по ключу), а файл G, вообще говоря, нет. Результатом должен быть упорядоченный откорректированный файл H.

Решение задачи обычно содержит два этапа:

а) Сортировка файла корректировок G по ключу;

б) Обобщенное слияние файлов F, G в H.

На практике файл G может быть небольшим. В этом случае применяют внутреннюю сортировку. Обобщенный алгоритм слияния производит все три варианта обработки файла F за один прогон.

Ход занятия.

Задание 1. Реализовать программу примера 1 для текстовых файлов F и G.

Задание 2. Реализовать процедуру преобразования текстового файла в структурированный файл примера 1.  

Задание 3. Составить процедуру вставки в текстовый файл записи с информацией о новом абоненте телефонного справочника.

Задание 4. Составить процедуру удаления из текстового файла записи с данной фамилией абонента.

Содержание и требования к оформлению протокола. Протокол занятия должен содержать условия и программу решения заданий 1-4.

Вопросы для самоконтроля.

  1.   Сформулируйте понятие последовательного файла
  2.  Сформулируйте понятие текстового файла.
  3.  Опишите операторы открытия файла для чтения и записи.
  4.  Опишите операторы чтения и записи для файлов.
  5.  Опишите функцию – признак конца файла.
  6.  Опишите функцию – признак конца строки текстового файла.
  7.  Опишите оператор, связывающий программное и внешнее имя файла.
  8.  Перечислите основные задачи обработки файлов.  
  9.  Сформулируйте задачу корректировки файла.

Задачи для самостоятельного решения.

1.Разработайте программу Добавление элемента к файлу.

2.Разработайте программу Удаление элемента из файла.

3.Разработайте программу Пересечение файлов.

4.Разработайте программу Вычитание файлов.

5.Разработайте программу Корректировка файлов.

6.Разработайте программу корректировки упорядоченных файлов, в которой производится изменение значений ключевых полей.  Файл корректировок содержит пары

< старый ключ, новый ключ >.

7.Реализуйте улучшение a) алгоритма сортировки слиянием.

8.Реализуйте улучшение в) алгоритма сортировки - сортировку естественным слиянием.

Задания для зачетной работы.

  1.  Опишите тип записи - клетки расписания занятий на факультете для своей специальности и курса. Сформируйте файл двухнедельного расписания для своей подгруппы. Разработайте программу, которая определяет количество лекционных, практических и лабораторных занятий в двухнедельном цикле для своей подгруппы по указанию дисциплины. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - сведения о студенте группы, необходимые декану факультета. Сформируйте файл студентов своей подгруппы. Разработайте программу, которая определяет состояние успеваемости в подгруппе. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - строчку зачетной книжки (экзаменационная часть). Сформируйте файл экзаменов, сданных Вами. Разработайте программу, которая определяет средний балл, составляет список экзаменаторов и по номеру семестра распечатывает результаты Вашей сессии. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - строчку зачетной книжки (зачетная часть). Сформируйте файл зачетов, сданных Вами. Разработайте программу, которая определяет дни, когда Вы сдавали по два и более зачетов. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - сведения о книге (например, по информатике). Сформируйте файл книг, необходимых преподавателю информатики. Составьте программу, которая подбирает книги для курса, номер которого вводится, печатает имена их авторов и год издания. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - сведения о товаре в магазине. Сформируйте файл товаров, имеющихся в магазине. Разработайте программу корректировки файла товаров и определения выручку магазина к данному моменту времени. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - строчку в телефонной книге. Сформируйте файл записей - вашу телефонную записную книжку. Разработайте программу поиска номера телефона по фамилии и поиска адреса по номеру телефона. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - сведения о клиентах Вашей фирмы. Сформируйте файл клиентов фирмы. Разработайте программу корректировки файла клиентов и определения всех клиентов, получивших услуги фирмы к данному моменту времени. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - сведения Ваших доходах и расходах. Сформируйте файл доходов - расходов. Разработайте программу корректировки этого файла. Разработайте программу получения сведений о расходах. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - сведения о служащих Вашей фирмы. Сформируйте файл служащих фирмы. Разработайте программу корректировки файла служащих и определения служащих, которые родились в данный интервал времени. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи  - сведения о пациентах поликлиники. Сформируйте файл пациентов поликлиники. Разработайте программу корректировки этого файла. Разработайте программу получения сведений о пациентах с данным заболеванием. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи  - сведения Ваших доходах и расходах. Сформируйте файл доходов - расходов. Разработайте программу корректировки этого файла. Разработайте программу получения сведений о доходах. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи – студенческий билет. Сформируйте файл студентов, родившихся в данном месяце. Разработайте программу, которая определяет месяц, в котором родилось наибольшее количество студентов. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.

  1.  Опишите тип записи - сведения о студенте группы, необходимые преподавателю дисциплины. Сформируйте файл студентов своей подгруппы. Разработайте программу, которая определяет состояние успеваемости в подгруппе по данной дисциплине. Расширьте возможности Вашей программы другими процедурами обработки файлов по Вашему выбору.


 

А также другие работы, которые могут Вас заинтересовать

15057. Қазақ әдебиетінің ежелгі дәуірі, көне Түркі ескерткіштері 83 KB
  Қазақ әдебиетінің ежелгі дәуірі: көне Түркі ескерткіштері Ежелгі дәуір әдебиет VIIXIV ғғ. деп аталатын жеті ғасырды қамтыған әдебиетіміздің ұзақ тарихына қатысты ескерткіштер шығармалар аз емес. Олардың алғашқылары деп түркі рутайпаларына ортақ Орхон ескерткішт...
15058. Қазақ әдебитеті пәні бойынша ҰБТ-ге дайындаудың тиімді жолдары 116.5 KB
  ҚАЗАҚ ТІЛІ МЕН ӘДЕБИЕТ ПӘНІ БОЙЫНША ОҚУШЫЛАРДЫ БІРІҢҒАЙ ҰЛТТЫҚ ТЕСТІЛЕУГЕ ДАЙЫНДАУДЫҢ ТИІМДІ ЖОЛДАРЫ Манабаева Гүлбайрам Рахымқызы қазақ тілі мен әдебиеті пәнінің мұғалімі №35 жалпы орта білім беру мектебі Қазақ әдебиетінде өзіндік айтулы із қалдырған белгі
15059. Қазақ мақал-мәтелдерінің гендерлік сипаты 44 KB
  УДК 4Ф Б 76 ҚАЗАҚ МАҚАЛМӘТЕЛДЕРІНІҢ ГЕНДЕРЛІК СИПАТЫ М.Б. Боранбай Қ. Жұбанов атындағы Ақтөбе мемлекеттік университеті Ақтөбе қ. Қазақ халқы рухани дүниеге қазынаға бай халық. Оның қай түрін алсақ та тәлімтәрбиесі мол ұрпақтанұрпаққа қалдырған өcие
15060. Қазақ поэзиясындағы домбыра бейнесі 77.5 KB
  ТІРКЕУ ФОРМАСЫ 1. Тегі аты жөні: Абсаттарова Айдана Рамазанқызы 2. Мекеме лауазымы: Ы.Алтынсарин атындағы дарынды балаларға арналған мамандандырылған обл...
15061. Қазақ поэзиясындағы жыраулық дәстүр 432.5 KB
  Қазақ поэзиясындағы жыраулық дәстүр Ордада ханның қасында әр уақытта ақылшы жыраулар болған. Жыраулар халық поэзиясын жасаған ақылғөй даналар. Олар заманының өздері куә болған елеулі уақиғаларын тарихи кезеңдерді жырға қосқан... Жыраулар поэзиясына дейінгі әдеби...
15062. Қазақ фольклорындағы тарихи өлеңдер 186 KB
  ӘОЖ 398. 574 821.512.122 Қолжазба құқығында Ахметжанова Жанар Балтабекқызы Қазақ фольклорындағы тарихи өлеңдер 10.01.09 – Фольклортану Филология ғылымдарының кандидаты ғылыми дәрежесін алу үшін дайындалған дис
15063. Қазақ фольклорының тарихы және оның зерттелуі 57.5 KB
  Қазақ фольклорының тарихы және оның зерттелуі Қазақ фольклорының тарихы деген ұғым мен зерттеу дәл өз мағынасында осы уақытқа дейін арнайы түрде күн мәселесіне қойылған емес. Оның бірнеше себебі болды. Біріншіден ғылымда фольклорды жеке көркем жүйесі бар көп өзін...
15064. Қазақтың батырлар жыры туралы 46.5 KB
  Ерлер мен пірлер: Төрт батырға тағы бір үңілгенде Күні кешеге дейін кезкелген дерлік қазақ азаматы баласының батыр болғанын қалап тілеп келді. Тіпті Кеңестің тұсында да балам өскенде бай болсыншы деген атаана некенсаяқ болған шығар. Әрине ешкім ұлқызының мұқ...
15065. Қайта өрлеу дәуіріндегі итальян әдебиеті 42.5 KB
  Қайта өрлеу дәуіріндегі итальян әдебиеті Данте Данте Алигьери май 1265. Флоренция – 14.9.1321. Ровенна – итальян ақыны. Дворян әулетінен шыққан. Жасынан теологиямен философиямен астрономиямен орта ғ