ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ

Лабораторная работа №12

СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ. ФАЙЛЫ. РАБОТА С ТИПИЗИРОВАННЫМИ ФАЙЛАМИ

СТРУКТУРИРОВАННЫЙ ТИП ДАННЫХ - ФАЙЛОВЫЙ

ФАЙЛ

- именованная область наружной памяти либо логическое устройство – возможный источник либо приемник инфы (исходя из убеждений программки).

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

ВИДЫ ФАЙЛОВЫХ ПЕРЕМЕННЫХ И ИХ ОПИСАНИЕ:

Ø ТИПИЗИРОВАННЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ ФАЙЛЫ

- составляющие фиксированной длины обозначенного при описании типа, что позволяет выполнить прямой доступ к компонентам. Описание:

VAR : FILE OF ;

Где - хоть какой тип – тип частей файла.

Ø ТЕКСТОВЫЕ ФАЙЛЫ

- составляющие – строчки переменной длины, доступ только поочередный. Описание:

VAR : TEXT;

Ø НЕТИПИЗИРОВАННЫЕ ФАЙЛЫ

- составляющие – двоичные блоки фиксированной емкости, информация из которых не интерпретируется ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ, вероятен прямой доступ. Описание:

VAR : FILE;

ПРИМЕРЫ ОПИСАНИЙ ФАЙЛОВЫХ ТИПОВ И ПЕРЕМЕННЫХ

TYPE F1=TEXT; F2=FILE OF INTEGER; {файловый тип данных, состоящий из целочисленных частей типа INTEGER} F3=FILE; VAR A0:F1; A1: TEXT; {два текстовых файла} A2:F2; {файл из целых чисел типа INTEGER} A3:F3; {двоичный файл}

ЭТАПЫ РАБОТЫ ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ С ТИПИЗИРОВАННЫМИ ФАЙЛАМИ

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

Ø Связь переменной с физическим файлом

Ø Инициализация (открытие) файла

Ø Ввод/вывод в файл

Ø Закрытие файла

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

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

TYPE FINT=FILE OF INTEGER; {файловый тип данных, состоящий из целочисленных частей типа INTEGER } VAR F1: FILE OF REAL; {файл из ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ вещественных чисел типа REAL} F2:FINT; {файл из целых чисел типа INTEGER}

Связь переменной с физическим файлом

Ø ASSIGN (,)

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

ПРИМЕРЫ

ASSIGN(F ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ1,’FFF.DAT’); ASSIGN(F2,’INT.DAT’);

Открытие файла

REWRITE()

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

RESET()

-открытие файла на чтение/запись, при этом указатель помещается в начало ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ файла (на нулевой элемент). Если файл не существует, генерируется ошибка ввода/вывода.

КОРРЕКТНОЕ ОТКРЫТИЕ ФАЙЛА

{$I-}{отключить контроль ошибок ввода/вывода – директива компилятора} RESET(A2); {открыть файл на чтение} {$I+}{включить контроль ошибок ввода/вывода – директива компилятора} IF IORESULT0 THEN {проверить функцию ошибки} … {действия в случае ошибки – отсутствия файла ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ на диске} ELSE … {действия в случае удачного открытия файла}

Ввод/вывод в типизированный файл

После каждой операции ввода/вывода указатель файла всегда сдвигается на последующий компонент файла.

Ø READ(,)

– чтение из файла компонент - переменных типа частей типизированного файла.

Ø WRITE(,)

– запись в файл компонент из - переменных и/либо констант типа частей типизированного файла

Закрытие ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ файла

Ø CLOSE()

- закрытие файла.

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

ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ

ПОСЛЕ ЗАКРЫТИЯ ФАЙЛ МОЖНО:

Ø ERASE()

– удалить файл ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ.

Ø RENAME(,)

– переименовать файл.

ПОЛЕЗНЫЕ ПОДПРОГРАММЫ ДЛЯ ОБРАБОТКИ ФАЙЛОВ

Ø IORESULT

– функция типа WORD; возвращает условный признак последней операции ввода-вывода, если удачно, то 0.

