На Горох
Информатика, 10 класс

4.1. Символьный тип данных

"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", Г.А. Заборовский, А.Е. Пупцев

Объяснение темы В оглавлении: 4.1. Символьный тип данных

Кратко о теме

Символьный тип данных 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)

Сначала найдите в таблице нужное действие, затем сверьте запись и тип значения. Примеры показывают общий вид выражений; числовой код в конкретной системе кодирования может отличаться. Особенно внимательно различайте значение в апострофах и имя переменной без них.

Разбор задач

Задача 1. Объявить переменную для хранения одной латинской буквы и присвоить ей значение 'K'.

Нужно сохранить один знак, поэтому подходит тип char. Имя переменной выберем letter, а значение запишем в апострофах, чтобы оно воспринималось именно как символ. Решение можно записать так:

  1. Указываем имя переменной и символьный тип: var letter: char;
  2. Присваиваем ей константу 'K': letter := 'K';
  3. Проверяем запись: имя letter не заключено в апострофы, а единственный сохраняемый знак заключён.

Ответ: var letter: char; letter := 'K'; После выполнения присваивания в letter хранится одна латинская буква K. Если убрать апострофы вокруг K, запись может быть воспринята как обращение к переменной с таким именем, а не как нужное значение.

Задача 2. Для переменных a и b типа char определить, какая содержит символ, стоящий раньше в принятом порядке кодов.

Слово «раньше» здесь означает меньший числовой код, а не обязательно привычное место в алфавите. Поэтому достаточно сравнить значения переменных операцией отношения. Ход решения такой:

  1. Записываем условие сравнения: a < b.
  2. Если условие истинно, код символа в a меньше кода символа в b, значит, раньше в порядке кодов стоит символ из a.
  3. Если условие ложно, проверяем обратное сравнение b < a; при его истинности раньше стоит символ из b.
  4. Если оба сравнения ложны, символы равны, поскольку их коды совпадают.

Ответ: результат выражения a < b показывает, меньше ли код символа в a кода символа в b. Без конкретных значений нельзя назвать переменную, которая содержит более ранний символ. При интерпретации результата следует помнить, что порядок кодов может не совпадать с алфавитным.

Задача 3. Получить код символа 'A', а затем определить символ, соответствующий заданному коду.

Здесь выполняются два разных преобразования: сначала символ становится числовым кодом, затем код — символом. Для первого применяют ord, для второго — chr. Пусть заданный код обозначен переменной n; конкретный результат зависит от принятой системы кодирования.

  1. Передаём символ функции ord: code := ord('A'); переменная code должна быть целого типа.
  2. Передаём заданный целый код функции chr: symbol := chr(n); переменная symbol должна иметь символьный тип.
  3. Проверяем типы: ord возвращает число, а chr — один символ, поэтому их результаты нельзя считать взаимозаменяемыми.

Ответ: код символа 'A' получают выражением ord('A'), а символ по заданному коду n — выражением chr(n). Значение code можно использовать в числовых операциях, а symbol — как значение char. Не следует заранее подставлять конкретное число для A, если система кодирования не указана.

Типичные ошибки

Записывать символ без апострофов или в двойных кавычках. Тогда выражение может быть понято как имя переменной либо строка, а не как значение char. Ошибку допускают, перенося в программу обычную запись текста, но языки программирования используют специальные обозначения. Проверьте себя: у символьной константы один знак и по одному апострофу с каждой стороны.

Присваивать char несколько символов. Так пытаются хранить слово или короткий текст в типе для одного знака. Причина ошибки — смешение понятий символа и строки, хотя это значения разных типов. Проверьте длину значения: если знаков несколько, выберите строковый тип, а не char.

Путать символ-цифру '5' с числом 5. В первом случае хранится знак типа char, во втором — числовое значение. Ошибка возникает потому, что на экране они выглядят похоже, но апострофы и тип показывают разницу. Проверьте себя по записи и назначению: символ можно сравнивать как знак, а число — использовать в арифметике.

Считать, что сравнение всегда совпадает с алфавитным порядком. Программа сопоставляет коды, а их порядок задаётся кодировкой. Такое заблуждение возникает из-за привычки сравнивать буквы по правилам языка, не учитывая компьютерное представление. Чтобы проверить вывод, сравнивайте именно коды символов или учитывайте, в каком порядке они расположены в используемой кодировке.

Связь с другими темами

Для работы с char нужны базовые знания о переменных: как объявить имя, указать тип и присвоить значение. Связь с кодированием информации объясняет, почему буквам и знакам соответствуют числа во внутреннем представлении компьютера. Символьные переменные применяют при обработке текста, например для проверки отдельного знака или поиска цифры в строке. Если требуется обработать последовательность символов целиком, понадобятся строковый тип и операции над строками.

Что запомнить

  • Тип char предназначен для хранения одного символа.
  • Символьную константу записывают в апострофах.
  • Символ и строка — значения разных типов.
  • Каждому символу соответствует числовой код.
  • Сравнение символов выполняется по их кодам.
  • ord получают код символа, а chr — символ по коду.

Частые вопросы по теме

Почему символ нужно заключать именно в апострофы?

Апострофы показывают, что записанный знак — это символьная константа, то есть значение, а не имя переменной. Например, 'A' обозначает символ, а A без апострофов может быть именем.

Можно ли хранить слово в переменной типа char?

Нет, char предназначен для хранения одного символа. Слово состоит из нескольких символов, поэтому для него используют строковый тип.

Чем символ '7' отличается от числа 7?

Символ '7' — знак, представленный типом char, а число 7 — числовое значение. Они записываются по-разному и предназначены для разных операций: например, число можно складывать как число.

Почему при сравнении двух букв результат может не совпасть с привычным алфавитным порядком?

Программа сравнивает числовые коды символов, а не руководствуется правилами человеческого алфавита. Порядок кодов может отличаться от привычного, например, из-за различия строчных и заглавных букв.

Для чего нужны функции ord и chr?

Функция ord получает числовой код символа, а chr по коду возвращает соответствующий символ. Они помогают переходить от текстового представления к числовому и обратно.

Спросить по теме параграфа

4.1. Символьный тип данных

Эта же тема в других учебниках

Учебник

Оглавление →
Предмет
Информатика
Класс
10 класс
Учебник
"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", Г.А. Заборовский, А.Е. Пупцев