SlideShare a Scribd company logo
1 of 7
Download to read offline
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

Viewers also liked

Звіт з волонтерської діяльності ВО Батьківщина Харків березень
Звіт з волонтерської діяльності ВО Батьківщина Харків березеньЗвіт з волонтерської діяльності ВО Батьківщина Харків березень
Звіт з волонтерської діяльності ВО Батьківщина Харків березеньKharkivbatkiv
 
Mobil Anons Tanıtım
Mobil Anons TanıtımMobil Anons Tanıtım
Mobil Anons TanıtımMobil Anons
 
141030_ПТЭ_infringement
141030_ПТЭ_infringement141030_ПТЭ_infringement
141030_ПТЭ_infringementDmitry Yakushev
 
Vende.su.alma
Vende.su.almaVende.su.alma
Vende.su.almaeliseo530
 
Tehokas ammattilaisviestintä 04112014
Tehokas ammattilaisviestintä 04112014Tehokas ammattilaisviestintä 04112014
Tehokas ammattilaisviestintä 04112014laineme
 
Somos diferentes
Somos diferentesSomos diferentes
Somos diferenteseliseo530
 
C:\Documents And Settings\Mrubioreyna\Mis Documentos\Radio Virtual\2010\Ilusi...
C:\Documents And Settings\Mrubioreyna\Mis Documentos\Radio Virtual\2010\Ilusi...C:\Documents And Settings\Mrubioreyna\Mis Documentos\Radio Virtual\2010\Ilusi...
C:\Documents And Settings\Mrubioreyna\Mis Documentos\Radio Virtual\2010\Ilusi...martarure
 
Domain changing and creation of a custom mesh for the resolution of partial d...
Domain changing and creation of a custom mesh for the resolution of partial d...Domain changing and creation of a custom mesh for the resolution of partial d...
Domain changing and creation of a custom mesh for the resolution of partial d...Emanuele Zappia
 
有idea但沒錢沒技術,如何創業成真?經驗分享會_台北場_jacky_張志威
有idea但沒錢沒技術,如何創業成真?經驗分享會_台北場_jacky_張志威有idea但沒錢沒技術,如何創業成真?經驗分享會_台北場_jacky_張志威
有idea但沒錢沒技術,如何創業成真?經驗分享會_台北場_jacky_張志威Jacky Chang
 
SAMBA - Maj - 14.5.2015
SAMBA - Maj - 14.5.2015SAMBA - Maj - 14.5.2015
SAMBA - Maj - 14.5.2015Anton Bittner
 
Informe últimos 50 tweets #conalma
Informe últimos 50 tweets #conalmaInforme últimos 50 tweets #conalma
Informe últimos 50 tweets #conalmaTeresa Jular
 
Proteccion de talud con geotextiles san bernardino
Proteccion de talud con geotextiles san bernardinoProteccion de talud con geotextiles san bernardino
Proteccion de talud con geotextiles san bernardinoNombre Apellidos
 
Cromos~1
Cromos~1Cromos~1
Cromos~1macckof
 

Viewers also liked (20)

Звіт з волонтерської діяльності ВО Батьківщина Харків березень
Звіт з волонтерської діяльності ВО Батьківщина Харків березеньЗвіт з волонтерської діяльності ВО Батьківщина Харків березень
Звіт з волонтерської діяльності ВО Батьківщина Харків березень
 
Mobil Anons Tanıtım
Mobil Anons TanıtımMobil Anons Tanıtım
Mobil Anons Tanıtım
 
Lionel messi
Lionel messiLionel messi
Lionel messi
 
141030_ПТЭ_infringement
141030_ПТЭ_infringement141030_ПТЭ_infringement
141030_ПТЭ_infringement
 
Vende.su.alma
Vende.su.almaVende.su.alma
Vende.su.alma
 
Tehokas ammattilaisviestintä 04112014
Tehokas ammattilaisviestintä 04112014Tehokas ammattilaisviestintä 04112014
Tehokas ammattilaisviestintä 04112014
 
Onbook
OnbookOnbook
Onbook
 
Somos diferentes
Somos diferentesSomos diferentes
Somos diferentes
 
C:\Documents And Settings\Mrubioreyna\Mis Documentos\Radio Virtual\2010\Ilusi...
C:\Documents And Settings\Mrubioreyna\Mis Documentos\Radio Virtual\2010\Ilusi...C:\Documents And Settings\Mrubioreyna\Mis Documentos\Radio Virtual\2010\Ilusi...
C:\Documents And Settings\Mrubioreyna\Mis Documentos\Radio Virtual\2010\Ilusi...
 
