Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal.doc
Скачиваний:
32
Добавлен:
12.03.2016
Размер:
3.29 Mб
Скачать
      1. Действия над порядковыми типами

Напомню, что порядковыми типами данных в Паскале называются следующие типы: целочисленные типы, 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]означает то же, что и записьa[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('Б') возвращает 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)присвоит переменнойyзначение 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. Хватит ли у них всех вместе денег на Сникерс (3 рубля) ?

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]