Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Inf_Lab_otch_KhTF_2.doc
Скачиваний:
197
Добавлен:
11.04.2015
Размер:
189.44 Кб
Скачать

Лабораторная работа № 7. Программирование структурных типов данных

  1. Что такое файл? Какие бывают виды файлов и как они обозначаются?

Файлы – упорядоченные наборы данных различного типа, хранящиеся в памяти.

В языке 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, и перевод указателя в файле на новую строку.

  1. Какие процедуры применяются для связи файловой переменной с именем файла и для закрытия файла?

Assign – для связи

Close - закрыть

  1. Какие процедуры применяются для открытия файла?

Для чтения – reset

Для записи – rewrite

  1. Какие процедуры применяются для ввода данных из файла?

Read, Readln

  1. Какие процедуры применяются для вывода данных в файл?

  2. Write, Writeln

  3. Что такое запись и поле?

Запись – неупорядоченный набор величин разных типов, называемых полями.

Поле – именованная величина, являющаяся частью записи.

  1. Какой вид имеет описание записи и что это означает?

Описание записи в разделе описания переменных (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.

  1. Какой вид имеет доступ к полю записи и что это означает?

Доступ к полю записи имеет вид:

Zap . Pole

где Zap – имя записи, Pole – имя поля.

Это означает доступ к полю Pole записи Zap.

  1. Какой вид имеет оператор присоединения и что он означает?

Оператор присоединения имеет вид:

with Zap do Op

где with – с, do – делать, Zap – имя записи, Op – оператор.

Это означает, что с полями записи Zap выполнять оператор Op.

  1. Напишите, что означает каждая строка в вышеприведённых программах.

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.

  1. Напишите программу к одной из задач дополнительного задания.

С использованием ввода исходных данных из файла и вывода результатов в файл найти сумму всех элементов в двумерном массиве и заменить на нули элементы на главной диагонали.

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.