狠狠撸

狠狠撸Share a Scribd company logo
1
Ruby 言語体験
英単語当てゲーム作成
Release:2015/05(var1.0.0)
2
プログラムとは?
プログラムとはなにか
プログラムとはコンピュータに対して指示を伝える指示書です
上記のように、人が人に指示(お願い)を言葉でだすことと同じように、コンピュータに
も指示を出す場合は、共通言語で伝えることになります。
コンピュータの指示書は共通言語のプログラム言語を使用して行います。
プログラム言語にはさまざまな言語がありますが、全ての言語の目的はコンピュータに指
示をだすことのみです。
3
Ruby とは?
Ruby とはなにか
Ruby はプログラム言語の一つです。1995 年に日本人から発表されたプログラム言語で、
スクリプト開発?Web アプリケーション開発?ゲーム開発などさまざまな開発が簡単に作
成することができます。近年言語の中でシェア率がもっとも高く上がっている言語の一つ
です。また言語の習得も他の言語よりは比較的簡単に学習が可能です。
どんな人が Ruby を学ぶべきか
1. これからプログラムを始める人
2. Web アプリケーションを作ってみたい人
3. 他の言語を学習しているけど、他の言語を覚えたい人
4. ファイル操作?文字列操作など手間をかけずにやりたい人
5. その他、プログラムでなにかを作りたいと思っている人
ここから簡単に Ruby 学習
さまざまな Ruby 構文を覚えることで、いろいろなアプリケーションやサービスを作ること
ができるようになります。
全てをここで学習するのは難しいので、今回の?英単語当てゲーム?を作成するのに最低
限必要な知識のみにしぼって触れていきます。
以下より、?英単語当てゲーム?で最低限必要な Ruby 構文(変数?演算?文字の出力?文
字の入力?条件式?ハッシュ?ハッシュブロック繰り返し)を学習します。
変数
変数は数値や文字列を保存しておくための一時的な箱のことです。
test という名前の箱に 1 を代入する場合はこのようになります
4
test = 1
変数名は何をいれるのかが分かるように分かりやすい名前にしてあげてください
例えば身長であれば height、年齢であれば age とすると分かりやすくなります。
演算
演算は複数の数値の加算(+)?減算(-)?乗算(*)?除算(/)を行うことです。
1 + 1 の結果を sum 変数に代入する場合はこのようになります
sum = 1 + 1
また変数 a,b に代入されている数値で演算を行う場合はこのようになります
a = 1
b = 1
sum = a + b
文字列の出力
ユーザに情報(文字列)を表示する場合に使用します。
ユーザに文字列を出力することでユーザに対してコンピュータから片方向に伝えることが
できます。
ユーザに hello!!!という文字列を表示する場合はこのようになります
puts "hello!!!"
このように文字列の場合はダブルクォーテーション記号で文字列を囲ってやります。
また変数 test の値を表示する場合はこのようになります
test = 1
puts "test の値は#{test}"
文字列の入力
プログラムは人間との双方向にやり取りすることが多く、ユーザが入力したデータを取得
することで、対話的な処理が行えるようになります。
ユーザが入力したデータを test 変数へ代入する場合はこのようになります
5
test = gets.chomp
gets でユーザに入力状態にしてデータを入力するまでプログラムは待ち状態になります。
また gets に.chomp を付けていますが、付けた場合には余計に入る改行を除外することがで
きるため、セットで使うことが多くなっています。
条件式
条件式はある条件により挙動を変えることを行う場合に if 文を使います。
ユーザの入力値によって処理を分岐することが可能になります。
ユーザの体重により表示を分岐する場合はこのようになります
puts "あなたの体重をおしえてください"
weight = gets.chomp
if weight.to_i < 30
puts "痩せすぎの可能性があります"
elsif weight.to_i >= 30 and weight.to_i < 70
puts "普通ですよ"
else
puts "太りぎみの可能性があります"
end
このように処理が複数ある場合は elsif を使い条件式を追加して、いろいろなパターンに
対応した分岐を行うことが可能です。最後の else は全ての条件に一致しない場合に実行さ
れます。この場合、30 キロ未満でも、30 キロ以上で 70 キロ未満でもない場合に else が実
行されることになります。weight の.to_i は文字ではなく数値として処理を行うために、
数値に変換しています。
ハッシュ
ハッシュはデータをキーと値の組み合わせで複数まとめて扱う場合に使います。
キーをユーザの ID 番号として値はユーザ名として users 変数に代入する場合はこのように
なります
users = { "1" => "田中", "2" => "鈴木"}
複数ある場合はカンマで区切ることで指定することができます。
6
ハッシュブロック繰り返し
数値や文字列を保存しておくための一時的な箱のことです。
users = { "1" => "田中", "2" => "鈴木"}
users.each do |id,name|
puts "id は#{id},name は#{name}です"
end
このように each を使用することでハッシュの値を id と name 変数に格納し繰り返し実行
するようになります。1 度目で 1 と田中が処理され、2 度目で 2 と鈴木が処理されるながれ
になります。
break というキーワードを使うことで繰り返し処理から抜けることも可能です。次のゲーム
作成で使用するため覚えておいてください。
では、ここまで覚えた内容を使ってゲームを作ってみましょう
英単語当てゲームを作ろう
それでは以下のコードを読みながら、1~8 の抜けている個所を埋めてゲームを完成させて
ください
# encoding: utf-8
words = { "apple" => "りんご", "dog" => "犬", "book" => "本", "milk" => "牛乳",
"library" => "図書館" }
# 1) 変数 loop_count に 0 を代入してください
# 2) 変数 correct_count に 0 を代入してください
puts "英単語ゲームスタート!stop と入力したら中断できます。"
words.each do |id,value|
puts "#{value}に対応する英単語を入力してください。"
7
answer = gets.chomp
if answer == "stop"
# 3) 繰り返し文を抜けてください
elsif answer == id
puts "正解です。"
# 4) correct_count の値を 1 増やしてください
else
puts "不正解です。"
end
# 5) loop_count の値を 1 増やしてください
end
if correct_count == 0
# 6) "あなたの正解率は 0 パーセントです"と puts してください。
else
# 7) 正解率を変数に代入してください。
# percentage 変数へ correct_count に 100 を乗算し loop_count で除算した結果を代入
# 8) "あなたの正解率は??パーセントです"と puts してください。
end
※ #が先頭についている行はコメント扱いとなり、プログラムとして処理はされません
挑戦
# 6)と# 8)で表示する文字列がプログラム内で重複していますね。これはプログラム上で
無駄なコードになります。無駄のないコードに修正してください。
※ヒント:percentage の変数を使ってあげてください

