Элементарной составной частью любого текста является символ, для представления которого используется тип Character. Переменная символьного типа, очевидно, содержит ровно один символ. Если быть совсем точным, переменная символьного типа может принимать одно из 256 значений из набора символов ``Latin-1''. При работе с большинством языков, использующих письменный латинский алфавит, например, английским, французским или испанстким, типа Сharacter вполне достаточно. Latin-1 является вариантом набора символов ASCII (который еще называют ISO 646), поэтому использование типа Сharacter при обработке файлов, содержащих ASCII-текст, тоже корректно.
В языке Ada 95 определен также тип Wide_Character. Если необходимо работать с нелатинскими алфавитами (например, китайским или арабским) вместо Сharacter следует использовать Wide_Character. Переменная этого типа может содержать любой символ из всего набора ISO 10646. Мы пока не будем обсуждать тип Wide_Character, но важно хотя бы знать о его существовании.
Константы символьного типа записываются в одинарных кавычках (точно так же, как в С и С++). Таким образом, 'a' - это константа ``строчное a'' , а ''' - это константа ``одинарная кавычка''.
В Ada 95 имеется большой набор предопределенных операций для работы с символами. Многие из этих операций описаны в пакете Characters.Handling; если интересно, можете взгянуть на полное описание пакета Characters.Handling в RM, раздел A.3.2. Например, в Characters.Handling описана функция с именем To_Lower, которая принимает одиночный символ, и возвращает тот же символ в нижнем регистре (разумеется, если это возможно; иначе она возвращает исходный символ).
Пакет Text_IO содержит операцию `Get', которая считывает одиночный символ и операцию `Put', окоторая его выводит.
Теперь давайте проиллюстрируем сказанное простой программой, которая будет задавать вопрос, требующий ответа да/нет, считывать один символ ответа, и, в зависимости от него, выполнять какие-то действия:
Тип Character в Ada аналогичен типу ``char'' в C, а пакет Characters.Handling в Ada 95 соответствует файлу заголовков ctypes.h.
Поддержка наборов Latin-1 и ISO 10646 в Ada обязательна, в то время как поддержка дополнительных ``национальных'' ноборов символов возможна, но является необязательной опцией компилятора.
Что из приведенного ниже является символьной константой?
Перейти к предыдущему разделу | Перейти к следующему разделу | Вернуться к содержанию Урока 8 |
---|
David A. Wheeler (dwheeler@ida.org)
Исходная копия этого документа находится по адресу
"http://www.adahome.com/Tutorials/Lovelace/s8s1.htm".
Исходная копия перевода размещена на сайте http://www.ada-ru.org
Перевод: Юрий Королев
Общая редакция перевода: Г.Ю. Сисюк