Перечисляемые типы

End.

. . . . .

Var

Type

Const

Label

Список меток;

Определение констант;данных

Описание типов;

Описание переменных;

Определение используемых процедур;

Определение используемых функций;

Begin

Основной блок программы описание

. . . . .

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

Комментарий– любой текст в любом месте программы, заключенный в фигурные скобки {} или в круглые скобки со звездочкой (* *). Комментарий не изменяет смысл программы и на выполнение не влияет, используется для пояснения текста программы.

Ключи компиляции (директивы компилятору) тоже заключаются в фигурные скобки, но являются инструкциями компилятору, предписывающими тот или иной режим обработки программы. Состоит из знака $, стоящей за ним буквы, определяющей конкретный режим, и знаков + или -, указывающих включить или выключить данный режим.

 

СИСТЕМА ТИПОВ ЯЗЫКА.

 

ТП является языком с сильной системой типизации. Это означает, что все данные, обрабатываемые программой, должны принадлежать к какому-либо заранее известному типу.

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

С точки зрения внутреннего распределения памяти, задавая тип переменной, мы тем самым однозначно определяем размер памяти, выделяемый под переменную.

Такой подход (когда тип переменной задается при ее описании и не может быть изменен, а переменная может участвовать только в операциях, допустимых ее типом) способствует большей аккуратности и ответственности при составлении программ, делает их поддающимися автоматической проверке на корректность при компиляции, и в конечном итоге приводит к более высокой надежности создаваемых программ.

В языке предопределено достаточное количество типов данных, и имеются возможности для объявления новых типов (пользовательских).

 

Иерархическая структура типов

 

СКАЛЯРНЫЕ ТИПЫ.

 

Это базовые (простые) типы языка. Они распадаются на 4 группы:

- Целые типы

- Вещественные

- Символьный

- Логический

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

Тип переменной Описание Размер памяти Диапазон Пример
Неотрицательные целые числа byte 1 байт 0 … 255 16; 124
word 2 байта 0 … 65535
Положительные и отрицательные целые числа shortint 1 байт -128 .. 127 25; -99, 111
integer 2 байта -32768..32767 -6956
longint 4 байта -231 … 231-1

Для целочисленных переменных, кроме рассмотренных выше, определены следующие арифметические функции, результат которых тоже целое число:

ABS (N) — абсолютная величина N;

A DIV B — целая часть от деления A на B;

A MOD B — остаток от деления A на B;

*, –, + — умножение, вычитание, сложение;

SQR (N) — квадрат числа N;

SQRT(N) — корень квадратный из N;

ODD (N) — проверка N на четность.

Заметим, что при выполнении обычного деления / для целых чисел всегда получается вещественный результат ( тип REAL).

Операции сложения и вычитания могут использоваться как унарные (для одного операнда). При изменении знака числа, например, можно записать:

а := –а;

Рассмотрим подробнее операции DIV, MOD. При делении с точностью до целых чисел получается два результата — частное и остаток. Операция DIV обозначает целочисленное деление. Знак результата берется по обычным правилам, а полученный остаток игнорируется.

Пример 1:

23 DIV 5 = 4;

2 DIV 6 = 0;

(–13) DIV 5 = –3;

(–13) DIV (–5) = 3.

Операция MOD дает остаток при делении двух целых чисел.

Пример 2:

23 MOD 5 = 3;

2 MOD 6 = 2;

(–13) MOD 5 = –3;

(–13) MOD (–5) = 2;

8 MOD 2 = 0.

Операции *, DIV, MOD одинаковый более высокий ранг, а операции + и – также имеют одинаковый, но более низкий ранг.

Чаще всего целые числа используются в простых арифметических выражениях и выступают в программах в качестве различных счетчиков и значений индексов.

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

Описание Диапазон Число значащих цифр Объем памяти, б
real 2.9*10–39…1.7*10+38 11—12
single 1.5*10–45…3.4*10+38 7—8
double 5.0*10324…1.7*10+308 15—16
extended 3.4*104932…1.1 *10+4932 19—20
comp –9.2*10+18…9.2*10+18 19—20

