Книга: Пять уроков Великого Магистра, или повесть о том, как Петя Бочкин изучал программирование
ЕЩЕ ОДНА КОНСТРУКЦИЯ ПРОГРАММИРОВАНИЯ: РАЗВЕТВЛЕНИЕ
ЕЩЕ ОДНА КОНСТРУКЦИЯ ПРОГРАММИРОВАНИЯ: РАЗВЕТВЛЕНИЕ
— Ну-с, приступим, — сказал Казимир. — Вчера мы с тобой изучили самый простой способ программирования. Кстати, как он называется?
— Последовательное выполнение простых команд, — сказал Петя. — Я помню. Это когда команды следуют одна за другой.
— Правильно. А сегодня мы узнаем еще один способ. Он называется «разветвление». Но перед этим я задам тем один вопрос. Ты помнишь, как вчера Кристина-Исполнитель поила нас чаем?
— Конечно.
— А ты помнишь, там была команда «вскипятить воду»?
— Помню.
— А теперь ответь: чем эта команда отличается от остальных?
— Тем, что сама Кристина воду не нагревала. Она поставила чайник на газ — и все.
— Ну, а сама-то она что-нибудь делала в это время?
— Нет… то есть да. Она стояла и смотрела на чайник.
— Для чего?
— Чтобы снять его с плиты, когда вода закипит.
— Другими словами, она проверяла, как нагревается вода. Правильно?
— И какой же вывод мы должны из этого сделать? Что еще умеет Исполнитель, кроме выполнения команд?
— Он умеет выполнять проверки! — догадался Петя.
— Вот именно — проверки, — сказал Казимир. — И сразу запомним: команда и проверка — не одно и то же. Выполнение команды изменяет ситуацию, в которой находится Исполнитель. А выполнение проверки — что?
— Не изменяет.
— Потрясающая сообразительность! — похвалил Казимир. — А теперь скажи: для чего нужны проверки Исполнителю?
— Ясное дело: чтобы знать, когда приступать к выполнению новой команды…
— …и приступать ли к ней вообще? — подхватил Казимир.
— К нему, — сказал Петя.
— Что — к нему?
— Если «выполнение», то — к нему.
— А если «команда», то — к ней.
— А если «выполнение команды», то — к нему. К выполнению.
— А кто ты такой, чтобы указывать?
— Я — Петя, — сказал Петя.
— А я — Великий Магистр, — сказал Великий Магистр. — Я — лингвист-универсал, понял? По шестому разряду работаю. Красный диплом имею. У меня жена профессор.
— А все-таки я прав, — сказал Петя. — А вы, Казимир, должны научиться признавать свои ошибки. И вообще — пора перестраиваться.
— Знаешь что, пацан? — спросил Казимир. — Вот возьму сейчас и уеду…
— Не уедете.
— Это почему?
— А я вам командировку не подпишу.
— Маленький шантажист… — пробормотал Казимир. — Ну, делать нечего. Остаюсь. На чем мы остановились?
— Для чего нужны проверки.
— Так вот, представь себе, что чайник не закипел бы. Ну, скажем, потух газ. Что в таком случае сделала бы Кристина?
— Она бы его снова зажгла.
— Ничего подобного! Исполнитель выполняет только то, что написано в программе, а в твоей программе команды зажечь газ во второй раз не было. И значит, вода в чайнике никогда бы не закипела. И, следовательно, Кристина не смогла бы перейти к выполнению следующей команды. Программисты говорят, что в таких случаях с Исполнителем происходит авария. Он останавливается и прекращает работу.
Так вот, использование проверок позволяет программисту так составить программу, что Исполнитель знает, I как ему поступать в том или ином случае. Тебе это понятно?
— Нет, — сказал Петя. — Не очень. Я не понимаю, как можно в программе использовать проверки.
— Сейчас поймешь, — сказал Казимир, — Приступим к обеду.
Повернувшись к гребцам, он скомандовал:
— Орудие на берег!
Те живо выволокли пушку на берег.
— Объявляю меню, — сказал Казимир. — На первое — жареная курица. На второе — жареная курица. На третье — жареная курица.
— А на сладкое? — спросил кто-то.
— А на сладкое, братцы, тоже — жареная курица, — торжественно объявил Казимир.
— Ура! Ура! Ура! Ура! — восторженно прокричали матросы. По одному «ура» — на каждое блюдо. (Не знаю почему, но моряки любят жареных куриц).
— Обед готов. Кок-артиллерист — Кристина. Петя, составляй программу.
— А какой у нее набор стандартных команд? — спросил Петя.
— Исполнитель может выполнять три команды: «подойти к орудию», «зарядить орудие», «выстрелить». И добавляю: орудие у нас многозарядное.
В последней фразе Казимира слышалось какое-то тайное значение, но Петя не обратил на него внимание и начал диктовать:
— Значит, так, Кристина. Ты должна подойти к орудию, зарядить его и выстрелить, — он подумал и добавил: — и смотри у меня. Чтобы курица была как курица, а не черт знает что.
Через миг была отпечатана такая программа:
ПОДОЙТИ К ОРУДИЮ
ЗАРЯДИТЬ ОРУДИЕ
ВЫСТРЕЛИТЬ
КОНЕЦ
— Вводи программу, — приказал Казимир.
Петя сунул листок под поварский колпак Кристины и прихлопнул его сверху.
Кристина-Исполнитель понеслась к орудию, остановилась возле него и вдруг монотонно заговорила:
— Авария. Авария. Авария. Авария.
— В чем дело? — растерянно спросил Петя.
— Я же предупреждал, — сказал Казимир. — Кулинарно-артиллерийская установка у меня — многозарядная.
— Ну и что?
— Это я у тебя должен спросить: ну и что? Догадайся, о какой аварии говорит Исполнитель?
— Наверное, орудие уже заряжено?
— Совершенно верно. Сам же видел, как оно только что стреляло.
— Значит, Кристина сделала проверку и увидела, что в орудии остались заряды?
— Правильно.
— А какие проверки она умеет делать?
— Наконец-то! — воскликнул Казимир. — Наконец-то ты об этом спросил! Кристина-Исполнитель может проверять заряжено орудие или нет. Я отвечаю на твой вопрос!
— Вот оно что, — сказал Петя, — Значит, когда Кристина стала выполнять программу, то перед командой «зарядить орудие» она сделала проверку и обнаружила, что оно уже заряжено, и…
— И что?
— И значит, выполнять эту команду она не смогла. Поэтому перейти к следующей команде она тоже не смогла.
— Логично, — сказал Казимир. — Следовательно, в этом и есть причина аварии.
— Выходит, я неправильно составил программу?
— Выходит, так. Ты не использовал умения Кристины-Исполнителя делать проверку. Кристина, ко мне!
Кристина послушно приблизилась к Казимиру.
— Слушайте, Казимир, — сказал Петя, — а почему она вам подчиняется без всякой программы?
— Пусть только попробует не подчиниться. Я ведь, братец ты мой, — Великий Магистр. У меня жена — профессор… Впрочем, я об этом уже говорил. — Ну что, попробуешь еще раз составить программу?
— А как? — спросил Петя. — Я ведь не знаю, как составлять программы с проверками.
— Ты ей скажи по-человечески, чего ты хочешь, а на машинный язык твой приказ она переведет сама. Кстати, изложение программы «по-человечески» у программистов называется «спецификация».
— Ну, если по-человечески, то значит, так…
— Подожди, — перебил Казимир. — Представь себе, что в данный момент ты сам не знаешь, заряжено орудие или нет. Представил?
— Представил.
— Тогда командуй. И Петя начал:
— Кристина, ты должна подойти к орудию. Потом ты должна проверить, заряжено оно или нет. Допустим, что оно не заряжено. Тогда тебе нужно его зарядить и после этого выстрелить. А если оно уже заряжено, то во второй раз заряжать не нужно. Тогда ты должна просто выстрелить.
Петя сказал это, а Кристина тут же отстучала на машинке такой текст:
- 8.2. Языки программирования Виды программирований
- 1.1.4. Еще немного терминов
- HR-брендинг: Работа с поколением Y, новые инструменты для коммуникации, развитие корпоративной культуры и еще 9 эффектив...
- Язык программирования Python
- Как выбрать сетевое размещение?
- Размещение публикаций в сетевых СМИ
- Стоимость размещения рекламы
- Вещественные типы
- Еще о создании пользовательских меню
- Перемещение по диалоговым окнам
- Настройка оповещений
- Использование оповещений