- •Лабораторная работа № 1. Программирование последовательных вычислений
- •Лабораторная работа № 2. Программирование разветвлений
- •Лабораторная работа № 3. Программирование циклов
- •Лабораторная работа № 4. Программирование задач с одномерными массивами
- •Лабораторная работа № 5. Программирование задач с двумерными массивами
- •Лабораторная работа № 6. Программирование процедур и функций
- •Лабораторная работа № 7. Программирование структурных типов данных
Лабораторная работа № 7. Программирование структурных типов данных
Что такое файл? Какие бывают виды файлов и как они обозначаются?
Файлы – упорядоченные наборы данных различного типа, хранящиеся в памяти.
В языке Pascal файлы бывают:
Текстовые (типа Text).
Типизированные (типа File of …).
Нетипизированные (типа File).
Над текстовыми файлами обычно применяются следующие стандартные процедуры:
Assign(FP,F) – связывание файловой переменной FP с именем файла F.
Reset(FP) – открытие файла, связанного с файловой переменной FP, для чтения.
ReWrite(FP) – открытие файла, связанного с файловой переменной FP, для записи новых данных с удалением старых.
Append(FP) – открытие файла, связанного с файловой переменной FP, для записи новых данных с добавлением к старым.
Close(FP) – закрытие файла, связанного с файловой переменной FP.
Read(FP,P1,…) – ввод значений переменных P1, … из файла, связанного с файловой переменной FP.
ReadLn(FP,P1,…) – ввод значений переменных P1, … из файла, связанного с файловой переменной FP, и перевод указателя в файле на новую строку.
Write(FP,V1,…) – вывод значений выражений V1, … в файл, связанный с файловой переменной FP.
WriteLn(FP,V1,…) – вывод значений выражений V1, … в файл, связанный с файловой переменной FP, и перевод указателя в файле на новую строку.
Какие процедуры применяются для связи файловой переменной с именем файла и для закрытия файла?
Assign – для связи
Close - закрыть
Какие процедуры применяются для открытия файла?
Для чтения – reset
Для записи – rewrite
Какие процедуры применяются для ввода данных из файла?
Read, Readln
Какие процедуры применяются для вывода данных в файл?
Write, Writeln
Что такое запись и поле?
Запись – неупорядоченный набор величин разных типов, называемых полями.
Поле – именованная величина, являющаяся частью записи.
Какой вид имеет описание записи и что это означает?
Описание записи в разделе описания переменных (Var) на языке Pascal имеет вид:
Zap : record
SP1 : T1;
…
SPN : TN
end;
где record – запись, end – конец описания записи, Zap – имя записи, SP1 – список полей 1-й, SPN – список полей N-й, T1 – тип полей в 1-м списке, TN – тип полей в N-м списке.
Это означает, что переменная Zap является записью, включающей поля в списке SP1 типа T1 … поля в списке SPN типа TN.
Какой вид имеет доступ к полю записи и что это означает?
Доступ к полю записи имеет вид:
Zap . Pole
где Zap – имя записи, Pole – имя поля.
Это означает доступ к полю Pole записи Zap.
Какой вид имеет оператор присоединения и что он означает?
Оператор присоединения имеет вид:
with Zap do Op
где with – с, do – делать, Zap – имя записи, Op – оператор.
Это означает, что с полями записи Zap выполнять оператор Op.
Напишите, что означает каждая строка в вышеприведённых программах.
Program Lab7b; Var A:array[1..3,1..3] of real; описание массива i,j:integer; f1,f2:text;описание файловых переменных Begin assign(f1,'Lab7a.txt');подключение файла исходных данных assign(f2,'Lab7c.txt'); подключение файла результатов reset(f1); rewrite(f2);открытие файлов for i:=1 to 3 do for j:=1 to 3 do read(f1,A[i,j]);ввод массива for i:=1 to 3 do for j:=1 to 3 do if i<j then A[i,j]:=0;замена на нули элементов выше главной диагонали writeln(f2,'Массив A');вывод массива в файл for i:=1 to 3 do begin for j:=1 to 3 do write(f2,A[i,j]:10:3); writeln(f2,''); end; close(f1); close(f2);закрытие файлов readln; End. |
Program Lab7d; Var student:record описание записи fam:string[10]; описание полей записи god:integer; ball:real; end; stip:real; Begin with student do readln(fam,god,ball);ввод полей записи if student.ball=5 then stip:=1000 else stip:=0; writeln('Стипендия – ',stip:5:1,' рублей'); End. |
Напишите программу к одной из задач дополнительного задания.
С использованием ввода исходных данных из файла и вывода результатов в файл найти сумму всех элементов в двумерном массиве и заменить на нули элементы на главной диагонали.
Program Lab7b;
Var
A:array[1..3,1..3] of real;
i,j:integer;
f1,f2:text;
Begin
assign(f1,'Lab7a.txt');
assign(f2,'Lab7c.txt');
reset(f1); rewrite(f2);
for i:=1 to 3 do
for j:=1 to 3 do
read(f1,A[i,j]);
s:=0;
for i:=1 to 3 do
for j:=1 to 3 do
begin
S:=s+a[I,j];
if i=j then A[i,j]:=0;
end;
writeln(f2,’s=’,s);
writeln(f2,'Массив A');
for i:=1 to 3 do
begin
for j:=1 to 3 do
write(f2,A[i,j]:10:3);
writeln(f2,'');
end;
close(f1); close(f2);
readln;
End.