Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инфа экзамен.docx
Скачиваний:
9
Добавлен:
25.09.2019
Размер:
235.09 Кб
Скачать

24. Текстовые и типизированные файлы. Обмен данных с внешними носителями.

 

Файлы на магнитном диске

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

Единицей хранения информации в библиотеке служит книга, единицей хранения информации на диске служит файл. Он имеет имя и занимает на диске область, размер которой зависит от объема файла. В файлах хранят документы, программы, изображения, — одним словом, все, что можно записать при помощи чисел или символов.

Различают два вида файлов: последовательного и произвольного доступа. Последовательные файлы состоят из элементов различной длины, между которыми стоят разделители. Чтобы найти элемент последовательного файла, надо просмотреть все, что ему предшествует.

Файлы произвольного доступа состоят из однотипных элементов, как массивы. Найти любой элемент можно по его порядковому номеру.

В Паскале последовательные файлы называют текстовыми, а файлы произвольного доступа — типизированными.

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

1) открытие файла;

2) чтение или запись;

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

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

Текстовые файлы хранят информацию в виде последовательности символов. Символы составляют строки произвольной длины. В конце каждой строки находятся два особых символа: #13 #10, которые отделяют строку от следующей. Текстовые файлы широко распространены, их способен создавать любой экранный редактор.

В программе на Паскале текстовый файл представляет файловая переменная типа TEXT. Ее описывают предложением

VAR имя: TEXT

Файловой переменной назначают имя файла при помощи оператора

assign (файловая переменная, имя файла),

где имя файла—строка, содержащая дисковое имя файла.

Больше нигде в программе не появится имя файла, всюду его заменит файловая переменная.

Теперь файл необходимо открыть. Текстовый файл можно открыть:

для чтения — оператором

reset (файловая переменная);

для записи — оператором

rewrite (файловая переменная);

для пополнения — оператором

append (файловая переменная).

В файл, открытый для записи или пополнения, можно только писать, из файла, открытого для чтения, можно только читать. Если необходимо прочесть из файла, открытого для записи, его сначала надо закрыть оператором

close (файловая переменная),

а затем снова открыть уже для чтения.

Чтение из текстового файла

Чтение из файла выполняется оператором READ. Если перед списком ввода в операторе READ стоит файловая переменная, он вводит данные не с клавиатуры, а из файла. Например,

var

f:text; a,b,c: integer;

read (a,b,c); read (f,a,b,c);

{ввод с клавиатуры} {ввод из файла)

Текстовый файл для оператора READ такой же источник символов, как и клавиатура, только эти символы следуют друг за другом не во времени, а в пространстве файла. Во времени можно перемещаться лишь в одну сторону, по файлу — тоже. Движение допускается последовательное, от начала к концу, поэтому текстовые файлы называют последовательными.

Чтобы уяснить, что прочтет из файла тот или иной оператор READ, введем понятие указателя файла. Фактически указатель — это номер очередного символа файла, но лучше вообразить его в виде стрелки, направленной в определенную точку файла.

Сразу после открытия стрелка указывает на первый символ файла. Чтение очередной порции данных всегда выполняется, начиная с символа, на который показывает стрелка. После чтения стрелка автоматически передвигается вперед на длину прочитанного участка. Так продолжается, пока стрелка не достигнет конца файла. Дальнейшие попытки чтения вызовут сообщение об ошибке.

Как узнать, можно ли еще читать из файла ? Для этого в Паскале есть логическая функция

EOF (файловая переменная)

Она возвращает true, если достигнут конец файла, и false в противном случае. Название функции сокращает слова «End Of File» — конец файла.

Дополнительный оператор чтения READLN вводит все, предусмотренное списком ввода, и продвигает указатель до начала следующей строки.

ПРИМЕР. Чтение из текстового файла с выводом на экран.

