子どもRubyプログラミング講座「ロボット編」第9回

~ 数と文字列をつなげてみよう(to_s)~

第8回のジャストタイムゲームでは、スタートからストップまでの秒数を round を使って整数で表示しました。では、「~秒です」のように表示するにはどうすればよいでしょう。今回は、数(*)と文字列(**)(もじれつ)をつなげるやり方をみていきます。

(*)     ここでは、計算に使ったり計算でえられたりする数のこと
(**)  文字がならんだもの

+でつなげてみよう

数と文字列をつなげる前に、まずは文字列どうしをつなげて表示する方法を確認しておきましょう。下の命令(めいれい)をエディタに入れて「動かす」ボタンを押してみてください。


puts "abc" + "def"

右側の出力タブに abcdef と表示されましたね。このように、 +(プラス)符号(ふごう)を使えば、文字列どうしをつなげることができます。

文字列どうしをつなげるやり方がわかったら、つぎに数と文字列をつなげてみましょう。前回やったストップウォッチのプログラムをおぼえていますか?このプログラムでスタートからストップまでの秒数を、「~秒です」と表示するようにしましょう。ためしに、最後の行を「puts jikansa + “秒です”」にかえて「動かす」ボタンを押してみてください。


alert "start"
t1 = Time.now
alert "stop"
t2 = Time.now
jikansa = t2 -t1
puts jikansa + "秒です"

5+文字???

出力タブに赤い字でエラー(やりそこない)メッセージが出ましたね。

jikansaに入っているのは数です。数と文字列を加え合わせることはできません。「○○秒です」のように出すには、○○を数から文字列に変える必要(ひつよう)があります。 数を文字列に変えるときは、to_s を使います。

to_s を使って jikansa を文字列に変えてみましょう。次のようになります。


jikansa.to_s

数を文字列に変えたら、+ を使って文字列どうしをつなげます。


puts jikansa.to_s + "秒です"

これで、「~秒です」と表示されるようになりました。

チャレンジ 整数で「~秒です」と表示してみよう!

下のように第8回にでてきた round を使えばできますね。


puts jikansa.round.to_s + "秒です"

ロボットを使って確かめよう

数と文字列をつなげるやり方がわかりましたか。では、ロボットを使った次のプログラムを入れて「動かす」ボタンを押してみましょう。

require "mi100"

robo = Mi100.new "COM3"

kotae = ask "回数?"

kotae.times do
 robo.spinr
end

puts kotae.to_s + "回やりました"

robo.close

プログラムのせつめい

1行目~3行目

ロボットを無線で動かせるようにするための、いつものステップですね。

5行目

「回数?」と書いてある画面を出す。数を入れて「OK」ボタンを押すと、入れた数が kotae という名前のついた箱に入り、次の命令が動きます。

7行目~9行目

kotae という名前のついた箱に入っている数だけ、ロボットが右に回る。

11行目

kotae という名前のついた箱に入っている数を文字列にかえて、「~回やりました」と表示する。