Domain changing and creation of a custom mesh for the resolution of partial d...
Domain changing and creation of a custom mesh for the resolution of partial d...Domain changing and creation of a custom mesh for the resolution of partial d...
Domain changing and creation of a custom mesh for the resolution of partial d...
 
Ranas dardo Fresa
Ranas dardo FresaRanas dardo Fresa
Ranas dardo Fresa
 
有idea但沒錢沒技術,如何創業成真?經驗分享會_台北場_jacky_張志威
有idea但沒錢沒技術,如何創業成真?經驗分享會_台北場_jacky_張志威有idea但沒錢沒技術,如何創業成真?經驗分享會_台北場_jacky_張志威
有idea但沒錢沒技術,如何創業成真?經驗分享會_台北場_jacky_張志威
 
SAMBA - Maj - 14.5.2015
SAMBA - Maj - 14.5.2015SAMBA - Maj - 14.5.2015
SAMBA - Maj - 14.5.2015
 
felíz año
felíz añofelíz año
felíz año
 
Conocelosprogramas2012
Conocelosprogramas2012 Conocelosprogramas2012
Conocelosprogramas2012
 
Informe últimos 50 tweets #conalma
Informe últimos 50 tweets #conalmaInforme últimos 50 tweets #conalma
Informe últimos 50 tweets #conalma
 
Mrp cassa
Mrp cassaMrp cassa
Mrp cassa
 
Filosofía de edward deming
Filosofía de edward demingFilosofía de edward deming
Filosofía de edward deming
 
Proteccion de talud con geotextiles san bernardino
Proteccion de talud con geotextiles san bernardinoProteccion de talud con geotextiles san bernardino
Proteccion de talud con geotextiles san bernardino
 
Cromos~1
Cromos~1Cromos~1
Cromos~1
 

Similar to 30分で作ってRubyを体感資料

プログラミング講座 【ド素人向け】
プログラミング講座 【ド素人向け】プログラミング講座 【ド素人向け】
プログラミング講座 【ド素人向け】泰玄 竹下
 
Qlik Tips 20210720_複数言語対応
Qlik Tips 20210720_複数言語対応Qlik Tips 20210720_複数言語対応
Qlik Tips 20210720_複数言語対応QlikPresalesJapan
 
会話型UI事始め
会話型UI事始め会話型UI事始め
会話型UI事始めDeNA
 
151117 a type of programming languages
151117 a type of programming languages 151117 a type of programming languages
151117 a type of programming languages Himi Sato
 
クロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめクロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめYuki Yazaki
 
Swiftプログラミングを考える
Swiftプログラミングを考えるSwiftプログラミングを考える
Swiftプログラミングを考えるDaisuke Nagata
 
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyKanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyShinichi Okada
 
勉強会用Swift授業2018-0126
勉強会用Swift授業2018-0126勉強会用Swift授業2018-0126
勉強会用Swift授業2018-0126Akihiro Fujiwara
 

Similar to 30分で作ってRubyを体感資料 (10)

プログラミング講座 【ド素人向け】
プログラミング講座 【ド素人向け】プログラミング講座 【ド素人向け】
プログラミング講座 【ド素人向け】
 
Trunk0125資料
Trunk0125資料Trunk0125資料
Trunk0125資料
 
Qlik Tips 20210720_複数言語対応
Qlik Tips 20210720_複数言語対応Qlik Tips 20210720_複数言語対応
Qlik Tips 20210720_複数言語対応
 
会話型UI事始め
会話型UI事始め会話型UI事始め
会話型UI事始め
 
151117 a type of programming languages
151117 a type of programming languages 151117 a type of programming languages
151117 a type of programming languages
 
クロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめクロスプラットフォーム開発環境のすヽめ
クロスプラットフォーム開発環境のすヽめ
 
Swiftプログラミングを考える
Swiftプログラミングを考えるSwiftプログラミングを考える
Swiftプログラミングを考える
 
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRubyKanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
Kanrk05 .Netでお仕事しているプログラマがスクリプト言語として使うRuby
 
勉強会用Swift授業2018-0126
勉強会用Swift授業2018-0126勉強会用Swift授業2018-0126
勉強会用Swift授業2018-0126
 
なでしこ開発記録
なでしこ開発記録なでしこ開発記録
なでしこ開発記録
 

30分で作ってRubyを体感資料

  • 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 の変数を使ってあげてください