Как Петя Бейсиков Тоню Соображалкину программировать учил
- Автор: Бруно Мартузан
- Жанр: Околокомпьютерная литература / Детская образовательная литература / Basic, Visual Basic, VB Script, VBA и т.п.
- Дата выхода: 1987
Читать книгу "Как Петя Бейсиков Тоню Соображалкину программировать учил"
ВАЖНОЕ ПОНЯТИЕ — «ЦИКЛ»
— Именно так. Он будет вращать головой до тех пор, пока на один из этих вопросов можно будет ответить «Нет» либо пока не упадет от изнеможения. А по-научному можно сказать, что в алгоритме имеется цикл. Судя по вопросу, ты его уже заметила. Цикл получается потому, что если Бармалей бегает и Борька-хулиган играет, то стрелка от последнего ромбика снизу возвращается наверх и попадает в блок «Посмотри налево». Цикл имеет два выхода по условию. Вот здесь на схеме я их отметил. Других выходов из цикла нет, следовательно, другим образом цикл прекратиться не может. Вот и все.
ЦИКЛ
— Хорошо. Излагаешь ты не бог весть какие премудрости, но привыкнуть надо. И еще вот что. Когда мне удается решить задачку по математике, я иногда ее «проразмысливаю» — а что будет, если это условие изменить, а что, если этот угол не прямой, как в задаче, а острый, а что, если… и так далее. Давай «проразмыслим» и твой алгоритм.
— Ну?
— Например, если Петеньке пришлось бы петлять — делать всякие повороты, то ничего существенного в твоем алгоритме не прибавилось бы: ты бы добавил сколько надо прямоугольных клеток и все.
— Да, конечно.
— Дальше. Если бы у Петеньки была возможность пойти не только направо или налево, но и прямо, и там он мог бы встретиться, скажем, с дворничихой, которая опять же, по некоторым причинам, могла бы Петеньку начать перевоспитывать, чего он просто не выносит, то что делать в этом случае?
В этом случае добавились бы прямоугольна клетка — «Посмотри прямо» и ромбическая клетка с проверкой условия — «Работает ли дворничиха?». Вот здесь внизу сразу после блока с Борькой-хулиганом.
— Я так и думала. Но скажи мне вот что. Обязательно ли, чтобы из клеток с проверкой условия, как ты их хитро называешь, выходили именно две стрелки — одна для ответа «Да», другая для ответа «Нет»? А что будет, если задавать вопрос, на который возможно дать больше чем два ответа, и совсем не такие простые, как «Да» или «Нет»? Такой вопрос может быть в алгоритме или нет? Ну, скажем, если я спрашиваю «Сколько тебе лет?» или «Куда направился, Петенька?»
— Так… Минуточку… Глубоко копаешь… Ясно! И в этом случае все можно изобразить ромбическими клетками! Но может потребоваться целая последовательность таких клеток с проверкой условий типа «Идет ли Петенька домой?», «В школу?», «На кружок?» и так далее, перечисляя все возможные варианты. На все эти вопросы уже можно ответить «Да» или «Нет». Получается не так уж плохо: даже довольно сложные действия можно описать вопросами, на которые нужно ответить «Да» или «Нет». В алгоритмах, как это ты скоро поймешь, могут быть только такие вопросы.
— Понятно. А скажи — почему ты в самом начале говорил, что настоящий алгоритм движения Петеньки домой намного сложнее?