Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
6_10__лабы.doc
Скачиваний:
3
Добавлен:
06.09.2019
Размер:
133.63 Кб
Скачать

2 Лабораторная работа №7

Файлы и работа с ними в языке Pascal

Цель : ознакомиться и научиться работать с файлами в среде Турбо Паскаля.

    1. Домашнее задание

Работа с файлами.

Под файлом понимается либо именованная область внешней памяти ПК (жёсткого диска, гибкой дискеты, электронного «виртуального» диска), либо логическое устройства- потенциальный источник или приёмник информации.

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

Файловые типы или переменную файлового типа можно задать одним из трёх способов:

  • <имя> = FILE OF <тип>;

  • <имя> = TEXT;

  • <имя> = FILE;

В зависимости от способа объявления можно выделить три вида файлов:

  • типизированные файлы (задаются предложением FILE OF...);

  • текстовые файлы (определяются типом TEXT);

  • не типизированные файлы (определяются типом FILE);

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

Доступ к файлам.

Любой программе доступны два предварительно объявленных файла со стандартными файловыми переменными: INPUT-для чтения данных с клавиатуры и OUTPUT-для вывода на экран. Стандартный Паскаль требует обязательного упоминания этих файлов в заголовке программы.

В Турбо Паскале это необязательно, вот почему заголовок программы можно опускать.

Имя файла.

Имя файла – это любое выражение строкового типа, которое строится по правилам определения имён в MS-DOS (операционной системе ПК):

  • имя содержит до восьми разрешённых символов; разрешённые символы -это прописные и строчные латинские буквы, цифры и символы:! @ # $ & ( ) ' -

  • имя начинается с любого разрешённого символа;

  • за именем может следовать расширение – последовательность до трёх разрешённых символов; расширение, если оно есть, отделяется от имени точкой.

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

За именем диска может указываться имя каталога, содержащего файл. Если имени каталога предшествует обратная косая черта, то путь к файлу начинается из корневого каталога, если черты нет – из текущего каталога, установленного в системе по умолчанию. За именем каталога может следовать одно или несколько имён каталогов нижнего уровня. Каждому из них должна предшествовать обратная косая черта. Весь путь к файлу отделяется от имени файла обратной косой чертой. Максимальная длина имени вместе с путём – 79 символов.

Логические устройства.

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

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

Инициация файла.

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

Для чтения файл инициируется с помощью стандартной процедуры RESET. Стандартная процедура REWRITE инициирует записи информации в файл или в логическое устройство, связанное ранее с файловой переменной. Процедурой REWRITE нельзя инициировать запись информации в ранее существовавший дисковый файл: при выполнении этой процедуры старый файл уничтожается и никаких сообщений об этом в программу не передаётся. Стандартная процедура APPEND инициирует запись в ранее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедура применима только к текстовым файлам. Процедурой APPEND нельзя инициировать запись в типизированный или не типизированный файл. Если текстовый файл ранее уже был открыт с помощью RESET или REWRITE, использование процедуры APPEND приведёт к закрытию этого файла и открытию его вновь, но уже дл добавления записей.

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

Текстовые файлы связываются с файловыми переменными, принадлежащими стандартному типу TEXT. Текстовые файлы предназначены для хранения текстовой информации. Именно в такого типа файлах хранятся, например, исходные тексты программ. Компоненты (записи) текстового файла могут иметь переменную длину, что существенно влияет на характер работы с ними. Текстовый файл трактуется в Турбо Паскале, как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи (строки) специальный признак EOLN, а в конце файла – признак EOF. Эти признаки можно протестировать одноимёнными логическими функциями.

Лабораторные задания.

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

Program Mas;

uses crt;

const m=10;

n=10;

var

i,j:integer;

f:text;

Massiv:array [1..m,1..n] of real;

begin

clrscr;

textcolor (15);

writeln ('PROGRAM FOR WORK WITH MASSIV');

writeln ('Press enter to run program');

readln;

writeln ('Massiv');

randomize;

for i:=1 to m do begin

for j:=1 to n do begin

massiv[i,j]:=random (10);

write (massiv[i,j]:3:0,'');

end;

writeln;

end;

writeln;

writeln;

writeln ('Press enter to see new massiv');

readln;

writeln ('new massiv');

for i:=m downto 1 do begin

for j:=1 to n do

write (massiv [i,j]:3:0,'');

writeln;

end;

readln;

assign (f, 'E:\mass1.txt');

rewrite (f);

for i:=1 to 10 do

for j:=1 to 10 do

begin

write (f,massiv [i,j]:0:1,' ');

end;

close (f);

end.

Вывод: научились работать с файлами в среде Турбо Паскаль.

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