Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тurbo Pascal 7+.doc
Скачиваний:
12
Добавлен:
24.12.2018
Размер:
10.09 Mб
Скачать

12.10. Действия над порядковыми типами

Напомню, что порядковыми типами данных в Паскале называются следующие типы: целочисленные типы, Boolean, Char, перечислимый тип и диапазон.

Как видите, сюда не входят вещественные типы и String.

Порядковый тип - это такой тип, все значения которого можно перечислить, посчитать с начала до конца. Например, в тип Byte входит всего 256 различных значений, а именно все целые числа от 0 до 255. В тип Integer входит 65536 значений - целые числа от -32768 до 32767. Тип Char тоже порядковый, так как количество различных символов в Паскале ограничено числом 256.

Любой порядковый тип имеет внутреннюю нумерацию. Пусть мы задали тип TYPE weekday = (mon. tu. we. th. fr). Внутри компьютера mon будет иметь номер 0, tu - номер 1, we - 2, th - 3, fr - 4. Пусть мы задали переменную VAR a :array[mon..fr] of Real. Теперь для компьютера запись a[we] означает то же; что и запись а[2], если заранее была бы задана переменная VAR a: array[0..4] of Real Г

Тип Char имеет нумерацию от 0 до 255, Внутренний номер символа есть его код по таблице кодировки ASCII. Например, буква Б имеет номер (код) 129.

У целочисленных типов (Byte, ShortInt, Word, Integer, LongInt)внутренний номер совпадает с самим числом. Так, число -58 в типе ShortInt имеет номер -58.

Внутренний номер элемента диапазона равен внутреннему номеру элемента типа, для которого создан диапазон. Пусть мы для типа weekday создали диапазон TYPE days = we .. fr. Здесь we будет иметь номер 2, а не 0.

Операции над порядковыми типами

1. ORD. Эта функция выдает (или, как еще говорят, возвращает) внутренний номер значения любого порядкового типа. Например:

Ord('B') возвращает 129

Ord(we) возвращает 2

Ord(-58) возвращает -58

2. В любом порядковом типе выполняются операции сравнения >, <, >=, <=, =, <>. Например, справедливы неравенства 'ю' < 'я', we > tu . Это возможно потому, что операции сравнения выполняются фактически не над самими значениями, а над их внутренними номерами.

3. SUCC - сокращение от successor (следующий по порядку). Эта функция возвращает следующий по порядку элемент любого порядкового типа. Например:

Succ (8) возвращает 9

Succ('Ю') возвращает 'Я'

Succ (we) возвращает th

4. PRED - сокращение от predecessor - это successor "наоборот". PRED возвращает предыдущий элемент любого порядкового типа. Например:

Pred(25) возвращает 24

Pred('д') возвращает 'г'

Pred(tu) возвращает mo

Эти функции, как и любые другие, можно применять в выражениях. Например, оператор y:=10+Ord(we)+Succ(8) присвоит переменной у значение 21.

В операторе for переменная цикла может быть любого порядкового типа, например:

for ch:= 'd' to 'h' do ...

Задание 109

Подсчитать, сколько заглавных букв в диапазоне от Б до Ф.

Задание 110

Правда ли, что сентябрь наступает позже июля?

Задание 111

В кондитерском магазине стоит очередь за сникерсами. В очереди - Nina, Olga, Alex, Marianna, Ester, Misha, Tolik, Lena, Oleg, Anton, Pankrat, Robocop, Dima, Donatello, ,Zina, Sveta, Artur, Ramona, Vera, Igor, Ira. Известно, сколько у каждого денег. Спрашивается:

1. Хватит ли у них всех вместе денег на сникерс (300 рублей)?

2. Какой по порядку в очереди стоит Лена?

3. Правда ли, что у Панкрата денег больше, чему Миши?

Указание: для хранения денег организовать массив.