Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект_лекций.doc
Скачиваний:
18
Добавлен:
26.04.2019
Размер:
1.11 Mб
Скачать

15.2.Программа “ Жизненный путь файла “

(Создание файла, запись в файл, чтение из файла, уничтожение файла)

Program JPF;

Type TF = array [1..3] of real;

Var FL : file of TF;

AR: TF;

i, j: integer;

Begin

{создание файла}

ASSIAN(FL, ‘A:\F3.RR‘);

REWRITE (FL);

for j :=1 to 4 do

begin

for i:=1 to 3 do AR [i]:=i + j*100;

WRITE(FL ,AR);

end;

CLOSE(FL);

{чтение информации из файла}

RESET (FL);

for j :=1 to 2 do

begin

READ(FL, AR);

for j :=1 to 3 do WRITE (AR[i]:10:3);

WRATELN;

end;

CLOSE(FL);

{уничтожение файла}

ERASE(FL);

End.

Семантика →звуковая транскрипция

и прагматика {пояснение смысла и цели} операторов этой программы.

Program JPF ; → Начни чтение и трансляцию команд (операторов)

программы с именем JPF .

{ текст программы должен быть размещен в файле с именем JPF.pas }

Type TF= array [1..3] of real ; → Запомни под именем TF структуру информационных объектов (ИО), которые состоят из трех, последовательно расположенных, чисел стандартного типа Real .

{ переменные типа TF образуют отдельные записи файла}

Var FL : file of TF ; → Размести в оперативной памяти ИО с именем FL. Тип этого ИО – файловая переменная, предназначенная для обслуживание файлов с записями структуры TF.

AR : TF ; → Размести в оперативной памяти ИО с именем AR, структура этого ИО описана ранее под именем TF .

{В эту область памяти (переменную с именем AR) планируется копировать

(читать) информацию из файла. Информация из AR будет также копироваться

(записываться) в файл, т.е. на ВЗУ(Внешнее Запоминающее Устройство)}

i , j : integer ; → Размести в оперативной памяти два ИО (носителя цело-

численной информации) с именами i и j.

{ i и j – рабочие (вспомогательные) переменные программы

для организации циклических вычислений }

Begin → Начни чтение “исполнимых“ операторов программы.

ASSIGN ( FL , ‘A : \ F3 . RR‘ ) ; → Внеси в файловую переменную FL имя

конкретного файла (в нашем случае это имя: A : \ F3 . RR).

{ файл планируется создать на флоппи-диске A :\ , собственное имя файла F3.RR }

REWRITE (FL) ; → Создай новый (пустой) файл, параметры которого указаны (ранее записаны) в файловой переменной FL.

{если файл с именем F3 . RR уже существует на диске A : \ , то его

содержимое будет уничтожено, т.е. “стерто с дискеты“ }

For j : =1 to 4 do → Повторяй выполнение всех операторов, размещённых ниже, в операторных скобках begin … end, последовательно наращивая на 1 содержимое переменной j начиная от 1 и до 4 .

{ j – счетчик количества записей (номер очередной записи) заносимых в FL}

Begin → Открой операторную скобку.

For i: =1 to 3 do → Повторяй выполнение, следующего за словом-разделителем DO, оператора присвоения, последовательно наращивая на 1 содержимое переменной i начиная от 1 и до 3 .

{ организуем перебор всех трех элементов массива AR ,

содержимое которого планируется записать в файл }

AR[i] : = i + j*100 ; → Выполни арифметические операции над числовыми переменными, указанными в правой части оператора, и внеси результат в i–ый элемент массива AR .

{ заполняем массив AR (фрагмент ОЗУ) " некой полезной информацией "}

WRITE(FL , AR) ; → Перепиши информацию из фрагмента ОЗУ с

именем AR в файл FL.

{Записать (скопировать) информацию из массива AR в очередную запись файла, описанного в файловой переменной FL}

End; → Закрой операторную скобку.

CLOSE ( FL ) ; → Закрой доступ к файлу, описанному в переменной FL.

{теперь в файл с именем «A:\F3.RR» нельзя: ни читать, ни писать}.

{ в созданный файл F3 . RR внесены четыре записи, каждая из которых содержит по три числа. Информация файла может интерпретирована как таблица чисел: }

101

102

103

1-ая запись файла

201

202

203

2-ая запись файла

301

302

303

3-ая запись файла

401

402

403

4-ая запись файла

RESET(FL) ; → Открой доступ к файлу FL для чтения информации.

{имя и параметры файла ранее внесены в файловую переменную FL}

For j : =1 to 4 do → Повторяй выполнение всех операторов, приводимых в ниже следующих операторных скобках begin … end, последовательно наращивая содержимое переменной j от 1 до 4 .

{организуем цикл чтения всех четырех записей файла}

Begin → Открой операторную скобку.

READ(FL, AR); → Прочти запись из файла FL в память по адресу AR.

{содержимое очередной записи файла будет скопировано в массив AR}

For i: =1 to 3 do → Повторяй выполнение нижеследующего оператора печати последовательно наращивая содержимое переменной i от 1 до 3.

{Цикл печати всех трех элементов массива будет выполнена в одной строке экрана}

WRITE(AR[i]: 10: 3) ; → Напечатай на экране монитора содержимое переменной AR[i] как число в формате F. Курсор экрана оставь в позиции за последней отпечатанной цифрой.

{формат F:10:3 означает размещение действительного числа в 10-и позициях, три из которых отводятся под запись дробной части}

WRITELN ; → Напечатай на экране «ничего...», но обязательно перемести

курсор экрана в следующую строку.

{Эта команда позволяет распечатать записи файла строго: одна под

другой, т.е. вывести содержимое файла в форме таблицы}

End; → Закрой операторную скобку.

CLOSE (FL) ; → Закрой доступ к файлу FL для чтения и записи.

{теперь описанный в файловой переменной FL файл можно

переименовывать или удалять}

ERASE (FL) ; → Уничтожь файл FL.

{На дискете будет вытерта (удалена) только информация о названии файла, но

само содержимое файла, т.е. соответствующие магнитные записи останутся}

End. → Заверши чтение блока " исполнимых " операторов программы и всей программы.

Результат работы программы – печать на экране монитора таблицы:

101.000 102.000 103.000

201.000 202.000 203.000

301.000 302.000 303.000

401.000 402.000 403.000