Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 140

| >{ Поместить в стек 100 вещественных значений: }

| >for I := 1 to 100 do begin

| >R := I; { перевод в тип Real }

| >Push( St, R ); {и поместить его в стек }

| >end; { for I }

| >WriteLn( ' ':20, 'Первые 100 чисел' );

| >WriteLn( ' ': 17, '(вещественные значения)' );

| >WriteLn;

| >while not Empty(St) do begin { Пока стек не пуст: }

| >for B:=1 to 10 do begin { порциями по 10 элементов: }

| >Pop( St,R ); { вытолкнуть следующее зна- }

| >Write( R : 5 : 1 ) { чение и напечатать его }

| >end; { for В }

| >WriteLn { закрытие строки 10 чисел }

| >end; { while }

| >ReadLn { пауза до нажатия клавиши ввода }

| END.


Рис. 11.11

Обращаем внимание на рекурсивность в определении списка (вернее, его узла типа Node на рис. 11.10). В самом деле, тип ссылки на узел (NodePtr) определен, до того как задан сам тип узла Node.

- 219 -

Но в то же время поле Next узла имеет тот же тип NodePtr. Этот парадокс типов Паскаля разрешается самим компилятором. Можно определять ссылки на данные, содержащие элементы того же типа ссылки. Рекомендуется именно такой способ их задания, как в примере. Однако можно было бы перенести описание типа NodePtr за описание типа Node — ничего страшного не произошло бы.

- 220 -

Глава 12. Ввод-вывод данных и файловая система

Любой обмен данными подразумевает наличие источника информации, канала передачи и ее приемника. В случае обмена данными между программой и периферийными устройствами одним концом канала обмена данными всегда является оперативная память ПВЭМ. Другой конец этого канала в Турбо Паскале определен как файл.

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

Операция вывода данных означает пересылку данных из рабочей памяти (ОЗУ) в файл, а операция ввода – заполнение ячеек памяти данными, полученными из файла.

Файловая система, реализуемая в Турбо Паскале, состоит как бы из двух уровней: логических файлов и физических файлов.

12.1. Понятие логического файла


Логический файл описывается как переменная одного из файловых типов, определенных в Турбо Паскале. После того как в программе в разделе описания переменных объявлена файловая переменная, она может быть использована как средство общения с любым физическим файлом, независимо от природы последнего. Само имя физического файла может появиться в программе только один раз, когда специальной процедурой устанавливается, что объявленный логический файл будет служить средством доступа именно к этому физическому файлу (данным на диске, портам, печати и т.п.) Если, например, мы хотим работать с текстовым файлом 'A:\TEXT.DOC', то в программе должны быть такие строки: