Lec_05
.pdfСТАНДАРТНЫЕ ТИПЫ ДАННЫХ
11
Символьный тип данных
Символьный тип данных объявляется описателем
CHAR.
Значением символьного типа может быть только один любой символ алфавита языка.
Все символы алфавита упорядочены в компьютере в соответствии с их внутренним кодом: 0 .. 255.
Этот код в виде целого числа возвращает функция ORD(X) в качестве результата, если параметром является символ алфавита.
В ОП один символ занимает 1 байт.
Если нужен сам апостроф, он удваивается.
Примеры операций, допустимых над данными символьного типа
12
Var
Lit1,Lit2 : char; Nom : byte;
...
Lit1:=’B’;
Lit2:=Pred(Lit1);
{Lit2=A}
Nom:=Ord(Lit2);
{Nom=65 - ASCII-код символа ‘А’}
Lit1:=Chr(Nom);
{Lit1=’A’ - обратное преобразование ASCII-кода
в символ}
Строковый тип данных
13
Строковый тип данных используется для обработки текстов и определяется в виде:
string [n], где 1 < n < 255
По умолчанию n=255.
Строка – это последовательность символов.
Ее можно рассматривать как скалярное значение (простой тип) или как совокупность из n символов массива (сложный тип).
Соответственно, строка имеет свойства и простых
(можно использовать ее имя при вв./выв.) и сложных типов (обращение к элементам).
Операции над строками
14
Слияние строк – конкатенация
Var S1,S2,S3 : string;
...
S1:=’NSK’;
S2:=’MI’;
S3:=S2+S1; Writeln(S3); {MINSK}
Сравнение строк
Сравнение строк происходит посимвольно, начиная с первого символа в строке, в соответствии с их кодами ASCII.
Строки равны, если они |
Если при очередном сравнении окажется, что код |
одинаковой длины и |
одного символа больше кода другого, то строка |
|
посимвольно эквивалентны |
его содержащая также считается большей |
|
‘abcd’ = ‘abcd’ |
‘abcd’ > ‘abca’ |
т.к. ASCII-коды ‘a’<’b’<’c’<...<’z’ |
‘_abcs’<>’abcd’ |
‘abcd’ > ‘aBcb’ |
‘b’>’B’ |
‘abcd’ <> ‘ABCD’ |
|
|
Функции обработки строк
15
Var S1,S2,S3:string; K:byte;
...
S1:=’12345’;
S2:=’67890’;
Length(S:string):byte |
K:=Length(S1); |
|
Write(K); {5} |
|
Write(Length(S2)); {5} |
Concat(S1,S2,...,SN:string |
S3:=Concat(S1,S2); |
): |
Writeln(S3); {1234567890} |
string |
Writeln(Concat(S1,S2)); {1234567890} |
Pos(SubS,S:string):byte |
S3:=’1234567890’; |
|
K:=Pos(S1,S3); |
|
Writeln(K); {1} |
|
Write(Pos(S2,S3)); {6} |
Copy(S:string; |
S3:=Copy(S1,2,3); |
START,LEN:integer):string |
Writeln(S3); {234} |
|
Writeln(Copy(S2,3,3)); {890} |
Процедуры обработки строк
16
Var S1,S2,S3:string; K:byte;
...
S1:=’12345’;
S2:=’67890’;
Delete( Var S:string; |
S3:=S1+S2; {1234567890} |
START,LEN:integer) |
Delete(S3,5,4); |
|
Writeln(S3); {123490} |
Insert(SubS:string; Var |
S1:=’НАЧАЛО-КОНЕЦ’; |
S:string; START:integer) |
Insert(‘СЕРЕДИНА-‘, S1,8); |
|
Writeln(S1); |
|
{НАЧАЛО-СЕРЕДИНА-КОНЕЦ} |
Str(X:w:d; Var S:string) ; |
|
Val(S:string; Var X:<тип>; |
|
Var ErrCode:integer) |
|
Вещественный тип данных
18
Областью вещественных значений является подмножество вещественных чисел.
В Паскале имеется 4 вещественных типа:
Real, Single, Double и Extended.
Выбор одного из типов для представления переменных программы определяется требуемой точностью (количеством разрядов мантиссы) их представления и диапазоном представления значений их порядка.
Мантисса вещественных значений хранится в двоичной системе счисления в нормализованной форме.
Доступ к типам Single, Double и Extended возможен только при определенной настройке компилятора
(директивой {$N+}).
Характеристики вещественных типов данных
19
Длина |
|
Разрядность |
Диапазон |
|||
Имя типа |
десятичной |
десятичного |
||||
в байтах |
||||||
|
мантиссы |
порядка |
||||
|
|
|||||
|
|
|
|
|
|
|
4 |
single |
7 .. |
8 |
-45 |
.. +38 |
|
|
|
|
|
|
|
|
6 |
real |
11 .. |
12 |
-39 |
.. +38 |
|
|
|
|
|
|
|
|
8 |
double |
15 .. |
16 |
-324 |
.. +308 |
|
|
|
|
|
|
||
10 |
extended |
19.. 20 |
-4932 |
.. +4932 |
||
|
|
|
|
|
|
Примеры операций, допустимых над данными вещественного типа
20
Арифметические операции: +,-,*,/(деление).
Стандартные функции:
Trunc(X) возвращает целую часть X, результат целый
|
{Trunc(12.95)=12} |
Round(X) |
округляет X до ближайшего целого |
|
{Round(12.95)=13} |
Int(X) |
возвращает целую часть X, результат вещественный |
|
{Int(12.95)=12.0} |
Frac(X) |
возвращает дробную часть X, результат вещественный |
|
{Frac(12.95)=0.95} |
Sin(X) |
вычисляет значение SinX |
Cos(X) |
вычисляет значение CosX |
Ln(X) |
вычисляет значение LnX |
Exp(X) |
вычисляет значение экспоненциальной функции |
Sqrt(X) |
вычисляет значение корня квадратного из X |
Sqr(X) |
вычисляет значение квадрата X |
Abs(X) |
вычисляет модуль Х |
ПОЛЬЗОВАТЕЛЬСКИЕ И СЛОЖНЫЕ ТИПЫ ДАННЫХ
21
Определения новых (пользовательских) типов объединяются в раздел определения типов.
Форма определения типа:
TYPE список-определений-типа
Определение одного элемента из списка-
определений-типа:
Идентификатор-типа = тип ;