Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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

Поиск

Файлы

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

В языке Pascal файлы бывают:

1. Текстовые (типа Text).

2. Типизированные (типа File of …).

3. Нетипизированные (типа File).

Над текстовыми файлами обычно применяются следующие стандартные процедуры:

1. Assign(FP, F) – связывание файловой переменной FP с именем файла F.

2. Reset(FP) – открытие файла, связанного с файловой переменной FP, для чтения.

3. ReWrite(FP) – открытие файла, связанного с файловой переменной FP, для записи новых данных с удалением старых.

4. Append(FP) – открытие файла, связанного с файловой переменной FP, для записи новых данных с добавлением к старым.

5. Close(FP) – закрытие файла, связанного с файловой переменной FP.

6. Read(FP, P1,…) – ввод значений переменных P1, … из файла, связанного с файловой переменной FP.

7. ReadLn(FP, P1,…) – ввод значений переменных P1, … из файла, связанного с файловой переменной FP, и перевод указателя в файле на новую строку.

8. Write(FP, V1,…) – вывод значений выражений V1, … в файл, связанный с файловой переменной FP.

9. WriteLn(FP, V1,…) – вывод значений выражений V1, … в файл, связанный с файловой переменной FP, и перевод указателя в файле на новую строку.

Строки

Строка – упорядоченный набор символов в кавычках.

Описание строки в разделе описания переменных (Var) на языке Pascal имеет вид:

St: string [ NMax ];

где string – строка, St – имя строки, NMax – максимальное количество символов в строке.

Это означает, что переменная Stявляется строкой, которая может содержать от 1 до NMaxсимволов.

Записи

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

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

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

computer:record

nazv:string[10];

god:integer;

bystr:real;

end;

Это означает, что переменная computer – запись, включающая поля nazv строкового типа, god целочисленного типа, bystr вещественного типа.

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

Zap. Pole

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

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

Пример 2. computer.nazv

Это означает поле nazv записи computer.

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

with Zap do Op

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

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

Пример 3. Ввести поля записи computer без использования оператора присоединения и с его использованием.

a) readln(computer.nazv,computer.god,computer.bystr);

б) with computer do readln(nazv,god,bystr);


Порядок выполнения

1. Зайти в Borland Pascal.

2. Создать новый файл, набрать в нём исходную матрицу A и сохранить её в файле Lab7a.txt.

3. Набрать текст программы для решения задачи № 1 и выполнить программу.

4. Открыть файл Lab7c.txt и записать ответ.

5. Набрать текст программы для решения задачи № 2 и получить ответ для контрольного примера.

Примеры задач

Задача 1. Ввести матрицу A размером 3´3 из файла Lab7a.txt, заменить в ней элементы выше главной диагонали на нули, а затем вывести эту матрицу в файл Lab7c.txt. 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.
Контрольный пример.
Исходные данные: .
Результаты: .
Задача 2. Задана запись студента с полями: фамилия, год рождения, средний балл за сессию. Начислить студенту стипендию, если известно, что за все отличные оценки начисляется стипендия в 1000 рублей, а за остальные оценки стипендия не начисляется. 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.
Контрольный пример.
Исходные данные: Фамилия – Иванов Год рождения – 1989 Средний балл – 5
Результаты: Стипендия – 1000 рублей

Дополнительное задание

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

2. Дан массив студентов из полей записи: фамилия, год рождения, оценки по 3 экзаменам. Найти средний балл студентов 1989 года рождения и старше, а также вычислить количество отличников и задолжников.

Контрольные вопросы

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

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

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

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

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

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

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

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

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

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

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



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 436; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.141.21.106 (0.006 с.)