"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович
Строковая величина хранит текст как последовательность символов: букв, цифр, пробелов и знаков препинания. В программе строку можно присвоить переменной, узнать её длину, получить символ по позиции, соединить с другой строкой или сравнить с ней. Эти действия нужны при обработке имён, слов и других текстовых данных. Главное — учитывать все символы и помнить: нумерация позиций начинается с единицы.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Строковая величина — упорядоченная последовательность символов, предназначенная для хранения текста. Упорядоченная означает, что у каждого символа есть своё место: перестановка букв может изменить слово. Строка может включать буквы, цифры, пробелы и знаки препинания. Такое представление позволяет программе работать с текстом как с единым значением.
Строковый тип — тип данных, значениями которого являются строки. Строковое значение записывают в кавычках, например "школа" или "9 класс". Кавычки показывают программе, что перед ней текст, а не имя переменной или число. Переменной строкового типа можно присвоить строку, чтобы затем использовать её в вычислениях и выводе.
Длина строки — количество символов в ней. Например, длина строки "кот" равна 3, а в строке "два слова" длина равна 9, потому что пробел тоже занимает место. Длина помогает определить, сколько позиций можно перебирать и где заканчивается текст. При подсчёте учитывают каждый символ, а не только буквы.
Символ строки — отдельный элемент строки, к которому в программе обращаются по его позиции. Например, если s = "дом", то s[2] обозначает символ о. Позиция указывает место символа в последовательности, а не его вид. Это нужно, когда требуется проверить или изменить отдельный знак, например найти определённую букву.
Строковое значение записывают в кавычках и присваивают переменной строкового типа: s = "Привет". После присваивания переменная s хранит весь текст, поэтому его можно вывести или обрабатывать дальше. Строка может состоять и из одного символа, но это всё равно строковое значение, а не отдельная переменная-символ. Различие важно потому, что операция с целой строкой и действие с одним её элементом имеют разный смысл.
Длину находят, подсчитывая все символы строки; в условной записи можно использовать length(s). Пробел и знак препинания занимают позиции наравне с буквами, потому что каждый из них является элементом последовательности. Например, длина строки "а, б" равна 4: буква, запятая, пробел и буква. Подсчёт длины нужен, чтобы знать границы строки и не обращаться к позиции, которой в ней нет.
Чтобы получить символ, указывают имя строки и его позицию, например s[i]. В этой нумерации первый символ имеет позицию 1, второй — 2 и так далее, поэтому при переборе начинают с единицы. Нулевая позиция не обозначает первый символ и в данном способе обращения не используется. Если длина строки равна n, допустимый диапазон — от 1 до n включительно.
Строки соединяют, ставя их содержимое одно за другим; условно это можно записать как s1 + s2. Если нужны фамилия и имя через пробел, пробел добавляют отдельно: s1 + " " + s2. Здесь знак + означает сцепление частей текста, а не сложение числовых значений: цифры внутри строк не складываются. Результатом становится одна новая строка, в которой сохраняется порядок соединённых частей.
При сравнении строк программа проверяет символы слева направо. Если очередные символы совпадают, сравнение продолжается; при первом различии результат определяется порядком этих символов. Поэтому равная длина не гарантирует равенство строк: например, "лес" и "нос" имеют по три буквы, но различаются уже первым символом. Порядок символов задаётся правилами кодировки или языка программирования, поэтому не следует считать, что любое сравнение автоматически означает проверку по алфавиту.
| Действие | Что записать | Что получается |
|---|---|---|
| Присваивание строкового значения переменной | s = "текст" | Переменная s хранит строку «текст» |
| Определение длины строки | length(s) | Количество символов в s |
| Обращение к символу по позиции | s[i] | Символ на позиции i |
| Соединение строк | s1 + s2 | Одна строка из содержимого s1 и s2 |
| Сравнение строк | s1 = s2 или s1 < s2 | Результат сравнения строк |
Таблица показывает условную запись операций: в конкретном языке программирования обозначения могут отличаться. Сначала определите, что требуется сделать — получить длину, символ, новую строку или результат сравнения. Затем проверьте, что позиции не выходят за границы строки, а пробелы учтены как символы.
Для строки «информатика» нужно найти длину и символ, стоящий на третьем месте. Сначала перепишем слово по порядку и будем считать каждую букву, начиная с позиции 1. Пробелов и знаков препинания здесь нет, поэтому каждая позиция соответствует одной букве. Для получения символа используем именно третью позицию, а не номер 3, отсчитанный от нуля.
Ответ: длина — 11 символов, символ на третьей позиции — «ф». Нумерация с единицы позволяет сразу связать порядковый номер с записью s[i].
Пусть дана фамилия «Иванов» и имя «Пётр», а между ними требуется поставить пробел. Если просто соединить две строки, слова окажутся рядом без разделителя. Поэтому нужно включить пробел в результат как отдельную строку из одного символа. Такой способ удобен и для других разделителей, например запятой или дефиса.
Ответ: получится строка «Иванов Пётр». Пробел входит в результат и увеличивает его длину на один символ по сравнению с соединением без разделителя.
Пусть дана строка s и буква b, количество которой нужно подсчитать. Идея состоит в том, чтобы проверить каждый символ строки и отметить совпадения. Для этого заведём счётчик, изначально равный нулю, и будем увеличивать его только при равенстве s[i] и b. Перебор должен охватить все позиции, иначе часть строки останется непроверенной.
Ответ: алгоритм возвращает число вхождений буквы b в строку s. Например, в строке «банан» при поиске «а» счётчик увеличится дважды. Если требуется не учитывать различие между заглавными и строчными буквами, текст предварительно приводят к одному регистру.
Не включать пробел в длину. Так ошибаются, когда считают только видимые буквы, хотя пробел тоже занимает отдельную позицию. Например, в строке «а б» три символа, а не два. Проверьте себя, пройдя по строке слева направо и отметив каждый знак, включая пробелы и пунктуацию.
Обращаться к символу с позиции 0. Такая ошибка возникает, если ученик переносит нумерацию из другого языка программирования или путает номер символа с отсчётом от начала. В рассматриваемой записи первый символ имеет позицию 1. Для проверки выпишите первые позиции строки: 1, 2, 3 — и сопоставьте их с буквами.
Указывать позицию за пределами строки. Например, при длине 5 запрос s[6] не соответствует существующему символу. Ошибку допускают, когда неверно подсчитана длина или цикл захватывает лишний шаг. Перед обращением проверьте условие: позиция должна быть не меньше 1 и не больше длины строки.
Сравнивать строки только по длине. Длина показывает число символов, но ничего не говорит о том, совпадает ли их порядок и содержимое. Поэтому строки одинаковой длины могут различаться уже первым символом. Чтобы проверить сравнение, пройдите по парам символов слева направо до первого различия.
Для работы со строками нужны знания о переменных, типах данных и присваивании: они помогают хранить текст и изменять значения. Ввод-вывод позволяет получить строку от пользователя и показать результат обработки. Строковые величины применяют при поиске символов и слов, обработке текстов и работе с файлами. Поэтому умение перебирать позиции и проверять символы становится основой многих текстовых алгоритмов.
Считается ли пробел символом строки?
Да, пробел — такой же символ строки, как буква или знак препинания. Поэтому он входит в длину и занимает отдельную позицию.
С какой позиции начинается нумерация символов?
В рассматриваемой нумерации первый символ находится на позиции 1. Если в строке n символов, допустимы позиции от 1 до n.
Как получить отдельный символ из строки?
Укажите имя строки, а затем позицию символа в квадратных скобках: s[i]. Например, s[3] означает символ строки s на третьей позиции.
Как соединить две строки?
Используйте операцию соединения, например запись s1 + s2 в условной форме. Если между частями нужен пробел, его добавляют как отдельную строку: s1 + " " + s2.
Почему две строки одинаковой длины могут не совпадать при сравнении?
Одинаковая длина не означает одинаковое содержимое. Строки сравниваются посимвольно, и уже первый различающийся символ может определить результат.
§ 7. Строковые величины