Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Доступ к полям записи. Оператор With.





Доступ к полям записи осуществляется через полное имя поля, которое образуется с помощью:

<имя_записи>.<имя_поля>

Другим способом доступа осуществляется с помощью оператора With:

With student do

Begin

Writeln(name);

For i:=1 to 4 do read(marks[i]);

End;

Можно сказать, что оператор with сделал запись student текущей, и в операции с полями можно указывать только собственно имена полей.

Формой оператора withимеет вид:

With<имя записи> do <оператор>;

<оператор> - произвольный оператор ТР, в том числе составной. Инициализация записи может производиться в разделе констант. Для каждого поля задаётся его имя, после которого через двоеточие указываются значения:

Const s1 : studrec = (name : ’Петров’ , group: ’2’ ,marks : (4,3,5,5));

Вложенные записи:

Определение: Если элементам записи является запись, то это называется вложенной записью.

Rec 1

Pole1 rec 2

Pole A pole B

Поля записи могут хранить информацию-pole 1,pole A, pole B.

И поле как элемент записи(rec 2).

Уникальность имён полей записи.Примеры.

1)В рамках одной записи имена записи должны быть различны

2)В различных записях, в том числе во вложенных имена полей могут совпадать.

3)Допускается, чтобы имя записи и имя поля совпадали.

Массивы в структуре записи:

1)массив может быть элементом записи

2)На промежуточном уровне записи может располагаться массив.

rec

S t[1..2]

U V

Type trec=record;

U:integer;

V:real;

T_array=array[1..2] of trec;

Trec=record

S:integer;

T:tarray;

End;

Var; rec:trec;

Запись как единый объект операций.

Если записи совпадают по типу, то допускается применение операции присваивания между такими записями.

Вариантные записи.

Одно из полей записи может быть вариантной записью.

Вариантная часть записи – изменяемая часть. Все варианты этой части располагаются в памяти на одном и том же месте в конце записи.



Var zap: record

P1,p2: integer;

P3:real;

Case k:integer of

1: (v1:string[20]);

2: (v2:real; v3:array[1..10] of integer);

3: (v4: string[10])

End;

Вариантная часть начинается словом case, но это не оператор варианта, так как такая часть стоит последней в записи, то закрывающий case end не нужен.

Константы – любые порядковые значения, выбор производится не по ним а по именам полей.

Компилятор под вариантную часть выделяет память, достаточную для самого протяженного из вариантов.

Контроля за размещением вариантов нет, одна вариантная часть может быть вложена в другую.

Допускается пустой вариант:

Type rec1=record

A:byte;

B:integer;

End;

Rec2=record

C:shortint;

Case x:byte of

1: (d:word);

2: (e:record

Case Boolean of

3: (f:rec1);

3: (g:real);

‘3’: (c:integer)

end)

end;

Указание имени селектора не является обязательным, обязателен лишь тип.

Константы выбора могут повторяться, их тип необязательно будет совпадать с типом селектора.

Обращение к полям вариантной части производится не через выбор а по полному имени поля.

Множества в ТП. Описание Типа. Задание значений множественных переменных.

Перечислимый тип.

Удобна возможность введения нестандартных типов, например перечислимый. Формат описания типа имеет вид:

Type <идентификатор>=(<список значений через запятую>);

Замечание: элементами списка могут быть только идентификаторы. Нумерация элементов перечислимого типа начинается снуля.

1)Повторяющиеся элементы недопустимы

2)Переменной перечислимого типа можно назначать любое значение в пределах типа.

3)Нет представления ввода-вывода переменных перечислимого типа

4)Допускается использование операции сравнения для переменных перечислимого типа.

Ограниченный тип.

Описание:

Type<идентификатор> = (<начальное значение>..<конечное значение>)

Начальное и конечное значения могут быть целого или символьного типа, при этом начальное значение <= конечное значение.

Замечание: при преобразовании типа возможен выход за границы типа, {$R+} – сигнал для компилятора, так называемая директива (проверяет выход за границу).

