Реферат на тему:
Послідовний запис у типізовані файли
Перш, ніж записувати в файл, слід відкрити його для запису. Це задається процедурою REWRITE. Після виклику ReWrite(f) значення f подається як (, 0, W), тобто незалежно від попереднього значення f послідовність у файловій змінній стає порожньою:
F
стан
W Значення 0 вказівника доступного елемента свідчить про те, що можна записати нове значення в перший, тобто з номером 0, елемент файла. Ця процедура викликається для створення нового файла або поновлення старого зі знищенням даних, що були в ньому. Після її виконання файл називається встановленим у початковий стан для запису.
Запис у файл задається процедурою WRITE. При виконанні її виклику
write ( f, вираз-типу-компонентів-файла)
обчислюється значення виразу та присвоюється доступному елементу файла, після чого вказівник доступного елемента зсувається на 1 елемент. Наприклад, після виконання останього з наведених операторів у програмі
program...
varf: file ofinteger; x: integer
begin ...
rewrite(f); x:=2;
write(f, 1); write(f, x); write(f, x*x);
…
end.
файлова змінна f має значення, що подається як (, 3, W).
Узагалі, значення (f, …, fn-1>, n, W) файлової змінної f при виконанні write(f, вираз) міняється на (f, …, fn-1, V>, n+1, W), де Vпозначає значення виразу.
У виклику write можна вказувати довільне число аргументів-виразів того самого типу: write ( f, вираз1,…, виразN). Такий виклик виконується насправді як послідовність
write(f,вираз1); …; write(f,виразN).
Наприклад, замість write(f, 1); write(f, x); write(f, x*x) можна написати write(f, 1, x, x*x).
Підкреслимо, що процедуру writeln не можна застосовувати до типізованих файлів. Вона призначена лише для роботи з текстами.
Приклад 1.Треба створити файл із такими даними про студентів групи: прізвище та ім’ я студента, а також середній бал його успішності.
Дані про студента можна подати записом типу
Student = record
SName, Name: string[20];
Ball: real
end.
Зв’ язування та встановлення файла в початковий стан для запису оформимо процедурою OpenFile, а створення – процедурою CreatFile у такій програмі:
program InPutGroup;
type
Student = record
Sname, Name: string[20];
Ball: real;
end;
var
Fi: file of Student; { Файлова змінна Fi – інформаційний файл }
FileName: string; { Змінна для введення імені файла }
procedureOpenFile;
begin
writeln('Задайте ім''я файла, що буде створюватися: ');
readln(FileName);
assign(Fi, FileName);
rewrite(Fi);
end;
procedure InPutFile;
var St: Student;
Ch: char;
begin
repeat
writeln('Задайте дані про студента:');
write('Прізвище>'); readln(St.SName);
write('Ім''я>'); readln(St.Name);
write('Середній бал успішності>'); readln(St.Ball);
write(Fi, St); {***}
write('Чи треба вводити дані про нового студента? «Y»/«N»> ');
readln(Ch);
until(Ch = 'n') or (Ch = 'N');
close(Fi);
end;
begin
writeln('Програма створення файла даних про успішність');
openfile; { Виклик процедури відкривання файла }
creatfile; { Виклик процедури створення файла }
end.