
- •9. Перечисляемый тип данных. Строковый тип. Множества. Записи. Файлы
- •9.1. Перечисляемый тип данных
- •Var days: week;
- •9.2. Строковые данные. Типы Char и String
- •Var s1 : String[40];
- •Var Str1, Str2: String[20]; Ch1, Ch2 :Char;
- •Var s: String[20]; I:integer;
- •Var I: byte; begin
- •Var Str_1, Str_2, Str_3:string[10];
- •Insert('any', Str_3,5);
- •9.3. Множества
- •9.3.1. Описание и инициализация множеств
- •9.3.2. Предметные операции с множествами
- •9.3.3. Операции сравнения над множествами
- •9.3.4. Цикл типа For..In. Вывод множеств и их элементов.
- •Var d: week;
- •9.4. Записи
- •Var p_Data: Pers_Data;
- •Var p_Data: record fam:string[20]; adr:string[40]; tel:string[15];
- •Var woker_alpha: woker_firm;
- •Var woker_alpha: array [1..30] of Pers_Data;
- •9.5. Файлы
- •9.5.1. Описание файловых переменных
- •9.5.2. Стандартные операции с файлами. Связывание логических и физических файлов
- •9.5.3. Ввод и вывод данных из физических файлов. Вспомогательные действия
- •9.5.4. Примеры решения задач по обработке текстовых файлов
- •Var I:byte;n:integer; ft:text; FileName,st:string;
- •Var I,Lmas:integer; ft:text; FileName:string;
- •Var n,I:integer; ft:text; FileName:string;
- •Var str,w_s:string;
9.5. Файлы
Разработка файлового типа данных (файлов) обусловлена необходимость организации обмена данными, содержащимися в оперативной памяти компьютера, с периферийными устройствами ПК для их ввода-вывода, долговременного хранения (диск, флэш-память) или последующей обработки (принтер, сканер). Практическая реализация обмена данными с использованием файлов основана на понятиях физического и логического файлов.
Физический файл представляет собой именованную область памяти на некотором внешнем носителе. Также физический файл может означать некоторое внешнее устройство или порт ПК, через который организуется доступ к данным устройствам. Физический файл имеет имя, представляющее собой строковую величину, в которой наряду с названием файла может быть указан путь к нему, тип файла (путем задания расширения) и т.д. Например, в Паскале физические файлы могут иметь имена вида:
'F1.dat'{расширение в имени означает тип файла}
'c:\Мои документы\book1.doc'{в имени дан полный путь файла по правилам ОС MS DOS}
'file2'{имя файла не содержит ни пути к нему, ни расширения}
Физические файлы также называют дисковыми, поскольку операционная система, управляющая всей памятью компьютера, делит ее на отдельные части – диски.
Под логическим файлом понимают упорядоченную совокупность произвольного числа однотипных компонент. Величины данных компонент генерируются в программе либо получают при считывании из физического файла. Тип компонент может быть любым, допустимым в Паскале, кроме файлового. Т.е. нельзя создавать файл, состоящий из файлов. В программе логическому файлу соответствует переменная файлового типа, которая представляет собой обычный идентификатор Паскаля. Для того, чтобы устанавливать соответствие логических файлов с физическими, в алгоритмических языках применяют специальные функции.
Передачу информации из логических файлов, генерируемых программами и содержащимися в оперативной памяти ЭВМ, в физические файлы называют их записью. Обратный процесс передачи информации из физического файла в логический называют чтением. Оба процесса осуществляются конкретными устройствами под управлением операционной системы.
Определение логического файла схоже с определением массива, однако в отличие от них, у файлового типа данных при его описании не указывается длина (количество элементов), т.е. она не определена и ограничивается только свободным объемом используемой памяти.
9.5.1. Описание файловых переменных
В Паскале переменная файлового типа может быть описана одним из 3 способов:
1. Типизированный файл – в описании указывается тип компонент файла (любой, разрешенный в Паскале, кроме файлового). Синтаксис описания имеет вид:
имя файловой переменной = file of тип компонент файла;
2. Текстовый файл – специальный тип файлов, для работы с которыми используются особые процедуры либо общие процедуры имеют особенности. Синтаксис описания текстового файла имеет вид:
имя файловой переменной = text;
Текстовый файл представляет собой последовательность строк разной длины, состоящих из символов. Каждая строка текстового файла завершается маркером конца строки EoLN, в конце всего файла (как и любого другого) стоит текстовый маркер конца файла EoF. К элементам текстового файла возможен только последовательный доступ, начиная с первого. Параллельное выполнение записи и чтения в текстовый файл не допускается.
3. Нетипизированные файлы – тип компонент не задан. Синтаксис описания имеет вид:
имя файловой переменной = file;
Вид файла задает способ хранения и методы обработки информации, хранящейся в нем. Поэтому необходимо контролировать правильность объявления как вновь создаваемых , так и уже имеющихся файлов.
Пример 1. Описания типов и файловых переменных:
type
string_12= String [12] {описание типа строковой величины из 12 символов}
string_25= String [25] {описание типа строковой величины из 25 символов}
string_150= String [150] {описание типа строковой величины из 150 символов}
P_data = record {описание типа - записи}
name: string_150;
adr : string_150;
tel : string_12;
end;
Data_Str = file of string_25; {описание файлового типа с компонентами string_25}
var
f_char: file of char; {описание фaйла с компонентами -символами}
f_int: file of integer; {описание фaйла с компонентами – целыми числами}
file_dif: file; {описание нетипизированного фaйла}
f_chapter: text; {описание текстового фaйла}
f_P_Dat: file of P_data; {описание фaйла с компонентами –записями типа P_data}
fD: Data_Str; {присваивание переменной fD файлового типа Data_Str}
f_str12: file of string_12; {описание фaйла с компонентами типа string_12}