КОМБИНИРОВАННЫЕ ТИПЫ ДАННЫХ
Цель работы: выработать практические навыки в написании и отладке программ при работе с комбинированными типами данных.
Записи
Запись - это структурированный тип данных, состоящий из фиксированного числа компонентов, называемых полями. В одном поле данные имеют один и тот же тип, а в различных полях могут иметь различные типы. Поэтому записи называют комбинированными типами данных. Общий вид описания типа –
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 Все права принадлежат авторам размещенных материалов.
|