Процедуры и функции для работы с файлами

Последующие процедуры открывают логический файл с файловой перемен­ной , связанной ранее с уже имеющимся файлом:

RESET() – для чтения,

REWRITE() – для записи.

Только после открытия файла становится вероятным чтение и запись данных. При их выполнении переменная-указатель, связанная с файлом, будет указывать на начало этого файла, т.е. на компонент Процедуры и функции для работы с файлами с номером нуль.

Процедуры открытия могут применяться неоднократно к одному и тому же файлу. Если файл был ранее открыт, то он автоматом предвари­тельно запирается. Повторный вызов RESET переустановит последователь­ность чтения вновь на самый 1-ый элемент файла (утрата данных исклю­чена). Но повторное воззвание в REWRITEсотрет текущее содержимое фай­ла и Процедуры и функции для работы с файлами подготовит файл к наполнению, начиная с первого элемента.

Процедура CLOSE(f) закрывает открытый ранее логический файл f и обеспечивает сохранение всех записей и регистрацию файла на диске. Вы­зовы процедуры CLOSE нужны для окончания работы с файлами. Также нужно закрывать открытые файлы перед их удалением (ERASE) либо пе­реименованием (RENAME Процедуры и функции для работы с файлами). При всем этом связь файла с файловыми переменными сох­раняется. Попытка закрыть уже закрытый файл либо еще не открытый вызовет сбой в работе программки. Закрытие файлов производится автоматом по отношению ко всем открытым файлам при обычном за­вершении программки.

В таблице 8 сведены общие процедуры и функции для работы Процедуры и функции для работы с файлами с файлами, более применимые на практике.

Таблица 8

Общие процедуры и функции для работы с файлами

Процедуры и функции Выполняемые деяния
Assign (f, name ) ReSet (f ) ReWrite (f ) Close (f ) Erase (f ) ReName (f, NewName ) EOF (f ) Связывает fс названием файла name типа string Открывает файл с логическим именованием f для чтения Процедуры и функции для работы с файлами Открывает файл с логическим именованием f для записи Закрывает файл с логическим именованием f Удаляет (стирает) физический файл, связанный с f, с диска. Стираемый файл должен быть закрыт Переименовывает физический файл, связанный с f, в файл с новым именованием NewName Функция логического типа возвращает значение TRUE, если достигнут Процедуры и функции для работы с файлами признак конца файла либо файл пуст, по другому возвращает FALSE

При переименовании процедурой RENAME поменять можно только название файла, имя диска поменять нельзя. За ранее файл должен быть закрыт проце­дурой CLOSE.

Функция EOF(f) тестирует конец файла. Если она возвращает TRUE, при записи очередной компонент будет добавлен в Процедуры и функции для работы с файлами конец файла, при чте­нии - файл считается исчерпанным.

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

Типизированные файлы позволяют организовать прямойдоступ к каж­дой из компонент (по ее порядковому номеру), так как длина хоть какого компонента типизированного файла строго постоянна. Описание файловой переменной для таких файлов производится в последующем виде:

Var : file of ;

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

Для работы с типизированными файлами определены последующие проце­дуры и функции (табл. 9). Функцию SEEK и функции FILESIZE, FILEPOS нельзя использовать для текстовых файлов.

Таблица 9

Процедуры и функции для работы с типизированными файлами

Процедуры, функции Выполняемые деяния Процедуры и функции для работы с файлами
READ(, ); WRITE(, ); SEEK(, ) FILESIZE(); FILEPOS(); Процедура обеспечивает чтение очередных ком­понентов файла Процедура употребляется для записи новых ком­понентов в файл; в качестве частей вывода может стоять выражение. Процедура сдвигает указатель файла к компо­ненту с обозначенным номером; – выражение типа Integer Функция возвращает количество компонент, содержащихся в файле Функция возвращает порядковый номер Процедуры и функции для работы с файлами компо­ненты файла, доступной для чтения либо записи

Чтоб переместить указатель в конец файла, можно написать, напри­мер: Seek(f, FileSize(f)); где f - файловая переменная.

Файловая переменная за ранее должна быть объявлена предло­жением FILE OF и связана с именованием физического файла процедурой ASSIGN. Файл Процедуры и функции для работы с файлами перед воззванием к нему должен быть открыт.

Текстовые файлы

Это файлы поочередного доступа. Они созданы для хране­ния текстовой инфы.

Текстовые файлы связываются с файловыми переменными типа TEXT:

Var : TEXT;

Текстовый файл в Pascal ABC трактуется как совокупа строк переменной длины. Доступ к каждой строке вероятен только поочередно, начиная с первой строчки. При разработке Процедуры и функции для работы с файлами текстового файла в конце каждой строчки ставится особый признак EOLN (End Of LiNe - конец строчки), а в конце всего файла – признак EOF (End Of File – конец файла) c кодом 26. Тестируются эти признаки одноименными логическими функциями.

Для доступа к записям текстового файла используются процедуры RE­AD, READLN, WRITE, WRITELN Процедуры и функции для работы с файлами. В их можно использовать переменное число характеристик, в качестве которых могут быть знаки, строчки и числа. Первым параметром в хоть какой из перечисленных процедур может стоять фай­ловая переменная. В данном случае осуществляется воззвание к дисковому файлу, связанному с файловой переменной процедурой ASSIGN, и открытому процедурами RESET либо REWRITE.

Процедуры Процедуры и функции для работы с файлами ввода

Процедура READ обеспечивает ввод знаков, строчки и чисел. Она имеет последующий формат:

READ(,); либо READ();

где - последовательность из одной либо более переменных типа CHAR, STRING либо хоть какого целого либо вещественного типов, к примеру:

READ(Х); // ввод переменной Х с клавиатуры

READ(f, x1, x2, x3); // ввод 3-х переменных из файла

