Цель работы: научиться составлять программы на языке Pascal для программирования задач с файлами, строками и записями.
Оборудование: персональный компьютер типа IBM PC с процессором не ниже Intel Pentium I.
Дидактический материал: плакаты, раздаточный материал.
Файлы – упорядоченные наборы данных различного типа, хранящиеся в памяти.
В языке 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) на языке Pas- cal имеет вид:
где string – строка, St – имя строки, NMax – максимальное количество
символов в строке.
Это означает, что переменная St является строкой, которая может содержать от 1 до NMax символов.
Запись – неупорядоченный набор величин разных типов, называемых полями.
Поле – именованная величина, являющаяся частью записи.
Описание записи в разделе описания переменных (Var) на языке Pascal
имеет вид:
где record – запись, end – конец описания записи, Zap – имя записи,
SP1 – список полей 1-й, SPN – список полей N-й, T1 – тип полей в 1-м списке, TN – тип полей в N-м списке.
Пример 1. Var
computer:record
nazv:string[10]; god:integer; bystr:real;
end;
Это означает, что переменная computer – запись, включающая поля nazv
строкового типа, god целочисленного типа, bystr вещественного типа.
Доступ к полю записи имеет вид:
где Zap – имя записи, Pole – имя поля.
Это означает доступ к полю Pole записи Zap.
Пример 2. computer.nazv
Это означает поле nazv записи computer.
Оператор присоединения имеет вид:
где 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 (или Pascal ABC).
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. |
|
Контрольный пример. |
|
Исходные данные: |
æ 1 2 3ö A = ç 4 5 6 ÷ . ç 7 8 9 ÷ è ø |
Результаты: |
æ 1 0 0 ö A = ç 4 5 0 ÷ . ç 7 8 9 ÷ è ø |
Задача 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. Напишите программу к одной из задач дополнительного задания.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.