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

§ 4. Символьные и строковые величины. Операции над символьными и строковыми величинами

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

Объяснение темы В оглавлении: § 4. Символьные и строковые величины. Операции над символьными и строковыми величинами

Кратко о теме

Символьные и строковые величины позволяют программе работать с буквами, цифрами и другими знаками. Символьная переменная хранит один символ, а строковая — последовательность символов переменной длины. Компьютер представляет каждый символ числовым кодом, поэтому символы и строки можно сравнивать. Операция сцепления соединяет строки, а стандартные функции помогают узнать их длину и получить или изменить фрагмент. Эти средства нужны при обработке текста, введённого пользователем.

Объяснение темы

Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.

Определения и обозначения

Символьная величина — значение типа char, содержащее один символ. Это может быть буква, цифра, знак препинания или другой символ, поддерживаемый кодировкой. Символьную константу записывают в одинарных кавычках, например 'Я' или '7'. Такой тип нужен, когда программе требуется хранить или проверять именно один знак.

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

Код символа — целое число, сопоставленное символу в таблице кодировки. Благодаря кодам компьютер может хранить символы в памяти и сравнивать их как упорядоченные значения. Сравнение кодов помогает определить порядок символов, хотя этот порядок не обязательно совпадает с привычным порядком слов.

Лексикографическое сравнение строк — сопоставление строк по символам слева направо. Проверка продолжается до первого различия или до конца одной из строк. Это определение нужно, чтобы понять, почему результат сравнения зависит от кодов символов, а не от смысла слов.

Как это устроено

Переменную объявляют с указанием типа, чтобы компилятор знал, какое значение в ней хранится и какие действия допустимы. В Pascal запись var ch: char; s: string; объявляет символьную и строковую переменные. Значения присваивают оператором :=: ch := 'А'; s := 'Алфавит';. Одинарные кавычки обозначают константу, а тип переменной помогает отличить один символ от последовательности символов.

Хотя человек видит буквы и знаки, компьютер хранит их числовые коды. Поэтому символ можно разместить в памяти, передать программе и сопоставить с другим символом через сравнение кодов. Порядок кодов задаётся таблицей кодировки, так что при проверках нельзя автоматически считать, будто буквы расположены так же, как в алфавите. В частности, код заглавной буквы может отличаться от кода строчной.

Операция + выполняет сцепление: берёт символы первого операнда, затем символы второго и образует новую строку. Например, выражение 'Добро' + 'е утро' даёт 'Доброе утро'. Порядок важен, потому что сцепление не переставляет части и не складывает их числовые значения. Если поменять операнды местами, получится другая строка.

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

Стандартные средства обработки строк позволяют узнать длину и получить или изменить фрагмент. Функция Length(s) возвращает целое число символов строки s; Copy(s, i, n) возвращает n символов, начиная с позиции i. Процедура Delete(s, i, n) удаляет из s указанное число символов с позиции i, а Insert(t, s, i) вставляет t в s с позиции i. В позиционных аргументах задают место начала и количество символов, поэтому при вызове нужно следить за их порядком и допустимыми значениями.

Операции над символьными и строковыми величинами

ДействиеСимвольные величиныСтроковые величиныРезультат
ПрисваиваниеСимвольная константа, например ch := 'А'Строковая константа или другое строковое значение, например s := 'Дом'Переменная получает значение соответствующего типа
СцеплениеОбычно символ можно соединить со строкой в строковое значениеОперация + соединяет операнды в их исходном порядкеНовая строка
Сравнение на равенство и неравенствоСравниваются коды символовПроверяется совпадение строкЛогическое значение: истина или ложь
Сравнение на порядокСопоставляются коды символовСимволы сравниваются слева направоЛогическое значение: истина или ложь
Получение длины или фрагментаОдин символ имеет длину 1Length, Copy, Delete и Insert работают с длиной или частями строкиЧисло, новая строка либо изменение исходной строки

В таблице сначала найдите нужное действие, а затем сравните, как оно применяется к символу и к строке. Обращайте внимание на тип результата: сравнение даёт логическое значение, а Length — целое число. Copy возвращает фрагмент, тогда как Delete и Insert изменяют строковую переменную.

Разбор задач

1. Символьная переменная

