Здавалка
Главная | Обратная связь

КОМБИНИРОВАННЫЕ ТИПЫ ДАННЫХ



 

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

 

Записи

 

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

Общий вид описания типа –

 

type T = record

i1:T1;

i2:T2;

.......

iN:TN

end;

var a,b:T;

Здесь Т - идентификатор типа; и - имена полей; ТN - типы полей.

Например, запись имеет четырех поля: город, улица, номер дома и номер квартиры, то есть запись является адресом. Тогда адрес можно описать следующим образом:

type adres = record

G,U:array [1..10] of char;

D:1..100;

K:1..500

end;

var A: adres;

Здесь перменная А описанная как запись, которая состоит из четырех полей с именами: G,U,D,K. Поле D переменной A записывается как A.D.

Например, чтобы записать в А адрес: «г. Краматорск, ул. Шкадинова, д.8, кв.12» надо выполнить следующие операторы присваивания:

A.G:='Краматорск';

A.U:='Шкадинова';

A.D:=8;

A.K:=12;

Можно обращаться не только к полю записи, но и к записи в целом, используя оператор присваивания.

Оператор with разрешает упростить обращения к полям записей.

Общий вид - with A do P;

Здесь A - имя переменной типа record; Р - оператор. В операторе Р при ссылках на компоненты записи имя А можно опускать. Например, для занесения адреса в предыдущем примере достаточно выполнить операторы

With A do begin

G:=’Краматорск’;

U:=’Шкадинова’;

D:=8;

K:=12

end;

 

Примеры выполнения задания лабораторной работы

Пример 35. Запись имеет пять полей, содержащих фамилию, имя студента, наименование, год создания и номер группы. Написать программу, которая вводит информацию о студентах и выводит на печать фамилии и имена студентов группы ИТ98-2.

Программа имеет вид:

PROGRAM PR35;

USES CRT;

CONST GRU=ИТ’; GOD=98; NOM=2; M=5;

type student=record

fa,im,gr:string;

g:85..95; n:1..4; end;

mas=array[1..m] of student;

VAR S:MAS; I:INTEGER; C:CHAR;

BEGIN

CLRSCR;

{ВВЕДЕНИЕ ИСХОДНЫХ ДАННЫХ}

FOR I:=1 TO M DO

WITH S[I] DO BEGIN

WRITELN(' ДАННЫЕ ПРО ',I,'-ОГО СТУДЕНТА:');

WRITELN(' ФАМИЛИЯ?:'); READLN(FA);

WRITELN(' ИМЯ?:'); READLN(IM);

WRITELN('НАИМЕНОВАНИЕ ГРУППЫ?:'); READLN(GR);

WRITELN('ГОД СОЗДАНИЯ ГРУППЫ?:'); READLN(G);

WRITELN(' НОМЕР ГРУППЫ?:'); READLN(N);

END;

WRITELN('===КОНЕЦ ВВОДА====');

C:=READKEY; CLRSCR;

WRITELN(' ':5,'СПИСОК ВСЕХ СТУДЕНТОВ:');

for i:=1 to m do

with s[i] do

writeln(' ', fa:10,im:10,gr:5,g:3,'-',n);

WRITELN(' ':5,'СПИСОК СТУДЕНТОВ ГР.ИТ98-2');

for i:=1 to m do

with s[i] do

if (gr=gru) and (g=god) and (n=nom) then

writeln(' ',fa:10,im:10);

c:=readkey

end.

 

Пример 36. Составить программу перевода полярных координат точки (R,j) в декартовые (Х,Y), приняв способ изображения точки в виде записи с двумя полями.

Программа имеет вид:

 

program pr36;

uses crt;

label 1;

type polar=record r,fi:real; end;

dekar=record x,y:real; end;

VAR P:POLAR; D:DEKAR; C:CHAR;

BEGIN CLRSCR;

1: WRITE('ПОЛЯРНЫЕ КООРДИНАТЫ ТОЧКИ (R,FI):');

READLN(P.R,P.FI);

IF P.R=0 THEN BEGIN

WRITELN('ВВОД ЗАКОНЧЕН');

c:=readkey; exit end;

with p,d do begin

X:=R*COS(FI*PI/180); Y:=R*SIN(FI*PI/180);

WRITE('ДЕКАРТОВЫЕ КООРДИНАТЫ ТОЧКИ (X,Y):');

writeln(x:5:2,’ ‘,y:5:2)

end;

goto 1

end.







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.