4778

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

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

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

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

Русский

2012-11-26

64 KB

51 чел.

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

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

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

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

Литература:

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


 

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

54316. Методичні рекомендації класному керівникові, щодо організації профільного навчання і допрофільної підготовки в 9-х класах 73 KB
  Доцільно проводити шкільні міжшкільні олімпіади дні відкритих дверей видавати інформаційні матеріали які знайомлять учнів із специфікою вимог і особливостями профільного навчання в різних освітніх закладах району. По суті інформаційна робота повинна стати змістовною подорожжю для учнів по освітній території для чого необхідно спланувати відповідний маршрут форми дати конкретні домовленості про час і форми заходів з керівниками освітніх установ. Частина часу ймовірно кілька годин в цілому слід буде передбачити на...
54317. Функціональні методи розвязування рівнянь 193.5 KB
  Мета: - повторити функціональні методи розв’язування рівнянь; - розвивати вміння і навички розв’язування рівнянь різними методами; - розвивати вміння систематизувати і узагальнювати, робити умовиводи; - виховувати прагнення до реалізації своїх навчальних можливостей.
54318. Застосування активних методів і форм на заняттях іноземної мови 288 KB
  Робота над проектом здійснюється у кілька етапів і зазвичай виходить за рамки навчальної діяльності на заняттях: вибір теми чи проблеми проекту, формування групи виконавців, розробка плану роботи над проектом, визначення термінів, розподіл завдань серед студентів, обговорення в групі результатів виконання кожного завдання, оформлення спільного результату, звіт по проекту, оцінка виконання проекту.
54319. Чи можливо виховати генія? 75.5 KB
  От чому в процесі навчання необхідно систематично збуджувати розвивати і укріплювати пізнавальний інтерес учнів і як важливий мотив навчання і як стійку рису особистості і як могутній засіб виховуючого навчання підвищення його якості. Основна мета роботи вчителя по активізації пізнавальної діяльності учнів розвиток їх творчих здібностей. Досягнення цієї мети дозволяє вирішити багато завдань навчання: забезпечити міцні і усвідомлені знання навчального матеріалу; підготувати учнів до активної участі у виробничій...
54320. Пути развития европейской культуры в эпоху Нового времени 20.7 KB
  Название «Новое время» в истории культуры Европы обычно употребляется по отношению к трем векам – XVII, XVIII и XIX. Эти века наполнены событиями политическими, экономическими, философскими, художественными. XVII век не имеет общепризнанного названия как Возрождение или век Просвещения.
54321. Створення та редагування таблиць із застосуванням режиму конструктора, використання звязків між таблицями, створення форм із застосуванням майстра форм, створення звітів із застосуванням майстра звітів 2.97 MB
  ЗАДАЧА: створити БД для підприємства (фірми), яке займається реалізацією продовольчих товарів. 1.1 Створити БД в папці Мої документи та надати ім’я «Прізвище_група_учня_фірма» 1 Створити таблиці, які будуть містити основну інформацію про діяльність фірми.
54322. Метод проектов 26.5 KB
  В последние годы в связи с реформами в образовании и изменениями в школьном математическом образовании в частности остро стоит вопрос об организации учебного процесса направленного на развитие творческих способностей личности и навыков исследовательской деятельности. В результате этого возник метод проектов как способ актуализации и стимулирования познавательной деятельности учащихся. Однако за последние несколько лет многое изменилось – общество поднялось на новую ступень экономического развития потребовались кардинальные перемены во...
54323. МЕТОД ПРОЕКТІВ ЯК ТЕХНОЛОГІЯ НАВЧАННЯ 257.5 KB
  Метод проектів це метод в основі якого лежить розвиток пізнавальних творчих навичок студентів умінь самостійно конструювати свої знання орієнтуватися в інформаційному просторі критично мислити. Мета застосування методу полягає у формуванні навичок ефективного використання різних джерел інформації при навчанні студентів за допомогою інноваційних педагогічних технологій якими передбачається самостійна індивідуальна чи групова дослідницькопошукова та творча діяльність студентів підвищення рівня комунікабельності. Завдання методу...
54324. З’єднання болтом і шпилькою 496 KB
  Оформлення завдання Завдання виконується на креслярському папері в олівці у відповідність з правилами ЕСКД. Креслення повинне мати основний напис. Діаметри крізних отворів