More Related Content

30分で作って搁耻产测を体感资料

  • 3. 3 Ruby とは? Ruby とはなにか Ruby はプログラム言語の一つです。1995 年に日本人から発表されたプログラム言語で、 スクリプト開発?Web アプリケーション開発?ゲーム開発などさまざまな開発が簡単に作 成することができます。近年言語の中でシェア率がもっとも高く上がっている言語の一つ です。また言語の習得も他の言語よりは比較的簡単に学習が可能です。 どんな人が Ruby を学ぶべきか 1. これからプログラムを始める人 2. Web アプリケーションを作ってみたい人 3. 他の言語を学習しているけど、他の言語を覚えたい人 4. ファイル操作?文字列操作など手間をかけずにやりたい人 5. その他、プログラムでなにかを作りたいと思っている人 ここから簡単に Ruby 学習 さまざまな Ruby 構文を覚えることで、いろいろなアプリケーションやサービスを作ること ができるようになります。 全てをここで学習するのは難しいので、今回の?英単語当てゲーム?を作成するのに最低 限必要な知識のみにしぼって触れていきます。 以下より、?英単語当てゲーム?で最低限必要な Ruby 構文(変数?演算?文字の出力?文 字の入力?条件式?ハッシュ?ハッシュブロック繰り返し)を学習します。 変数 変数は数値や文字列を保存しておくための一時的な箱のことです。 test という名前の箱に 1 を代入する場合はこのようになります
  • 4. 4 test = 1 変数名は何をいれるのかが分かるように分かりやすい名前にしてあげてください 例えば身長であれば height、年齢であれば age とすると分かりやすくなります。 演算 演算は複数の数値の加算(+)?減算(-)?乗算(*)?除算(/)を行うことです。 1 + 1 の結果を sum 変数に代入する場合はこのようになります sum = 1 + 1 また変数 a,b に代入されている数値で演算を行う場合はこのようになります a = 1 b = 1 sum = a + b 文字列の出力 ユーザに情報(文字列)を表示する場合に使用します。 ユーザに文字列を出力することでユーザに対してコンピュータから片方向に伝えることが できます。 ユーザに hello!!!という文字列を表示する場合はこのようになります puts "hello!!!" このように文字列の場合はダブルクォーテーション記号で文字列を囲ってやります。 また変数 test の値を表示する場合はこのようになります test = 1 puts "test の値は#{test}" 文字列の入力 プログラムは人間との双方向にやり取りすることが多く、ユーザが入力したデータを取得 することで、対話的な処理が行えるようになります。 ユーザが入力したデータを test 変数へ代入する場合はこのようになります
  • 5. 5 test = gets.chomp gets でユーザに入力状態にしてデータを入力するまでプログラムは待ち状態になります。 また gets に.chomp を付けていますが、付けた場合には余計に入る改行を除外することがで きるため、セットで使うことが多くなっています。 条件式 条件式はある条件により挙動を変えることを行う場合に if 文を使います。 ユーザの入力値によって処理を分岐することが可能になります。 ユーザの体重により表示を分岐する場合はこのようになります puts "あなたの体重をおしえてください" weight = gets.chomp if weight.to_i < 30 puts "痩せすぎの可能性があります" elsif weight.to_i >= 30 and weight.to_i < 70 puts "普通ですよ" else puts "太りぎみの可能性があります" end このように処理が複数ある場合は elsif を使い条件式を追加して、いろいろなパターンに 対応した分岐を行うことが可能です。最後の else は全ての条件に一致しない場合に実行さ れます。この場合、30 キロ未満でも、30 キロ以上で 70 キロ未満でもない場合に else が実 行されることになります。weight の.to_i は文字ではなく数値として処理を行うために、 数値に変換しています。 ハッシュ ハッシュはデータをキーと値の組み合わせで複数まとめて扱う場合に使います。 キーをユーザの ID 番号として値はユーザ名として users 変数に代入する場合はこのように なります users = { "1" => "田中", "2" => "鈴木"} 複数ある場合はカンマで区切ることで指定することができます。
  • 6. 6 ハッシュブロック繰り返し 数値や文字列を保存しておくための一時的な箱のことです。 users = { "1" => "田中", "2" => "鈴木"} users.each do |id,name| puts "id は#{id},name は#{name}です" end このように each を使用することでハッシュの値を id と name 変数に格納し繰り返し実行 するようになります。1 度目で 1 と田中が処理され、2 度目で 2 と鈴木が処理されるながれ になります。 break というキーワードを使うことで繰り返し処理から抜けることも可能です。次のゲーム 作成で使用するため覚えておいてください。 では、ここまで覚えた内容を使ってゲームを作ってみましょう 英単語当てゲームを作ろう それでは以下のコードを読みながら、1~8 の抜けている個所を埋めてゲームを完成させて ください # encoding: utf-8 words = { "apple" => "りんご", "dog" => "犬", "book" => "本", "milk" => "牛乳", "library" => "図書館" } # 1) 変数 loop_count に 0 を代入してください # 2) 変数 correct_count に 0 を代入してください puts "英単語ゲームスタート!stop と入力したら中断できます。" words.each do |id,value| puts "#{value}に対応する英単語を入力してください。"
  • 7. 7 answer = gets.chomp if answer == "stop" # 3) 繰り返し文を抜けてください elsif answer == id puts "正解です。" # 4) correct_count の値を 1 増やしてください else puts "不正解です。" end # 5) loop_count の値を 1 増やしてください end if correct_count == 0 # 6) "あなたの正解率は 0 パーセントです"と puts してください。 else # 7) 正解率を変数に代入してください。 # percentage 変数へ correct_count に 100 を乗算し loop_count で除算した結果を代入 # 8) "あなたの正解率は??パーセントです"と puts してください。 end ※ #が先頭についている行はコメント扱いとなり、プログラムとして処理はされません 挑戦 # 6)と# 8)で表示する文字列がプログラム内で重複していますね。これはプログラム上で 無駄なコードになります。無駄のないコードに修正してください。 ※ヒント:percentage の変数を使ってあげてください