ЛАБОРАТОРНАЯ РАБОТА №20 Тема: Разработка алгоритмов и программ создания, корректировки и просмотра типизированных файлов

Цель:Развить умения разрабатывать программы создания, корректировки и просмотра типизированных файлов

Программное обеспечение: TURBO PASCAL 7.1

Оснащение:персональный компьютер, практикум

Время проведения: 4 уч. часа

Литература:

1. Немнюгин С.А. Turbo Pascal. Практикум. 2-е изд. СПб.: Питер, 2007. С. 94-100.

2. Павловская Т.А. Паскаль. Программирование на языке высокого уровня. Учебник для вузов. СПб.: Питер, 2008. С. 78-89.

ВОПРОСЫ ВХОДНОГО КОНТРОЛЯ:

1. Опишите алгоритмы с возвращением.

2. Дайте понятие файла.

3. Перечислите информацию, которую могут в себе хранить файлы.

4. Перечислите разновидности файлов.

5. Привидите прим объявления файловой переменной.

КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Разновидности файлов

В языке Pascal имеется возможность работы с тремя видами файлов:

· текстовыми;

· типизированными;

· нетипизированными.

Последние два типа объединяются под названием бинарные: информация в них записывается по байтам и потому не доступна для просмотра или редактирования в удобных для человека текстовых редакторах, зато такие файлы более компактны, чем текстовые.

В отличие от бинарных, текстовые файлы возможно создавать, просматривать и редактировать "вручную" ― в любом доступном текстовом редакторе. Кроме того, при считывании данных из текстового файла нет необходимости заботиться об их преобразовании: в языке Pascal имеются средства автоматического перевода содержимого текстовых файлов в нужный тип и формат, и это позволяет сэкономить немало времени и сил.

Бинарные файлы

Бинарные файлы хранят информацию в том виде, в каком она представлена в памяти компьютера, и потому неудобны для человека. Заглянув в такой файл, невозможно понять, что в нем записано; его нельзя создавать или исправлять вручную ― в каком-нибудь текстовом редакторе ― и т.п. Однако все эти неудобства компенсируются скоростью работы с данными.

Кроме того, текстовые файлы относятся к структурам последовательного доступа, а бинарные ― прямого. Это означает, что в любой момент времени можно обратиться к любому, а не только к текущему элементу бинарного файла.

Типизированные файлы

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

type toy = record name: string[20];

price: real;

age: set of 0..18; {в файле задано границами}

end;

то придется написать следующий код:

var f: text; c: char; i,j,min,max: integer;

a: array[1..100] of toy;

begin

assign(f,input);

reset(f);

for i:=1 to 100 do

if not eof(f)

then with a[i] do

begin readln(f,name,price,min,max);

age:=[];

for j:= min to max do age:=age+[j];

end;

close(f); ...end.

Как видим, такое поэлементное считывание весьма неудобно и трудоемко.

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

<начало_структуры> + <номер_компонента>*<длина_компонента>

МЕТОДИЧЕСКИЕ УКАЗАНИЯ

Описание файлов

В разделе var переменные, используемые для работы с файлами (файловые переменные), описываются следующим образом:

var f1,f2: text; {текстовые файлы}

g: file of <тип_элементов_файла>; {типизированные файлы}

in, out: file; {нетипизированные файлы}

Наши рекомендации