"Информатика (изд. "БИНОМ. Лаборатория знаний")", Угринович Н.Д.
Компьютер хранит текст не как набор букв, а как последовательность числовых кодов: каждому символу соответствует определённое число. В практической работе «Коды символов» нужно разработать проект, который показывает связь между символами и их кодами. Такая программа помогает понять, как компьютер обрабатывает текст, сравнивать кодировки и находить код нужного знака. Главное — различать сам символ, его числовой код и способ представления этого кода в памяти.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Символ — отдельный знак текста: буква, цифра, знак препинания или пробел. Символы нужны, чтобы записывать слова и сообщения, но компьютер должен представить каждый такой знак в виде данных. Поэтому при работе с текстом важно различать видимый знак и его внутреннее числовое представление.
Код символа — число, которое по правилам выбранной кодировки соответствует символу. Например, в ASCII заглавной латинской букве A соответствует число 65. Числовой код нужен программе, чтобы хранить и обрабатывать текст; сам по себе он не является изображением буквы.
Кодировка — правило, связывающее символы с числовыми кодами. Кодировка нужна, чтобы разные программы одинаково понимали, какие знаки обозначают сохранённые числа. Если при чтении текста выбрана неподходящая кодировка, вместо ожидаемых букв могут появиться другие знаки.
ASCII и Unicode — примеры систем кодирования символов. ASCII задаёт коды для основных латинских букв, цифр и знаков, а Unicode охватывает символы множества языков и другие знаки. Эти названия нужны, чтобы понимать, почему один набор кодов подходит для простого примера, а для многоязычного текста требуется более широкий стандарт.
Когда человек вводит букву, компьютер должен сохранить её так, чтобы программы могли выполнить над ней действия. Для этого символу сопоставляется число, а данные записываются в соответствии с правилами кодировки. Такая схема позволяет копировать, сравнивать и передавать текст как обрабатываемую компьютером информацию. Без общего правила одна программа могла бы истолковать сохранённые значения иначе, чем другая.
В проекте «Коды символов» сначала нужно решить, что именно делает программа: показывает код введённого символа, преобразует код обратно в знак или выполняет оба действия. Это решение определяет, какие данные пользователь вводит и что программа выводит. Если требуется узнать код, входом будет символ, а результатом — число. Если требуется обратное преобразование, входом становится числовой код, а результатом — символ.
Далее задают алгоритм. При прямом преобразовании программа получает символ, обращается к средствам выбранной среды программирования и выводит соответствующее числовое значение. При обратном преобразовании она принимает число, проверяет, можно ли использовать его в выбранной кодировке, и получает знак. Проверка нужна потому, что произвольное число не обязательно соответствует допустимому символу.
Для обработки слова или строки алгоритм повторяют для каждого символа по очереди. Программа может выводить пары «символ — код», чтобы результат было удобно проверять и сравнивать. Например, строка A7 в ASCII состоит из символов с кодами 65 и 55. Нельзя считать, что код всей строки — одно число: строка содержит несколько символов, и каждый из них имеет собственный код.
Выбор кодировки влияет на полученный результат. Значения ASCII удобны для примеров с латинскими буквами, цифрами и основными знаками, но этот набор не описывает все символы, используемые в русском тексте. Поэтому для программы, работающей с разными языками, нужно использовать возможности среды, поддерживающие Unicode. Тогда особенно важно уточнять, что именно показывает выбранная функция: числовое значение символа или его представление в конкретной кодировке.
| Символ | Код в ASCII | Пояснение |
|---|---|---|
| A | 65 | Заглавная латинская буква |
| a | 97 | Строчная латинская буква |
| 0 | 48 | Цифра как символ текста |
| 7 | 55 | Цифра как символ текста |
Таблица помогает сопоставить конкретный знак с числовым значением и проверить результат программы. Обратите внимание: цифра в тексте — это символ со своим кодом, а число, введённое для вычислений, является числовым значением. Таблица показывает только несколько примеров ASCII и не предназначена для поиска кодов всех языковых символов.
Задача. Разработать алгоритм для проекта, который получает строку A7 и показывает код каждого её символа в ASCII. Нужно определить результат по символам, а не воспринимать A7 как одно число. Для проверки используем значения из таблицы: A соответствует коду 65, а 7 — коду 55.
Определяем входные данные: программа получает строку A7. Строка состоит из двух символов, поэтому обработать нужно два значения. На этом шаге важно не смешивать цифру 7 как знак текста с числом семь.
Выбираем направление преобразования: из символа получаем числовой код. Поскольку в условии указана ASCII, применяем именно эту кодировку для входящих в её набор знаков. Если бы в строке была, например, кириллическая буква, выбранной таблицы было бы недостаточно.
Описываем повторяющиеся действия: программа берёт очередной символ строки, определяет его код и выводит пару «символ — код». Затем переходит к следующему символу. Повтор нужен, потому что алгоритм должен обработать всю строку, а не только первый знак.
Находим код первого символа. Первый знак — заглавная латинская A, её код в ASCII равен 65. Значит, первая выведенная пара будет A — 65.
Находим код второго символа. Второй знак — цифра 7, рассматриваемая именно как символ строки; её код в ASCII равен 55. Вторая пара будет 7 — 55.
Собираем результат и проверяем, что обе исходные позиции обработаны по порядку. Программа должна вывести две пары, а не сумму или одно общее значение. Такая проверка подтверждает, что строка обработана посимвольно.
Ответ. Для строки A7 проект выводит A — 65 и 7 — 55. Алгоритм подходит для этих знаков, потому что оба входят в ASCII. Для символов, не входящих в ASCII, нужно выбрать кодировку, которая их поддерживает.
Смешивать символ и число. Ошибка возникает, когда цифру в строке принимают за число для вычисления: знак 7 имеет код 55 в ASCII, тогда как числовое значение семь — это другое понятие. Проверяйте, что именно задано на входе: текстовый символ или число.
Считать, что у символа всегда один и тот же код. Такое предположение появляется, если ученик запоминает только пример из одной таблицы. Значения зависят от правил кодировки, поэтому при проверке уточняйте, какая кодировка используется и входит ли в неё нужный знак.
Применять ASCII к любому тексту. Это делают, потому что ASCII часто используют в простых примерах, но его набора недостаточно для кириллицы и многих других знаков. Проверьте состав входных данных: если там есть символы разных письменностей, выберите средство, поддерживающее Unicode.
Обрабатывать только первый знак строки. Такое происходит, если алгоритм не повторяет преобразование для всех символов. Сверьте число выведенных пар с числом знаков во входной строке: для строки из двух символов должны появиться две пары.
Коды символов связаны с темой информации и способов её представления: текст, как и другие данные, кодируется для хранения и обработки. Эта тема также помогает понять, почему кодировка важна при сохранении и передаче файлов: программе нужны одинаковые правила чтения символов. В программировании преобразование символа в код и обратно использует ввод, обработку данных и вывод результата. Работа со строками продолжает эту идею: строка состоит из отдельных символов, поэтому её можно обрабатывать по одному знаку за раз.
Компьютер представляет текстовые символы с помощью числовых кодов.
Кодировка задаёт правила соответствия между символами и кодами.
ASCII подходит для ограниченного набора знаков, а Unicode охватывает символы разных письменностей.
В строке каждый символ обрабатывается отдельно; цифра в тексте не равна числу для вычислений.
При проверке проекта учитывай направление преобразования и набор символов, поддерживаемый выбранной кодировкой.
Практическая работа 1.8 Разработка проекта «Коды символов»