Сказки-программы
23-12-2007 13:13
к комментариям - к полной версии
- понравилось!
Взято из одного журнала 1985 или 86 года (обложка не сохранилась, поэтому название журнала неизвестно).
Сказки-программы для детей.
На следующий день, когда Серёжа перед сном вызвал Чипа и они немножко поиграли в салочки-считалочки, Серёжа попросил:
- Чип, а ты сказки какие-нибудь знаешь? Я так люблю сказки, даже совсем глупые, для малышей.
Чип задумался.
- Сказку? Нет, это работа для суперкомпьютера, вот тот может хоть сто тысяч сказок в секунду рассказывать.
- Да куда мне столько, мне и одной хватит. Ну, пожалуйста, Чипка, я очень тебя прошу. Попробуй, может, что-нибудь получится. Ты такой умный!
- Что ж, - Чип былявно польщён, - сказку, говоришь? Ладно, попробуем, только это будет не сказка, а сказка-программа. Ручка есть? Записывай.
И вот что продиктовал Чип.
= РЕПКА =
Сказка-программа для детей младшего и среднего школьного возраста, особенно для тех, кто занимается в кружке юных программистов.
Глава №1. Жили-были:
жилец №1 = Дедка,
жилец №2 = Бабка,
жилец №3 = Внучка,
жилец №4 = Жучка,
жилец №5 = Кошка,
жилец №6 = Мышка;
Глава №2. ПОСАДИЛ ДЕД РЕПКУ. ВЫРОСЛА РЕПКА БОЛЬШАЯ-ПРЕБОЛЬШАЯ. СТАЛ ДЕД ЕЁ ТЯНУТЬ. ТЯНЕТ-ПОТЯНЕТ, А ВЫТЯНУТЬ НЕ МОЖЕТ.
Глава №3. Сейчас номер жильца N = 1, а потом он будет меняться.
Глава №4. Вспомните, чему равняется N, и к этой цифре прибавьте 1.
Глава №5. ПОЗВАЛ ЖИЛЕЦ N - 1 ЖИЛЬЦА N (ПРЕДЫДЩИЙ ЖИЛЕЦ СЛЕДУЮЩЕГО ЖИЛЬЦА).
Глава №6. ТЯНУТ-ПОТЯНУТ.
Глава №7. Если N = 6, то переходите к главе №10, иначе читайте дальше.
Глава №8. А ВЫТЯНУТЬ НЕ МОГУТ.
Глава №9. Возвращайтесь к главе №4 и читайте следующие за ней главы.
Глава №10. ВЫТЯНУЛИ РЕПКУ!
Глава №11. Конец сказки.
- Что же это за сказка? - воскликнул Серёжа в недоумении. - Чепуха какая-то! Ой, извини, Чип, я хотел сказать, что сказка очень интересная, но только непонятная.
- Что же тут непонятного? - проворчал Чип. - Всё понятно. Делай, что написано маленькими буквами, и читай, что написано большими, и получится сказка. Вот написано N = 1, значит, запомни, что сейчас N равно 1. Написано - прибавь 1 к N, значит, посмотри, чему сейчас N равно, и прибавь 1. Было 1 - станет 2, потом, когда второй раз вернёшься к главе №4, будет 2, а станет 3. А вместо слов "жилец № такой-то" читай его имя по списку жильцов. Значит, на этот раз уже не дед бабку, а бабка внучку позовёт. Теперь понял?
- Ну-ка, ну-ка, - до Серёжи наконец всё дошло. - Ох, как здорово! Значит, пока до жильца №6, то есть до мышки, очередь не дойдёт, я всё буду возвращаться и возвращаться, и всё новые жильцы будут репку тянуть. А на мышке всё кончится, так заранее и рассчитано. Послушай, Чип, а ведь так можно хоть сто жильцов взять, и сказка длиннее не станет, только вместо 6 надо будет всюду сто писать. (Кстати, вы видели современную сказку о Джеке, который построил дом? Я имею в виду ту, что на PHP написана. Там буквально 10-15 строчек, которые разворачиваются в несколько страниц).
- Вот сейчас, - провозгласил Чип торжественно, - ты понял самое главное в программировании: цикл. Всё идёт по кругу, только жильцы прибавляются. Так зачем много раз одно и то же писать? Для этого и придуман цикл. Здесь цикл на мышке кончается, а бывает и бесконечный цикл, только его все компьютеры как огня боятся. Вот, например, сказка про попа и его собаку. Кстати, попробуй-ка напиши её в виде программы.
- Сейчас попробую, - ответил Серёжа. Он сел за стол и через пару минут написал:
= ПОП И СОБАКА =
Глава №1. У ПОПА БЫЛА СОБАКА, ОН ЕЁ ЛЮБИЛ.
Глава №2. ОНА СЪЕЛА КУСОК МЯСА.
Глава №3. ОН ЕЁ УБИЛ. И В ЗЕМЛЮ ЗАКОПАЛ.
Глава №4. И НАДПИСЬ НАПИСАЛ:
Глава №5. Если не надоело, возвращайтесь к главе №1, иначе отдыхайте.
Глава №6. Конец.
- Ого, - улыбнулся Чип, - да ты, я вижу, прирождённый программист. Пожалел компьютер и вставил условие "если не надоело" в пятой главе. Сделал лазейку из бесконечного цикла. Значит, если надоело, то можно отдохнуть.
- Знаешь, Чип, только мне эта сказка совсем не нравится. Разве можно собаку мучить? Ну, наказал бы, а то сразу убивать. Давай её спасём!
- Давай, - охотно согласился Чип. - Пусть тот, кто читает, сам выбирает для собаки наказание. Вот заменим главу №3 на такую:
"Глава №3. ОН ЕЁ НАКАЗАЛ".
Теперь, перед тем, как читать сказку, надо выбрать наказание. Ну, скажем:
наказал = отругал и не дал мороженого,
или
наказал = отшлёпал и запер на час в чулане.
Кстати, такая программа, в которой можно что-то определять по желанию перед тем, как пользоваться, называется подпрограммой. А то, что надо определять, пишется в скобках после названия. Значит, мы сейчас написали сказку-подпрограмму
ПОП И СОБАКА (наказал)
А когда будешь её читать, можешь вставить, что хочешь, ну хоть
ПОП И СОБАКА (поцеловал)
Видишь, здесь вставлено то, что надо читать вместо слова "наказал".
Ладно, спокойной ночи, мне пора. Завтра ещё поиграем, хорошо?
ОТ РЕДАКЦИИ: Дорогие ребята! Чип и вам даёт задание: составить программу для сказки "Теремок". Самая лучшая и правильная программа будет напечатана в журнале. Ждём ваших писем.
ОТ СЕБЯ: Представляете, детям в сказке рассказывают об основах программирования! Видимо, здесь подразумевается что-то вроде Бэйсика (раз нумеруют операторы). Итак, о чём рассказали:
1. Переменные.
2. Присваивание.
3. Цикл.
4. Ветвление.
5. Функции.
6. Условный переход.
7. Безусловный переход в рамках бесконечного цикла.
8. Математические операции.
9. Вывод данных.
10. Ввод данных.
Весьма неплохо! Я бы сказал - очень даже хорошо.
вверх^
к полной версии
понравилось!
в evernote