Основы программирования на языке Паскаль
йловой переменной>,<Имя файла>); |
|Имя файла задается либо строковой константой, либо через переменную типа |
|Sting. Имя файла должно соответствовать правилам работающей в данный момент|
|операционной системы. Если строка имени пустая, то связь файловой |
|переменной осуществляется со стандартным устройством ввода-вывода (как |
|правило - с консолью). |
|После этого файл должен быть открыт одной из процедур: |
|Reset(<Имя файловой переменной>); |
|Открывается существующий файл для чтения, указатель текущей компоненты |
|файла настраивается на начало файла. Если физического файла, |
|соответствующего файловой переменной не существует, то возникает ситуация |
|ошибки ввода-вывода. |
|Rewrite(<Имя файловой переменной>); |
|Открывается новый пустой файл для записи, ему присваивается имя, заданное |
|процедурой Assign. Если файл с таким именем уже существует, то он |
|уничтожается. |
|После работы с файлом он, как правило, должен быть закрыт процедурой Close.|
| |
|Close(<Имя файловой переменной>); |
|Это требование обязательно должно соблюдаться для файла, в который |
|производилась запись. |
|Теперь рассмотрим непосредственную организацию чтения и записи. |
|Для ввода информации из файла, открытого для чтения, используется уже |
|знакомый вам оператор Read. Правда, в его формате и использовании вы |
|заметите некоторые изменения: |
|Read(<Имя файловой переменной>, <Список ввода>); |
|Происходит считывание данных из файла в переменные, имена которых указаны в|
|списке ввода. Переменные должны быть того же типа, что и компоненты файла. |
| |
|Вывод информации производит, как можно догадаться оператор Write(<Имя |
|файловой переменной>, <Список вывода>); |
|Данные из списка вывода заносятся в файл, открытый для записи. |
|Для текстовых файлов используются также операторы Readln и Writeln с |
|соответствующими дополнениями, относящимися к файловому вводу-выводу. |
|Любопытно, что вывод данных на монитор и ввод с клавиатуры в языке Паскаль |
|тоже являются действиями с файлами. Они даже имеют свои предопределенные |
|файловые переменные текстового типа: Output и Input соответственно. |
|Переменная Output всегда открыта для записи, Input - для чтения. Если не |
|указывать файловые переменные в операторах ввода-вывода (придем к формату, |
|рассмотренному в теме "Операторы ввода-вывода"), то в случае записи по |
|умолчанию выбирается файл Output, в случае чтения - Input. |
|Как вы знаете, любой файл конечен и продолжать чтение из него информации |
|можно лишь до определенного предела. Как этот предел установить? Проверить,|
|окончен ли файл, можно вызовом стандартной логической функции Eof(<Имя |
|файловой переменной>) |
|Она вырабатывает значение True, если файл окончен, и False - в противном |
|случае. |
|Решим следующую задачу: "Написать программу, которая вводит с клавиатуры |
|список фамилий учащихся, а затем распечатывает его, кроме тех учащихся, у |
|которых фамилия начинается с буквы 'Ш'". |
|Так как заранее количество данных не известно, то для их хранения |
|используем файл. Тип элементов - строковый. |
|Program L; |
|Var |
|I,N : Integer; |
|F : File Of String; |
|S : String; |
|Begin |
|Assign(F,'Spis.lst'); {Связываем переменную F с файлом Spis.lst} |
|Writeln('Введите количество учащихся'); |
|Readln(N); {Вводим количество учащихся} |
|Rewrite(F); {Создаем файл для записи в него данных} |
|For I:=1 To N Do {Для всех учащихся} |
|Begin |
|Writeln('Введите фамилию'); |
|Readln(S); |
|Write(F,S) |
|End; |
|Close(F); |
|Reset(F); |
|Writeln; Writeln('Список учащихся:'); |
|While Not(Eof(F)) Do |
|Begin |
|Read(F,S); |
|If S[1]<>'Ш' Then |
|Writeln(S) |
|End; |
|Close(F) |
|End.
| | скачать работу |
Основы программирования на языке Паскаль |