Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛАБОРАТОРНые РАБОТАы с 9.doc
Скачиваний:
26
Добавлен:
10.05.2015
Размер:
545.28 Кб
Скачать

Контрольные вопросы.

  1. В чем состоит основная идея ООП?

  2. Что определяет класс?

  3. В каком разделе программы должен быть описан объект (экземпляр класса)?

  4. Что отличает структуру объекта от структуры запись?

  5. Что такое метод?

  6. Какова суть свойства инкапсуляция?

  7. Что означает наследование объекта?

  8. Укажите, что будет базовыми объектами для объекта – многоэтажный многоквартирный дом.

  9. Что понимается под полиморфизмом операций?

  10. Что такое конструктор, деструктор?

  11. Что значит – виртуальный метод?

Лабораторная работа №12 файлы Текстовый файл

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

Для доступа к элементам файла, в программе, следует объявить файловую переменную.

Объявление файловой переменной

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

Var

Имя файловой переменной: TextFile;

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

Операции над текстовым файлом

1) Назначение файловой переменной физического файла

Связь файловой переменной с файлом устанавливается с помощью процедуры Assingfile.

Формат процедуры:

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

Имя файла – это параметр, тип которого string. Имя файла создается по правилу операционной системы. Если файл находится в одной папке с программой, то достаточно указать только имя файла, в противном случае надо указать полный путь к файлу, например: D:\User\lab\A.txt. Когда связь с файлом установлена, его можно открыть для ввода или вывода информации.

Примеры связывания файла с файловой переменной :

Var

F: textfile;

Filename: String;

Begin

//Имя файла задано непосредственно в вызове процедуры

Assignfile (F,’A.txt’);

//Имя файла вводит пользователь в переменную Filename.

Assignfile (F,Filename);

End.

2) Открытие файла для чтения

Существующей текстовый файл можно открыть только для чтения с помощью процедуры Reset.

Формат процедуры

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

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

Если открывается уже открытый файл, то он сначала закроется, а затем вновь откроется. Пример процедуры открытия файла для чтения: Reset(F);

3)Открытие файла для записи (создание нового файла)

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

Формат процедуры

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

Пример создания нового файла с именем B.txt в текущей папке:

Assignfile(F,’B.txt’);

Rewrite(F);

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

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

Формат процедуры

Append(Файловая переменная);

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

Assignfile(F,’B.txt’);

Append(F);

4) Вывод данных в текстовый файл

Вывод данных в текстовый файл может быть выполнен процедурами write и writeln.

Форматы процедур ввода данных в файл:

Write (Ф.п, список выражений);

Writeln(Ф.п, список выражений);

Writeln(Ф.п.);

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

Процедура writeln после вывода в файл значений списка выражений запишет в файл маркер конца строки включающий символы #13(символ конца строки) и #10(перевод каретки на новую строку).

Процедура Writeln(Ф.п.) записывает в файл только маркер конца строки.

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

Var

F:Textfile;

Begin

Assignfile(F,’A.txt’);

Rewrite(F);

Write(F,125, );

Write(F,126,  );

Writeln(F);

Writeln(F,127);

End.

Содержимое файла A.txt после выполнения программы

125 126 #13#10127#13#10

5)Чтение данных из файла

Чтение данных из текстового файла осуществляется процедурами Read или Readln.

Форматы процедур

Read(Ф.п., Список переменных);

Readln(Ф.п., Список переменных);

Readln(Ф.п.);

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

  • Числовые данные должны отделяться от других данных символами пробел или Enter или табуляцией.

  • Символьная информация должна следовать без разделителей за числовой информацией.

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

Процедура Read читает данные из файла и записывает их в переменные, но маркер конца строки не читает. Readln читает данные и читает маркер конца.

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

Пусть файл A.txt содержит данные

125 126 #13#10127#13#10

//код программы

Var

F:Textfile;

A,B,C:integer;

Begin

Assignfile(F,’A.txt’);

Reset(F);

Readln(F,A,B);

Readln (F,C);

Writeln(A,’ ‘,B,’ ‘,C)

End.

В результате на монитор будут выведены значения:

125 126 127

6) Закрытие файла

Данная операция прекращает доступ к данным. Освобождает буфер файла.

Формат команды.

Closefile(Ф.п.);

Пример использования:

Var

F:Textfile;

A,B,C:integer;

Begin

Assignfile(F,’A.txt’);

Reset(F);

Readln(F,A,B);

Readln (F,C);

Closefile(F);

Writeln(A,  , B,  , C)

End.

7) Проверка существования файла

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

Способы:

  • Использование функции ioresult которая возвращает результат операции открытия файла. Если файл открылся, то функция вернет 0, иначе - код прерывания (число больше 0 ). При использовании функции ioresult следует использовать директиву компилятора {$I+/-}.

Пример использования функции

Begin

Assignfile(F,’A.txt’);

{$I-} //отключить контроль над операциями ввода/вывода

Reset(F);

{$I+} //включить контроль над операциями ввода/вывода.

If ioresult = 0 then Обработка данных файла.

End.

  • Использование функции FileExists(имя внешнего файла).

Функция возвращает true если файл, имя которого указано в вызове функции, существует. В противном случае функция возвращает false.

var

F:textFile;

begin

Assignfile(F,'A.txt');

if FileExists('A.txt') then

begin

Reset(F);

writeln('существует ');

end

else

writeln(' Не существует ');

Readln

end.

8) Обнаружение символа - конец файла

В текстовом файле количество компонентов может быть заранее неизвестно. Чтобы обработать все компоненты файла необходимо найти символ - конец файла (код 26). Для нахождения этого символа в языке Pascal используется функция Eof(Ф.п.):boolean, которая возвращает значение true если следующий читаемый символ - символ конца строки, в противном случае функция возвращает значение false.

Пример использования функции Eof.

Пусть текстовый файл A.txt содержит последовательность целых чисел разделенных пробелами. Вывести на монитор все числа.

Var

F:Textfile;

A:integer;

Begin

Assignfile(F,’A.txt’);

if FileExists('A.txt') then

begin

Reset(F);

While not Eof(F) do

Begin

Read(F,A);

Writeln(A);

end

end

else

writeln('Файл не существует ');

Closefile(F);

End.

9) Проверка конца строки файла

Для обнаружения символа конца сроки используется функция Eoln(Ф.п.):Boolean, которая возвращает true если следующий читаемый символ- символ конца строки и false в противном случае.

Пример использования

Пусть файл хранит последовательность чисел. Числа расположены в нескольких строках текстового файла. Количество чисел в строке неизвестно.

Var

F:Textfile;

A:integer;

Begin

Assignfile(F,’A.txt’);

if FileExists('A.txt') then

begin

Reset(F);

While not Eof(F) do

While not Eoln(F) do

Begin

Read(F,A);

Writeln(A);

End;

Readln(F);

end

else

writeln('Файл не существует ');

Closefile(F);

End.