Информатика_л_10.ppt
- Количество слайдов: 10
7 ноября 2014 года Поток К 1 Сложные структуры данных: записи и файлы. Бабалова И. Ф. 1
Структурированные данные. Записи • Запись – структура данных, состоящая из фиксированного числа компонентов. Type <имя записи> = record <список полей записи> end; • • Type Person= record Family: String[30]; Status: word; Code_inn: string[10]; end; Поля записи. Запись с вариантами Type Forma=record name: string[30]; case b: byte of 1: (Country: string[30]; year: 1900. . 2100); 2: place: string[10]; end; Пример в пособии стр. 106 Использование переменных типа запись: • var pp, fp: Person; begin pp. Family: =‘Jacobson’; pp. Status: = 24; pp. Code_inn: = ‘ 7604387611’; fp: =pp; // Присваивание with fp do begin……. . end; 2
Технология работы с файлами Определение файла. Файл – это именованная последовательность данных на внешнем носителе. В файле записаны все данные одного типа или без указания типа. Определение файлов в языке программирования Type <имя> = file of <тип данных>; Типизированный <имя> = textfile; <имя> = file; файл Тестовый или символьный файл Файл нетипизированный Работа с файлами в программе обеспечивается методами операционной системы (типа Windows). Для работы с файлами всех типов выполняются в программе следующие действия: Подготовка 1. Объявление типа файла к работе с файлом 2. Создание файловой переменной 3. Связывание файловой переменной и файлов в памяти 4. Открытие файла на запись, чтение или запись/чтение 5. Работа с файлами методами программы 3 6. Закрытие файла
Методы для работы с файлами по пунктам Определение файловых 2. Var fs: ff_s; 1. Type ss=string[20]; переменных f_r: ff_rec; rec=record ft: textfile; Eof(fs) name: ss; mark: integer; данные …. …. Конец end; файла ff_s=file of ss; fs- файловая переменная ff_rec=file of rec; 3. Assignfile(<имя файловой переменной>, <имя файла>); Конец Assignfile (fs, ’My_file. dat’); Assignfile(f_r, ’My_rec. dat’); файла Assignfile(ft, ’My_text. txt’ ); 4. Reset (fs); открытие Rewrite (f_r); открытие файла для чтение файла только для записи 5. read(fs, Mas_str [i]); 6. true Eof(f)= write(f_r, aa_rec [i]) false close(fs) / closefile(fs) Закрытие файла PS: Типизированные файлы могут работать и для чтения и для записи 4
Операции для работы с файлами Для всех типов файлов есть в языке 4 категории операций: 1. Установочные операции: Assignfile, Reset, Rewrite, Erase, Closefile, Flush 2. Ввод/Вывод данных: Read, Write, Readln, Writeln, Append 3. Перемещающие операции: Seek, Filesize, File. Pos, Truncate 4. Специальные операции: Renamefile, Ch. Dir, Mk. Dir, Rm. Dir Все операции выполняются специальными процедурами и функциями. Для разных типов файлов есть отличия в использовании названных Функций и процедур. Компилятор не анализирует ошибки при работе с файлами. Только поиск файла проверяется операционной системой. Ошибки использования операций с файлами выявляются при работе программы. 5
Типизированные файлы a 1 f a 2 a 3 …. . …… 0 запись Начало файла В каждой ячейке памяти записываются данные одного типа an Eof(f) Конец файла Type ff=file of integer; Тип данных любой, кроме String, Ansi. String, файл var f: ff; Установочные операции Assignfile( f, Filename); Reset (f); Файл доступен только для чтения данных. Файловая переменная устанавливается на его начало. Это позиция записи=0 Read( f, a [i]); Assignfile( f, Filename); Rewrite (f); Запись в файл будет начинаться с первой записи. Write( f, a [i]); Как при чтении, так и при записи, файловая переменная перемещается на следующую запись после 6 обработки данных
Способы поиска файла в программе Файл для записи создается автоматически, но файл для чтения должен быть найден В операционной системе DOS Readln ( Filename); Assignfile (f, filename); {$I-} reset (f); {$I+} if IOResult <> 0 then begin writeln (‘ File not found'); exit; end; В среде Delphi (Windows) if Open. Dialog 1. execute then assignfile(f, open. Dialog 1. Filename) else begin Showmessage ('File not found'); exit; end; reset (f); k: =filesize (f); label 1. caption: =' k=' +inttostr (k); Edit 1. Text: = open. Dialog 1. Filename; while not eof(f ) do begin read ( f, sp); ……………………. . 7 Компонент TOpendialog
Стандартная директория для хранения файлов 8
Перемещение по файлу Для текстовых файлов Для типизированных файлов Последовательный доступ к данным N-ая запись может быть прочитана только после N-1 -ой. Функция для определения конца файла Eof(< переменная>) While not eof (f) do – движение по файлу Функция для определения конца строки в файле Eoln (f) While not eoln (f) do – читаем до конца очередной строки в файле. Append (f) – Добавить запись в конец текстового файла. 0 1 a 1 ………. …. . 9 a 10 Прямой доступ к данным Функции и процедуры: 1. Seek( f , i) – указатель установить на i - ую запись 2. Filesize (f)- функция, определяющая конец файла 3. File. Pos (f) – Функция, определяющая номер текущей позиции файловой переменной (Указателя) Seek(f, 10); Truncate(f); - Конец файла переместится к 10 записи в файле a 11 ……… an 9
Особенности использования методов работы с файлами 1. Дозапись в типизированный файл reset(f); k: =filesize(f); sp. ffn: ='Конец'; sp. number: =1000; seek(f, k); write(f, sp); closefile(f); 2. Дозапись в тестовый файл Rewrite(f); Append(f); Write(f, d); Closefile(f); Добавить данные в текстовый файл можно только в конец файла Далее можно читать из файла. Запись в произвольную позицию c номером i в файле будет означать только замену данных С помощью процедуры seek(f, 2) была изменена третья запись Все дополнительные операции возможны только при открытых файлах (Reset) или (Rewrite) 10
Информатика_л_10.ppt