Комбиниран тип данни

Комбиниран тип данни (записи)

Анализ чрез пример

При работа с масиви основното ограничение е, че всеки елемент трябва да бъде от един и същи тип. Но при решаването на много проблеми става необходимо да се съхраняват и обработват колекции от данни от различен тип.

Пример

За всеки от 25-те ученици в класа са известни фамилията и оценката (в точки) по пет дисциплини. Необходимо е да се изчисли средната оценка на всеки ученик и да се избере човекът с максимална средна оценка.

В този случай фамилията може да бъде представена чрез низ от 15 знака, оценката е цяло число, а средната оценка трябва да бъде представена с реално (реално) число. Паскал използва записите, за да опише комбинации от обекти от различен тип.

Записът е структуриран тип, който съдържа колекция от обекти от различен тип. Обектите, които съставят запис, се наричат ​​полета. В записа всяко поле има свое име. За да опишете запис, трябва да посочите неговото име, имената на обектите, които съставят записа и техните типове. Общият изглед е следният:

Тип
"име на записа" = Запис
"поле 1": "тип 1";
"поле 2": "тип 2";
.
"поле n": "тип n"
Край;

Данните за решаване на разглеждания проблем могат да бъдат описани като запис, както следва:

Тип
ученик = Запис
fam: String [15];
b1, b2, b3, b4, b5: 2.5;
sb: Реално
Край;;

Readln klass

Променлива от тип пупъл ще осмисли структура, съдържаща информация, която характеризира един ученик. Организацията на тази структура е показана на фиг. 1.

За да съхранявате информация за всички 25 ученици в клас в компютърна памет, трябва да въведете масив клас, представляващ масив от записи:

Var klass: Array [1.25] На ученик;

Бележки

  1. Имената на полетата, които съставят записа, не трябва да се повтарят.
  2. Всяко поле на запис може да бъде от всякакъв тип (с изключение на файл), по-специално, това може да бъде запис отново.

Достъп до полета за запис

Може да се направи по два начина.

    Чрез посочване на името на променливата и името на полето. Например klass [2] .fam, klass [3] .sb, klass [1] .b4. Следователно, въвеждането на фамилиите и оценките на учениците, т.е.елементи от масива на klass, може да бъде зададено, както следва:

За i: = 1 до 25 Do
Започнете
Readln (klass [i] .fam);
Readln (klass [i] .b1);
Readln (klass [i] .b2);
Readln (klass [i] .b3);
Readln (klass [i] .b4);
Readln (klass [i] .b5);
Край;

Като използвате оператора за добавяне, който ви позволява да получите достъп до полетата на записа, сякаш са прости променливи. Общият му изглед:

С Do .

В рамките на изявление до компонентите на записа може да се получи достъп само с името на съответното поле.