Алгоритмическое мышление при решении задач (на примере языка C#). Шамшев А.Б - 33 стр.

UptoLike

Составители: 

33
Задача 9: Удалить из строки слова, в которых есть буква 'a'.
Размышления:
1. Очевидно, что задача представима в виде следующей
последовательности действий:
1.1. Ввод данных
1.2. Обработка данных
1.3. Вывод результата
2. Так же логично предположить, что пользователь вводит строку с
клавиатуры. Т. е. в качестве входных данных у нас есть строка.
3.
Тогда для того, что бы понять, как обрабатывать строку, надо дать такое
ее определение, что бы там были слова. Дадим такое определение:
строкамножество слов и разделителей между ними. Теперь
возникает вопрос, как получить слова из строки. Если мы решим
проблему получения одного слова из строки, то вероятнее всего сможем
решить проблему получения множества слов из строки. Что такое слово
в строке? Словоэто последовательность символов, которая имеет
индекс начала и длину. Следует отметить, что во всех
высокоуровневых языках есть функция получения подстроки, которая
принимает 2 параметраначало подстроки и длина подстроки.
С другой стороны, слово это подстрока изначальной строки. Поэтому
выбор этих двух величин, которые характеризуют слово, имеет прямой
аналог на языке программирования (в C# это метод SubString).
4. Таким образом, если мы научимся находить начало слова и его длину,
это решит проблему нахождения слова.
5. Вопроскак найти начало слова? Видно, что начало слова находится в
строке, поэтому это возможно подразумевает
проход по всем символам
строки.
6. Вопроскакие из символов строк являются началом слова? Для ответа
на вопрос приведем пример «программирование на языках высокого
уровня».
6.1. Почему буква «п» в «программирование» является началом слова?
Потому что это первый символ строки.
6.2. Почему буква «р» в «программирование» не является
началом слова?
Потому что перед ней стоит буква.
6.3. Почему буква «н» в «на» является началом слова? Потому что перед
ней стоит разделитель (пробел в данном случае).
6.4. Казалось бы, эти рассуждения верны. Но это не совсем так. Если
буква первая в строке, то это не обязательно начало слова. Если
строка
начинается с пробела, то он не является началом слова.
Поэтому на самом деле во всех пунктах была «неявная» фраза: если
символ разделитель, то он не может являться началом слова.
6.5. Так же рассмотрим более внимательно пункты 6.2 и 6.3. В них
сказано «перед ней» (текущей буквой). Однако кто сказал, что перед