varf: text;s: string;beginassign (f,'XXX.TXT);reset (f);while not eof (f) do beginreadln (f, s);  {ввод из файла}writeln (s);      (вывод на экран) end {while};dose(f) end.

Запись в текстовый файл

Запись в текстовый файл выполняется оператором WRITE, в котором перед списком вывода стоит файловая переменная. Выводимая информация присоединяется к той, что была выведена в файл с момента его открытия.

Желая создать новый файл, его открывают оператором REWRITE. Если же хотят дополнить уже существующий файл, открытие выполняют оператором APPEND. Открытие существующего файла оператором REWRITE приведет к потере того, что находилось там раньше.

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

Дополнительный оператор записи WRITELN выводит все, предусмотренное списком вывода, и символы #13 #10 впридачу.

ПРИМЕР. Ввод с клавиатуры и запись в текстовый файла.

Var  f: text; s: string; begin assign (f,'XXX.TXT); rewrite (f);  {открытие файла} readln (s);{ввод с клавиатуры} while s " do begin writeln (f,s);   {вывод в файл} readln (s);       {ввод с клавиатуры) end {while}; close (f)            {закрытие файла) end.

Устройства DOS

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

Текстовые файлы, моделирующие устройства, существуют в виде распечатки, символов на экране, последовательное электрических сигналов и носят закрепленные за ними имена:

PRN                  принтер, LPT1                синоним PRN, LPT2               второй принтер, LPT3               третий принтер, CON               консоль (дисплей+клавиатура), СОМ1             первый коммуникационный порт, COM2             второй коммуникационный порт, NUL               пустое устройство — игнорирует запись и генерирует сигнал «конец файла» при чтении. Работа с устройствами DOS ничем не отличается от работы с текстовыми файлами на дисках.

ПРИМЕР. Вывод на принтер

var

Lst: text; begin

assign (Lst, 'PRN');

rewrite (Lst);

 writeln (Lst, 'Hallo PRN !');

close (list); end.

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

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

Все элементы типизированного файла одного типа, а значит, и одного размера. Именно благодаря этому возможен произвольный доступ к элементам типизированного файла, т.к. по номеру элемента однозначно определяется его местоположение на магнитном диске. Нумеруются элементы файла целыми числами, начиная с нуля.

Типизированная файловая переменная описывается предложением

таг имя: file of базовый тип

Связь файловой переменной с набором данных на диске выполняется, как и для текстовых файлов, оператором Assign.

В отличие от текстовых, типизированные файлы допускают чередование операций записи и чтения независимо от того, каким оператором, Reset или Rewrite, был открыт файл. Оператором Reset открываются уже существующие файлы, а оператором Rewrite — новые. Закрывается файл оператором Close. Внешне все четыре оператора не отличаются от таких же операторов для текстовых файлов.

Чтение из типизированного файла выполняется оператором

Read (файл, vl [,v2,...,vN]), запись — оператором

Write (файл, vl [,v2,...,vN]),

где v1,v2,...,vN —переменные базового типа.

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

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

Seek (файл, номер элемента: longint)

Этот оператор устанавливает указатель файла на элемент, номер которого является вторым параметром. Именно этот элемент будет считан или записан при очередном вводе или выводе.

Текущее положение указателя файла возвращается функцией

FilePos (файл) : longint,

а общее количество записей — функцией

FlleSize (файл): longint

Как и для текстовых файлов, ситуация «конец файла» диагностируется функцией EOF (файл).

Поскольку типизированные файлы не нуждаются в разделителях элементов, функция EOF-и дополнительные операторы ReadLn и WriteLn для них не имеют смысла.

ПРИМЕР. Работа с типизированным файлом.

var

f: file of real;

R: real;

i:integer; begin

{создать новый файл по имени REAL-FILE.DAT}

assign (f, 'REALFILE.DAT');

rewrite (f);

{сохранить вещественные числа в типизированном файле} for i := 1 to 5 do begin readln {R);

write (f,R); end;

{записать последнее число на место первого} seek (f, flleSize (f) - t); read (Г,* R); seek (f, 0); write {f, R);

{дописать в файл число 5.5} seek (f, fiiesize {f)); R := 5.5; write (f, R);

{вывести содержимое файла на экран} reset (f);

(без закрытия не будут видны изменения}

while not eof (f) do begin read (f,R>; writeln (R); end {while};

{закрыть файл} close (f); end.

 

 

 

Информатика и программирование. Вопросы к экзамену

 

1.

Файловая система. Директория, файл, путь. (2)

2.

Основные команды операционной системы для работы с файлами. (3)

3.

Физические носители данных. Их классификация, характеристики и назначение. (5)

4.

Статическая и динамическая области оперативной памяти. Их назначение и использование.(7)

5.

Указатель. Размещение данных в динамической области оперативной памяти. (8)

6.

Типы данных (целые и вещественные числа). Размер используемой памяти, пределы изменения и точность представляемых данных. (10)

7.

Приоритеты выполнения операций при вычислении значений арифметических и логических выражений. (12)

8.

Структурированные типы данных. Назначение и способы реализации. (14)

9.

Алгоритм, его свойства и формы представления. Типовые структуры алгоритма. (16)

10.

Линейная структура и ее свойства. Ввод и вывод данных. Оператор присваивания.(17)

11.

Циклическая структура. Назначение и основные элементы. (19)

12.

Цикл с явно заданным количеством повторений. Основные элементы и варианты реализации. (20)

13.

Цикл с неявно заданным количеством повторений. Основные элементы и варианты реализации. (21)

14.

Типовая структура-разветвление. Основные элементы и варианты реализации. (23)

15.

Процедуры. Назначение, варианты реализации. (24)

16.

Функции. Назначение, варианты реализации. (26)

17.

Формальные  и фактические параметры. Назначение, варианты реализации. (27)

18.

Линейный список. Реализация с использованием массивов. Реализация многомерного массива. (28)

19.

Линейный список. Реализация с использованием связных списков. Примеры применения. (29)

20.

Поиск в линейном списке. Назначение и варианты реализации. (30)

21.

Сортировка данных в линейном списке. Назначение и варианты реализации. (32)

22.

Стек и очередь. Назначение, варианты реализации и примеры применения. (35)

23.

Дерево. Назначение, варианты реализации и примеры применения. (36)

24.

Текстовые и типизированные файлы.  Обмен данных с внешними носителями. (38)

 

 


Яндекс.Деньги