Comp — хотя и считается вещественным типом, но содержит только целые числа из весьма значительного диапазона, которые представляются в вычислениях как вещественные с нулевой мантиссой.

Наиболее распространенная форма типов вещественных чисел — это тип real.

Результат работы функций сложения, вычитания, деления, умножения, возведения в квадрат вещественных чисел дает вещественное число. Кроме этого используются следующие функции, результат которых — вещественное число:

ABS(X) — абсолютное значение X;

ARCTAN(X) — арктангенс X;

COS(X) — косинус X;

SIN(X) — синус X;

LN(X) — натуральный логарифм X при этом должно выполняться X >0;

SQR(X) — квадрат X;

SQRT(X) — корень квадратный из X, при этом должно выполняться X >= 0;

EXP(X) — еX ;

FRAC(X) — дробная часть X;

INT(X) — целая часть X;

PI — значение PI = 3.141592653589793238;

TRUNC (X) — получение целой части вещественного числа X;

ROUND (X) — округление вещественного числа X.

Форма представления вещественных чисел может быть в двух форматах:

1) с плавающей точкой;

2) с фиксированной точкой.

Точка является в языке разделителем целой и дробной частей.

Формат представления с плавающей точкой— это форма записи числа, которая характеризирует его порядок. Это форма вида:

[Sign1]<N1>.<N2> e Sign2<N3>,

Логический тип.Значением логического типа boolean является множество из двух упорядоченных элементов FALSE и TRUE. Переменным логического типа могут присваиваться только эти два значения. Про их значения известно, что:

TRUE > FALSE,

SUCC(FALSE) = TRUE,

ORD(FALSE) = 0,

ORD(TRUE) = 1,

PRED(TRUE) = FALSE.

На этом множестве определены одна унарная (один аргумент) и три логические бинарные операции (два аргумента):

NOT (отрицание — изменяет значение на противоположное);

AND (конъюнкция — истина только тогда, когда обе переменные истинны);

OR ( дизъюнкция — истина только тогда, когда один из операндов истинен);

XOR (исключение — истина только тогда, когда обе переменные различны).

Работа этих операций для двух переменных представлена в следующей таблице:

a not a   a b a and b a or b a xor b
True False   True True True True False
False True   True False False True True
      False True False True True
      False False False False False

При записи условий используются следующие отношения между величинами: =, <>, >, <, <=, >=, in (принадлежность элемента множеству).

Подвыражение, содержащие операции отношение, заключаются в круглые скобки. Операции сравнения дают результат булевского (логического) типа, поэтому его можно присваивать булевской переменной. Например:

с := a > b.

Такой оператор присваивания называется логическим.

 

Символьный тип. Значением символьного типа сhar (1 байт памяти) может быть один из 255 упорядоченных элементов множества всех символов, представленных кодами ЭВМ таблицы ASCII (American Standard Code for Information Interchange — американский стандартный код для обмена информацией).

Символы записываются в одинарных кавычках. Например, ’a’, ’@’, ’1’, а при выводе символов на экран апострофы не изображаются.

Допускается использование записи символа через его внутренний код, который записывается после символа #. Внутренний код — это порядковый номер символа в таблице кодов.

Например:

a ’ соответствует записи #97;

z ’ соответствует записи #90.

Допустима операция сложения (сцепления) символов — знак «+», но типом результата уже не будет тип char, результат будет иметь структурированный тип string. Символы можно сравнивать друг с другом, результат будет иметь логический тип. При сравнении считается, что символы равны, если равны их ASCII-коды, и один код больше другого, если его код больше. Таким образом, операций над значениями символьного типа, которые давали бы значение этого же типа, нет. Например:

’a’ > ’A’, так как 97 > 65 (’a’ = #97, ’A’ = #65).

К символьным значениям можно применять стандартные функции (в скобках указан аргумент функции и через двоеточие тип аргумента):

CHR (x:byte) :char — возвращает символ ASCII-кода;

ORD (c:char) : byte — возвращает ASCII-код символа;

PRED (c:char) : char — выдает предшествующий с символ;

SUCC (c:char) : char — выдает последующий за с символ.

Не определены значения SUCC(#255) и PRED(#0).

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

Например,