Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Praktikum_po_programmirovaniyu.doc
Скачиваний:
23
Добавлен:
09.12.2018
Размер:
2.5 Mб
Скачать

2.7. Перечисленный тип

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

Переменные перечисленного типа можно объявлять с предварительным описанием типа:

type color = (red, blue, white);

var kp, sw: color;

и без предварительного описания:

rs: (may, jun, jul);

Использование перечисленного типа повышает надежность программ, так как появляется возможность контролировать значения, принимаемые переменной.

Основные свойства перечисленного типа:

1. В одном перечислении все имена должны быть различными;

2. В двух разных перечислениях не должно быть одинаковых имен переменных;

3. Паскаль не поддерживает операций ввода-вывода

26

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

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

kp: = blue;

Присвоение вида kp:= jun; недопустимо.

5. К переменным перечисленного типа неприменимы арифметические операции.

6. Константы перечисленного типа имеют порядковые номера, начинающиеся с нуля, поэтому к ним можно применять операции сравнения и вычислять предшествующие (pred) и последующие элементы (succ). Причем, первая константа в перечислении не имеет предшествующего элемента, а последняя – последующего элемента. Функция определяет порядковый номер элемента в перечислении

kp: = pred(white); {blue}

sw: = succ(red); {blue}

ap: = may;

writeln(ord(ap)); {0}

7. Тип boolean является перечисленным типом, определение которого автоматически присутствует в Паскаль-программе.

type

boolean = (false, true);

ord(false) = 0, а ord(true) = 1, поэтому false < true.

8. Максимальная мощность перечисленного типа составляет 65536 значений, поэтому фактически перечисленный тип задает некоторое подмножество целого типа word и может рассматриваться как компактное объявление сразу группы целочисленных констант со значениями 0, 1,. . ., 65536.

27

2.8. Интервальный тип (диапазон)

Интервальный тип – это отрезок любого типа, имеющего порядковое значение.

Интервальный тип можно объявлять с предварительным описанием типа:

type d = 1..35;

var p, s: d;

и без предварительного описания:

var gh: (5..8);

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

Основные свойства интервального типа:

1. Константы любого интервального типа имеют порядковые значения, совпадающие с их порядковыми номерами в базовом типе: так в интервале 13..15, тип которого определен как:

var c: 1..15;

значения ord(13) и ord(15) будут равны соответственно 12 и 14, а не 0 и 2.

2. Интервальный тип наследует все свойства своего базового типа, но с ограничениями, связанными с его меньшей мощностью.

type

daytype = (mon, tue, wed, thu, fri, sat, sun);

var

day: (mon..fri);

p, is: 2..12;

im: 1..3;

cs: ‘a’..’e’;

Интервалы перечислений подчинены тем же самым

28

ограничениям, что и перечисленный тип: переменная day не может читаться или печататься, к ней нельзя применять арифметические операции, ее нельзя присваивать переменным никаких других типов, кроме mon..fri и daytype.

Если базовый тип интервала – integer, то значения такого интервального типа можно обрабатывать как целые числа: читать, печатать, применять целочисленную арифметику. Кроме того, можно смешивать значения из разных интервалов: is: = im +2;

Если базовый тип интервала – char, то значения из интервала могут обрабатываться как литеры: их можно читать, печатать, использовать в логических выражениях.

3. В стандартную библиотеку Турбо Паскаля включены две функции, поддерживающие работу с интервальным типом:

high(x) – возвращает максимальное значение интервального типа, к которому принадлежит переменная x;

low(x) - возвращает минимальное значение интервального типа, к которому принадлежит переменная x;

Следующая программа

var m: integer; b: 4..45;

begin

writeln (low(m),’…‘,high(m));

writeln (low(b),’…‘, high(b));

выведет на экран результат:

-32768…32767

4…45

Контрольные вопросы и упражнения

1. Дайте определение типа переменной.

2. Охарактеризуйте способы машинного представления целых чисел.

29

3. Объясните различие между знаковым и беззнаковым способами представления целых чисел.

4. Найти представление числа в двоичной системе счисления (тип integer).

5. Найти абсолютное значение числа в десятичной системе счисления, если его представление в дополнительном коде равно .

6. Как будет представлено в памяти ЭВМ число , имеющее тип Word? А как будет представлено число , имеющее тот же тип?

7. Как будет представлено в памяти ЭВМ число , имеющее тип LongInt?

8. Объяснить, почему максимальное положительное число в типе Integer равно 32767, а минимальное отрицательное число равно -32768.

9. Объяснить на примерах механизм переполнения при выполнении операций над целыми числами.

10. Объяснить на примерах механизм работы побитовых операций.

11. Понятие о нормализованном виде вещественного числа. Мантисса и порядок. Понятие о смещенном порядке.

12. Способы машинного представления вещественных чисел. Типы вещественных чисел.

13. Чем отличается машинное представление переменной типа Real от представления всех других типов вещественных переменных?

14. Что представляет собой тип Comp, и в каких ситуациях его целесообразно использовать?

15. Как при представлении вещественных чисел всех типов учитывается знак порядка?

16. Как будет представлено в памяти ЭВМ число , имеющее тип Extended?

30

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

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

19. Какой объем памяти занимает переменная boolean и как тип boolean определяется в Паскале?

20. Охарактеризовать основные логические функции.

21. Для чего используются переменные перечисленного типа?

22. Основные свойства перечисленного типа.

23. Какие операции можно выполнять над переменными перечисленного типа?

24. Если переменная определена как

var s: (at, fg, dh),

то чему будет равны значения следующих функций: pred(fg), succ(dh), ord(at)?

25. Если переменная определена как

type p = (s1, s2, s3);

var d: p,

то чему будет равно значение d: = p(2);

26. Для чего используются переменные интервального типа?

27. Можно ли в Паскале определить интервальный тип, состоящий из простых чисел?

28. Если переменная определена так:

type s = ‘0’..’9’;

var d: s;

Какой базовый тип соответствует данному интервальному

типу? Допустимы ли следующие присваивания: d: = ‘5’; d: = ‘a’; d: = 9?

31

ЗАНЯТИЕ 3. СТРУКТУРА ПРОГРАММЫ НА TURBO PASCAL. ОСНОВНЫЕ ОПЕРАТОРЫ ЯЗЫКА