Ø EOF()

– функция типа BOOLEAN; возвращает true, если указатель файла находится в его конце, по другому – false.

Ø FLUSH()

– очищает буфер, связанный с файлом, гарантируя сохранность всех последних конфигураций

ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ КАТАЛОГАМИ

Ø CHDIR()

– поменять текущий каталог

Ø MKDIR()

– сделать новый каталог

Ø RMDIR()

– удалить пустой каталог

Ø GETDIR(,)

– получить имя текущего каталога и номер устройства, на котором он находится

Библиотека DOS.TPU содержит еще ряд нужных процедур и функций работы с дисками, логическими устройствами, файлами и т.п.

ПОЛЕЗНЫЕ ФУНКЦИИ ДЛЯ ОРГАНИЗАЦИИ ПРЯМОГО ДОСТУПА К ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ КОМПОНЕНТАМ ТИПИЗИРОВАННОГО ФАЙЛА

Потому что длина каждого компонента типизированного файла фиксирована, то можно выполнить прямой доступ к нему, указав порядковый номер (нумерация компонент начинается с 0)

Ø SEEK (,)

– процедура устанавливает указатель файла на компонент с номером N.

Ø FILEPOS()

– функция типа longint; возвращает номер последующего считываемого компонента (т.е. того, на котором на данный ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ момент находится указатель файла).

Ø FILESIZE()

– функция типа longint; возвращает количество записей в файле.

Ø TRUNCATE()

– процедура «усекает» длину файла до текущей записи (положения указателя).

ПРОЦЕДУРА Сотворения ФАЙЛА ИЗ ЦЕЛЫХ ЧИСЕЛ

PROCEDURE CREATE(NAME:STRING); VAR F:FILE OF INTEGER; {файловая переменная} X:INTEGER; BEGIN ASSIGN (F,NAME); {файловая переменная связана с ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ файлом с именованием NAME} {$I-} REWRITE(F); {открыть файл на запись (перезапись)} {$I+} IF IORESULT=0 THEN {если файл открыт} BEGIN WRITELN(‘VVEDITE CHISLA (OSTANOVKA 0):’); READ(X); WHILE X0 DO{вводим числа в цикле до нулевого значения и записываем их в файл} BEGIN WRITE (F,X); READ(X); END; CLOSE(F); {закрыть ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ файл} END; END;

ПРОЦЕДУРА РАСПЕЧАТКИ СОДЕРЖИМОГО ФАЙЛА ИЗ ЦЕЛЫХ ЧИСЕЛ

PROCEDURE PRINT(NAME:STRING); VAR F:FILE OF INTEGER; {файловая переменная} X:INTEGER; BEGIN ASSIGN (F,NAME); {файловая переменная связана с файлом с именованием NAME} {$I-} RESET(F); {открыть файл на чтение} {$I+} IF IORESULT=0 THEN {если файл открыт} BEGIN ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ WHILE NOT(EOF(F)) DO {пока не достигнут конец файла } BEGIN{читаем элемент из файла и выводим ее на консоль} READ(F,X); WRITE(X:6); END; WRITELN; CLOSE(F); {закрыть файл} END; END;

ПРОЦЕДУРА УДАЛЕНИЯ ИЗ ФАЙЛА ВСЕХ ОТРИЦАТЕЛЬНЫХ ЧИСЕЛ

PROCEDURE SGAT(NAME:STRING); VAR F:FILE OF INTEGER; {файловая ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ переменная} X,K,S:INTEGER; BEGIN S:=0; {обнуляем счетчик отрицательных чисел} ASSIGN (F,NAME);{файловая переменная связана с файлом с именованием NAME} {$I-} RESET(F); {открыть файл на чтение/запись} {$I+} IF IORESULT=0 THEN {если файл открыт} BEGIN WHILE NOT(EOF(F)) DO {пока не достигнут конец файла ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ} BEGIN READ(F,X); {читаем целое число из файла} IF X=0 THEN {если прочитанный элемент – отрицательный считаем его} S:=S+1 ELSE BEGIN K:=FILEPOS(F); {иначе запоминаем в k позицию, последующую за прочитанным положительным элементом} SEEK(F,K-1-S); {смещаем указатель на позицию за последней положительной записью} WRITE ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ(F,X); {записываем считанный элемент} SEEK(F,K); { и перебегаем к еще непрочитанной позиции} END; END; SEEK(F,FILEPOS(F)-S); {смещаем указатель на длину файла — количество удаленных элементов} TRUNCATE(F); { и «обрезаем» лишнее} CLOSE(F); {закрываем файл, чтоб сохранить конфигурации в файле} END; END;

