"Информатика. Учебное пособие для учреждений общего среднего образования с русским языком обучения", В. М. Котов, А. И. Лапо, Ю.А. Быкадоров, Е.Н. Войтехович
Текст в программе можно представить как строку — последовательность символов, к которым обращаются по позициям. Анализируя строку, можно узнать, сколько раз в ней встречается заданная буква, цифра, пробел или знак препинания. Для подсчёта проходят по всем символам и увеличивают счётчик при каждом совпадении. Если проверяются разные символы, для каждого хранят свой результат; также заранее решают, считать ли заглавные и строчные буквы разными.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Символ — отдельный знак текста. Буквы, цифры, пробелы и знаки препинания тоже являются символами, даже если некоторые из них не видны так же заметно, как буквы. Это понятие нужно, чтобы точно определить, какие знаки программа будет проверять.
Строка — последовательность символов. Текст можно представить как строку, в которой у каждого символа есть своя позиция; к символу обращаются, указывая эту позицию. Такое представление позволяет пройти по тексту по порядку и проверить каждый его знак.
Длина строки — количество символов в ней. При подсчёте длины учитывают не только буквы и цифры, но и пробелы со знаками препинания. Это помогает понять, сколько позиций нужно проверить при обработке текста.
Частота символа — количество его появлений в тексте. Например, если буква встретилась четыре раза, её частота равна четырём; это не доля от общего числа знаков. Понятие частоты используют, чтобы сравнивать, как часто встречаются символы в тексте.
Чтобы выяснить, сколько раз заданный знак встречается в тексте, нужно проверить все позиции строки. На каждой позиции программа сравнивает текущий символ с искомым. Если остановиться раньше конца строки, можно пропустить совпадения, поэтому проход должен охватить весь текст.
Для подсчёта заводят переменную-счётчик, то есть переменную, которая хранит число найденных совпадений. Сначала ей присваивают 0: пока текст не проверен, совпадений ещё не зарегистрировано. Каждый раз, когда символ совпадает с искомым, счётчик увеличивают на единицу; так в нём накапливается итоговое количество.
Если требуется подсчитать несколько знаков, результат каждого подсчёта нужно хранить отдельно. Например, увеличение счётчика буквы «а» не должно менять счётчик буквы «о». Можно выполнить отдельный проход для каждого искомого символа или за один проход проверять текущий знак и обновлять подходящий счётчик; в обоих случаях важно сопоставлять результат с правильным символом.
Сравнение обычно проверяет точное совпадение знаков. Поэтому заглавная «А» и строчная «а» могут считаться разными: у них разные значения в компьютерном представлении. Если по условию регистр не важен, перед проверкой буквы приводят к одному регистру; без такого действия алгоритм не должен сам считать их одинаковыми.
Пробелы и знаки препинания также могут быть частью анализируемой строки. Учитывать их нужно, если условие требует найти их частоту или включить их в общий анализ. Результат зависит от границ текста: например, пробелы в начале и конце тоже считаются, если они входят в строку, которую обрабатывает алгоритм.
| Элемент анализа | Что проверяется | Что фиксируется |
|---|---|---|
| Один заданный символ | Совпадает ли символ в текущей позиции с заданным | Число его появлений |
| Несколько заданных символов | Совпадение с каждым символом из набора | Отдельный результат для каждого символа |
| Пробел или знак препинания | Встречается ли он в тексте и включён ли в анализ | Число появлений с учётом принятого правила |
Сначала выберите строку и определите, какие символы требуется найти. Затем проверьте, нужно ли учитывать регистр, пробелы и знаки препинания. По каждой строке таблицы можно сверить, что именно проверяется и какой отдельный результат следует получить.
Задача 1. В тексте «мама мыла раму» нужно определить число появлений буквы «м». Сравниваем именно строчную «м», поэтому другие буквы и пробелы не увеличивают результат. Пройдём по строке слева направо и отметим совпадения.
Ответ: буква «м» встречается 4 раза. Проверка всех позиций важна: подсчёт только в первом слове дал бы неполный результат.
Задача 2. Для текста «ао а» нужно отдельно подсчитать буквы «а», «о» и пробелы. Заводим три счётчика, потому что объединённое число совпадений не покажет частоту каждого знака. Пробел тоже проверяем как отдельный символ строки.
Ответ: частоты равны 2, 1 и 1 соответственно. Отдельные счётчики не позволяют перепутать, какой знак дал каждое число.
Задача 3. Требуется составить алгоритм, который выводит число появлений каждого символа из заданного набора, различая заглавные и строчные буквы. Сначала нужно понять, что набор задаёт отдельные искомые символы, а не общий класс букв. Например, «А» и «а» должны иметь разные результаты.
Ответ: алгоритм использует отдельный счётчик на каждый символ и не приводит буквы к одному регистру. Поэтому заглавные и строчные буквы получают собственные частоты.
Если счётчик не обнулить перед новым подсчётом, в ответ попадут совпадения из предыдущей задачи или прохода. Так происходит, когда забывают задать начальное значение переменной. Перед началом проверьте, что счётчик равен 0, а не хранит старый результат.
Счётчик может изменяться не при каждом совпадении или увеличиваться несколько раз за одно совпадение. Первая ошибка пропускает найденный символ, вторая завышает частоту. Проверяйте правило: одно совпадение на одной позиции должно давать ровно одно увеличение на единицу.
Иногда пробелы или знаки препинания пропускают, хотя условие требует их посчитать. Обычно это происходит потому, что внимание сосредоточено только на буквах. Для проверки просмотрите состав анализируемых символов и убедитесь, что алгоритм проверяет в том числе пробелы и нужные знаки.
Ещё одна ошибка — считать заглавную и строчную буквы одинаковыми без преобразования регистра. Такое ожидание не соответствует точному сравнению символов: «А» не совпадает с «а». Сверьте условие с операцией сравнения и либо оставьте регистр различным, либо явно приведите буквы к одному регистру.
Для анализа текста нужно знать, что строка состоит из символов, и уметь обращаться к символу по позиции. Сам подсчёт опирается на цикл — повторение действий для последовательности значений, проверку условия на совпадение и изменение переменной-счётчика. Эти приёмы применяются и в других алгоритмах обработки данных.
Подсчёт символов полезен при обработке строк, проверке текстовых данных и создании простых программ анализа текста. Он помогает находить нужные знаки и проверять свойства введённых данных. Понимание частоты также служит основой для более сложного анализа текста.
Считается ли пробел символом?
Да. Пробел занимает место в строке и учитывается при определении её длины. Его можно подсчитать отдельно, если алгоритм проверяет пробелы.
Нужно ли учитывать знаки препинания при подсчёте?
Это зависит от условия задачи. Если знаки препинания входят в анализируемый текст или заданы для подсчёта, их учитывают как символы.
Считаются ли заглавная и строчная буквы одинаковыми?
При точном сравнении это разные символы: «А» и «а» не совпадают. Считать их одинаковыми можно, если перед сравнением специально привести буквы к одному регистру.
Почему счётчик перед подсчётом обнуляют?
Так в нём не останутся результаты предыдущего подсчёта. Начальное значение 0 позволяет получить число совпадений только для текущей задачи.
Как посчитать появления сразу нескольких разных символов?
Для каждого искомого символа заводят отдельный счётчик и увеличивают его только при совпадении с этим символом. Можно проходить по тексту отдельно для каждого символа или проверять каждый символ текста по всему заданному набору.
9.1. Анализ текста на наличие различных символов