Функция sizeof(x), возвращающая размер памяти в байтах, которую занимает переменная Х, может быть именем типа.

Writeln(sizeof(byte))

Замечание: функция sizeof может использоваться для структурированных типов.

Множества(set).

Структура описания:

Type <идентификатор>=set of <тип элементов>, тип элементов –порядковый, удовлетворяющий ограничению число элементов не более 256 (0..255)

Type letter=set of ‘A’..’Z’;

Type seol=set of (Red,Green);

Type all=set of char;

Замечание: в отличие от массива, множество-неупорядочно, сами элементы множества в памяти не записываются, там хранится только информация об их наличии или отсуствии

Var colset:scol;

Colset:=[Red];

Множество может быть задано в виде списка элементов в квадратных скобках.

[ ]-пустое множество.

Var A:All Let;

A:[‘a’ .. ’c’ , ’A’ .. ‘Z’];

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

Если начальное и конечное значения диапазона образуют ошибку задания типа.

Операции с множеством

1)объединение множеств(+)

2)пересечение(*)

3)Разность(-)

4)Проверка принадлежности элемента множеству(“in”)

5)Отношения(<>, =, <=, >=)

Пример 1 операции:

А+В, в котором будут находиться все элементы А и В, но если есть повторяющиеся, то они пишутся один раз

Пример 2 операции:

А*В , то есть которые повторяются и в А и в В

Пример 3:

А-В

Пример 4:

А in S

Выраж. Множество

Результат-логическое значение.

А - может быть выражение базового типа(Red in Colset) или Red in [Red, Green]=true 8+1 in [1..12]=true

Type chs=set of char;

Var chs 1,chs 2,chs 3,:chs;

Chs 1:=[‘a’ , ‘x’ , ‘e’];

Chs 2:=[‘c’ , ‘x’];

Chs 3:=chs 1 + chs 2;{‘a’ , ‘x’ , ‘e’ , ‘c’};

Chs 3:=chs 1*chs 2;{‘x’};

Chs 3:=chs 1*[‘o’ , ‘n’];{[]};

Chs 3:=chs 1-chs 2; {‘a’ , ‘e’};

Пример использования множества .

Множества можно использовать вместо case или наборов операторов if.

Var sp:set of char;

DZ:char;

……………………..

Sp:=[‘A’ , ‘B’ , ‘C’ , ‘D’ , ‘a’ , ‘b’ , ‘c’ , ‘d’];

Repeat writeln(‘введите допустимое значение’);

Readln(DZ);

Until DZ in sp;

Файлы в ТП. Виды файлов.Описание файлового типа. Текстовые файлы.

Файл – последовательность компонентов одного типа. Кол-во элементов файла не обговаривается.

Файл – структура последовательного доступа.

Определение файлового типа:

type<имя> = file of <типэлементов>;

тип элементов – любой кроме файлового.

Виды файлов:

1) Типизированные

type<имя> = file of <типэлементов>;

2) Текстовые

type<имя>=text;

3) Нетипизированные

type<имя>=file

для доступа к файлу используется файловая переменная

var<имя переменной>:<имя файлового типа>;

1) var f: file of integer

2) type g: file of real; var f: g;

3) var r: text;

текстовый файл – файл из строк символов; т.е. есть отличия между стандартным типом text и fileofchar.

Для хранения числа в текстовом файле может потребоваться больше места, чем в типизированном файле.

 

Типизированные файлы. Организация “прямого доступа” к элементам файла.

В типиз. файле все элементы имеют одну и ту же длину, т.е. занимают одинаковый объем в памяти.

В файле существуют указатель, который после операции с элементами перемещается на следующий элемент.

В типиз. файле все элементы можно пронумеровать и выбрать по номеру. Нумерация элементов в файле начинается с 0. Для перемещения указателя файла в нужную позицию можно использовать стандартную процедуру seek(f,N-1)

Для больших объемов данных типиз. файлы эффективнее текстовых – с помощью процедуры seek можно использовать прямой доступ к элементам файла.

 

 









Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2019 zdamsam.ru Размещенные материалы защищены законодательством РФ.