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

Шрифт
Фон

Нажать? Не нажать? Нажать?

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

Какие же здесь могут быть аварии?

Просто так называются отклонения от заранее предусмотренного хода событий. Например, эти двери оказались заперты и всех детей и роботов выпускают через боковые двери или мальчишки отвинтили дверную ручку, или такая неожиданная ситуация, когда двери уже открыты или приоткрыты. Все эти ситуации в программе для робота должны были бы быть объяснены четко и недвусмысленно, с ясными указаниями, что делать в каждом случае.

Мы поговорили только об открытии дверей, а это только начало пути, полного неожиданностей и опасностей. И, наконец, каждое действие, о котором я говорил, тоже должно быть разделено на более мелкие действия, которые опять могут быть совсем непростыми.

Да-а Становится ясно, почему до сих пор нет роботов, ходящих в школу вместо ребят. А жаль

Ладно. На сегодня хватит.

Да, хватит. Хорошего понемножку.

4. ЕЩЁ ОДИН АЛГОРИТМ

Сегодня рассмотрим еще один алгоритм.

Слушай, может быть, хватит алгоритмов и общих рассуждений, давай поближе к ЭВМ и к тому, как на них работать.

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

Ну ладно

АЛГОРИТМ ДЛЯ НАЧИНАЮЩИХ УЧИТЬСЯ

Ну, ну!

Сейчас посмотрим блок-схему алгоритма.

СЧЕТЧИК

Важный нюанс этого алгоритма наличие счетчика классов К. Точнее сказать, счетчика законченных классов, потому что в начале обучения в школе значение счетчика нуль, а после окончания каждого класса оно увеличивается на единицу.

Но очень странно, что сразу после того, как этот счетчик стал равным нулю, проверяется, не равен ли он десяти. Чего же там проверять?

В самый первый раз это действительно излишне, хотя и никакой ошибки в том нет. Но если ты изучишь эту схему до конца, то заметишь, что в этот блок нужно возвращаться после окончания каждого класса и проверять, не стал ли счетчик К равным десяти, то есть не окончила ли ты школу? Зачем же зря стараться и еще ходить в школу, если она уже закончена?!

а счетчик каждый раз отмечает

РАБОТА СО СЧЕТЧИКОМ КЛАССОВ

Так-то оно так, но К=К+1 здесь

не означает, что число К равно себе плюс единица. Это означает следующее: к теперешнему значению величины К прибавить единицу и полученный результат объявить новым значением К. Еще программисты говорят: присвоить величине К ее значение, увеличенное на единицу, или совсем коротко: увеличить значение К на единицу. На самом деле здесь знак «=» означает не «равно», а «присвоить значение». В программировании такие отличия от привычного для школьника встречаются довольно часто.

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

ТОНЯ УЛУЧШАЕТ АЛГОРИТМ

Кстати, можно было бы и проверить, никакой ошибки не возникло бы, просто лишняя работа. На мой взгляд, лучше было бы проводить проверку насчет ПТУ не тогда, когда окончено розно 8 классов, а когда окончено больше или ровно 8 классов. Ведь человек может захотеть уйти в ПТУ и после девятого класса. Но, конечно, может быть и такой алгоритм, как ты сочинила. Сейчас изобрази его графически.

Я нарисую только небольшой кусок блок-схемы. Зеленым цветом я нарисовала добавки, а черным то, что было раньше.

Нарисовано великолепно. Особенно красиво выделяется эта зелень. Но, увы, в твоем алгоритме имеется грубейшая ошибка, которая делает весь алгоритм совершенно непригодным, несмотря на изумительное оформление.

ОШИБКА!

А ты посмотри сюда: стрелка приходит снизу в блок с проверкой условия «Равно ли К десяти?» сразу после увеличения значения К. Именно эта стрелка фактически создает цикл, и сейчас получилось

А-а-а!получилось, что проверка условия «Равно ли К восьми?» осталась снаружи цикла и проводится только один раз в жизни, когда К еще равно нулю и человек только что начал учебу. Получилось, что добавление нового условия ничего не дает. Да-а-а

Ничего страшного. Эту ошибку легко исправить: надо стрелку, входящую в блок с условием «Равно ли К десяти?», поднять, чтобы она входила в блок с условием «Равно ли К восьми?». Вот так, как я сейчас исправил.

Ясно. Сейчас все правильно.

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

а не

Не кажется ли тебе, что ты здорово увлекся моим воспитанием? А я должна заметить, что имею полный набор воспитателей, и не каких-нибудь там бездельников и халтурщиков, а честных тружеников, работающих в поте лица, и притом весьма успешно.

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

0
Шрифт
Фон

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