ローイングファンのプログラミング日記

ボート競技やプログラミングについて書きます

データをターミナル/PowerShellに表示させる puts print

putsは引数に改行をつけて標準出力に出力するメソッド。
「標準出力に出力」を今回は「ターミナル/PowerShellに表示」という意味で使う。

目次


この記事の内容について

環境はmacOS 10を前提。Windows10でも動作確認はしています。
Windows10を利用している場合はターミナルをPowerShellに、ターミナルの待機状態を示す$記号をPowerShell>記号に、それぞれ読み替えてください。
テキストエディタとターミナル/PowerShellの設定については前の記事を参照。

テキストエディタについて
プログラミングをはじめる準備 -その1- - ローイングファンの日記


ターミナル/Windows PowerShellについて
プログラミングをはじめる準備 -その2- - ローイングファンの日記

putsメソッドについて

putsメソッドの書式は次のとおり。

puts 引数


putsメソッドのリファレンスは以下。

Rubyリファレンスマニュアル
組み込みライブラリ Kernelモジュール
モジュール関数 puts
https://docs.ruby-lang.org/ja/latest/class/Kernel.html

文字列を表示させる

準備

コードを書く準備として、デスクトップ上にruby_lessonというディレクトリをつくる。
書いたコードはruby_lessonディレクトリ内に保存する。

コードを書く

準備ができたらテキストエディタを立ち上げる。
テキストエディタの文字エンコーディングUTF-8、改行記号はLFに設定する。

テキストエディタに次のように書き込む。

puts "10/29 15:20"
puts "男子エイト 決勝"
puts "1着 N会社 05:47.74"
puts "2着 M大学 05:51.44"
puts "3着 C大学 05:53.49"
puts "4着 N大学 05:57.27"


書いたらrubylesson.rbと名前をつけて保存する。

上のコードの説明。
データを' '(シングルクォート)か" "(ダブルクォート)で囲むことで、データが文字列オブジェクトになる。
今回はダブルクォートを使う。
シングルクォートとダブルクォートの違いについては別記事に書く予定。
これでputs 引数(文字列オブジェクト)の形になっている。

コードを実行する

ターミナルを立ち上げる。
cdコマンドでruby_lessonディレクトリに移動する。

ターミナル

cd desktop
cd ruby_lesson


もしくは次のように一気に移動する。

ターミナル

cd desktop/ruby_lesson


移動したらrubylesson.rbファイルを実行させる。
実行するにはrubyコマンドを使う。
次のようにコマンドを入力したらreturn(Enter)キーを押して実行。

ターミナル

ruby rubylesson.rb


結果は、ターミナルに次のように表示される。
実行結果

10/29 15:20
男子エイト 決勝
1着 N会社 05:47.74
2着 M大学 05:51.44
3着 C大学 05:53.49
4着 N大学 05:57.27


数値を出力する

数値はそのまま記入すれば数値オブジェクトとなる。
コードを書く。

rubylesson.rb

puts 1


実行結果

1


四則演算

数値オブジェクトを使って計算もできる。
足し算は+、引き算は-、掛け算は*、割り算は/のメソッドを使う。
コードを書いて試す。
今回はprintメソッドを使う。
printメソッドは引数の後に改行がつかない。なので改行が必要な場合は改行記号をつけなければならない。

rubylesson.rb

print 1
print 1+1
print 4-1
print 2*2
print 10/2


実行結果

12345


上の場合は改行記号がないので改行されずに表示されている。
改行させたい場合は\n(バックスラッシュn)という記号(文字列オブジェクト)を使う。
\nはダブルクォートの中でしか改行の意味にならないので注意。

\の出し方はキーボードの環境によって異なる。
わたしのiMacのキーボードではoption + ¥\が出る。
Windowsパソコンでは¥キーが\と同じ意味になる。

実際に改行記号を使ってみる。

rubylesson.rb

print 1
print "\n"
print 1+1
print "\n"
print 4-1
print "\n"
print 2*2
print "\n"
print 10/2
print "\n"


実行結果

1
2
3
4
5


putsメソッドとprintメソッドは場面によって使いわける。

エラー表示

順調にきたので今度はエラーを試す。

rubylesson.rb

puts 1+1
puts "1"+1


実行結果

2
rubylesson.rb:2:in `+': no implicit conversion of Integer into String (TypeError)
from rubylesson.rb:2:in `<main>'


エラー表示を読んでいく。

まず、コードの1行目は希望通りに表示されている。
コードは上から順に読まれて実行される。今回の例だと1行目は問題なく実行され、2行目に不具合があるのでエラー表示が出る。
もしコードの1行目に不具合があったら、いきなりエラー表示が出て、そこから先には進まない。

エラーの内容を読む。

rubylesson.rb:2:in `+':

上の行でわかるのは、rubylesson.rbファイル、2行目、+記号について指摘している、ということ。
ただし行数が必ず当たっているとは限らない。参考程度にみる。

no implicit conversion of Integer into String

これを翻訳アプリにかけると「IntegerをStringに変換しない」というような訳が返ってくる。
Integerというのは整数クラスのこと。Stringは文字列クラスのこと。
上のエラーは文字列に整数は連結できないといっている。

クラスとオブジェクト

次のコードはエラーにならず実行される。
rubylesson.rb

puts "1"+"1"

実行結果

11


11は数値のジュウイチではなく、文字列がつながったイチイチ。

+メソッド(演算子)は文字列オブジェクトに対して使うと足し算ではなく文字列の連結役メソッドになる。
上記のことをふまえると、さきほどのエラーが「文字に整数はつなげません。文字につけた場合+は足し算メソッドではないですから」と読めてくる。

クラスとオブジェクトについては徐々に理解を深める。
最初は何となく知っていれば大丈夫なのでどんどん先にすすむ。

次回以降、変数、配列を試す。


今回の動作確認環境
Ruby 2.4.3p205

macOS 10.13.3
ターミナル

Windows10
Windows PowerShell