Логический тип. Логические операции и функции

Логический тип ещё называют булевским. Их 4:

Boolean(false=0, 1 байт); ByteBool (false=0, 1 байт); WordBool (false=0 в обоих байтах, 2 байта); LongBool (false=0 во всех байтах, 4 байта).

Логические функции:

Ord; Pred; Succ; or;and; xor;

Перечисляемые типы. Функции и операции, применимые к ним.

Перечисляемый тип задаётся тем значениям, которые он может получить. Значения

именуются идентификаторами и располагаются в списке с ().

Type col = (red, white, blue);

Max=65536 значений;

Ord (red) =0;

Var c: col;

C:= col(0);

С:=red;

В идентификаторах нельзя использовать кириллицу. Переменные так же можно объявлять без предварительного описания типа

Var col: (black, white, green);

Множества и операции над ними.

МНОЖЕСТВА - наборы однотипных логически связанных друг с другом объектов. Характер связей между объектами подразумевается лишь программистом и не контролируется Турбо Паскалем. Количество элементов в множестве может меняться от 0 до 255. Множество, которое не содержит элементов, называется пустым. От массивов множества отличаются тем, что количество элементов в нем не постоянно. Его можно расширять и сокращать по ходу выполнения программы.

Описание типа производится в разделе TYPE.

Структура:

<Имя идентификатора>=SET of <имя типа>;

где <Имя идентификатора> - правильный идентификатор Турбо Паскаля;

<имя типа> - тип элементов множества, в качестве которого может

использоваться любой порядковый тип,  кроме WORD, Integer, LogInt,

ShortInt.

пример: TYPE dchar=SET of '1'..'9'; {базовый символьный тип-диапазон}

digit=SET of 0..9;

Переменные этого типа описываются в разделе

VAR S1,S2,S3:dchar;       S4,S5,S6,S7:digit;

Для задания множества может использоваться конструктор множества: список (спецификаций) элементов множества, отделенных друг от друга запятыми; список заключается в квадратные скобки. Спецификациями элементов м.б. константы или выражения базового типа, а также пример:

S1:=['1','2','3'];          S4:=[0..3,7];

S2:=['2','1','3'];          S5:=[4,6];

S3:=['1','2'];              S6:=[3..8]; S7:=[]; (пустое)

Два множества считаются эквивалентными тогда и только тогда, когда все их элементы одинаковы причем порядок следования в множестве их безразличен. (S1 и S2 эквивалентны).Если все элементы одного множества входят в другое множество то говорят, что первое включено во второе. (S3 включено в S1).Пустое множество включено в любое другое.

Над множествами определены следующие операции:

1. * пересечение множеств; результат содержит элементы, общие

для обоих множеств. (S4*S6 содержит [3,7]; S4*S5 образует пустое мн.).

2. + объединение множеств, результат содержит элементы первого

множества, дополненные недостающими элементами второго.

S4+S5 содержит [0,1,2,3,4,6,7] S5+S6 содержит [3,4,5,6,7,8]

3. - разность множеств, результат содержит элементы из первого

множества, которые не принадлежат второму.

S6-S5 содержит [3,5,7,8])

S4-S5 содержит [0,1,2,3,7]) []-S4 даст [].

4. Операции отношений:

= операция эквивалентности; возвращает значение TRUE, если оба

множества эквивалентны; (S1:=S2; ['1','2','3']) =['2','3','1']

 проверка неэквивалентности; (TRUE, если множества неэквивалентны);         [1,2]<>[1]     S3<>S2

>= проверка вхождения (TRUE, если второе множество входит в первое;

in - проверка принадлежности. Структура этой бинарной операции:

in;возвращает TRUE, если выражение имеет значение, принадлежащее множеству.

пример:

3 in S6      TRUE; [] in [0..5] [] in S5

2*2 in S4    FALSE;

Множества имеют компактное машинное представление. Недостаток: невозможность вывода множества на экран, т.к. отсутствует механизм изъятия элемента из множества. Ввод множества возможен только поэлементно.

пример: Можно тип объявлять при описании переменных

VAR S:SET of char; {переменная-множество}

C: char;       {элемент множества}

Begin

S:=[]; S:=#0;  {обнуление значений}

while C '.' do {цикл до ввода "."}

begin

readln(C); {чтение символа в с}

S:=S+[C];     {добавление его к S}

end;      ...

S:=S-['.'];      {исключение точки}

End.       {Смотри задание на л.р. N 12 }

Оператор выбора CASE (варианта). Комментарии.

CASE<ключ выбора> OF

                                          Const1:оператор;

                                          Const2:оператор;

                                          ELSE: оператор;

END;

Записи. Вложенные записи. Записи с вариантами.

Запись – это структура данных, состоящая из фиксированного числа компонент, называемых полями записи. В отличие от массива компоненты могут быть различного типа. Поля именуются:

<имя типа>=RECORD<определение полей>END.

Type

       Bd = record

       D,m: byte;

       Y: word

Var a,b: bd;

a::=8;

a.day:=27;-доступ к компоненту

Для упрощения доступа к полям записи используют оператор записи With

With<переменная>do<оператор>;

With c.bp do month:=9;

With c do with bp do month:=9;

c.bp.month:=9;

Вариантные поля

Type f= record

    N: string;

    Case byte of

0:(bp: string[30]);

1:(c: string[10],e: string[20],ed:1..31)

     end;

Имена должны быть уникальны, хотя возможно повторение на различных уровнях

Вложенные поля:

Type bd =record

       D,m: byte;

       X: word;

       End;

Var c: record;

       Name: string;

       Db: bd;

Begin if c.db.year=1939 then………..

End.

В качестве ключа переменная:

Type rec2=record

       C: LongInt;

Case x: byte of

1: (d: word);

2: (e:record

       case boolean of

3: (f: real);

3: (g: single);

‘3’: (c: word);

end;

end;

           

Вещественный тип. Операции и функции для вещественного типа.

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

Длина название кол-во знаковых цифр диапазон десятичного порядка

 байт

 6          real                              11..12                    -39..38

 8    couble      15..16                    -324..308

10   extended           19..20                    -4951..4932

 8        comp                             19..20             -2*10^63+1  .. 2*10^63-1

функции

ABS(X), ARCTAN(x), COS(X), EXP(X), FRAC(X), INT(X),LN(X), SIN(X), ROUND(X),SQR(X),SQRT(X) И Т.Д.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: