http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=06
練習問題1
"99本のビールが壁に..." 遠足などでよく歌われる古典的な童謡の歌詞、"99 Bottles of Beer on the Wall" を出力するプログラムを書いてみましょう。
# http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=06 # example 1 i = 99 bottle = 'Bottles' while i > 0 puts i.to_s + ' ' + bottle + ' of beer on the wall' puts i.to_s + ' ' + bottle + ' of beer' puts 'Take one down and pass it around' i = i - 1 if i > 1 bottle = 'Bottles' else bottle = 'Bottle' end puts i.to_s + ' ' + bottle + ' of beer on the wall' puts end
練習問題2
耳の遠いおばあちゃんのプログラムを書いてみましょう。おばあちゃんに何を言っても(何をタイプしても)、叫ばない限り (つまり、全部大文字でタイプしない限り)、は?! もっと大きな声で話しておくれ、坊や!と返事をします。もし叫んだときは、彼女はあなたの言葉を聞いて (少なくとも聞いた気がして)、いやー、1938年以来ないねー!と大声で返事をします。プログラムにちょっと真実味 を持たせるため、 1930年から1950年のランダムな数字で毎回違う年を叫ぶようにしましょう。あなたはBYEと叫ぶまでおばあちゃんとの会話から逃れられません。
# http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=06 # example 2 talk = '' while (talk != 'BYE') if (talk == talk.upcase and talk != '') puts 'いやー、' + (1930 + rand(21)).to_s + '年以来ないねー!' else puts 'は?! もっと大きな声で話しておくれ、坊や! ' end talk = gets.chomp end puts 'また来ておくれ、坊や! '
練習問題3
上で作った、「耳の遠いおばあちゃんのプログラム」を拡張しましょう。おばあちゃんはあなたに行って欲しくないのです。あなたがBYEと叫んでもおばあちゃんは聞こえないふりをします。 BYEを3回連続で 叫ばないといけないように変更してみてください。 BYEと3回叫んでも連続していない限り、おばあちゃんとの会話は続くようになっているかプログラムをテストして確認してみましょう。
# http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=06 # example 3 talk = '' bye = 0 while (bye < 3) if (talk == talk.upcase and talk != '') puts 'いやー、' + (1930 + rand(21)).to_s + '年以来ないねー!' else puts 'は?! もっと大きな声で話しておくれ、坊や! ' end talk = gets.chomp if talk == 'BYE' bye = bye + 1 else bye = 0 end end puts 'また来ておくれ、坊や! '
練習問題4
うるう年。 開始の年と終わりの年を聞いて、その間にあるすべてのうるう年を (もし開始や終了の年がうるう年だったらそれも含めて)表示するプログラムを書きましょう。うるう年は(1984年とか2004年のように)4で割り切れる数の年です。ただし、100で割り切れる年はうるう年ではなくて (たとえば1800年や1900年)、さらに、それは 400で割り切れない限り です。(つまり、1600年や2000年はうるう年です。)
# http://www1.tf.chiba-u.jp/~shin/tutorial/index.rb?Chapter=06 # example 4 year = startyear flag = 0 # フラグ立てないとだめなのかなぁ? puts '訊ねた年の間にあるうるう年を表示します。' puts '開始の年を入力してください。' startyear = gets.chomp.to_i puts '終わりの年を入力してください。' endyear = gets.chomp.to_i while year <= endyear if year % 400 == 0 # 400で割り切れると必ずうるう年になる flag = 1 else if year % 100 != 0 # 100で割り切れるとうるう年じゃない if year % 4 == 0 # 4で割り切れ100で割り切れないとうるう年 flag = 1 else flag = 0 end else flag = 0 end end if flag == 1 puts year.to_s + '年はうるう年です。' end year = year + 1 end