4778

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

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

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

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

Русский

2012-11-26

64 KB

56 чел.

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

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

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

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

Литература:

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


 

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

70652. ПЕНСИОННОЕ ОБЕСПЕЧЕНИЕ РАБОТАЮЩИХ ПО ТРУДОВОМУ ДОГОВОРУ И ВОЕННОСЛУЖАЩИХ 299.39 KB
  Общая характеристика пенсионной системы Российской федерации Понятие и виды пенсионных систем Пенсионная система совокупность правовых финансово-экономических и организационных институтов и норм имеющих своей целью предоставление гражданам материального обеспечения в виде пенсии...
70653. Роль игровых приемов в создании выразительных образов в рисунках младших дошкольников 452 KB
  Истоки творческих способностей и дарования детей на кончиках их пальцев. Педагог должен создавать для этого все условия: он прежде всего должен обеспечить эмоциональное образное восприятие действительности формировать эстетические чувства и представления развивать...
70654. ПУТИ ПОВЫШЕНИЯ ПЛАТЕЖЕСПОСОБНОСТИ ООО «ВОСТОК СНАБ» 391.5 KB
  Целью дипломной работы является исследование финансово-экономической деятельности предприятия, его ликвидности и платежеспособности при помощи информации, отраженной в бухгалтерской отчетности.
70655. ОСНОВНЫЕ УРАВНЕНИЕ ДВИЖУЩЕГОСЯ ПОТОКА ЖИДКОСТИ И ГАЗА 765.02 KB
  Используя основное уравнение молекулярно-кинетической теории газов можно установить взаимосвязь между параметрами состояния идеального газа в любом термодинамическом состоянии. Изменение хотя бы одного из параметров приводит к изменению остальных пара-метров.
70656. ТЕХНОЛОГИЯ НАБОРА ПЕРСОНАЛА 652.55 KB
  Цель занятия сформировать у студентов понимание содержания технологии набора персонала и места данной технологии в процессе управления персоналом Задачи: определить сущность и цель процедуры набора как способа формирования работоспособного коллектива проанализировать ограничения...
70657. ПОНЯТИЕ О ПОТОКЕ ЖИДКОСТИ И ГАЗОВ, ВИДЫ ДВИЖЕНИЯ И ЕГО СВОЙСТВА 1.44 MB
  Аэрогидрогазодинамика как наука изучает явления, которые связаны с движением жидкости и газа. Изучение законов движения жидкости и газа, и взаимодействие их с твердыми телами возможно на основе теоретических познаний.
70660. Аппендицит 118.5 KB
  Летальность при остром аппендиците на протяжении последних 20 лет практически не изменилась, оставаясь в пределах 0.05-0.1%. Диагностические ошибки при этом заболевании встречаются в 12-30% случаев.