Файловый тип данных (структурированный).
Файлом – называется любой набор данных, хранимый на магнитном носителе или представленный последовательностью однотипных элементов.
Свойства файлов в Pascal.
1). Все элементы в файлах имеют общее имя и каждый элемент свой порядковый номер(начиная с0).
2). Любой элемент файла становится доступный только после последовательного перебора предыдущих элементов (так называемых файлы последующего доступа).
3). Количество элементов Файла заранее не фиксируются, и может изменяться в ходе выполнения программы. Размер ограничен только количеством свободного места на магнитном носителе.
4).Записав содержимое файла один раз его можно использовать не однократно, а также в разных программах.
Операции с файлами.
1). Чтение – вывод данных из файла в оперативную память.
2). Запись – вывод результатов из ОП в Файл.
!!! В данный момент времени файл может находиться только в одном состоянии (записи или чтение).
!!! Читать не существующий файл нельзя, записывать – можно. При это будет создан новый файл.
Чтение (контроль существующего файла)!!! Запись (контроль места на диске)!!!
Этапы работы с файлами
1). Определение файловой переменной (fp) – логический идентификатор файла (зависит от типа файла).
2). Установка связи с файловой переменной с файлом на диске.
3). Открытие файла (зависит от выполнения операций с файлами).
4). Обработка файла.
5). Закрытие файла.

Файловые типы
Типизированный файл | Текстовый файл | Не типизированный файл | ||
(состоит из элементов одного типа) | (из текстовых строк разной длины) | (из не структурированных потоков байт) | ||
|
1. Var ФП:file of mun; | Var A:file of integer; |
2. Var ФП:text; | Var B:text; |
3. Var ФП:file; | Var C:text |
Информация кодируется, просмотреть через текстовый файл нельзя. | Можно посмотреть через DOS-овский редактор. | То же, как и типизированный просмотреть нельзя. |
Примечание: Этапы третий и четвертый выполняются ч файловой переменной (ФП) связаны с файлами (имя или путь) на этапе 2.
Особенности считывания и записи из файла.
1.) Данные считываются и записываются по элементно в ячейку определяемую указателем (внутри код элемента файла).
1 | 4 | 5 | 2 | Номер элемента |
Указатель
Значение элементов файла.
2.) При выполнении команд Reset и Rewrite текущий указатель поправлен на 1-ый элемент.
0 | 1 | 2 | 3 | |
1 | 4 | 5 | 2 | Reset |
| ||||
Rewrite | ||||
3.) после выполнения операций Write(x, y) значение в текущую указателя на файл, связанный с файловой переменной помещается из переменной x.
z | 1 | 2 | 4 | 1 | Write(z;x) Do |
|
| ||||
1 | 2 | 6 | 1 | После | |
После выполнения операции Write (z;x) текущий указатель автоматически переходит на следующий элемент.
4).
z | 1 | 2 | 4 | 1 | Do Read (z, x) |

