Начальные сведения о Турбо Паскале

### Конспект урока | Вопросы самопроверки | Задания на дом | Практикум | Тест

### Файл- это набор данных, который имеет свое имя.
Имя каждого файла имеет следующий формат:
<Имя файла>,<Расширение>
Pas – расширение файлов с исходными текстами программ на Паскале.
Файлы аналогичны массивам, только информация хранится не в оперативной памяти, а на постоянном носителе. Однако имеется существенное отличие файлов от массивов, связанное с природой этих структур данных. Описание массива задается в программе, причем, обычно уже на этапе написания программы. Соответственно программе заранее известны типы элементов массива и их количество.
С файлами дело обстоит совершенно по-другому – для программы, файл, расположенный на каком-либо носителе, является всего лишь набором байтов, а его логическая структура определяется подпрограммой чтения файла. Информация, находящаяся в файле может быть использована тогда, когда программа получает к нему доступ, соответственно, на этапе разработки программы размер файла не известен, вследствие чего для файлов, в отличие от массивов, реализован не индексный метод доступа, а последовательный.

Классификация файлов:

### По логической структуре файлы делятся на:
1. Текстовые (информация представлена в виде, понятном пользователю);
2. Двоичные (вывод информации в фоиате, принятом для хранения информации в оперативной памяти).
В свою очередь двоичные файлы разделяются на нетипизированные и типизированные. Нетипизированные файлы представляются в виде совокупности байтов, т.е. каждый элемент нетипизированного файла имеет тип BYTE. Типизированные файлы являются более сложными структурами.

Работа с файлами:
Порядок действия над файлами:

### 1. В разделе описания производится описание файловой переменной, через которую программа будет обращаться с файлом;
2. В разделе логики программы производится сопоставление файловой переменной файлу на диске;
3. Файл открывается для чтения или записи;
4. Производится чтение или запись данных в файл;
5. Закрытие файла.
Описание файловой переменной:
А) для текстовых файлов:
Var
<Имя переменной>:Text;
B) Для двоичных нетипизированных файлов применяются файловые переменные типа File:
Var
<Имя переменной>:File;
C) Для двоичных типизированных файлов применяются переменные типа File с указанием типа элементов в файле после ключевого слова Of:
Var
<Имя переменной>:File Of <Тип элементов>;
Сопоставление файловой переменной файлу на диске производится независимо от типа файла.
В Турбо Паскале для сопоставления используется процедура Assign (англ-назначить), имеющая следующий формат:
Assign (<Файловая переменная>,<Имя файла>);
Файловая переменная – переменная или константа типа String, содержащая полное или относительное имя файла на диске.
Открытие файла для чтения или для записи
Каждый файл, которому сопоставлена файловая переменная может находится в 3-х состояниях:
1. Файл закрыт – с ним нельзя выполнять никаких действий;
2. Файл открыт для чтения: для файла допустима операция получения элемента, на который указывает указатель текущего элемента;
3. Файл открыт для записи: для файла допустима операция добавления или изменения текущего элемента, на который указывает указатель текущего элемента.
Открытие файла для чтения:
Reset (<Файловая переменная>);
Файл должен существовать на диске, файловая переменная должна содержать имя реально существующего файла.
Открытие файла для записи:
Rewrite(<Файловая переменная>);
Наличие файла на диске не требуется. Если файл с таким именем не существует, то он будет создан. Если же файл существует – все его содержимое будет удалено при открытии для записи.
Чтение данных из файла и запись данных в файл.
Текстовые файлы.
Чтение и запись производится операторами Read, Readln, Write, Writeln с указанием файловой переменной, сопоставленной файлам, в которые необходимо произвести ввод или вывод информации, в качестве первого параметра:
Read(<Файловая переменная>,<Приемник информ.1>,…,<Приемник информ.n>);
Readln(<Файловая переменная>,<Приемник информ.1>,…,<Приемник информ.n>);
Write(<Файловая переменная>,<Выводимая информация>,…,< Выводимая информация >);
Writeln(<Файловая переменная>,< Выводимая информация >,…,< Выводимая информация >);
Пример:
Создадим текстовый файл, содержащий строку «Мой текстовый файл». Файл будет иметь имя Text1.txt и находится в том же каталоге, что и текст программы.
Program WriteTextFile;
Var
f:Text; {Описание файловой переменной f}
Begin Assign (f,’text1.txt’); {сопоставление файловой переменной f файлу text.txt, находящемуся на диске}
Rewrite (f); {открытие файла для записи}
Write (f,’ Мой текстовый файл’); {Вывод строки в файл}
Close (f); {Закрытие фала}
End.
Убедиться, что файл создан, можно с помощью любого текстового редактора.
Закрытие файла.
Закрыть – перевести в неактивное состояние, файл будет недоступен для чтения и записи.
Close (<Файловая переменная>);
Пример:
Прочитать информацию из файла, созданного предыдущим примером:
Program ReadTextFile;
Uses Crt;
Var
F:Text; {Описание файловой переменной }
S:string; {описание строковой переменной, в которую будет читаться инф-ция из файла}
Begin
Clrscr;
Assign(f,’text.txt’); {сопоставление файловой переменной f файлу с именем text.txt находящемуся на диске}
Reset(f);
Readln(f,s);
Writeln(s);
Close(f)
Readkey;
End.
Двоичные типизированные файлы.
Двоичные файлы содержат информацию, аналогичную по строению информации в оперативной памяти. Чтение и запись осуществляется процедурами Read и Write. Тип данных, записываемых в файл, должен соответствовать типу, заявленному в описании файловой переменной.
Read(<Файловая переменная>,<Приемник информ.1>,…,<Приемник информ.n>);
Write(<Файловая переменная>,<Источник информации 1>,…,< Источник информации n>);
В качестве параметров Источник информации должны использоваться переменные. Использование констант недопустимо.
Добавление информации в текстовые файлы.
Информация добавляется в конец. Файл следует открывать процедурой Append (англ.-добавить).
Append (<Файловая переменная>);
Файл открывается для записи, указатель текущего элемента перемещается в конец файла.
Пример:
Допишем к файлу, созданному программой WriteTextFile еще одну строку «Состоит из двух строк».
Program WriteTextFile2;
Var
t:text; {описание файловой переменной}
Begin
Assign (t,’text.txt’);
Append (t);
Writeln (t);
Write (t,’Состоит из двух строк’);
Close (t)
End.
Файл Text.txt будет содержать две строки: «Мой первый текстовый файл» и «Состоит из двух строк».

### 1. Что такое "Файл"?
2. Каков формат имени файла?
3. Какое расширение имеют файлы, созданные сисиемой программирования Паскаль?
4. Где обычно хранятся файлы?
5. Известен ли размер файла на этапе разработки программы?
6. Какова классификация файлов?
7. Каков порядок действия над файлами?
8. Как описывается файловая переменная?
9. Какой командой открывается файл для чтения?
10.Какой командой открывается файл для записи?
11.Для чего необходимо сопоставление файловой переменной файлу на диске?
12.С помощью каких операторов осуществляется чтение данных из файла и запись данных в файл?
13.Какой оператор позволяет закрыть файл, т.е. перевести файл в неактивное состояние?

### Создать текстовый файл, содержащий строку «Мой первый опыт создания текстового файла». Файлу дать имя Text1.txt и расположить в том же каталоге, что и текст программы. Ввести программу создания текстового файла в систему программирования Паскаль, запустить на выполнение, проверить с помощью любой программы, работающей с текстовыми файлами наличие файла.