При Процедуры и функции для работы с файлами вводе переменной типа CHARпроизводится чтение 1-го знака из файла и присваивается считанное значение переменной. Если перед чтением указатель файла достигнул конца очередной строчки, то считывается знак CR (код 13). Если достигнут конец файла - то знак EOF.

При вводе переменной типа STRING количество считанных знаков равно наибольшей длине строчки, если Процедуры и функции для работы с файлами ранее не повстречались знаки CR, EOF. В данном случае эти знаки в строчку не помещаются. Если коли­чество знаков во входной строке больше наибольшего размера строчки, то «лишние» знаки до конца строчки отбрасываются, а новое воззвание к READ возвращает пустую строчку.

Таким макаром, READ не в состоянии прочитать Процедуры и функции для работы с файлами последовательность строк: читается только одна строчка, другие окажутся пустыми. Для ввода последовательности строк знаков применяется процедура READLN.

При вводе числовых данных процедура READ поначалу выделяет подс­троку во входном потоке по последующему правилу: все ведущие пробелы, знаки табуляции и маркеры конца строк пропускаются до первого знача­щего знака; и, напротив, после первого означающего Процедуры и функции для работы с файлами знака хоть какой из перечисленных знаков либо знак EOF показывает на конец подстроки. Вы­деленная таким макаром подстрока рассматривается как символьное представление числовой константы и присваивается переменной. Практически весь файл рассматривается как одна длинноватая строчка чисел.

Процедура READLN также обеспечивает ввод знаков, строк и чисел:

READLN( f, x);

либоREADLN(f Процедуры и функции для работы с файлами, x1, x2, ..., xN);

Она схожа процедуре READ кроме того, что после счи­тывания последней переменной перечня ввода оставшаяся часть строчки до маркера EOLN пропускается, потому последующее воззвание к READLN либо READ начинается с первого знака новейшей строчки.

Эту функцию можно вызвать без параметра : READLN(f); READLN Процедуры и функции для работы с файлами; что приведет к пропуску всех знаков текущей строчки. Таким методом можно организовать ожидание нажатия кнопки ENTER при открытом окне результатов.

При чтении с клавиатуры курсор помещается в начало последующей строчки, в то время как в процедуре READ остается в текущей строке.

Процедуры вывода

Процедура WRITE обеспечивает вывод инфы в файл либо на экран Процедуры и функции для работы с файлами монитора. Существует две формы воззвания к процедуре:

WRITE(, );либо WRITE();

где - это последовательность, состоящая из одной и поболее переменных (либо вы­ражений) символьного, строкового, логического либо хоть какого целого либо вещественного типа, к примеру:

WRITE(x); WRITE(f, x1, x2, xN);

Файловая переменная, если она указана, должна быть Процедуры и функции для работы с файлами за ранее описана типом TEXT и связана с названием файла процедурой ASSIGN. Если файловая переменная отсутствует, подразумева­ется вывод в стандартный файл – на экран монитора.

Вывод процедурой WRITELN отличается от WRITE тем, что выводимая строчка заканчивается кодами CR (возврат каретки) и LT (перевод строчки), т. е. добавляет маркер конца строчки.

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

WRITELN(f); WRITELN;

Хоть какой элемент X перечня вывода для процедур WRITE/ WRITELN может быть представлен в последующем формате: X[:w[:d Процедуры и функции для работы с файлами]], при этом элементы, заключенные в квадратные скобки, мо­гут отсутствовать. Тут X - имя переменной либо выражение, w, d - вы­ражения целого типа WORD (0..65535). Если параметр w находится, то он показывает наименьшую ширину поля для записи значения X. При длине переменной X меньше w слева делается дополнение поля вывода пробе Процедуры и функции для работы с файлами­лами, если Х больше w, то w игнорируется и выводится нужное число знаков (по дефлоту w = 23); если параметр w не указан, то значение соответственной переменной выводится прямо за предшествующим без како­го-либо разделения.

Параметр d задает количество десятичных символов в дробной части вещественного числа. Употребляется только для вывода Процедуры и функции для работы с файлами значений вы­ражений вещественных типов. Если параметр d не указан, то число выводится в экспоненциальной форме, в неприятном случае в формате представ­ления с фиксированной точкой. Если d = 0, выводится только целая часть числа. К примеру: результаты вывода для числа Х = 3.22 будут последующие:

WRITE(X:6:2); { 3.22}

WRITE(X:6:0); { 3}

WRITE(X:4:2); {3.22}.

Для текстовых Процедуры и функции для работы с файлами файлов также применимы последующие процедуры и функции (табл. 10).

Таблица 10

Процедуры, функции Выполняемые деяния
Append( f); EOLN(f); SeekEOLN(f); SeekEOF(f); Процедура открывает уже имеющийся файл f для дозаписи в его конец (для расширения) Функция возвращает значение TRUE, если во входном файле f достигнуты маркеры конца строчки EOLN Процедуры и функции для работы с файлами либо конца файла EOF, и FALSE - в неприятном случае Функция пропускает все пробелы и знаки табу­ляции до первого признака EOLN либо первого означающего знака. Возвращает значение TRUE, если найден маркер конца файла либо конца строчки Функция пропускает все пробелы, знаки табу­ляции и маркеры конца строк Процедуры и функции для работы с файлами до маркера конца файла либо первого означающего знака. Если мар­кер найден, возвращает значение TRUE

Тексториентированные процедуры и функции

При выводе логических выражений зависимо от значения выво­дятся подстроки TRUE и FALSE. Ввод логических констант процедурами RE­AD и READLN не предусмотрен.


procedura-podscheta-testovih-ballov.html
procedura-predostavleniya-kredita.html
procedura-prinyatiya-federalnih-zakonov-v-rossii.html