Хелпикс

Главная

Контакты

Случайная статья





ТЕМА: КОМБИНИРОВАННЫЕ ТИПЫ (ЗАПИСИ).



 

№32                                10.10.2020

ТЕМА: "КОМБИНИРОВАННЫЕ ТИПЫ (ЗАПИСИ)".

Цель: ознакомить учащихся с комбинированным типом данных.

Ход урока.

  1. Теоретический материал.

По способу организации и типу компонент выделяют четыре основные разновидности структурированных типов: регулярный тип (массивы); комбинированный тип (записи); файловый тип (файлы); множественный тип (множества).

Во многих экономических и информационных задачах обрабатываются ведомости, документы, каталоги, списки. При этом появляется необходимость объединять данные различного типа в одну группу. Для работы с группой данных в языке программирования Паскаль введено понятие запись. Запись представляет собой совокупность ограниченного числа данных различного типа. Понятие записи рассмотрим на примере ведомости списка учащихся с их оценками

N п/п Фамилия И.О. Оценка
Андреев С.Р. 5 3 4
Павликова Л.П. 5 5 5
Ростоцкий Ю.Т. 4 4 5

Каждая строка в этой ведомости состоит из отдельных элементов - данных различного типа:

а) порядковый номер - целое десятичное число;
б) Фамилия И.О. - массив символов;
в) Оценки - массив целых чисел.

Эти данные можно объединить в одну группу и считать записью.

Для представления такой разнородной, но логически связанной информации удобно использовать комбинированный тип. Необходимо отметить, что в данном случае отдельные компоненты комбинированного типа, ввиду их различной природы, не могут идентифицироваться поряд-ковыми номерами (индексами), как в массивах; поэтому для обозначения компонент используются индикаторы. Таким образом, описание комбинированного типа представляет собой список описаний его элементов (которые называются также полями записи); каждое описание похоже на описание простой переменной. Список полей начинается служебным словом record и должен завершаться служебным словом end. Объявление записи в разделе переменных VAR имеет следующий вид:

VAR имя записи: RECORD
имя элемента 1: тип;
имя элемента 2: тип;
....................
имя элемента n: тип;
END;

Для примера, приведенного выше, описание комбинированного типа может выглядеть следующим образом:

VAR B: RECORD
N: INTEGER;
FIO: PACKED ARRAY[1..20] OF CHAR;
OCENKA: ARRAY[1..3] OF INTEGER;
END;

Рассмотрим более универсальную форму объявления записи - с использованием раздела типов TYPE.

TYPE имя типа = RECORD
имя элемента 1: тип;
имя элемента 2: тип;
...................
имя элемента n: тип;
END;

VAR имя записи: имя типа;
TYPE BEDOM=RECORD
N: INTEGER;
FIO: PACKED ARRAY[1..20] OF CHAR;
OCENKA: ARRAY[1..3] OF INTEGER;
END;
VAR B:BEDOM;

Доступ к элементам (полям) записей производится с помощью конструкции, называемой селектором записи и имеющей следующий общий вид: R.F, где R - переменная комбинированного типа; F - идентификатор поля.

Примеры. Порядковому номеру N записи B присвоить значение 2: B.N:=2; Найти сумму 3 оценок S:=b.ocenka[1]+b.ocenka[2]+b.ocenka[3]

ЗАДАЧА 1. Для каждого студента указаны фамилия и оценка по 5 дисциплинам. Вычислить средний балл для каждого студента.

Решение.При вводе данных необходимо помнить, что под фамилию отводится 15 символов, следовательно, оценки необходимо вводить, начиная с 16 позиции. Например, Иванов С.А. 4 3 5 5 4

program bal;
type str=record
fam:string[15] ;
b1, b2, b3, b4, b5:2..5;
sb:real;
end;
var tbl: array[1..25] of str;
i: integer;
begin
for i:=1 to 5 do
begin
read(tbl[i].fam);
read(tbl[i].b1,tbl[i].b2,tbl[i].b3,tbl[i].b4,tbl[i].b5);
readln;
end;
for i:=1 to 5 do
begin
tbl[i].sb:=(tbl[i].b1+tbl[i].b2+tbl[i].b3+tbl[i].b4+tbl[i].b5)/5;
write(tbl[i].fam,tbl[i].sb);
writeln;
end;
end.

Для более компактной записи селекторов Pascal имеет специальный оператор присоединения, позволяющий в ряде случаев опускать левые части секторов. Обращение к элементам записи происходит с помощью уточненного имени. Оператор присоединения позволяет упростить обращение к элементу записи. Имя записи выносится в заголовок оператора присоединения, а в блоке используются только имена элементов записи. Общая форма оператора присоединения:

WITH имя записи DO
begin
операторы, содержащие имена элементов записи
end;
WITH B DO
begin
N:=2;
S:=ocenka[1]+ocenka[2]+ocenka[3];
read(n);
end;

РЕШЕНИЕ задачи № 1 с оператором присоединения:
program sbal;
type str=record
fam:string[15];
b1,b2,b3,b4,b5:2..5;
sb:real;
end;
var
tbl:array[1..25] of str;
i,j,k,m:integer;
x:real;
begin
readln(m);
for i:=1 to m do
with tbl[i] do
begin
read(fam,b1,b2,b3,b4,b5);
readln;
end;
for i:=1 to m do
with tbl[i] do
begin
sb:=(b1+b2+b3+b4+b5)/5;
write(fam,sb);
writeln;
end;
end.

III. Домашнее заданиеконспект.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.