ИНФОРМАТИКА · 9 КЛАСС
Строки и алгоритмы · Интерактивный конспект

§ 8. Стандартные процедуры и функции для работы со строковыми величинами

Исследуем готовые средства поиска, копирования, удаления и вставки фрагментов.

Попробовать на модели ↓
Разбираемся в теме

Основные пункты параграфа

1

Длина, регистр и поиск

Pos возвращает позицию первого вхождения или 0, если фрагмент не найден.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Длина, регистр и поиск

Изменяйте параметры, наблюдайте результат и проверяйте объяснение. Сброс возвращает исходный опыт.

Length(s) даёт длину, LowerCase(s) и UpperCase(s) возвращают строку в нижнем и верхнем регистре. Для отдельного char существуют LowCase и UpCase. Сам вызов функции преобразования не заменяет исходную строку: результат нужно сохранить, например s := UpperCase(s).

Pos(образец, строка) использует позиции с единицы. В «мама» фрагмент «ма» впервые начинается в позиции 1; для «па» результат 0. LastPos ищет последнее вхождение, а PosEx позволяет задать начальную позицию поиска. Методы .NET вроде IndexOf используют другие соглашения: не смешивайте их индексы и значение «не найдено» с Pos.

Главная мысль: Pos возвращает позицию первого вхождения или 0, если фрагмент не найден.
2

Копирование части

Copy возвращает новый фрагмент и не изменяет исходную строку.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Копирование части

Изменяйте параметры, наблюдайте результат и проверяйте объяснение. Сброс возвращает исходный опыт.

В Copy(s, i, k) параметр i задаёт начало, k — количество элементов. Для «информатика» Copy(s, 3, 4) даёт «форм»: позиции 3, 4, 5, 6. Последняя включённая позиция равна i + k − 1 при положительном k. Количество элементов и номер последнего элемента — не одно и то же.

В учебных алгоритмах удобно сначала проверять допустимость начала и длины. Для копирования пустого фрагмента количество равно нулю. Если нужны первые три элемента, используйте Copy(s, 1, 3), предварительно учитывая длину исходных данных.

Выражение для s = информатикаРезультат
Copy(s, 1, 5)инфор
Copy(s, 3, 4)форм
Copy(s, 6, 6)матика
Главная мысль: Copy возвращает новый фрагмент и не изменяет исходную строку.
3

Удаление и вставка

Delete и Insert изменяют строку, переданную как параметр.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Удаление и вставка

Изменяйте параметры, наблюдайте результат и проверяйте объяснение. Сброс возвращает исходный опыт.

Delete(s, i, k) удаляет k элементов начиная с позиции i. Следующие элементы сдвигаются влево, длина уменьшается. Insert(fragment, s, i) вставляет фрагмент перед элементом i; вставка в позицию Length(s) + 1 добавляет текст в конец. После изменения строки старые позиции могут указывать уже на другие элементы.

В «котик» удаление двух элементов с позиции 4 даёт «кот». Вставка «ле» перед первым элементом строки «то» даёт «лето». В отличие от Copy, эти процедуры не используют как значение справа от присваивания.

var s: string;
begin
  s := 'котик';
  Delete(s, 4, 2);
  Insert('с', s, 1);
  writeln(s);  // скот
end.
Главная мысль: Delete и Insert изменяют строку, переданную как параметр.
4

Последовательность преобразований

После каждой операции нужно пересчитать длину и позиции.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Последовательность преобразований

Изменяйте параметры, наблюдайте результат и проверяйте объяснение. Сброс возвращает исходный опыт.

Разберём исходную строку ТЕСТИРОВАНИЕ. Её длина 12; шестая буква Р, Copy(s, 5, 8) даёт ИРОВАНИЕ. Их соединение — РИРОВАНИЕ. Delete(s1, 3, 1) превращает её в РИОВАНИЕ. Insert(s[3], s1, 3) вставляет С и даёт РИСОВАНИЕ.

При подсчёте вхождений заранее решите, допускаются ли пересечения. В «banana» образец «ana» начинается в позициях 2 и 4: два пересекающихся вхождения, но только одно при поиске непересекающихся фрагментов. Для образца длины k последние возможные начала идут до Length(s) − k + 1. Пустой образец в таком учебном счётчике лучше запретить явно.

Главная мысль: После каждой операции нужно пересчитать длину и позиции.
Интерактивная практика

Исследуйте и примените

Проверьте модель на нескольких наборах данных, затем выполните самостоятельное задание.

НАБЛЮДАЙТЕ И ПРОБУЙТЕ

Лаборатория: исследуйте свой вариант

Изменяйте параметры, наблюдайте результат и проверяйте объяснение. Сброс возвращает исходный опыт.

Соберём главное

Шесть выводов

01

Pos возвращает позицию первого вхождения или 0, если фрагмент не найден.

02

Copy возвращает новый фрагмент и не изменяет исходную строку.

03

Delete и Insert изменяют строку, переданную как параметр.

04

После каждой операции нужно пересчитать длину и позиции.

05

Не используйте результат поиска как индекс без проверки на 0.

06

При подсчёте вхождений явно определяйте, разрешены ли пересечения.

Самопроверка

Тест: 10 вопросов

Один верный ответ. За ответ — 0,5 балла. Откройте и проверьте себя.

1. Что возвращает Pos для отсутствующего образца?

2. Чему равно Pos «ма» в «мама»?

3. Что возвращает LastPos «ма» в «мама»?

4. Что задаёт третий параметр Copy?

5. Что даёт Copy «информатика» с 3 длиной 4?

6. Изменяет ли Copy исходную строку?

7. Какая операция удаляет элементы?

8. Куда вставляет Insert перед позицией 1?

9. Сколько пересекающихся «ana» в «banana»?

10. Какая строка получается в разобранной цепочке?

ВыводыТестВ началоВсе параграфы
↑

Загрузка прогресса…