После ! ТОЖЕ САМОЕ.
5). Пример:
Write (x, y)
Write (z, x) write (z, x,x1)
Команды работы с файлами.
Команда | Назначение | Вид файла | Примечание |
Assign (ФП, путь) | Устанавливает связь между файловой переменной и файлом на диске | Все | Обязательная (этап №2) |
| Открытие файла связь с файловой переменной для чтения | Все Все 3-й этап Текстовый | Данные из файла доступны только для использования |
ReWrite(ФП) | Открытие файла связь с файловой переменной для записи | Данные из файла доступны для изменения | |
Append (ФП) | Открытие файла для добавления | Конец файла, данные доступны только для добавления | |
Close (ФП) | Закрывает доступ к файлу на диске (этап 5) | Все | Файл с диска не удаляется |
Erase (ФП) | Удаление файла с диска | Все | Файл должен быть закрыт |
ReName (ФП, имя) | Переименование файла | Все | Файл должен быть закрыт |
IOResult (ФП) | Возвращает код ошибки ввода(если 0 то ошибки нет) | Все | Использование для проверки существования файла на диске |
EoF (ФП) End of File | Возвращает логическое значение о достижении (true) или не достижении (false) конца файла | Все | Использование для обработки всех элементов (поочередно) |
EoLn (ФП) | Возвращает логическое значение о достижении (true) или не достижении (false) конца строки | Текстовый | |
Read (ФП,переменная) | Считывает с диска текущий элемент файла в ОП (переменная) | Текстовый Типизированный | Типы данных должны совпадать между файловой переменной и переменной ОП |
ReadLn (ФП,переменная) | Смотри выше | Текстовый | Смотри выше |
Write (ФП, переменная) | Запись и ОП (переменная) в текущий позицию файла | Текстовый Типизированный | |
WriteLn | Текстовый | ||
File Size (ФП) | Возвращает количество элементов в файле | Типизированный | Быстрый переход к концу файла!!! |
Seek (ФП, индекс) | Устанавливает указатель на заданный индекс (номер элемента) | Типизированный | Seek(ФП, file size (ФП)+1) |
File Pos (ФП) | Возвращает номер текущего элемента (индекс) | Типизированный |
6). После выполнения команды Append указатель устанавливается на новый последующий элемент.
0 | 1 | 2 | 3 | ||
До | 1 | 2 | 4 | 1 | |
0 | 1 | 2 | 3 | 4 | |
После | 1 | 2 | 4 | 1 |
![]()
7). Добавление нового элемента в типизированный файл:
1. Reset (z)
2. Seek (z, file size (z)+1)
3. Записать данные Write (z, x)
Задача. Вывести на экран Слова, хранившиеся на диске в текстовом файле по адресу: S:\file. txt Посчитать количество слов в файле Примечание: через FarManager создайте файл S:\file. txt и запишите в него предложение Программа Pascal умеет работать с файлами | ||||||||||||||||||||||||
Словесное описание | Блок-схема | Pascal | ||||||||||||||||||||||
| Program read_file_txt; Var f: text; kol:integer; t: string; Begin Assign(f, ‘S:\file. txt’); Reset(f); Writeln(‘Слова из файла:’); While not(eof(f)) do Begin Read(f, t); WriteLn(t); kol:=kol+1; End; WriteLn(‘в файле ’, kol,’слов’); Close(f); End. | |||||||||||||||||||||||
![]() 1. Связь файловой переменной f с файлом S:\file. txt 2. Открытие файла для чтения. 3. До тех пор пока не кончился файл (текущий элемент не последний) · считать из файла текущее значение в t. · выводится на экран t · увеличить kol на 1 4. Вывести kol на экран 5. Закрытие f | ||||||||||||||||||||||||
Задача. Вводить с клавиатуры слова (количество определяет пользователь). Записать их в текстовый файл по адресу S:\file_2.txt Примечание: после работы программы откройте через FarManager содержимое файла S:\file_2.txt | ||||||||||||||||||||||||
![]() ![]() ![]() ![]()
2 Связь файловой переменной с файлом S:\file_2.txt 3 Открытие f для записи. 4 До тех пор пока не кончились элементы: · ввод пользователя с клавиатур числа (t) · запись t в файл f 5 Закрытие f |
| Program Write_file_txt; Var f:text; t:string; X, Kol:integer Begin Write(‘Количество слов); ReadLn(Kol); Assign(f, ‘S:\file_2.txt’); ReWrite(f); For x:=1 to kol do Begin Write(‘слово:’); ReadLn(t); Writeln(f, t); End; Close(f); End. | ||||||||||||||||||||||
Задача. Вводить с клавиатуры целые числа (количество определяет пользователь). Записать их в типизированный файл по адресу S:\file. tip | ||||||||||||||||||||||||
![]() ![]() ![]() ![]()
5 6 7 · ·
|
| Program Write_file; Var f-2:file of integer; Name:string; X, T,Kol:integer Begin Write(‘Количество чисел’); ReadLn(Kol); Assign(f-2, ‘S:\file. tip’); ReWrite(f-2); For x:=1 to kol do Begin Write(‘Число’); ReadLn(t); Write(f-2,t); End; Close(f-2); End. | ||||||||||||||||||||||
Задача. Вывести на экран все целые числа, хранившиеся на диске в типизированном файле по адресу: S:\file. tip Посчитать сумму элементов | ||||||||||||||||||||||||
Словесное описание | Блок-схема | Pascal | ||||||||||||||||||||||
|
| Program read_file, t; Uses Crt; Var f-1: file of integer; Sum, t:integer; Name: string; Begin Writeln(‘Укажите путь к исходному файлу’); Readln(name); Assign(f-1,name); Reset(f-1); Writeln(‘числа из файла:’); While not(eof(f-1)) do Begin Read(f-1,t); WriteLn(t); Sum:=Sum+t; End; WriteLn(‘Сумма чисел в файле’,Sum); Close(f-1); End. | ||||||||||||||||||||||
![]() 6. Спросить у пользователя путь к исходному файлу (name) 7. Связь файловой переменной f-1 с файлом name 8. Открытие файла для чтения. 9. До тех пор пока не кончился файл (текущий элемент не последний) · считать из файла текущее значение в t. · выводится на экран t · увеличить Sum на t 10. Вывести Sum на экран 11. Закрытие f-1 | ||||||||||||||||||||||||
Задача 3. Проверить существует ли на диске file файл (любой тип) по заданному адресу. | ||||||||||||||||||||||||
1.
2. Связь файловой переменной 3. Отключить директива компилятора контроль ввода 4. Открыть файл f-3 для чтения. 5. Проверить код ошибки (то есть файла существует) · Если код = 0, то ошибки нет (т. е файл есть) · иначе, то ошибка ввода (то есть файла нет). 6) Включить директиву компилятора контроль ввода. |
| Program Prox_file; Var f-3:(любой тип (текстовый, типизированный)) Name:string; Begin Write(‘Имя файла???’); ReadLn(name); Assign(f-3, name); {$ i - } Reset(f-3); IF IOReSULT = 0 then begin WriteLn(‘Файл есть’); Colse (f-3); end Else WriteLn(‘Файла нет’); {$ i +} End. | ||||||||||||||||||||||
![]() ![]() ![]() ![]()
| ||||
| Program file_stud; Type tip_st=record FIO:string; m:integer; End; Var f_st: file of tip_st; st_all:array[1..100] of tip_st; Kol, n:integer; Name_st: string; Sr: real; Begin | |||
|













До тех пор пока не кончились элементы:
ввод пользователя с клавиатур числа (t)
запись t в файл f-2
5 Закрытие f-2.







