Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Lec_05

.pdf
Скачиваний:
8
Добавлен:
11.05.2015
Размер:
1.48 Mб
Скачать

СТАНДАРТНЫЕ ТИПЫ ДАННЫХ

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 список-определений-типа

Определение одного элемента из списка-

определений-типа:

Идентификатор-типа = тип ;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]