2012年6月20日水曜日

テンションを上げるためのCording

最近はSEらしい仕事を試行錯誤しながら、リーダーに色々と指導されながらこなしている。
そうすると頭の中が日中の仕事のことでいっぱいになって、眠ろうにも眠れない。
ぼーっとしてるといつの間にか仕事のことを考えている。

これじゃいかん!
というわけで気持ちを切り替えるために仕事とは全く関係の無いCordingをすることにした。
題材はRuby。

で、早速今日からスタートし、とりあえずFizzBuzzを書いた。


# RubyでFizzBuzzをかいてみよう!
# 3の倍数でFizz 5の倍数でBuzz 15の倍数でFizzBuzzね


for num1 in 1 .. 55 do
    if num1 % 15 == 0 then
        print(num1)
        print("  ")
        puts("FizzBuzz")
    end


    if num1 % 5 == 0 then
        print(num1)
        print("  ")
        puts("Buzz")
    end
    
    if num1 % 3 == 0 then
        print(num1)
        print("  ")
        puts("Fizz")
    end
end

こんな感じ。
今までやってきた言語(といっても数少ないw)だと「else if」で条件をさらに指定できていたのだけど、そういうふうにはかけなかった。
endが足りないよ!って怒られるのだ。
まだ始めたばかりでよくわかっていないけど、条件文1つずつに対してendが必要?

・・・そんな感じで仕事のことを忘れてちょっと没頭できるので楽しい。
とりあえず、何か動くものを作るのを目標に、ちょいちょいやっていこうかなと思う。

やっぱりCordingは楽しいのだ。


2012.06.21 追記

else ifとelsifは別物、というわけで理解したことをベースにもう一度FizzBuzzを書いてみた。
#コメントくださった匿名さん、ありがとうございます!


# 2012.06.21 FizzBuzzをElse if 的な構文で書いてみよう
# Else if を書きたければ elsifを使う?!


for num1 in 1 .. 100 do
    if num1 % 15 == 0 then
        print(num1)
        print("  ")
        puts("FizzBuzz")
    elsif num1 % 5 == 0 then
        print(num1)
        print("  ")
        puts("Buzz")
    elsif num1 % 3 == 0 then
        print(num1)
        print("  ")
        puts("Fizz")
    end
end


--実行結果--

AnriMBA:RubyRoom Anri$ ruby Elseif.rb 
3  Fizz
5  Buzz
6  Fizz
9  Fizz
10  Buzz
12  Fizz
15  FizzBuzz
18  Fizz
20  Buzz
21  Fizz
24  Fizz
25  Buzz
27  Fizz
30  FizzBuzz
(中略)
96  Fizz
99  Fizz
100  Buzz

というわけで、思っていた通りに記述することができ、思った通りの結果を得ることができた。
同じFizzBuzzでも、言語によって微妙に違いがあるのだなぁと再認識。
そしてそれを再認識させてくれるFizzBuzzはよいプラクティスだなと改めて思った。
明日もなんか書きたいな〜☆

2 件のコメント:

  1. Rubyは elsif というキーワードを使います。
    else if としちゃうと、Cっぽく書くと
    if (...) {
    }
    else {
    if (..) {
    }
    }
    のようなことになるので、余計な end がいるように
    見えるんですね。

    返信削除
  2. コメントありがとうございます。
    よーく見ると、「Else if」ではなくて「Elsif」なんですね。
    そしてelse ifの謎も解けました。
    予約後としては「else」と「if」という認識のされ方で、なのでelseはelseで、ifはifで、それぞれに対応するendが必要だと解釈されてしまう、ということですよね。

    返信削除