Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпорг..doc
Скачиваний:
12
Добавлен:
16.03.2015
Размер:
347.65 Кб
Скачать

Текстовые файлы в языке Паскаль, их особенности. Основные операции с текстовыми файлами. Ввод их файла, вывод в файл.

Текстовые файлы. Стандартные процедуры и функции для текстовых файлов.

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

type textfile = text; var f: textfile;

или

var f: text;

Заметим, что слово text не является зарезервированным: словом, а является идентификатором стандартного типа, наряду с real, integer и т. п.

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

Текстовые файлы в Турбо-Паскале - это вовсе не аналоги файлов типа filе of char. Знак равенства между этими типами можно поставить лишь со значи­тельными оговорками.

Для текстовых файлов применимы те же операции инициализации, откры­тия и закрытия, что и для обычных файлов:

- процедура assign (f, namе) - задает связь файловой переменной с конкретным файлом на диске,

- процедура reset (f) - открывает текстовый файл для последовательного чтения из него,

- процедура rewrite (f) - открывает текстовый файл для записи в него,

- процедура close (f) - закрывает файл,

- функция eof (f) - определяет конец файла.

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

- процедура арреnd (f) - служит для специального открытия фала для записи. Она применима только к уже существующим физическим файлам и открывает их для дозаписи, т. е. файл не стирается, как при вызове rewrite, а подготавливается к записи элемента в конец файла. Если append применяется к не­существующему файлу, то возникает ошибка времени счета. Новый файл может быть создан только процедурой rewrite.

После открытия файла процедурой арреnd запись в него будет происходить с того места, где находится признак конца файла (код 26). Вообще говоря, процедура арреnd, кромe способа открытия файла (с конца), ничем не отличается от процедуры rewrite.

- функция eoln (f) : boolean - анализирует текущее положение в текстовом файле f открытом для чтения, Расшифровка этой функции говорит сама за сe­бя: «End Of - Line» .- конец строки. Eoln возвращает значение true, если сле­дующей операцией будет прочитан признак конца строки (символ #13) или конца файла (символ #26) и false во всех прочих случаях. Функция как бы предчувствует результат предстоящего чтения и анализирует его. Необходимость в eoln (f) возникает всякий pа:з, когда заранее не известно, где встретится конец строки.

Cуществует разновидность функции eoln без параметров. В этом случае считается, что действие ее относится к стандартному файлу Inрut, т.е. вводу с клавиатуры.

Операции ввода - вывода

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

Ввод - Read (f , Х) или Read (f , Xl, Х2, ... Хп) и

Rеаdln (f , Х) или ReadLn ( f, Xl, Х2, ... Хп );

Вывод - Write (f , Х) или Write (f , Хl, Х2, ... Хп) и

Wгitеln ( f , X) или WriteLn ( f , Х1, Х2, ... Хп).

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

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

Операторы write и writwln выводят значение Х или список значений Х1, Х2 .... Хn в текстовый файл f. Значения могут иметь лишь целый, вещественный, логический, символьный и строковый типы, а также производные от них. Всевозможные структуры (записи, массивы) должны выводиться по их полям или элементам. Множества, указатели (Pointer), файловые переменные также не мо­гут быть выведены без предварительного их преобразования в выводимые со­ставляющие.

Оператор WriteLn или WriteLn (f), где f – имя логического файла, дан­ный без списка вывода, создает пустую строку, содержащую один только при­знак конца строки.

В Турбо-Паскале при выводе информации в текстовый файл по умолчанию отводится количество позиций, равное размеру этой информации. Так, напри­мер, при выводе символа отводится одна позиция, при выводе строки - число позиций, равное длине строки, при выводе целого числа - число позиций, рав­ное числу значащих цифр плюс одна позиция под знак, если число отрицатель­ное. Это необходимо учитывать при выводе последовательных элементов ин­формации (например, несколько целых чисел) и предусматривать меры, чтобы отдельные элементы информации не сливались друг с другом: вывод разделяющих пробелов, разнесение информации по разным строкам и т. д. исключение составляют вещественные числа - под них выделяются 17 позиций, и при выводе они выравниваются по правому краю выделенного поля.

23.

Функции в языке Паскаль. Описание . Описание (заголовок и тело функции. Возвращаемое значение. Формальные и фктические параметры. Локальные и глобальные переменные. Стандартные функции.

Функции. Описание (заголовок и тело) функции. Вызов функции. Формальные и фактические параметры. Стандартные функции.

при использовании функции должно быть получено только одно значение простого типа.

Function имя функции (формальные параметры) : тип результата ;

Program U;

Uses crt;

Var {раздел описания переменных}

Function d (формальные параметры) : real ;

(раздел описания локальных переменных)

Var

Const

Label

Begin

Раздел операторов

d:=результат;

end;

begin clrscr;

z:=d(фактический параметр)

end.

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

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

22 Типизированные файлы. Стандартные процедуры и функции для тип. файлов. Чтение и запись файлов.

Типизированные файлы состоят из машинных представлений чисел, символов и структур, из них построенных. Они хранят данные в том же виде, что и память ЭВМ. Поэтому посредством типизированных файлов МОЖНО осуществлять обмен данными только между дисками и рабочей памятью программы, но нельзя непосредственно вывести данные на эк­ран ЭВМ. Файлы могут быть заполнены данными в одной программе, а обрабатываться в другой.

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

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

Во-вторых, он содержит компоненты одного типа. Типом ком­понентов может быть любой тип Турбо-Паскаля, кроме файлов. Иными словами, нельзя создать файл файлов.

В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройства внешней памяти.

Файловый тип или переменную файлового типа можно задать с по­мощью ключевых слов fi1e оf и указания типа компонентов или в разделе описаний типов:

type f1 = file оf тип компонентов;

уаг f1, f2 : fl ;

var f1, f2 : file оf тип компонентов;

например

type f = file of integer; (файл состоит из целых чисел)

var f1 : f;

var f : file of char; (элементы файла – символы)

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

assign ( f: filе, пате: string );

- процедура связывает файловую переменную f с существующи­ми или вновь создаваемым в MS-DOS файлом, название которого содер­жится в строке name.

Имя файла на диске состоит из идентификатора, содержащего не более 8 символов, за которым может следовать расширение - последо­вательность до трех разрешенных символов, которое отделяется от имени точкой. Например:

assign ( f, . D : \ Х . dat . ); {связь с файлом X.dat на диске D}

reset ( f : filе );

- процедура открытия файла f для чтения: данных. Чтение начи­нается с первого компонента файла f.

rewrite ( f : filе );

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

close ( f : filе );

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

eof ( f : filе ): boolean;

- логическая функция:: eof ( f ) = true , если достигнут признак конца файла, иначе eof ( f ) = false. Признак конца файла возникает при закрытии файла.

read ( f : filе, s : tp );

- процедура обеспечивает чтение из файла f отдельного компонента и присваивания значения этого компонента переменной s, тип которой tp должен совпадать с типом компонентов файла f.

write ( f: -file, s-: tp );

- процедура выполняет запись значения переменной s в очередной компонент файла f.

seek ( f : filе, п : longint );

- процедура смещает указатель файла f к элементу с заданным но­мером п . Первый элемент файла всегда имеет номер О.

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

filesize ( f : filе ) : longint;

- функция определяет количество элементов файла f. Нумерация начинается с нуля! Сместить указатель на конец файла можно так:

seek( f, filesize( f ) );

filepos ( f : filе ) : longint;

- функция определяет текущую файловую позицию (номер записи, на которую она установлена ).

truncate (f) удаляет конец файла, начиная с позиции, на которую указывает текущий указатель

24.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]