先日、リリカに"数当てゲーム"を教えました。1から100までの好きな数を思い浮かべてもらって、
「それは50より大きいですか小さいですか?」「それは25より大きいですか小さいですか?」
と質問して、数を当てるやつです。
リリカはこれが妙に気にいったようで、しょっちゅう「数当てゲームしようよ~」とせがむので、鬱陶しくなって"数当てゲームの相手をするプログラム"を書こうとしたのですが、
そこでハタと、「せっかくなので、これを題材にリリカにプログラミングを教えてみよう」と思い立ちました。
問題はどの言語を使うかですが、悩まずPythonにします。シンプルだし、対話モードがあるので入門にはうってつけかと。日本語の情報が少ないので、初心者の独習には向きませんが…
とりあえず対話モードで、簡単な計算やprintの使い方を教えてみたところ、理解したようです。「5たす2 の答えをプリントする」というような課題も何とかクリア。
次にwhileループについて説明しましたが、やはり難しかったようですね。まずは”特定の文字列を10回プリントする”を説明して、次に「1から10まで足した答えをプリントする」というお題を出しましたが、説明したら”わかった”というけれど、応用問題を出しても解けないので、わかってないようです。6歳ではこのあたりが限界なのか。
a = 0
b = 0
while a < 10:
a += 1
b += a
print `b`
変数の概念については一応わかったようだけれど、大少を比較してループを抜ける、という動作がわからないみたいで。上から下に順番に実行するのはわかりやすいけれど、プログラムがループするというのは抽象的な概念なのかもしれません。もっと説明を工夫すればなんとかなったのかな。まぁ気が向いたら再挑戦してみます。
ちなみに、数当てゲームのコードはこんな感じで、プログラミングとしては初歩の初歩だけど、これが分かればコンピュータプログラミングの概念を理解したことになるはずです。リリカが分かるのはいつのことか。
import math
min = 1
max = input("いくつまでの数を当てますか?")
riron = int(math.log(max, 2))+1 #おまけ・最大回数の理論値を計算しておく
answer = ""
count = 0
while answer != "y":
center = (max - min) /2 + min
answer = raw_input(`center` + "ですか?( 正しい:y 大きい:b 小さい:s )")
if answer == "b":
min = center + 1
if answer == "s":
max = center - 1
if answer == "y" or answer == "b" or answer == "s":
count += 1
print "こたえは" + `center` + "です。" + `count` + "回で当てました。(*^ー゜)v"
if count > riron:
print "でも" + `riron` + "回以内に当たるはずです。なにか間違えてますよ。( ´Д`)"
○○歳の私にも、全く意味不明・・・。
何歳になったら理解できるようになるのかなぁ???
投稿情報: ちあき♪ | 2007年6 月 5日 (火) 09:06
ぼくはもうすぐわかるようになるかな。
あと3年くらいで・・・・・・・
投稿情報: あしやのパパパパ | 2007年6 月 6日 (水) 19:52
あしやのパパパパさん☆
明日からスイスですねーー☆
お土産の○ョ○○ー○を楽しみにしています!!
気をつけて行ってらしてくださいねーーー。
投稿情報: ちあき♪ | 2007年6 月 7日 (木) 11:09