入力と出力
プログラムは基本的に入力を受け取って処理を開始し、最後に出力を行って終了します。
そのため、ここではプログラムの基本である入力と出力について説明します。
出力
最初に出力について説明します。
ここでいう出力は文字列を扱います。
Rubyでは文字列を出力するものとして、puts
、print
などがあるので、これらの説明をします。
これらの違いとしては、puts
は出力の際、最後に改行するということがあり、print
は改行しません。
使い方としては次のようになります。
puts '出力したい文字列'
print '出力したい文字列'
このように、最初にputsやprintを記述したあとに空白を入れて、そのあとに出力したい文字列を’(シングルクォーテーション)で囲みます。
puts('出力したい文字列')
print('出力したい文字列')
空白を入れて表示したい文字列を記述することもできますが、空白の代わりにかっこで囲むというのでも大丈夫です。
このような方法では、一行だけ出力するには適切ですが複数行の文字列を表示したい場合は不適切です。
例えば次のような出力をしたい場合などです。
1行目です
2行目です
3行目です
このような時には、エスケープシーケンス(特殊文字)を使用、もしくはprint
やputs
を複数使用します。
エスケープシーケンスとは、改行のようなふつうはそのままの文字として出力されない文字のことです。改行以外にもタブなどがあります。
改行のエスケープシーケンスは\n
です。\
(バックスラッシュ)は、Windowsでは円記号で出力される場合もありますが、その場合は円記号でも問題ありません。
エスケープシーケンスを使う場合は次のように書きます。
puts "1行目です\n2行目です\n3行目です"
print "1行目です\n2行目です\n3行目です\n"
printの最後に改行文字を入れたのは、puts
に合わせて最後に改行をするためです。基本的に出力の最後には改行を含めた方が良いため、普段はprint
ではなくputs
を使うことを勧めます。
エスケープシーケンスを含む文字列の場合は、‘ではなく"(ダブルクォーテーション)を使用します。これは、Rubyでは’で囲まれた文字列はそのままの意味で解釈するのですが、“で囲まれた文字列の場合、特殊文字などについては、本来の意味で解釈するためです。
基本的に、特殊文字を含むときだけ"で囲み、それ以外は’で囲むのがRubyらしい書き方です。
もし、複数のputs
やprint
を使う場合は次のようにします。
puts '1行目です'
puts '2行目です'
puts '3行目です'
print "1行目です\n"
print "2行目です\n"
print "3行目です\n"
色々と試してみて、使い方を覚えましょう。
入力
ユーザーの入力を受け取る方法としては、gets
というものがあります。
gets
は次のように使用します。
str = gets
print str
この例では、str = gets
の実行時に、入力を受け取るための処理が実行されます。具体的には、入力を受け取るまで処理が止まります。入力は、プログラムを実行した部分に入力し、改行をすることで入力がプログラム側に渡ります。
入力は、strという変数に渡され、print
でその変数の情報を出力します。
なぜprint
を使うのかというと、入力の際に、最後に改行があるため、puts
を使うと改行がふたつとなるからです。
変数の出力の際には、‘や"で囲む必要はありません。
変数とは、値を参照するための名前のようなものです。例えば、ここでは受け取った入力をstrという名前で参照できるようにしています。
変数の出力は、他の文字列の中に含めることができます。
print "入力された文字列: #{str}"
“で囲った文字列の中に#{ }
として、変数を記述すると、その変数の内容の出力が可能です。
他にも、+を使って文字列を結合することでも同じ出力が可能です。
print "入力された文字列: " + str
比較的、直観的な操作ではないでしょうか。
最後に、入力された文字列の最後の改行を削除する方法について紹介します。
最後の改行については、次のようにすることで、改行を削除することができます。
str = gets.chomp
print str
gets.chomp
は、入力を受け取った後にその末尾一字を削除するというものです。これで、改行を気にする必要がなくなりました。
まとめ
プログラムにおいて入力と出力は、それぞれプログラムの開始と終了を表すといっても過言ではありません。
また、特に出力についてはデバッグ等でも大活躍しますので、調べながらでかまわないので、しっかりと覚えるようにしましょう。