Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 13.doc
Скачиваний:
11
Добавлен:
20.11.2019
Размер:
858.62 Кб
Скачать

13.1.5.Перечисляемый тип. Интервальный тип

Наряду со стандартными типами данных в языке Pascal широко используются типы, определяемые программистом. Один из таких типов – это перечисляемый тип. Определение пере­чис­ля­­емого типа задает упорядоченное множество значений путем перечисления имен, обознача­ющих эти значения.

Типы данных, определяемые программистом, описываются в специальном разделе – разделе типов. Раздел типов опреден синтаксической диаграммой: 

 

Перечисляемый тип данных определяется следующей диаграммой:

  Примеры определений перечисляемых типов:

а) Type Weekday = (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);

Colour = (Red, Orange, Yellow, Green, Blue, Black);

Operation = (Plus, Minus, Times, Divide);

Заметим, что стандартный тип Boolean, если бы его нужно было описать, выглядел бы как: type Boolean = (False, True);

Для аргументов перечисляемого типа определены такие стандартные функции:

Succ(x) – значение, следующее за x;

Pred(x) – значение, предыдущее x;

Ord(x) – порядковый номер x.

К значениям перечисляемого типа применимы отношения:

 =, <>, <, <=, >=, >.

Упорядоченность значений определяется порядком перечисления констант в описании типа. Например:

Red < Orange < Yellow < Green < Blue < Black ;

Описание типа переменной может быть дано и в разделе переменных. Например, описание:

Type Figure = (Triangle, Circle, Rhombus, Square);

Var f: Figure;

эквивалентно описанию

Var f: (Triangle, Circle, Rhombus, Square);

Однако во втором случае описание типа ста­но­вится анонимным: тип описан, но не имеет имени. Использование этого типа ограничено. Поэтому 1–ый вариант более соответствует стилю языка.

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

Type <Имя типа> = <константа 1> .. <константа 2>;

Var <Идентификатор, …> : <Имя типа>;

Например,

Type Dni = 1 .31;

Var RabDni, BolnDni : Dni;

В этом примере переменные RabDni и BolnDni имеют тип Dni и могут принимать любые значения из диапазона 1..31. Выход из диапазона вызывает программное прерывание.

13.1.6. Константы

Тип констант в языке Паскаль определяется по их виду:

  • константы целого типа – это целые числа, не содержащие десятичной точки,

  • константы действительного типа – действительные числа,

  • логические константы – логические значения true и false,

  • символьные константы – либо строки длиной в один символ, либо конструкции вида #k или ^k.

Язык Паскаль допускает использовать синонимы для обозначения констант, в этом случае текст программы содержит раздел описания констант, (см. п.3.2).

13.1.7. Переменные. Инициализация переменных

Тип переменных определяется пользователем в разделе описания (см. п.3.2).

В настоящее время в профессиональном программировании принято записывать имена переменных с использованием так называемой венгерской нотации. Венгерская нотация – это соглашение о наименованиях переменных и функций. Соглашение широко используется при программировании на языках Pascal, C и в среде Windows. Венгерская нотация основывается на следующих принципах:

  • имена переменных и функций должны содержать префикс, описывающий их тип;

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

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

Префикс

Тип

Префикс

Тип

Префикс

Тип

Префикс

Тип

by

byte

l

longint

e

extended

p

pointer

sh

shortint

r

real

c

comp

x, у

координаты символа или точки на экране

i

integer

si

single

ch

char

w

word

d

double

b

boolean

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

a array se set

s string re record

sz stringz f file

t text

Например:

rv, arvector [1..20], sname, icount.

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

Для задания начальных значений переменным (инициализации переменных) Turbo Pascal позволяет присваивать начальные значения переменным одновременно с их описанием. Для этого используется конструкция

имя переменной: тип = значение;

которая должна быть размещена в разделе описания констант, например:

const rweight: real = 0.4;