Автор: Пользователь скрыл имя, 07 Марта 2013 в 02:12, курс лекций
Лекция 1. Представление алгоритмов на языке Программирования ПаскальАВС.
Лекция 2. Построение линейных алгоритмов
Лекция 3. Алгоритмы, содержащие структуру ветвления.
Лекция 4. Алгоритмы, содержащие структурные операторы циклов.
...
Лекция 9. Файловый тип данных
Лекция 9.
Файловый тип данных
В лекции рассматриваются следующие вопросы:
1.Понятие физического и
2.Виды файлов данных
3.Понятие файла данных.
4.Типизированные файлы
5.Создание типизированного файла данных.
6.Дополнение типизированного ф
7.Использование данных из типизированного файла.
8.Понятие текстового файла данных.
9.Объявление типа текстового файла.
10.Создание текстового файла данных.
11.Дополнение текстового файла новыми данными.
12.Использование данных из текстового файла.
1.Понятие физического и логического файла.
До сих пор мы имели дело с физическими файлами. Физический файл – это информация, сохраненная на твердом носителе под уникальным именем.
Но в языке Паскаль имеется специальная структура данных, называемая файлами данных. В отличие от физического файла такие структуры данных называются логическими файлами. Таким образом, логический файл – это структура данных в языке программирования Pascal.
Компьютер используется для обработки информации, и практика программирования привела к очень простой идее: не данные должны привязываться к программе, а наоборот – одни и те же данные могут быть использованы в разных программах. Поэтому эти данные должны сохраняться в готовом виде где-то так, чтобы к ним можно было обратиться в любой момент. Для этого в языках программирования и было введено понятие логического файла. Другими словами логические файлы – это файлы данных.
2.Виды файлов данных
Файлы в Pascal классифицируются по двум признакам:
1.По типу (логической структуре);
2.По методу доступа к элементам файла.
Классификацию файлов можно представить следующим образом:
3.Понятие файла данных.
Итак, логический файл – это файл данных. Как располагаются данные в логическом файле? Условно логический файл можно представить как бесконечную ленту, разделенную на отдельные ячейки, в каждой ячейке можно хранить только один компонент. Имеется специальный указатель, с помощью которого идет доступ к этим ячейкам.
В файлах последовательного доступа указатель всегда устанавливается в начало файла. Поэтому поиск можно начинать только с начала файла и проверять по очереди каждый компонент данного файла, пока не будут найдены нужные компоненты.
В файлах прямого доступа указатель можно устанавливать в нужное место и продолжать поиск выборочным методом.
Вообще, логическая структура файла очень похожа в принципе на структуру массива. Различия между массивами и файлом данных заключается в следующем:
1.У массива количество элементов фиксируется в момент объявления массива, т.е. в момент распределения памяти. Нумерация элементов массива выполняется соответственно нижней и верхней границам, указанным при его объявлении. У файла количество элементов в процессе работы программы может изменяться. Нумерация элементов файла выполняется слева направо, начиная от нуля (кроме текстовых файлов). Количество элементов файла в каждый момент времени не известно. Зато известно, что в конце файла располагается специальный символ конца файла EOF, в качестве которого используется управляющий символ с кодом 26 (это клавиши Ctrl+Z).
2.Элементы массива целиком располагаются в оперативной памяти компьютера. Элементы файла располагаются на внешних носителях информации.
3.Работу с файлами проводят с помощью стандартных процедур и функций, предназначенных только для работы с файлами.
4.Типизированные файлы
Все элементы типизированного файла должны быть одного типа, следовательно, и одного размера. Элементами таких файлов могут быть числа, массивы, записи, …, но только не файлы. В типизированных файлах вследствие одинакового размера элементов возможен произвольный к ним доступ, т.е. доступ как последовательный, начиная с первого и далее, так и прямой, т.е. по номеру элемента. Нумеруются элементы типизированного файла целыми числами, начиная с нуля.
В общем виде файловый тип можно описать следующим образом:
Type имя файлового типа = File of тип элементов файла;
Var имя файловой переменной : имя файлового типа;
Описание очень похожее на описание массивов, только не указывается количество элементов.
Программирование на уровне файлов сводится в основном к следующим операциям: открытие файла; выполнение некоторых действий над элементами файла; закрытие файла.
5.Создание типизированного файла данных.
Чтобы создать файл данных необходимо выполнить следующие действия:
1. Описать файловый тип с
Type имя файлового типа = File of тип элементов файла;
Var имя файловой переменной : имя файлового типа;
2. Установить связь между файловой переменной в программе и файлом данных на диске. Это делает процедура
Assign (имя файловой переменной, ‘ имя диска: путь к имени файла данных на диске ‘); |
3. Открыть файл для записи с помощью процедуры
Rewrite(имя файловой переменной); |
Эта процедура стирает то, что было записано ранее в данный файл и устанавливает указатель в начало файла, перед его первым элементом. Если набора данных не было, то будет создан новый набор данных.
4. Записать необходимую информацию в файл с помощью оператора
Write(имя файловой переменной, список записываемых переменных); |
5. Закрыть файл с помощью процедуры
Close(имя файловой переменной); |
Если файл не закрыть, то данные файла будут потеряны.
Пример. Создать файл под названием masc.dat, в котором будет находиться массив целых чисел. Пусть файл masc.dat будет находиться на диске с в папке Other.
Program a1;
Type celchisla=File of Integer;
Var f:celchisla;
{Имя файлового типа celchisla, имя файловой переменной f. Пункт 1}
I,n,m:Integer; {простые переменные}
Begin
Assign(f,’c:\Other\masc.dat’); { Пункт 2}
Rewrite(f); { Пункт 3}
Write(‘ Введите количество элементов файла‘);
Read(n);
Write(f,n); { Пункт 4. Запишем в файл f количество элементов массива n. Этот элемент в файле будет записан на 0 место.}
For i:=1 to n do
Begin
{Вводим поочередно числа
Write(‘Введите ‘,i,’ –ое число ‘);
Read(m);
{Записываем каждое число в файл f}
Write(f,m); {Пункт 4}
End;
Close(f); { Пункт 5}
End.
Запишем эту программу в каталог Other под именем Stud1.pas. После выполнения этой программы в каталоге Other будет 2 файла: один, который хранит текст программы с именем Stud1.pas, и второй, который будет хранить массив введенных чисел с именем masc.dat.
6.Дополнение типизированного файла новыми данными.
Для этого необходимо выполнить следующие действия:
1. Ообъявить файловый тип.
Type имя файлового типа = File of тип элементов файла;
Var имя файловой переменной : имя файлового типа;
2. Установить связь между файловой переменной и файлом данных.
Assign (имя файловой переменной, ‘ имя диска: путь к имени файла данных на диске ‘); |
3. Открыть уже созданный файл для записи процедурой
Reset(имя файловой переменной); |
Эта процедура устанавливает указатель на первый элемент ранее созданного файла данных и ничего не стирает.
4. Установить указатель файла за нужным элементом файла процедурой
Seek(имя файловой переменной, номер элемента); |
а) Seek(имя файловой переменной, FileSize(имя файловой переменной)); – установка указателя непосредственно за последним элементом файла.
б) Seek(имя файловой переменной, FilePose(имя файловой переменной)+1); – пропуск одного текущего элемента файла.
с) Seek (имя файловой переменной, 0); – установка указателя на начало файла.
5. Записать новые данные в файл процедурой:
Write(имя файловой переменной, список записываемых переменных); |
6. Закрыть файл процедурой:
Close(имя файловой переменной); |
7.Использование данных из типизированного файла.
Чтобы прочитать информацию из файла данных, необходимо выполнить следующие пункты:
1.Объявить файловый тип и файловую переменную.
Type имя файлового типа = File of тип элементов файла;
Var имя файловой переменной : имя файлового типа;
2. Установить связь между файловой переменной и файлом данных.
Assign (имя файловой переменной, ‘ имя диска: путь к имени файла данных на диске ‘); |
3. Открыть файл для чтения.
Reset(имя файловой переменной); |
4. Прочитать файл с помощью процедуры
Read(имя файловой переменной, имя читаемой переменной); |
По этой процедуре читается очередной элемент файла и его значение присваивается имени читаемой переменной. После этого указатель перемещается на следующую позицию файла. Если в процессе исполнения указатель будет установлен на позицию, в которой уже нет элементов файла, то возникает операция «конец файла» и чтение файла завершается.
5. Закрыть файл.
Close(имя файловой переменной); |
Пример. Ранее был создан файл данных в каталоге Other с именем masc.dat. Найдем сумму элементов этого файла.
Program a2;
Type celchisla=file of Integer;
Var F:celchisla;
I,n,m,s:Integer;
Begin
Assign(f, ‘c:\Other\masc.dat’);
Reset(f); { Открываем файл для чтения}
Read(f,n); { Читаем первый элемент файла - это количество чисел в массиве и записываем это количество в переменную n}
S:=0;
For i:=1 to n do
Begin
Read(f,m); { Читаем очередной элемент файла и записываем его значение в переменную m}
S:=s+m;
End;
Close(f);
Writeln(‘ Сумма элементов файла =’,s);
End.
Файл, из которого берутся данные, называется входным файлом, а в который записываются данные, называется выходным файлом.
Необходимо отметить, что одновременно записать информацию в файл данных и прочитать ее, нельзя. Сначала необходимо полностью создать файл данных и только после этого этими данными можно пользоваться.
Задача. Построить типизированный файл данных, в котором представлены сведения об оценках, полученных студентами группы на сессии. Это такой файл, который состоит из записей со следующими полями: фамилия студента, математика, информатика, философия. Вывести все фамилии студентов, которые имеют задолженности и их оценки.
Program a10;
Type
{сначала объявим тип запись}
sesia=Record
fio:String[15];
matem, infor, filos:Integer;
end;
{теперь объявим тип файл, который состоит из записей}
mas=File of sesia;
Var
{затем объявим файловую переменную}
Информация о работе Лекции по "Языкам и методам программирования" (PascalABC)