Основы программирования на языке Паскаль
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
ько с клавиатуры, а запись - только на экран. Ввод с клавиатуры буферизуется: символы по мере нажатия клавиш помещаются в буфер, содержимое которого передается в ЭВМ только после нажатия клавиши ENTER, поскольку вводимые и буферизированные символы отображаются на экране. Con применяется по умолчанию для ввода с помощью операторов READ и Readln и для вывода на экран операторов write и writeln, если не указано имя файла FV.
Все внешние устройства ЭВМ трактуются в Pascal как логические устройства, имеющие имена файлового типа и которым соответствуют заранее определенные (стандартные) файлы. Идентификацию (отождествление) устройства и стандартного файла осуществляют специальные программы (драйверы), которые обеспечивают выполнение операций ввода-вывода между процессором и конкретным физическим устройством. Ниже указаны имена файлов и соответствующие им устройства так, как они определены разработчиками системы.
Trm: терминал, предназначенный для ввода с клавиатуры и вывода на экран без редактирования.
Kbd: клавиатура, используемая только для ввода с клавиатуры, при вводе информация не отображается на экран.
PRN: построчно печатающее устройство (принтер), используемое только для вывода.
Aux: вспомогательное устройство, подключающееся через порты.
Usr: устройство пользователя, применяемое при написании собственных драйверов для организации нестандартного ввода-вывода.
10.4. Файлы последовательного доступа, созданные пользователем
Работа с файлом последовательного доступа предполагает его создание, обработку и корректировку. Для создания файла последовательного доступа необходимо:
- объявить файловую переменную;
- привязать файл к физическому носителю информации (присвоить файлу имя). (Assign);
- открыть новый файл (Rewrite);
- подготовить информацию для ввода в компоненту файла, т.е. сформировать запись для ввода в файл в качестве компоненты;
- записать в файл компоненту (Write);
- повторить п. 4, 5 необходимое количество раз;
- закрыть созданный файл (Close).
Для доступа к компонентам последовательного файла (например, для просмотра содержимого файла на экране или для обработки компонент в целях включения их в качестве фрагментов в программу обработки каких-либо данных и т.п.) следует:
- присвоить файлу имя (Assign);
- открыть уже существующий файл (Reset);
- считать текущую компоненту из файла в рабочую область памяти (как правило, типа запись со структурой компоненты), (Read);
- выполнить обработку информации (например, вывести на экран поля записи);
- закрыть файл (Close).
Возможны три типа корректировки файла как прямого, так и последовательного доступа:
1. Расширение файла за счет внесения новых компонент.
2. Полная замена содержимого компоненты.
3. Замена каких-либо полей отдельных компонент.
Замена содержимого компонент отдельных записей или замена полей отдельных записей будет рассмотрена в следующем подразделе при изучении корректировки компонент файлов прямого доступа.
Добавление новых записей в файл последовательного доступа выполняется путем записи компонент в конце файла. Маркер конца файла при этом переносится. Естественно, на физическом носителе при этом должно иметься свободное пространство.
Для записи новых компонент в конце имеющегося файла необходимо:
- присвоить файлу имя (Assign);
- открыть уже существующий файл (Reset);
- установить указатель файла за последней компонентой (Seek (FV, File sise (FV)):
- создать в специально выделенной области памяти (как правило записи) новую компоненту;
- записать новую компоненту в файл (write);
- закрыть файл (Close).
Пример. Организовать последовательный файл с именем PRIM bibl.dos в подкаталоге Prim каталога TURBO на диске С, т.е. C:\TURBO\bibl.dos. Компонента должна иметь структуру: индекс книги, порядковый номер экземпляра, фамилию, инициалы первых трех авторов (если их несколько), название книги. Блок создания файла оформить в виде процедуры с именем org. Блок доступа к компонентам файла оформить в виде процедуры с именем obr., а блок корректировки в виде процедуры с именем Rash.
Program Prim47;
type books=record {базовая запись}
nomer:integer;
avtor:string[16];
nazv:string[30];
index:integer; end;
var bf:file of books; { описать файловую переменную }
rb:books; { участок памяти со структурой }
{ компоненты файла }
procedure org;
begin assign(bf,C:\TURBO\PRIM\bibl.dos);
Rewrite(bf);
with rb do { работать с записью rb без уточненных имен }
while True do
begin writeln(ввести номер книги);
readln(nomer);
if nomer=9999 then {9999 признак окончания ввода данных}
Begin close(bf); Exit end;
writeln(ввести имя автора);
readln(avtor);
writeln(ввести название книги);
readln(nazv);
writeln(ввести значение индекса);
readln(index);
write(bf,rb); { записать компоненту из rb в файл }
end; end;
procedure Obr;
Begin Assign(bf,C:\TURBO\PRIM\bibl.dos);
Reset(bf);
with rb do