Обработка файловых структур данных.ppt
- Количество слайдов: 24
Обработка файловых структур данных
Файловые процедуры и функции Назначение: o организовать доступ к файлам, o осуществить ввод – вывод, o ориентироваться в записях файла, o завершать работу с файлом.
файловые переменные o Для связи Паскаль – программы с внешними устройствами используют файловые переменные
Операторы Связь осуществляется оператором: o ASSIGN (имя файловой переменной, ' имя устройства'); o Например: n assign (f, ‘book. dat'); Здесь f - имя файловой переменной, book. dat – имя файла данных на внешнем носителе. Результат: файловая переменная f отожествляется с соответствующим файлом.
Операторы o Для работы с файлом его необходимо открыть, по окончании работы – закрыть. o Файл открывается: n для чтения оператором RESET (f) n для записи оператором REWRITE (f). o Файл закрывается: n оператор CLOSE (f)
Чтение и запись данных o Чтение и запись данных осуществляется известными процедурами read/write, только в начале списка помещается имя файловой переменной: n read n write (f, список ввода); (f, список вывода);
Операторы Команда RESET (f) устанавливает указатель маркера файла на нулевое состояние, например, для повторного чтения записей из файла
Задание 1. Создание файла 2. Обработка файла
Пример 1. Создание файла o Создать файл, содержащий сведения о сдаче студентами сессии. o Структура записи содержит поля: n индекс группы, n фамилию студента, n оценки по пяти экзаменам o Количество записей в файле произвольное
Пример 2. Обработка файла o Написать программу определения успевающих студентов определенной группы
Создание файла o Определим поля записи: Описание полей Имена переменных Типы данных Примеры Индекс группы INDEX символьный, 7 символов 09 -ИЭ-1 Фамилия FAM символьный, 20 символов Ильяш А. В. Оценки по пяти экзаменам Массив MARKER (5) целый, 5 элементов 54343
Алгоритм создания файла o o o o Для получения текущей записи организуем в программе запрос на ввод очередной порции информации с терминала в оперативную память. Полученную строку данных запишем в первую запись файла. Для этого используем оператор записи данных в файл Затем запросим ввод второй строки данных с терминала в оперативную память. Организуем ее запись в файл. Этот процесс ввода с терминала и записи в файл будем продолжать до тех пор, пока не будет получен с терминала признак окончания ввода данных. Для реализации окончание ввода применим процедуру Read. Key.
Алгоритм создания файла o Для подсчета количества записей в файле введем счетчик К, значение которого будем увеличивать на 1 при каждой операции записи строки в файл. o После создания файла на диске для контроля результата организуем чтение записей файла и их вывод на экран
Н Вывод K Открытие файла для чтения K=0 Схема алгоритма Открытие файла для записи Not eof (Sessya) да Чтение записи Read. Key * да Ввод данных Вывод данных Закрытие файла K=K+1 Запись в файл Sessya К Sessya
Текст программы 1 PROGRAM MY_FILE; {Подключение модуля CRT} USES CRT; {Описание структуры файла} TYPE ZAP=RECORD INDEX: STRING[7]; FAM: STRING[20]; MARKER: ARRAY[1. . 5] OF BYTE END; VAR SESSYA: FILE OF ZAP; K, L: INTEGER; X: ZAP; BEGIN CLRSCR; K: =0; ASSIGN (SESSYA, 'SESSYA'); REWRITE (SESSYA); {Связь файловой переменной SESSYA с файлом 'SESSYA' в текущем каталоге} {Файл открывается для записи}
Текст программы 1 {Создание файла} WRITELN ('Для ввода данных нажмите Enter'); WRITELN ('Для окончания работы нажмите *'); WHILE NOT (READKEY='*') DO BEGIN WRITELN ('------------------------'); WRITE ('Введите индекс группы – 7 символов: '); READLN (X. INDEX); WRITE ('Введите фамилию <=20 символов: '); READLN (X. FAM); WRITELN ('Введите 5 оценок через Enter: '); FOR L: =1 TO 5 DO READLN (X. MARKER[L]); K: =K+1; WRITE (SESSYA, X); WRITELN ('Для продолжения ввода нажмите Enter'); WRITELN ('Для окончания ввода введите *'); END;
Текст программы 1 CLRSCR; WRITELN ('B файле ', K: 5, ' записей'); {Файл открывается для чтения} RESET (SESSYA); {Вывод данных файла на экран} WHILE NOT EOF (SESSYA) DO BEGIN READ (SESSYA, X); WRITE (X. INDEX: 8, X. FAM: 22); FOR L: =1 TO 5 DO WRITE (X. MARKER[L]: 2); WRITELN; END; WRITELN ('Конец файла'); CLOSE (SESSYA); END.
Алгоритм обработки файла Для выполнения задания необходимо: n ввести с терминала индекс группы GR, для которой определяем список успевающих студентов; n организовать в цикле чтение текущей записи файла, n проверить совпадение значения поля "индекс группы" со значением переменной GR.
Алгоритм обработки файла n Если индексы не совпадают, то переходить к чтению следующей записи файла n Если индексы совпадают, то проверять оценки на наличие двоек n Если есть двойки, то переходить к чтению следующей записи файла n Если нет двоек, то сохранять фамилию студента и его оценки, т. е. формировать массив записей
Н Схема алгоритма Ввод GRUP POISK( GRUP, K, USP) K>0 I=1, K Вывод USP(i) Вывод ‘ нет успевающих ’ К
Схема POISK алгоритма Открытие файла для чтения N=0 Not eof Sessya чтение записи Y Y. INDEX=GR L=TRUE I=1, 5 y. mari=2 L=FALSE L=TRUE N=N+1, SP[N]=Y К
Текст программы обработки Program UMNICU; Uses Crt; TYPE ZAP=RECORD END; INDEX: STRING[7]; FAM: STRING[20]; MARKER: ARRAY[1. . 5] OF BYTE Mas= Array [1. . 20] of Zap; VAR USP: MAS; GRUP: String[7]; I, J, K: Integer;
Procedure POISK(GR: String; Var N: Integer; Var SP: Mas); Var Sessya: File Of Zap; Y: Zap; I: Integer; L: Boolean; BEGIN ASSIGN (SESSYA, 'SESSYA'); RESET (SESSYA); N: =0; WHILE NOT EOF (SESSYA) DO BEGIN READ (SESSYA, Y); IF Y. INDEX=GR THEN BEGIN L: =TRUE; FOR I: =1 TO 5 DO IF Y. MARKER[I]=2 THEN L: =FALSE; IF L=TRUE THEN END; CLOSE (SESSYA); END; Begin N: =N+1; SP[N]: =Y; End;
BEGIN CLRSCR; WRITELN ('Bведите индекс группы'); READLN (GRUP); CLRSCR; POISK(GRUP, K, USP); IF (K>0) THEN BEGIN WRITELN (СПИСОК УСПЕВАЮЩИХ CTУДЕНТОВ ГРУППЫ', GRUP: 9); WRITELN (‘___________________'); WRITELN (‘ № Фамилия Оценки '); WRITELN (‘___________________'); FOR I: =1 TO K DO Begin WRITE(‘│’, I: 5, ‘│’, USP[i]. FAM : 20, ‘│’); FOR J: =1 TO 5 DO WRITE(USP[I]. MARKER[J] : 2); WRITELN (‘│’); End; WRITELN (‘___________________'); END ELSE WRITELN (‘НЕТ УСПЕВАЮЩИХ CTУДЕНТОВ В ГРУППЕ', GR: 9); END.
Обработка файловых структур данных.ppt