Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль - лекциии.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1 Mб
Скачать

Var ім'я_запису: record

Ім'я1:тип;

Ім'я2: тип;

.

.

.

Ім'яN: тип;

End;

В даному випадку службове слово RECORD виконує роль відкриваючих операторних дужок, a END - закриваючих. В середині операторних дужок записуються елементи запису. Допускається замість імені запису вказувати список імен, тобто імена записів, відокремлених комами. Імена записів разом з їх описом називаються полями запису.

Для представленої відомості об'явлення записів буде виглядати наступним чином:

Var В:RECORD

N: integer;

FIO: array[1..20] of char;

OK: array[1..3] of integer;

END;

Більш універсальна форма об'явлення запису - це використання розділу типів Туре:

Туре і м 'я_типу = RECORD

Ім'я1:тип; Ім'я2:тип;

.

. .

Ім’яN: тип;

End;

Var ім'я_запису:ім'я_типу;

Елемент запису використовується в програмі в тому самому змісті, що й окрема змінна. Таким чином, елемент запису можна вказувати як у лівій частині оператора присвоєння, так і в виразах. Над елементами запису можна виконувати дії, допустимі для даних його типу. (Якщо тип елементу запису цілий, то виконуються всі операції, допустимі для цілих даних і т.д.).

Для відомості, що розглядається, можна виконати наступні операції:

1.порядковому номеру N запису В присвоїти значення 2:

B.N:=2;

2. знайти суму трьох оцінок:

s: =В.ОК[1]+В.ОК[2]+В.ОК[3];

3. ввести значення порядкового номеру:

read(B.N)

Звернення до запису в цілому, а не тільки до її елементів допускається тільки в операторі присвоєння. Зліва і справа від знаку присвоєння повинні використовуватися імена записів однакового типу.

Оператор приєднання.

Звернення до елементів запису відбувається за допомогою уточненого імені. Оператор приєднання дозволяє спростити звернення до елементу запису. Імя запису виноситься в заголовок оператора приєднання, а у блоці використовуються тільки імена елементів запису. Загальна форма оператора приєднання наступна:

With ім’я_запису do

Begin

.

.

.

End;

Між Begin та End знаходяться оператори, які містять імена елементів запису.

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

With B do

Begin

N:=2;

S:=OK[1]+OK[2]+OK[3];

Read(N); end;

Відмінність запису від масиву заключається в тому, що доступ до елементів запису здійснюється не по індексу, а по імені поля.

Приклад: Описати комбінований тип для представлення:

а) часу в годинах, хвилинах та секундах:

type clock=record

chas: 1..24;

min, sec: 1..60;

end;

б)задати анкетні дані студента. Вказати прізвище, дату народження, стать та національність.

Type v=record

FЮ: array[1..25] of char;

Data = record

Chislo:1..31;

Month: (янв., дек);

God:1900..2000;

End;

РоІ: (м,ж);

National: char;

End;

Приклад: Дано type str=array[1..10] of char;

Adr=record

Gorod,street:str;

Dom, kv:1..999;

End;

Var adrl, adr2: adr;

Використовуючи оператор приєднання, присвоїти змінній adrl значення,

що відповідає вашій адресі. Змінній adr2 присвоїти таке саме значення, замінивши в ньому номер будинку на 15.

With adrl do

Begin

Gorod: = 'Кіровоград';

Street: = 'Попова';

Dom: =13;

Kv: =156;

End;

Adr2: =adrl;

Adr2.kv: =15;

Приклад: є многочлен 4a+ 7b+8a-3a-2k+p-5r+ 7b-4k. Знайти подібні члени для змінної а та обчислити сумарний коефіцієнт. Кожний елемент многочлена можна вважати записом.

program zap 1;

type p=record

buk: char;

koef: integer;

end;

var ml,m2:p;

sum, i: integer;

begin

sum:=0;

writeln('введіть многочлен');

while not eoln do

begin

readln(m1.koef);

readln(m1.buk);

if m1.buk= 'a' then

sum:=sum+m1.koef;

end;

m2.koef:=sum;

m2.buk:=’a’;

writeln(‘сумарний коефіцієнт=',т2.koef,m2.buk);

end.

m1 - вхідний елемент многочлена;

m2 - вихідний елемент многочлена;

Buk - буква (елем. зап.);

Sum - сума;

Koef - коеф. (елем. зап.)

В даній програмі використовується два записи: ml та m2 з однаковою структурою, тобто з однаковими типами даних.

Задача: Група складається з п студентів. Ввести їх дані в компютер та відсортувати за алфавітом (прізвища).

Program ZAP5;

Const n=15;

Type stud=record

FIO: string [20];

OK: array [1..5] of integer;

end;

Var Grupa: array [1..n] of stud;

st: stud;

i, k, j: integer;

Begin

Writeln(‘Введ. записи’);

For i:=1 to N do

begin

with Grupa [i] do begin

Readln (FIO);

For k:=1 to 5 do read (OK [k]);

readln; end; end;

{сортування за алфавітом};

For i:=1 to N do

For j:=1 to N-i do

If Grupa [j].FIO>Grupa[j+1].FIO then

begin

St:=Grupa[j];

Grupa[j]:=Grupa[j]+1;

Grupa[j+1]:=St;

end;

{Список після сортування}

For i:=1 to N do begin

With Grupa[i] do begin

Write(FIO);

For k:=1 to 5 do write (OK [k]:5);

Writeln; end; end; end.

Дана програма забезпечує формування масиву записів в память, сортування всіх записів за алфавітом і виведення відсортованого масиву.