В таблице ASCII строго определены символы, имеющие коды от 0 до 127. В этот диапазон входят коды символов для цифр, латинских букв (как строчных, так и заглавных), знаков препинания и некоторых специальных символов ('#', '%', '~' и другие). Также здесь расположены коды управляющих символов, которые на экране не отображаются, но выполняют определенные функции, такие как перенос строки, отступ или звуковой сигнал. В расширенной таблице ASCII для символов национальных алфавитов, таких как русский, используются коды от 128 до 255.

В языке программирования C, при работе с числовыми кодами, доступна только основная часть таблицы ASCII, то есть символы с кодами от 0 до 127. Хотя тип char может принимать значения в диапазоне от -128 до 127.

Символы цифр, от '0' до '9', получили коды от 48 до 57. Этот факт часто используется для преобразования символов цифр в числа. Зная, что символ '0' имеет код 48, можно определить число, представленное символом '5' с кодом 53, просто вычитая 48 из 53. Таким образом, выполняя операцию '5' - '0', получается число 5.

Коды для заглавных английских букв (прописных) идут последовательно от 65 (A) до 90 (Z), а для строчных — от 97 до 122.

Задания:
  1. Создайте программу, в которой объявляются две переменные символьного типа. Одну из них присвойте символу '4', а другую – '7'. Используя функцию printf(), отобразите разность и сумму чисел, представленных этими символами.

  2. Переменная not_num содержит строку из трех символов-цифр, например "528". Из этой строки нужно сформировать соответствующее число и присвоить его переменной num. Затем следуют вывести на экран результат выражения num – 10. (Подсказка: строка — это массив символов, поэтому вы можете извлекать символы по их индексам. В результате преобразования первый символ массива будет показывать сотни, второй — десятки, а третий — единицы.)

  3. Символ A в английском алфавите имеет код 65. Напишите программу, которая определяет, какие символы находятся на 5, 12 и 19 позициях этого алфавита.

Управляющие символы

Управляющие символы в программных кодах зачастую обозначаются парой символов, поскольку один символ не может адекватно представлять их функцию. Эти символы обладают уникальными задачами. Например, буква 'a' отображается одним символом, но символ создания новой строки не имеет конкретного знака. Чтобы обойти это, мы используем комбинации, такие как '\n', чтобы выразить непечатаемый символ.

Представлены некоторые, но не все, управляющие символы и их предназначения:

'\n' — создание новой строки и переход на нее;

'\t' — табуляция (отступ в несколько пробелов);

'\r' — возврат каретки (перевод курсора в первую позицию текущей строки);

'\b' — возврат курсора на один символ назад с удалением этого символа.

В программном языке помимо невидимых управляющих существуют и специальные символы, которые обозначаются уникальными способами. Такие символы, как кавычки, одиночные кавычки или обратная косая черта, могут вызывать синтаксические недоразумения, если просто вставить их в программу в непрерывном виде. Для этого они обозначаются с использованием парных комбинаций:

'\\' — обратный косая черта;

'\'' — одиночная кавычка;

'\"' — двойная кавычка (не в строке можно просто '"');

'\0' — пустота, символ с кодом 0 по таблице ASCII.

Задания

  1. Разработайте программу, которая использует табуляцию, вывод строк в двойных и одиночных кавычках (апострофах), стирание предыдущего символа и возврат каретки. Для последних двух случаев вставьте управляющие символы внутрь строки и проверьте, как строка будет выведена, если в середине стоит нулевой символ.

  2. Отобразите на экране символьные значения управляющих символов и их коды по таблице ASCII. Пример вывода:

    \n - 10
    \t - 9
    \b - 8
    \r - 13
  3. Экспериментальным путем выясните, как можно вывести символ % на экран. (Есть два метода).

Вопросы для самопроверки:

  1. Какой диапазон кодов ASCII используется для символов цифр?
  2. Объясните, как преобразовать символ цифры в соответствующее число, используя ASCII-коды.
  3. Какой максимальный диапазон значений может принимать тип char в языке программирования C?
  4. Какие коды ASCII используются для управляющих символов новой строки и табуляции?
  5. Какие управляющие символы используются для возврата каретки и удаления предыдущего символа?
  6. В каком диапазоне находятся коды символов расширенной таблицы ASCII, используемые для национальных алфавитов?

Программа курса:

  1. Описание курса
  2. Введение в язык программирования C
  3. Типы данных в C и форматированный вывод
  4. Символьные типы и управляющие символы в C
  5. Операторы ветвления и switch в C
  6. Циклы и операторы в языке C
  7. Битовые операции в языке C
  8. Посимвольный ввод и вывод в C - буферизация
  9. Переменные, адреса и указатели в C
  10. Передача аргументов по ссылке и значению в C
  11. Форматированный ввод данных с использованием scanf
  12. Генерация псевдослучайных чисел на C
  13. Адресная арифметика в массивах C
  14. Передача массивов в функции и указатели
  15. Строки в языке C - особенности и функции работы
  16. Функции работы со строками в C
  17. Работа со структурами в C - создание и применение
  18. Динамические структуры данных в C
  19. Ввод и вывод данных из файлов в языке C
  20. Передача аргументов в C и работа с файлами
  21. Препроцессор в языке C - директивы и макросы
  22. Создание и компиляция многофайловых программ в C
  23. Использование статических и динамических библиотек в C