ПРИМЕР Программки, ИСПОЛЬЗУЮЩЕЙ ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ ПРИВЕДЕННЫЕ ВЫШЕ ПОДПРОГРАММЫ

BEGIN CREATE(‘FILE1.TXT’); {создать файл} PRINT(‘FILE1.TXT’); {распечатать файл} SGAT(‘FILE1.TXT’); {сжать файл} PRINT('FILE1.TXT'); {распечатать модифицированный файл} READLN; END.

ЗАДАНИЯ

Программка должна быть разбита на несколько подпрограмм-процедур и подпрограмм-функций и непременно содержать:

1. Функцию формирования начального файла;

2. Функцию вывода результата работы программки ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ;

3. Одну либо более процедур (функций), реализующих вычислительную часть метода.

Все подпрограммы-процедуры и подпрограммы-функции должны содержать перечень характеристик, при этом файл должен передаваться как параметр процедуры (функции). Основная программка должна содержать только операторы вызова подпрограмм.

ВАРИАНТЫ

Постановка задачки
Дан файл f, составляющие которого являются действительными числами. Отыскать: Сумму компонент ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ файла f. Записать эту сумму в конец файла. Отсортировать файл по возрастанию значений компонент.
Дан файл f, составляющие которого являются действительными числами. Отыскать: Произведение компонент файла f. Записать это произведение после составляющие с номером N. Отсортировать файл, начиная с составляющие с номером N по убыванию.
Дан файл f, составляющие ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ которого являются действительными числами. Отыскать: Сумму квадратов компонент файла f. Записать эту сумму в конец файла. Отсортировать файл по возрастанию.
Дан файл f, составляющие которого являются действительными числами (положительные и отрицательные). Отыскать: Модуль суммы и квадрат произведения компонент файла f. Записать эти значения в конец файла. Отсортировать файл по ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ возрастанию.
Дан файл f, составляющие которого являются действительными числами X1,X2,…Xn, образованными по закону: Xi=(i-0.1)/(sqr(i)*i+абс(tg2*i)) (i=1,2,…N). Дано действительное число e>0. Записать в файл h те элементы файла f, для которых производится условие: абс(Xi)
Дан файл f, составляющие которого ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ являются действительными числами. Отыскать: Наибольшее из значений компонент файла. Записать это значение N раз после меньшего значения составляющие файла (Можно использовать вспомогательный файл).
Дан файл f, составляющие которого являются действительными числами. Отыскать: Меньшее из значений компонент файла с четными номерами. Записать это значение N раз в конец файла
Дан файл f, составляющие ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ которого являются действительными числами (положительные и отрицательные). Отыскать: Наибольшее из значений модулей компонент файла с нечетными номерами. Записать это значение после составляющие файла с номером N
Дан файл f, составляющие которого являются действительными числами. Отыскать: Сумму большего и меньшего из значений компонент. Сделать новый файл g, в ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ каком эта сумма является первой компонентой, другие составляющие переписать из файла f Упорядочить составляющие файла g по убыванию
Дан файл f, составляющие которого являются действительными числами. Сделать файл g по последующему правилу: любая компонента файла g равна разности меж большей компонентой файла f и компонентой файла f с ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ номером i (i=1,2,…). Упорядочить составляющие файла g по возрастанию
Дан файл f, составляющие которого являются целыми числами. Отыскать: количество четных чисел посреди компонент с нечетными номерами. Добавить это значение в конец файла.
Дан файл f, составляющие которого являются целыми числами. Отыскать: Количество двойных нечетных чисел посреди компонент файла. Записать это ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ значение в начало файла.
Дан файл f, составляющие которого являются целыми числами. Отыскать количество квадратов нечетных чисел посреди компонент файла. Записать это значение в начало нового файла g. Другие значения переписать из начального файла f.
Дан файл f, составляющие которого являются целыми числами. Получить в файле g все составляющие файла ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ f, образующие растущие последовательности. Для разделения последовательностей в файле g использовать число 0. (Начальный файл f не содержит нулей).
Дан файл f, составляющие которого являются целыми числами. Получить в файле g все составляющие файла f: являющиеся четными числами; делящиеся на 3 и не делящиеся на 7; являющиеся точными квадратами;
Даны файлы ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ f1,f2,f3,f4,f5, составляющие которых являются целыми числами. Организовать обмен компонентами меж файлами последующим образом: Составляющие f1 переписываются в f3 Составляющие F2 переписываются в f4 Составляющие F3 переписываются в f5 Составляющие F4 переписываются в f2 Составляющие F5 переписываются в f1 Разрешается использовать только один вспомогательный файл h ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ
Дан файл f, составляющие U0,U1,…Un которого являются поочередными числами Фибоначчи. Получить в файле f поочередные числа Фибоначчи U0,U1,…,Un+1
Дан файл f, составляющие которого являются целыми числами. Записать в файл g все четные числа файла f, а в файл h все нечетные числа. Порядок следования чисел сохраняется. В ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ конец каждого из вновь приобретенных файлов записать сумму четных (нечетных) чисел соответственно.
Дан файл f, составляющие которого являются целыми числами. Получить файл g, образованный из файла f исключением повторных вхождений 1-го и такого же числа.
Дан файл f, составляющие которого являются целыми числами. В файле нет компонент, равных нулю ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ. Файл содержит однообразное количество положительных и отрицательных чисел. Используя вспомогательный файл h, переписать составляющие файла f в файл g Так, чтоб в файле g не было 2-ух примыкающих чисел с одним знаком
Дан файл f, составляющие которого являются целыми числами. В файле нет компонент, равных нулю ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ. Файл содержит однообразное количество положительных и отрицательных чисел. Используя вспомогательный файл h, переписать составляющие файла f в файл g так, чтоб в файле g поначалу шли положительные, позже отрицательные числа
Дан файл f, составляющие которого являются целыми числами. В файле нет компонент, равных нулю. Файл содержит однообразное количество положительных и ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ отрицательных чисел. Используя вспомогательный файл h, переписать составляющие файла f в файл g Так, чтоб в файле g числа шли в последующем порядке: два положительных, два отрицательных, два положительных, два отрицательных и т.д.(число компонент в файле f делится на 4)
Дан файл f, составляющие которого являются целыми числами. В ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ файле нет компонент, равных нулю. Числа в файле f идут в последующем порядке: 10 положительных, 10 отрицательных и т.д. Переписать составляющие файла f в файл g так, чтоб в файле g числа шли в последующем порядке: 5 положительных, 5 отрицательных и т.д.
Дан файл f, составляющие которого являются целыми числами ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ. В файле нет компонент, равных нулю. Числа в файле f идут в последующем порядке: 10 положительных, 10 отрицательных и т.д. Переписать составляющие файла f в файл g так, чтоб в файле g числа шли в последующем порядке: 20 положительных, 20 отрицательных и т.д. (подразумевается, что число компонент в файле f делится на ПРОЦЕДУРЫ И ФУНКЦИИ ДЛЯ РАБОТЫ С ФАЙЛАМИ И КАТАЛОГАМИ 40)


procedura-podgotovki-prikazov-po-lichnomu-sostavu.html
procedura-posleduyushih-dejstvij-v-svyazi-s-vivodami-i-rekomendaciyami-s-maya-2003goda-po-iyun-2011goda.html
procedura-pri-shestom-i-lyubom-posleduyushem-nabrannom-narushenii.html