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

Операции, выполняемые над записью.

В основном используется операция присваивания. В правой и левой части оператора присваивания одинаковые типы. Значения переменной типа RECORD определено тогда и только тогда, когда определены значения всех ее полей.

Пример программы:

PROGRAM MAXIM;

USES CRT; {ОЧИСТКА ЭКРАНА}

CONST

NAL=12; {НАЛОГ}

VAR I: INTEGER;

STR: ARRAY[1..15] OF RECORD; {СТРУКТУРА ЗАДАНА}

NAME: STRING[30];

OKLAD, S_V: REAL;

END;

BEGIN

CLRSCR; {ОЧИСТКА ЭКРАНА}

FOR I:=1 TO 15 DO

BEGIN

WITH STR[I] DO {ОПЕРАТОР УПРОЩАЕТ ОБРАЩЕНИЕ К ЗАПИСИ}

BEGIN

WRITE(‘ВВЕДИТЕ Ф. И. О.: ’);

READLN(NAME);

WRITE(‘ВВЕДИТЕ РАЗМЕР ОКЛАДА: ’);

READLN(OKLAD);

S_V:=OKLAD – OKLAD/100*NAL; {РЕЗУЛЬТАТ РАЗМЕЩ-СЯ В ПОЛЕ ЗАПИСИ S_V }

END;

END;

CLRSCR;

WRITELN

(‘Ф.И.О. ОКЛАД НАЛОГ(%) СУММА К ВЫДАЧЕ’);

FOR I:=1 TO 15 DO

BEGIN

WITH STR[I] DO

WRITELN (NAME,’ ‘, OKLAD,’ ‘, NAL,’ ‘, S_V);

END;

READLN;

END.

Фрагмент ввода данных из файла для записи:

TYPE DATA = RECORD

M:CHAR;

P:REAL;

K:BYTE;

END;

VAR PARK:ARRAY[1..10] OF DATA;

F:TEXT;

I:BYTE;

BEGIN

ASSIGN(F ‘DAN’)

RESET(F);

FOR I:=1 TO 10 DO

WITH PARK[I] DO

READLN(F,M,P,K);

END;

CLOSE(F);

. . . . . . . . .. . .. ... .

Пример программы:

PROGRAM KATYA;

USES CRT;

CONST N=3;

VAR I:INTEGER;

A:ARRAY[1..N] OF RECORD

NUMBER , M:INTEGER;

WEIGHT, PRICE:REAL;

END;

SST, SRST, SW, SRW: REAL;

K:REAL;

BEGIN

SST:=0;

SW:=0;

K:=0;

BEGIN

FOR I:=0 TO N DO

BEGIN WITH A[I] DO

BEGIN WRITE (‘ Введите заводской номер заготовки: ’ );

READLN( NUMBER );

WRITE( ‘ Введите вес заготовки: ’ );

READLN( WEIGHT );

WRITE( ‘ Введите стоимость заготовки: ’ );

READLN( PRISE );

WRITE( ‘ Введите партию деталей для данного вида заготовок: ’ );

READLN( M );

SST:=SST+ M*PRISE;

K:=K+1;

SRST:=SST/K;

SW:=SW + M*WEIGHT;

SRW:= SW/K;

END;

END;

END;

WRITELN(‘SST=’,SST);

WRITELN(‘SRST=’,SRST);

WRITELN(‘SW=’,SW);

WRITELN(‘SRW=’,SRW);

READLN;

END.

Запись с вариантной частью.

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

CASE <выражение> OF

END.

Пример программы:

PROGRAM Y;

TYPE FIG =(CIRCLE , SQUARE, STRAIGHT)

FIGURA = RECORD

S:= REAL;

F:=FIG;

CASE FIG OF

CIRCLE:( R:REAL);

SQUARE:(A:REAL);

STRIGHT:(M:REAL)

END;

VAR H: FIGURA;

N: INTEGER;

BEGIN

WRITELN(‘ Введите номер фигуры:’);

WRITELN(‘ 1- круг; 2 – квадрат; 3 - прямоугольник’);

READLN(N);

CASE N OF

1: BEGIN

H.F:=CIRCLE;

WRITELN(‘ Введите значения R:’);

READLN(H.R);

END;

2: BEGIN

H.F:= SQUARE;

WRITELN(‘ Введите значение стороны квадрата А:’);

READLN(H.A);

END;

3: BEGIN

H.F=STRIGHT;

WRITELN(‘Введите значения сторон М и N :’);

READLN(H.M,H.N);

END;

END;

WITH H DO

CASE F OF

CIRCLE: BEGIN S:= PI*SQR(R);WRITE(H.S:4:2) END;

SQUARE: BEGIN S:= SQR(A);WRITE(H.S:4:2) END;

STRIGHT: BEGIN S:= M*N;WRITE(H.S:4:2) END;

END;

END.

Замечания к построению записей с вариантной частью:

  1. Все идентификаторы должны быть разные, даже если они находятся в разных вариантах.

  2. Если в вариантной части вариант отсутствует, то он записывается так В:( );.

  3. Любая запись может иметь только одну вариантную часть, следующую за фиксированной.