Условие. Объявить символьную переменную, присвоить ей букву и вывести её на экран. Для решения важно выбрать тип, который рассчитан на один символ, и записать значение в кавычках.

  1. Объявляем переменную ch типа char: var ch: char;.
  2. Присваиваем ей букву: ch := 'М';. Одинарные кавычки показывают, что это символьная константа.
  3. Выводим значение командой writeln(ch);. На экран попадёт сохранённый символ.

Ответ. Программа выведет букву М. Если вместо char объявить строку, значение всё ещё можно хранить, но условие задачи требует именно символьную переменную.

2. Сцепление строк

Условие. Для двух заданных строк получить и вывести строку, в которой первая стоит перед второй. Пусть даны a := 'север'; и b := 'ный ветер';. Нужно не переставить части и не добавить между ними символы, которых нет в значениях.

  1. Записываем исходные строки в переменные a и b типа string.
  2. Составляем выражение a + b: сначала в результат переходят символы 'север', затем символы 'ный ветер'.
  3. Присваиваем выражение переменной c: c := a + b;, после чего выводим writeln(c);.

Ответ. Получится 'северный ветер'. Если поменять операнды местами, результат будет 'ный ветерсевер', поэтому порядок частей следует проверять до вывода.

3. Длина и сравнение

Условие. Для введённой строки вывести её длину и определить, предшествует ли она строке 'мир' при лексикографическом сравнении. Сначала полезно отделить два действия: подсчёт символов и сравнение строк. Их результаты имеют разные типы.

  1. Считываем строку в переменную s типа string, например командой readln(s);.
  2. Находим длину выражением Length(s) и выводим её: writeln(Length(s));. Функция возвращает число символов.
  3. Проверяем условие s < 'мир'. Программа сопоставляет коды символов слева направо и выдаёт логический результат.
  4. Выводим результат проверки, например через writeln(s < 'мир');.

Ответ. Программа печатает длину введённой строки и значение условия сравнения. Для строки 'мак' первый символ совпадает с первым символом 'мир', затем сравниваются 'а' и 'и'; итог определяется их кодами, а не значением слов.

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

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

Вторая ошибка — считать строку всегда одним символом или строкой фиксированной длины. Это возникает из-за путаницы между char и string, хотя строка может содержать много символов, а её длина меняется. Для самопроверки спросите себя, нужно ли хранить только один знак или целый фрагмент текста.

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

Четвёртая ошибка — воспринимать + как арифметическое сложение или менять местами части строки. Такая привычка возникает из-за того, что знак + обычно связан с числами, но при строках он соединяет символы. Подставьте короткие строки и прочитайте результат слева направо: 'А' + 'Б' даёт 'АБ', а не 'БА'.

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

Для работы с символами и строками нужны знания о переменных, типах данных, присваивании, вводе и выводе. Условия и операции сравнения позволяют проверять, равны ли строки или выполняется ли нужный порядок. Эти темы соединяются в программах, которые принимают текст от пользователя и выбирают дальнейшее действие по его содержимому.

Обработка строк пригодится при работе с текстовыми данными, поиске и преобразовании фрагментов текста. Она помогает проверять введённые значения, собирать сообщения и изменять их части. Поэтому строки встречаются во многих программах, где пользователь вводит имена, команды или другие текстовые сведения.

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

  • Символьная величина хранит один символ, строковая — последовательность символов.
  • Символы кодируются числами, поэтому их можно сравнивать.
  • Сцепление соединяет строки в заданном порядке.
  • Строки сравниваются слева направо до первого различия.
  • Регистр и код символа могут влиять на результат сравнения.
  • Функции обработки строк применяют с учётом их аргументов и результата.

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

Чем символьная величина отличается от строковой?

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

Как записать символ и строку в программе?

В языке Pascal символьную константу записывают в одинарных кавычках, например 'А'. Строку также заключают в одинарные кавычки, например 'Привет'; её тип и назначение задаются контекстом.

Как соединить две строки?

Для сцепления строк используют операцию +. Например, 'Инфо' + 'рматика' даёт строку 'Информатика', причём символы сохраняют порядок операндов.

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

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

Как определить длину строки?

В Pascal для этого применяют функцию Length(s), где s — строка. Результат — целое число символов; например, Length('дом') равно 3.

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

§ 4. Символьные и строковые величины. Операции над символьными и строковыми величинами

Учебник

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