..

Сайт города Попасная.
 

 

Программирование

 

Интернет издания:

ПОПАСНЯНСКАЯ ПРАВДА

 


888 poker

 

 

 

 

4.3. Хранение разнородной информации. Записи

В отличие от массивов запись представляет собой структурированную переменную, которая может содержать элементы различных типов. Входящие в состав записи элементы называются полями и имеют свои имена. Запись, содержащая зарезервированные слова Record и End, объявляется следующим образом:
Var Имя записи : Record
Имя первого поля: идентификатор типа первого поля;
Имя второго поля: идентификатор типа второго поля;
.
.
.
Имя последнего поля: идентификатор типа последнего поля; End;

Для хранения следующих характеристик ПК:
тип процессора;
тактовая частота процессора (МГц);
размер оперативной памяти (Мб);
гарантия (количество лет);
тип монитора;
размер экрана (дюйм);
размер зерна (мм);

может быть использована приведенная ниже структура типа запись:
Var Personal_Computer:Record
Processor:String[20];
Freq,Ram:Word;
Garantee:Byte;
Monitor:String[20]; DisplaySize:Byte;
Pixel:Single;
End;

Поля Processor и Monitor предназначены для записи названий процессора и монитора, поэтому они объявлены как строки. В полях Freq, Ram, Garantee и DisplaySize могут быть записаны только целые числа, а поле Pixel содержит вещественное число. Для того, чтобы в программе обратиться к полю, необходимо указать имя записи, точку и имя поля. Если в структуру Personal_Computer необходимо записать следующую информацию:
процессор Pentium II с тактовой частотой 400 МГц;
размер оперативной памяти 64Мб;
гарантия 2 года;
монитор Hyundai с экраном 15 дюймов при размере зерна 0.28 мм; то это можно сделать следующим образом:
Personal_Computer.Processor:='Pentium II';
Personal_Computer.Freq:=400;
Personal_Computer.Ram:=64;
Personal_Computer.Garantee:=2;
Personal_Computer.Monitor:='Hyundai';
Personal_Computer.DisplaySize:=15;
Personal_Computer.Pixel:=0.28;

Указывать имя записи перед обращением к каждому ее полю неудобно, особенно если оно состоит из большого числа символов. В TurboPascal используется групповой оператор With имя записи Do оператор, позволяющий в операторе, который, как правило, бывает составным, указывать только имена полей. Слова With и Do являются зарезервированными. Имя записи указывается один раз после слова With. Приведенная выше последовательность операторов при использовании группового оператора выглядит следующим образом:
With Personal_Computer Do
Begin
Processor:=’Pentium II’;
Freq:=400;
Ram:=64;
Garantee:=2;
Monitor: = 'Hyundai';
DisplaySize:=15;
Pixel:=0.28;
End;

Поля записи могут быть объявлены как любые стандартные простые типы данных, так и как любой тип, в том числе и структурированный, определенный ранее в программе. Записи, в свою очередь, могут являться элементами любых структур, в том числе и массивов. Рассмотрим, например, как выглядел бы массив, содержащий всю указанную выше информацию o 100 персональных компьютерах.
Type Pc_Type=Record;
Processor:String[20];
Freq:Word;
Ram:Word;
Garantee:Byte;
Monitor:String[20];
DisplaySize:Byte;
Pixel:Single;
End;
Var Personal_Computer:Array[l..100] of Pc_Type;

Вывести на экран тип процессора, имеющего максимальную тактовую частоту, можно следующим образом:
max:=Personal_Computer[l].Freq;
For i:=2 To 100 Do
If max<Personal_Cotnputer[i].Freq Then
Begin
max:= Personal_Computer[i].Freq;
ind:=i;
End;
Writeln(Personal_Computer[ind].Processor);

Для задания начальных значений полей записи можно объявлять как типизированные константы, например:
Type Pc_Type=Record
Processor:String[20];
Freq:Word;
Ram:Word;
Garantee:Byte;
Monitor:String[20];
DisplaySize:Byte;
Pixel:Single;
End;
Const Personal_Computerl:Pc_Type=
(Processor:’AMD k6’;
Freq:266;
Ram:64;
Garantee:2;
Monitor:'Hyundai';
DisplaySize:14;
Pixel:0.28);

В состав записи может входить только одно поле, к которому допускается обращение как к переменным разных типов. Такое поле называется вариантным и начинается с зарезервированных слов Case и Of, между которыми указывается имя порядкового типа. Для указания варианта формально записывается константа того же типа, но ее значение на выбор варианта не влияет. Вариант типа данных определяется по имени поля, поэтому эти имена должны быть различными. Объявленный ниже тип Char_to_Sym соответствует записи, имеющей поле, к которому можно обращаться как к переменной типа Char или как к переменной типа Byte. Такую запись можно использовать для определения кода символа или получения символа по его коду:

Программа 4.4.

Type Char_to_Sym=Record
case Byte of
1:(_Char:Char);
2: (_Byte:Byte);
End;
Var symbol_code:Char_to_Sym;
Begin
With symbol_code Do
Begin {Ввод символа}
Write('Введите символ ');
Readln(_Char); (Вывод его кода}
Writeln('Eгo код = ',_Byte); {Ввод кода}
Write('Введите код символа ');
Readln(_Byte); {Вывод соответствующего ему символа}
Writeln(‘Символ’,_Char);
End;
End.


В приведенном примере в состав записи входит единственное поле, являющееся вариантным. Если число полей больше 1, вариантное поле при объявлении записи обязательно указывается последним среди всех Полей.

 

Вернуться к оглавлению

 
Popasnaya.com.ua Web-Source 2003 - 2004 / babelyuk jr / All Rights Reserved