Символьные типы данных
Символьные типы предназначены для представления символов. В Object Pascal можно использовать две разновидности символов:
-
Типу Char соответствует множество из 256 символов, в котором символы упорядочены в соответствии с таблицей кодировки ANSI (American National Standard Code for Information Interchange). Каждый символ этого типа занимает 1 байт. Соответствие между кодом и соответствующим ему символом задается так называемой таблицей кодировки символов. Первая половина таблицы (коды от 0 до 127) используется для управляющих символов, цифр, латинских букв и наиболее распространенных символов, таких, как знаки препинания, знаки математических операций и т.п. Вторая половина таблицы (коды от 128 до 255) используется для национальных алфавитов и других символов.
-
Типу WideChar соответствует множество символов Unicode, в котором каждый символ занимает 2 байта, и естественно, эта таблица символов может содержать очень большой список символов. Им соответствуют коды в диапазоне от 0 до 65535. Первые 256 символов в этом множестве соответствуют символам ANSI с соответствующими кодами.
В наших лабораторных работах мы будем использовать только тип Char. Фрагмент таблицы кодировки символов представлен ниже, в таблице 6.2.
Таблица 6.2 – Кодировка некоторых символов ANSI
Символ | Код | Двоичное представление | 16-ричное представление |
Отсутствие символа | 0 | 0000 0000 | $00 |
Пробел | 32 | 0010 0000 | $20 |
! | 33 | 0010 0001 | $21 |
… |
|
|
|
0 | 48 | 0011 0000 | $30 |
1 | 49 | 0011 0001 | $31 |
2 | 50 | 0011 0010 | $32 |
3 | 51 | 0011 0011 | $33 |
… |
|
|
|
A | 65 | 0100 0001 | $41 |
B | 66 | 0100 0010 | $42 |
C | 67 | 0100 0011 | $43 |
|
|
|
|
a | 97 | 0110 0001 | $61 |
b | 98 | 0110 0010 | $62 |
… |
|
|
|
А | 192 | 11000000 | $C0 |
Б | 193 | 11000001 | $C1 |
… |
|
|
|
а | 224 | 1110 0000 | $E0 |
б | 225 | 1110 0001 | $E1 |
… |
|
|
|
я | 255 | 1111 1111 | $FF |
Обратите внимание на порядок расположения символов в таблице. Такой порядок позволяет упорядочивать слова и идентификаторы в алфавитном порядке с помощью кода символа.
Символьные константы можно записывать разными способами. Для большинства символов можно использовать изображение этого символа, заключенное в одинарные кавычки. Например, ‘1’, ‘z’, ‘*’. Специальные символы удобно представлять с помощью их кода, в виде целого числа, которому предшествует знак #. Например, #0, #8, #13. Кроме того, любой символ может быть получен с помощью функции chr(), которой в качестве аргумента передается код символа. Например, chr(65) возвращает прописную латинскую букву ‘A’, а chr(255) – строчную букву ‘я’ кириллицы.
Обратное преобразование, то есть преобразование символа в код можно выполнить с помощью функции ord(). Например, ord(‘0’) вернет 48.
При вводе отдельных символов из компонентов класса TEdit, необходимо иметь в виду, что свойство text этих компонентов возвращает не символ, а строку символов. Чтобы получить отдельный символ этой строки следует использовать порядковый номер символа в строке, записывая его в квадратных скобках после имени строки символов. Например, Edit1.text[1].
Для символов применимы все операции сравнения. При этом сравниваются коды символов. Поэтому ‘б’ > ’Б’, и ‘а’ кириллицы больше, чем латинское ’a’.
Группы символов, которые соответствуют буквам, расположены таким образом, чтобы упростить преобразование больших букв в маленькие и наоборот. Разница в кодировке больших и маленьких букв и латинского и русского алфавита равна $20 или 32. Следовательно, чтобы превратить строчную букву в прописную, достаточно из ее кода вычесть 32. Число 32 можно и не помнить, так как его можно получить в результате вычитания кода прописной буквы из кода соответствующей строчной. Например, ord(z) – ord(Z), или оrd(a) – ord(A).
Особенность кодировки цифр состоит в том, что младший полубайт символа цифры соответствует ее числовому значению в двоичном представлении. Это позволяет легко преобразовывать код символа цифр в соответствующие числа с помощью логической операции and и маски $0F. Например, в результате операции ord(‘5’) and $0F получится число 5.
Для преобразования символов цифр в соответствующие числа можно использовать тот факт, что символы цифр следуют в таблице кодировки друг за другом в порядке возрастания значений этих цифр.
Ниже приведено два варианта такого преобразования.
Первый вариант использует разницу в кодах нуля и выбранной цифры, которая соответствует числовому значению символа цифры
…
var c : char; n : integer;
…
n := ord(c)- 48; // что равносильно ord(c) –ord(‘0’);
Второй вариант такого преобразования использует операцию and $0F с маской $0F.
…
const maska = $0F; // константа равная двоичному числу 00001111
var c : char; n : integer;
…
n := ord(c) and maska; // маска удаляет старший полубайт
- Ответственный за выпуск: Бивойно п.Г. , декан факультета электронных и информационных технологий, канд. Техн. Наук, доцент
- Содержание
- 4.1.4 Разработка интерфейса проекта 66
- 5.1.7 Разработка интерфейса проекта 81
- Введение
- Лабораторная работа № 1. Знакомство с интегрированой средой разработки (иср)“Delphi 7”
- Краткие теоретические сведения о иср “Delphi 7”
- Конструктор стартовой формы
- Главное окно иср “Delphi 7”
- Главное меню
- Панели инструментов
- Палитра компонентов
- Окно просмотра дерева объектов
- Окно редактора кода
- Закладка редактора кода модуля
- Закладка редактора кода файла проекта
- Окно Object Inspector
- Закладка описания свойств объекта
- События и процедуры обработки событий
- Создание простейшего проекта
- Разработка интерфейса проекта
- Создание процедуры инициализации приложения
- Создание процедуры вычисления результата
- Улучшение проекта
- Сохранение проекта
- Продолжение работы с проектом на другом компьютере
- Содержание отчета
- Контрольные вопросы и задания
- Рекомендованая литература
- Лабораторная работа № 2. Вещественный тип данных. Расчеты по формулам
- Краткие теоретические сведения
- Язык программирования Object Pascal
- Объекты, переменные и константы
- Классы и типы
- Объявление объектов и переменных
- Вещественный тип данных
- Выражение
- Стандартные функции для данных вещественного типа
- Инструкция присваивания
- Форматирование результатов расчетов
- Создание проекта «Расчет по формуле»
- Создание интерфейса
- Компонент ole-контейнер
- Компонент Group Box
- Компонент Memo
- Завершение работы над интерфейсом
- Создание процедур обработки событий Процедура очистки протокола
- Процедура инициализации формы
- Процедура выполнения расчета по формуле
- Контольный пример
- Трассировка процедуры
- Содержание отчета
- Контрольные вопросы
- Рекомендованая литература
- Лабораторная работа № 3. Подпрограммы Краткие теоретические сведения
- Правила написания подпрограмм
- Описание процедуры
- Вызов процедуры
- Описание функции
- Вызов функции
- Способы передачи параметров в подпрограммы
- Передача параметров по значению
- Передача параметров по наименованию
- Расположение подпрограмм
- Подпрограммы обработки событий класса формы
- Другие подпрограммы класса формы
- Размещение подпрограмм в модуле
- Размещение подпрограмм в других модулях
- Размещение подпрограмм внутри других подпрограмм
- Область действия имен
- Реализация проекта «Процедуры и функции»
- Создание процедур и функций Процедуры инициализации
- Процедура считывания коэффициентов уравнения
- Функция для расчета по формуле
- Использование дополнительного модуля
- Завершение работы над проектом
- Исследование созданного приложения
- Анализ передачи параметров по наименованию
- Анализ передачи параметров по значению
- Содержание отчета
- Контрольные вопросы
- Операции над логическими данными
- Логические выражения
- Разветвляющиеся алгоритмы
- Программирование разветвлений Условный оператор if…then…else
- Оператор варианта case
- Реализация проекта «Организация разветвлений»
- Разработка интерфейса проекта
- Компоненты для работы со списками
- Процедуры обработки событий выбора из списка
- Процедуры обработки событий onKeyPress
- Решение квадратного уравнения
- Содержание отчета
- Контрольные вопросы
- Лабораторная работа № 5. Построение циклов с инструкциями „while” и „repeat”
- Краткие теоретические сведения
- Циклические алгоритмы
- Инструкция while…do
- Инструкция repeat…until
- Прерывание цикла
- Итерационные алгоритмы
- Пример итерационного алгоритма для вычисления кубического корня
- Задание для самостоятельной работы
- Алгоритмы вычисления сумм бесконечных рядов
- Задание для самостоятельной работы
- Создание проекта WhileRepeat
- Разработка интерфейса проекта
- Компоненты PageControl и TabSheet
- Компонент CheckBox
- Создание закладки для вычисления корня
- Создание закладки для вычисления синуса
- Создание процедур и функций Процедура для контроля ввода данных
- Процедура вычисления кубического корня
- Процедура вычисления синуса
- Задания для расчетно-графической работы № 2
- Содержание отчета
- Контрольные вопросы
- Целые типы данных
- Символьные типы данных
- Ограниченный тип данных.
- Применение инструкции цикла for
- Табулирование значений функций
- Форматирование результатов при выводе таблиц
- Строки символов
- Операции над строками
- Процедура Delete
- Процедура Insert
- Функция Pos
- Функции Trim, TrimLeft, TrimRight
- Создание проекта «Применение цикла for»
- Разработка формы «Табулирование функции» Разработка интерфейса
- Создание вспомогательных процедур и функций
- Создание процедуры табулирования функции
- Разработка формы «Таблица “символ-код”» Разработка интерфейса
- Создание процедуры вывода таблицы символ-код
- Разработка формы «Обработка последовательностей целых чисел»
- Разработка интерфейса
- Создание процедуры обработки последовательности целых чисел
- Создание многодокументной (mdi)формы
- Задание для самостоятельной работы
- Содержание отчета
- Контрольные вопросы
- Рекомендованая литература