ПРОГРАММИРОВАНИЕ ЗАДАЧ СО СТРУКТУРНЫМИ ТИПАМИ ДАННЫХ

  • docx
  • 26.12.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л3-0025374.docx

ПРОГРАММИРОВАНИЕ ЗАДАЧ СО СТРУКТУРНЫМИ ТИПАМИ ДАННЫХ

Цель работы: научиться составлять программы на  языке 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 имеет вид:

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 (или 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  3ö

A = ç 4  6 ÷ .

ç   9 ÷

è                ø

Результаты:

æ 1  0 ö

A = ç 4  0 ÷ .

ç   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.            Напишите программу к одной из задач дополнительного задания.