"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", Г.А. Заборовский, А.Е. Пупцев
Символьный тип данных char нужен, чтобы хранить и обрабатывать один знак: букву, цифру или другой символ. В программе значение такого типа записывают в апострофах, а внутри компьютера ему соответствует числовой код. Поэтому символы можно не только выводить на экран, но и сравнивать по кодам, а также преобразовывать из символа в число и обратно с помощью ord и chr. Последовательность символов — уже строка, а не значение char.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Символьный тип данных char предназначен для хранения одного символа — например, буквы, цифры или знака препинания. В программе тип указывает, какого рода значение допустимо записывать в переменную. Это нужно, чтобы компьютер и программист одинаково понимали назначение данных: char хранит знак, а не целое число или слово.
Символьная константа — это один символ, заключённый в апострофы: 'A' или '7'. Апострофы отделяют значение от имени переменной и других частей программы. Благодаря такой записи понятно, что A — именно буква как значение, а не команда обратиться к переменной с именем A.
Код символа — целое число, которым символ представлен во внутреннем кодировании компьютера. Компьютер хранит и обрабатывает данные в числовой форме, поэтому каждому поддерживаемому символу сопоставляется код. Это позволяет программам сравнивать символы и преобразовывать их представление.
Переменная символьного типа — именованная область памяти, в которой хранится значение типа char. Имя позволяет обратиться к сохранённому символу в разных местах программы, а тип ограничивает содержимое одним символом. Например, переменную можно использовать, чтобы сохранить введённую букву и затем проверить или вывести её.
Переменную char объявляют, указывая её имя и тип, а затем присваивают ей символьную константу. Например, в записи var letter: char; переменная называется letter, а после присваивания letter := 'K'; в ней хранится символ K. Имя переменной пишется без апострофов, потому что оно обозначает область памяти, тогда как апострофы выделяют само значение. Такое различие помогает не перепутать команду обратиться к данным с текстом, который нужно сохранить.
Значение char содержит один символ, потому что тип рассчитан на отдельный знак. Если присвоить ему последовательность вроде 'cat', получится не одно символьное значение, а строка из нескольких знаков. Для строки применяют другой тип данных, который умеет хранить последовательность символов. Разделение типов помогает программе учитывать, какие операции допустимы: один символ можно проверять отдельно, а строку — обрабатывать как целый текст.
Чтобы компьютер мог хранить знак, символу сопоставляют числовой код. Программа работает с этим внутренним представлением, хотя человеку обычно удобнее видеть букву или цифру. Кодирование превращает символы в данные, которые можно записать в памяти, передать и обработать. Одному и тому же видимому знаку соответствует код в используемой системе кодирования, поэтому при работе с текстом важно учитывать представление символов.
Символы можно сравнивать операциями отношения, например проверять, равны ли они или какой код больше. Такое сравнение опирается на числовые коды: если код одного символа меньше кода другого, первый считается меньшим при сравнении. Это не всегда совпадает с привычным алфавитным порядком, поскольку порядок зависит от устройства кодировки, а заглавные и строчные буквы могут располагаться в разных частях таблицы. Поэтому результат сравнения символов нужно трактовать с учётом кодов, а не только правил языка.
Функция ord получает код, соответствующий символу: например, ord('A') возвращает целое число. Функция chr выполняет обратное преобразование и по целому числу возвращает символ, например chr(n). Эти функции нужны, когда программе требуется перейти от знака к его числовому представлению или, наоборот, получить знак по коду. Результаты имеют разные типы: ord возвращает число, а chr — символ; доступность и точные правила функций зависят от используемого языка программирования.
| Свойство | Описание | Пример |
|---|---|---|
| Обозначение типа | Тип для хранения одного символа. | char |
| Допустимое значение | Один знак: буква, цифра или другой символ. | 'A' |
| Запись символьной константы | Один символ заключают в апострофы. | '7' |
| Объявление переменной | Указывают имя переменной и тип char. | var ch: char; |
| Сравнение символов | Результат определяется соотношением кодов. | a < b |
| Преобразование символа и кода | ord получает код, chr — символ по коду. | ord('A'), chr(65) |
Сначала найдите в таблице нужное действие, затем сверьте запись и тип значения. Примеры показывают общий вид выражений; числовой код в конкретной системе кодирования может отличаться. Особенно внимательно различайте значение в апострофах и имя переменной без них.
Нужно сохранить один знак, поэтому подходит тип char. Имя переменной выберем letter, а значение запишем в апострофах, чтобы оно воспринималось именно как символ. Решение можно записать так:
Ответ: var letter: char; letter := 'K'; После выполнения присваивания в letter хранится одна латинская буква K. Если убрать апострофы вокруг K, запись может быть воспринята как обращение к переменной с таким именем, а не как нужное значение.
Слово «раньше» здесь означает меньший числовой код, а не обязательно привычное место в алфавите. Поэтому достаточно сравнить значения переменных операцией отношения. Ход решения такой:
Ответ: результат выражения a < b показывает, меньше ли код символа в a кода символа в b. Без конкретных значений нельзя назвать переменную, которая содержит более ранний символ. При интерпретации результата следует помнить, что порядок кодов может не совпадать с алфавитным.
Здесь выполняются два разных преобразования: сначала символ становится числовым кодом, затем код — символом. Для первого применяют ord, для второго — chr. Пусть заданный код обозначен переменной n; конкретный результат зависит от принятой системы кодирования.
Ответ: код символа 'A' получают выражением ord('A'), а символ по заданному коду n — выражением chr(n). Значение code можно использовать в числовых операциях, а symbol — как значение char. Не следует заранее подставлять конкретное число для A, если система кодирования не указана.
Записывать символ без апострофов или в двойных кавычках. Тогда выражение может быть понято как имя переменной либо строка, а не как значение char. Ошибку допускают, перенося в программу обычную запись текста, но языки программирования используют специальные обозначения. Проверьте себя: у символьной константы один знак и по одному апострофу с каждой стороны.
Присваивать char несколько символов. Так пытаются хранить слово или короткий текст в типе для одного знака. Причина ошибки — смешение понятий символа и строки, хотя это значения разных типов. Проверьте длину значения: если знаков несколько, выберите строковый тип, а не char.
Путать символ-цифру '5' с числом 5. В первом случае хранится знак типа char, во втором — числовое значение. Ошибка возникает потому, что на экране они выглядят похоже, но апострофы и тип показывают разницу. Проверьте себя по записи и назначению: символ можно сравнивать как знак, а число — использовать в арифметике.
Считать, что сравнение всегда совпадает с алфавитным порядком. Программа сопоставляет коды, а их порядок задаётся кодировкой. Такое заблуждение возникает из-за привычки сравнивать буквы по правилам языка, не учитывая компьютерное представление. Чтобы проверить вывод, сравнивайте именно коды символов или учитывайте, в каком порядке они расположены в используемой кодировке.
Для работы с char нужны базовые знания о переменных: как объявить имя, указать тип и присвоить значение. Связь с кодированием информации объясняет, почему буквам и знакам соответствуют числа во внутреннем представлении компьютера. Символьные переменные применяют при обработке текста, например для проверки отдельного знака или поиска цифры в строке. Если требуется обработать последовательность символов целиком, понадобятся строковый тип и операции над строками.
Почему символ нужно заключать именно в апострофы?
Апострофы показывают, что записанный знак — это символьная константа, то есть значение, а не имя переменной. Например, 'A' обозначает символ, а A без апострофов может быть именем.
Можно ли хранить слово в переменной типа char?
Нет, char предназначен для хранения одного символа. Слово состоит из нескольких символов, поэтому для него используют строковый тип.
Чем символ '7' отличается от числа 7?
Символ '7' — знак, представленный типом char, а число 7 — числовое значение. Они записываются по-разному и предназначены для разных операций: например, число можно складывать как число.
Почему при сравнении двух букв результат может не совпасть с привычным алфавитным порядком?
Программа сравнивает числовые коды символов, а не руководствуется правилами человеческого алфавита. Порядок кодов может отличаться от привычного, например, из-за различия строчных и заглавных букв.
Для чего нужны функции ord и chr?
Функция ord получает числовой код символа, а chr по коду возвращает соответствующий символ. Они помогают переходить от текстового представления к числовому и обратно.
4.1. Символьный тип данных