"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", Г.А. Заборовский, А.Е. Пупцев
Символьные и строковые величины позволяют программе работать с буквами, цифрами и другими знаками. Символьная переменная хранит один символ, а строковая — последовательность символов переменной длины. Компьютер представляет каждый символ числовым кодом, поэтому символы и строки можно сравнивать. Операция сцепления соединяет строки, а стандартные функции помогают узнать их длину и получить или изменить фрагмент. Эти средства нужны при обработке текста, введённого пользователем.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Символьная величина — значение типа 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 := 'Дом' | Переменная получает значение соответствующего типа |
| Сцепление | Обычно символ можно соединить со строкой в строковое значение | Операция + соединяет операнды в их исходном порядке | Новая строка |
| Сравнение на равенство и неравенство | Сравниваются коды символов | Проверяется совпадение строк | Логическое значение: истина или ложь |
| Сравнение на порядок | Сопоставляются коды символов | Символы сравниваются слева направо | Логическое значение: истина или ложь |
| Получение длины или фрагмента | Один символ имеет длину 1 | Length, Copy, Delete и Insert работают с длиной или частями строки | Число, новая строка либо изменение исходной строки |
В таблице сначала найдите нужное действие, а затем сравните, как оно применяется к символу и к строке. Обращайте внимание на тип результата: сравнение даёт логическое значение, а Length — целое число. Copy возвращает фрагмент, тогда как Delete и Insert изменяют строковую переменную.
Условие. Объявить символьную переменную, присвоить ей букву и вывести её на экран. Для решения важно выбрать тип, который рассчитан на один символ, и записать значение в кавычках.
Ответ. Программа выведет букву М. Если вместо char объявить строку, значение всё ещё можно хранить, но условие задачи требует именно символьную переменную.
Условие. Для двух заданных строк получить и вывести строку, в которой первая стоит перед второй. Пусть даны a := 'север'; и b := 'ный ветер';. Нужно не переставить части и не добавить между ними символы, которых нет в значениях.
Ответ. Получится 'северный ветер'. Если поменять операнды местами, результат будет 'ный ветерсевер', поэтому порядок частей следует проверять до вывода.
Условие. Для введённой строки вывести её длину и определить, предшествует ли она строке 'мир' при лексикографическом сравнении. Сначала полезно отделить два действия: подсчёт символов и сравнение строк. Их результаты имеют разные типы.
Ответ. Программа печатает длину введённой строки и значение условия сравнения. Для строки 'мак' первый символ совпадает с первым символом 'мир', затем сравниваются 'а' и 'и'; итог определяется их кодами, а не значением слов.
Первая ошибка — записать один символ без кавычек или заключить его в двойные кавычки. Так делают, потому что в обычном тексте кавычки часто не нужны, но в программе они обозначают константу и могут влиять на её тип. Проверьте: символьная константа в Pascal записана в одинарных кавычках, например 'К'.
Вторая ошибка — считать строку всегда одним символом или строкой фиксированной длины. Это возникает из-за путаницы между char и string, хотя строка может содержать много символов, а её длина меняется. Для самопроверки спросите себя, нужно ли хранить только один знак или целый фрагмент текста.
Третья ошибка — ожидать, что сравнение строк определяет, какое слово важнее или правильнее по смыслу. Компьютер сопоставляет коды символов, и именно поэтому регистр и кодировка могут повлиять на результат. Проверьте сравнение по шагам: найдите первую отличающуюся позицию и сравните символы там.
Четвёртая ошибка — воспринимать + как арифметическое сложение или менять местами части строки. Такая привычка возникает из-за того, что знак + обычно связан с числами, но при строках он соединяет символы. Подставьте короткие строки и прочитайте результат слева направо: 'А' + 'Б' даёт 'АБ', а не 'БА'.
Для работы с символами и строками нужны знания о переменных, типах данных, присваивании, вводе и выводе. Условия и операции сравнения позволяют проверять, равны ли строки или выполняется ли нужный порядок. Эти темы соединяются в программах, которые принимают текст от пользователя и выбирают дальнейшее действие по его содержимому.
Обработка строк пригодится при работе с текстовыми данными, поиске и преобразовании фрагментов текста. Она помогает проверять введённые значения, собирать сообщения и изменять их части. Поэтому строки встречаются во многих программах, где пользователь вводит имена, команды или другие текстовые сведения.
Чем символьная величина отличается от строковой?
Символьная величина типа char хранит ровно один символ. Строковая величина типа string содержит последовательность символов, в том числе пустую строку или строку из одного символа.
Как записать символ и строку в программе?
В языке Pascal символьную константу записывают в одинарных кавычках, например 'А'. Строку также заключают в одинарные кавычки, например 'Привет'; её тип и назначение задаются контекстом.
Как соединить две строки?
Для сцепления строк используют операцию +. Например, 'Инфо' + 'рматика' даёт строку 'Информатика', причём символы сохраняют порядок операндов.
Почему две строки сравниваются не так, как слова по смыслу?
Сравнение не определяет значение слов и не проверяет, какое слово правильнее. Символы сопоставляются по кодам слева направо до первого различия, поэтому на результат могут влиять регистр и кодировка.
Как определить длину строки?
В Pascal для этого применяют функцию Length(s), где s — строка. Результат — целое число символов; например, Length('дом') равно 3.
§ 4. Символьные и строковые величины. Операции над символьными и строковыми величинами