"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", Г.А. Заборовский, А.Е. Пупцев
Символьные и строковые величины нужны, когда программа работает с отдельными знаками и текстом: например, проверяет введённый символ, ищет букву или удаляет пробелы. Символьная величина хранит один знак, а строковая — последовательность знаков. Строку можно обходить по позициям, проверять каждый символ и накапливать результат. Главное — следить за границами строки и выбирать способ обработки под задачу: иногда достаточно счётчика, а иногда удобнее собрать новую строку.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Символьная величина — переменная, которая хранит один символ: например, букву, цифру или знак пунктуации. В программе её объявляют средствами выбранного языка как величину символьного типа, а затем присваивают ей один знак. Такой тип удобен, когда нужно отдельно проверить, сравнить или вывести именно один символ.
Строковая величина — упорядоченная последовательность символов. В программе строку задают текстовым значением и сохраняют в переменной строкового типа. В отличие от символьной величины, строка может содержать несколько знаков, например слово или предложение, поэтому для работы с текстом выбирают именно её.
Длина строки — количество символов, входящих в строку. Если длина равна пяти, в строке пять позиций, и ни одна позиция за пределами этого количества не содержит символа строки. Длину используют, чтобы узнать объём текста и определить, сколько раз нужно выполнить перебор.
Позиция символа — его порядковый номер в строке. Номер позволяет обратиться к конкретному знаку, сравнить его с нужным или изменить его, если язык программирования допускает такую операцию. В разных языках отсчёт может начинаться с нуля или с единицы, поэтому способ нумерации нужно учитывать в программе.
Выбор типа зависит от того, сколько знаков требуется хранить как одно значение. Если программе нужен один введённый символ, например ответ «да» или «нет» в виде буквы, подходит символьная величина. Если требуется сохранить слово, предложение или результат обработки текста, нужна строковая величина. Правильный выбор делает смысл переменной ясным и помогает применять к ней подходящие операции.
Строку удобно представлять как ряд символов, расположенных в определённом порядке. Позиция указывает, какой именно знак находится в этом ряду, поэтому программа может получить его и сравнить с другим значением. Это важно, когда нужно проверить первый символ или изменить знак в известном месте: без позиции пришлось бы обрабатывать строку целиком, даже если задача касается только одного элемента.
Алгоритм обработки обычно строят как повторяющиеся шаги для каждого символа. Сначала задают начальные значения, например пустой результат или нулевой счётчик, затем цикл проходит по допустимым позициям строки. Внутри цикла проверяют очередной символ и выполняют нужное действие. Такой подход нужен потому, что количество символов заранее может быть неизвестно, а повторение позволяет обработать строку любой длины.
В задачах поиска и подсчёта сначала формулируют критерий: например, символ должен совпадать с заданной буквой. При подсчёте после каждой проверки увеличивают счётчик, если условие выполнено; при поиске сохраняют позицию совпадения. Если нужен только первый найденный знак, поиск можно прекратить, а если требуется число всех совпадений — необходимо проверить всю строку.
Чтобы преобразовать строку, решают для каждого символа, оставить его, заменить или пропустить. Новую строку начинают с пустого значения и дополняют подходящими знаками по мере обхода исходной. Так сохраняется порядок символов, а условие задачи определяет, что попадёт в результат. Такой способ особенно надёжен при удалении: исходные позиции не сдвигаются во время проверки.
| Задача | Что проверяется или изменяется | Основной приём | Что получить в результате |
|---|---|---|---|
| Обращение к отдельному символу | Знак в выбранной позиции | Указать допустимую позицию строки | Нужный символ или результат его проверки |
| Подсчёт символов с заданным свойством | Каждый символ на соответствие условию | Перебор и увеличение счётчика | Количество подходящих символов |
| Поиск символа или фрагмента | Совпадение с искомым значением | Сравнение при переборе строки | Позиция найденного элемента или сообщение, что его нет |
| Замена или удаление символов | Знаки, которые нужно изменить или исключить | Проверка условия и формирование результата | Изменённая строка |
| Формирование новой строки | Какие символы сохраняются в результате | Добавление нужных знаков по порядку | Новая строка, соответствующая условию |
Сначала определите, что требуется получить: число, позицию или новую строку. Затем выберите столбец с подходящим приёмом и уточните, какое условие нужно проверять. Перед обращением к позиции проверьте, что она входит в границы строки.
Условие. Дана строка и заданный символ. Нужно определить, совпадает ли первый символ строки с заданным. Сначала убеждаемся, что строка не пустая: у пустой строки нет первого символа, и обращение к нему недопустимо.
Ответ. Вывести сообщение о совпадении, если символы равны, иначе — о несовпадении. Проверка длины защищает программу от обращения к несуществующей позиции.
Условие. Дана строка и буква. Требуется подсчитать, сколько раз эта буква встречается в строке. Нужно проверить все символы, потому что совпадение может находиться не только в начале, а одна и та же буква может встретиться несколько раз.
Ответ. Счётчик содержит число вхождений буквы. Если совпадений нет, его значение останется равным нулю.
Условие. Дана строка. Нужно получить новую строку без пробелов, сохранив порядок остальных символов. Вместо удаления знаков внутри исходной строки удобнее собирать результат отдельно: тогда сдвиги позиций не помешают проверке.
Ответ. Новая строка содержит все исходные символы, кроме пробелов, и сохраняет их прежний порядок. Если исходная строка состояла только из пробелов, результат будет пустым.
Строку и отдельный символ считают взаимозаменяемыми типами, потому что оба могут выглядеть как текст. Но символьная величина рассчитана на один знак, а строка — на последовательность; несоответствие может привести к ошибке или неверному сравнению. Проверьте себя: ясно ли, может ли переменная содержать больше одного символа, и выбран ли тип под это значение?
При переборе обращаются к позиции за границей строки, часто из-за неверного начального или конечного номера цикла. Тогда программа пытается получить символ, которого нет. Сверьте диапазон цикла с длиной строки и принятой в языке нумерацией; отдельно проверьте пустую строку.
При удалении знаков меняют исходную строку прямо во время обхода. После удаления позиции сдвигаются, и следующий символ может перейти на уже проверенное место. Надёжнее собрать новую строку; для самопроверки проследите, будет ли проверен каждый знак исходного текста ровно один раз.
Условие проверяют, но забывают обновить счётчик или результат. Это происходит, когда проверку и действие мысленно считают одним шагом, хотя программе оба нужно задать явно. Проверьте ветвь условия: при истинном результате должно происходить увеличение счётчика, сохранение позиции или добавление символа.
Для обработки строк нужны переменные, присваивание, условия и циклы: переменные хранят исходные данные и результат, условия выбирают действие, а цикл повторяет его для символов. Поэтому полезно заранее понимать, как задаётся условие и когда цикл завершается. Эти же приёмы применяются при проверке пользовательского ввода, разборе текстовых данных и работе с файлами. Освоив перебор строки, проще строить алгоритмы для обработки реальных текстов.
Чем символьная величина отличается от строковой?
Символьная величина хранит один знак, например букву или цифру. Строковая величина хранит последовательность символов, в том числе пустую строку или текст из нескольких знаков.
Как обратиться к отдельному символу строки?
Нужно указать позицию символа в строке. Например, чтобы проверить первый знак, обращаются к позиции первого символа; допустимые номера позиций зависят от используемого языка программирования.
Как подсчитать в строке символы с заданным свойством?
Перебирают строку по символам и проверяют каждый символ на нужное свойство. Если условие выполнено, увеличивают счётчик, а после обхода получают общее количество.
Как найти заданный символ в строке?
Последовательно сравнивают символы строки с искомым. При первом совпадении можно сохранить его позицию и завершить поиск; если совпадений нет, сообщают об этом.
Почему при удалении символов иногда удобнее создать новую строку?
Если удалять символы прямо во время обхода, оставшиеся знаки сдвигаются, и следующий символ легко пропустить. При создании новой строки исходная не меняется, а в результат добавляются только нужные символы.
§ 6. Выполнение практических заданий с использованием символьных и строковых величин