Бруно Мартузан - Как Петя Бейсиков Тоню Соображалкину программировать учил стр 5.

Шрифт
Фон

Переговоры с Алгоритмычем действительно были успешными. Для обучения Тони выделили дисплейное время когда можно работать на ЭВМ, а учителем назначили Петю. При этом Алгоритмыч добавил, что речь может быть только о серьезном изучении, а не о каком-нибудь там баловстве, как некоторые себе представляют освоение программирования. Тоне это замечание показалось докучливо педагогическим, но при Алгоритмыче этого она не сказала.

Став учителем, Петя к разговору тщательно подготовился, все, что знал, обдумал, а знал он не так уж мало.

Начал он, правда, слишком заумно.

В ОСНОВЕ ПРОГРАММ ЛЕЖАТ АЛГОРИТМЫ

Чего, чего?

Я говорю, вначале надо понять, что такое алгоритм.

Извольте, господин учитель. Интересно будет узнать.

АЛГОРИТМ

Так, как на уроке требуют, я это понятие объяснить не могу. А если просто, то это набор правил, которым надо следовать, чтобы что-то сделать. Или может быть так Алгоритм это изложение того, что нужно делать, чтобы что-то заранее известное сделать. Но изложение это должно быть очень строгим и четким. Каждый раз, когда что-то делается, нужно предусмотреть все, что может получиться и чгс делать дальше в зависимости от того, что получилось. Не очень понятно?

Почему же? Иди туда, не знаю куда, сделай то, не знаю что. Очень даже понятно получилось.

Х-м-м-м. Разберем, может быть, пример алгоритма алгоритма возвращения первоклассника Петеньки из школы домой.

Тебя, что ли?

Неважно. Этот алгоритм получился бы очень сложным, если его рассматривать подробно, а если так, в общих чертах, для понимания, то изложить можно легко. Кратчайший путь Петеньки домой по адресу бульвар Программистов, 38 изображен на этом рисунке. Вся сложность в том, что дом номер 36 нельзя обходить слева, если там бегает собака Бармалей, которую хозяева часто оставляют без присмотра. Бармалей по причинам, которые обсуждать нет необходимости, сильно не любит Петеньку и попросту его не пропустит. Итак, если Бармалей бегает, то дом 36 нужно обходить справа. Но тут тоже могут возникнуть сложности: у правого подъезда часто играет задира и мучитель Борька-хулиган. Это еще хуже Бармалея.

АЛГОРИТМЫ ИЗОБРАЖАЮТ В ВИДЕ БЛОК-СХЕМ

БЛОК-СХЕМА

На блок-схеме в прямоугольных клеточках блоках описаны действия Петеньки, не требующие никаких рассуждений, никакого решения, а в ромбических клеточках блоках отражены вопросы, на которые Петенька должен ответить «Да» или «Нет», исходя из информации, получаемой по ходу действия. Как видишь, имеются два таких ромбика с вопросами «Бегает ли Бармалей?» и «Играет ли Борька-хулиган?»

Да-а, схема интересная, в особенности Борька-хулиган меня впечатляет. Но, скажи, правильно ли я понимаю, что если и Бармалей бегает, и Борька-хулиган играет, то Петенька так и будет вращать головой то вправо, то влево.

ВАЖНОЕ ПОНЯТИЕ «ЦИКЛ»

ЦИКЛ

Хорошо. Излагаешь ты не бог весть какие премудрости, но привыкнуть надо. И еще вот что. Когда мне удается решить задачку по математике,

я иногда ее «проразмысливаю» а что будет, если это условие изменить, а что, если этот угол не прямой, как в задаче, а острый, а что, если и так далее. Давай «проразмыслим» и твой алгоритм.

Ну?

Например, если Петеньке пришлось бы петлять делать всякие повороты, то ничего существенного в твоем алгоритме не прибавилось бы: ты бы добавил сколько надо прямоугольных клеток и все.

Да, конечно.

Дальше. Если бы у Петеньки была возможность пойти не только направо или налево, но и прямо, и там он мог бы встретиться, скажем, с дворничихой, которая опять же, по некоторым причинам, могла бы Петеньку начать перевоспитывать, чего он просто не выносит, то что делать в этом случае?

В этом случае добавились бы прямоугольна клетка «Посмотри прямо» и ромбическая клетка с проверкой условия «Работает ли дворничиха?». Вот здесь внизу сразу после блока с Борькой-хулиганом.

Я так и думала. Но скажи мне вот что. Обязательно ли, чтобы из клеток с проверкой условия, как ты их хитро называешь, выходили именно две стрелки одна для ответа «Да», другая для ответа «Нет»? А что будет, если задавать вопрос, на который возможно дать больше чем два ответа, и совсем не такие простые, как «Да» или «Нет»? Такой вопрос может быть в алгоритме или нет? Ну, скажем, если я спрашиваю «Сколько тебе лет?» или «Куда направился, Петенька?»

Так Минуточку Глубоко копаешь Ясно! И в этом случае все можно изобразить ромбическими клетками! Но может потребоваться целая последовательность таких клеток с проверкой условий типа «Идет ли Петенька домой?», «В школу?», «На кружок?» и так далее, перечисляя все возможные варианты. На все эти вопросы уже можно ответить «Да» или «Нет». Получается не так уж плохо: даже довольно сложные действия можно описать вопросами, на которые нужно ответить «Да» или «Нет». В алгоритмах, как это ты скоро поймешь, могут быть только такие вопросы.

Понятно. А скажи почему ты в самом начале говорил, что настоящий алгоритм движения Петеньки домой намного сложнее?

ВВЕДЕНИЕ В РОБОТОТЕХНИКУ

Охо! Вот такого-то робота я бы хотела!

И был бы этот робот совсем похож на Петеньку, даже в его сложных отношениях с Бармалеем и Борькой-хулиганом. Что он должен был бы уметь? Если говорить о приходе из школы домой, то перво-наперво он должен был бы уметь выходить из школы. А что означает выходить из школы? Самое первое открыть дверь, то есть найти дверную ручку, нажать ее, потом дернуть дверь с нужным усилием, раскрыть ее, насколько нужно, потом протиснуться в образовавшуюся щель и закрыть дверь, притом достаточно тихо, чтобы не вступить в конфликт с представителями коллектива педагогов.

Ваша оценка очень важна

0
Шрифт
Фон

Помогите Вашим друзьям узнать о библиотеке