Rubyの言語仕様1

これまでのRubyに関するまとめ

Rubyの基礎に記載した、Rubyに関する内容をまとめます。

rubyコマンド

  • Rubyのバージョンを表示する。
ruby -v
  • Rubyのプログラムを実行する。
ruby プログラムファイル名

プログラム

  • プログラムを記述するファイルは、テキストファイルです。拡張子は、.rbを使うのが一般的です。
  • プログラムを実行すると、ファイルの上から順番に一行ずつ実行されます。

コメント

プログラム中に説明などを記入する場合に使います。Rubyは、コメントを無視して処理を進めます。

# コメント

=begin
コメント
=end

文字列

文字列は、(または、)で文字を囲みます。

"文字列"

数値

数値は、半角数字を使います。

5 # 整数
3.1415 # 実数

関数的メソッド

メソッドは、数学の関数のようなもので、処理(計算など)を行い、結果を返します。

メソッド名単独で使用するメソッドを関数的メソッドと言います。

処理にデータ(数値、文字列など)が必要であれば、引数としてメソッドに渡します。

  • putsメソッド

標準出力(コマンドプロンプト)に、文字列(末尾に改行を加える)を出力する。

puts "文字列" # 文字列
puts 5 # 数値
  • printメソッド

標準出力(コマンドプロンプト)に、文字列(末尾に改行を加えない)を出力する。

print "文字列" # 文字列
print 5 # 数値
  • getsメソッド

標準入力(キーボード)から、Enterキーが押されるまで入力した文字列(改行含む)を返します。

gets

変数

変数は、データ(文字列や数値など)を格納します。Rubyの変数名は、半角英字小文字か_で始めます。

x
data01
_kingaku

変数の代入

=を使って、左辺の変数に、右辺の値を代入します。

string = "文字列" # 文字列を代入
string2 = string # string2にstringの中身を代入
number = 5 # 数値を代入
number = number + 1 # numberの値に1を加算してnumberに代入
string3 = gets # string3にメソッドの戻り値(文字列)を代入

式展開

文字列の中で、式(値や計算結果)を文字列に変換します。

"#{5}" # 数値
"#{5 + 3}" # 式
x = 5
"#{x}" # 変数

メソッド

メソッドは、基本的にオブジェクト(数値や文字列など)に対して使います。

オブジェクト.メソッド名(引数1, 引数2, ... , 引数n)

単独で使うメソッドは、関数的メソッドと言います。

引数のカッコ()は省略できます。

引数を必要としないメソッドもあります。引数は何か(数値?文字列?)や引数の数は、メソッド定義に従う必要があります。

  • chompメソッド

文字列に対して、行末の改行を削除した文字列を返す。改行がなければ何もしません。

input = gets.chomp
  • to_iメソッド

文字列を整数に変換して返す。

number = "53".to_i # 文字列の"53"を数値の53に変換

Rubyの言語仕様その1

上記内容の他に、Rubyに関する基本的なことを説明します。各自で、プログラムを書き換えて、試してみてください。

演算子

Rubyは、四則演算の他、複数の代数演算子が用意されています。

  • 加算:+
  • 減算:-
  • 乗算:*
  • 除算:/
  • 剰余:%
  • べき乗:**
  • ・・・

また、真偽値(true、false)を返す、比較演算子も用意されています。

  • 等価:==
  • 不等価:!=
  • 小なり:<
  • 大なり:>
  • 小なりイコール:<=
  • 大なりイコール:>=
  • ・・・

さらに、論理演算子も用意されています。

  • 論理和(AND):&&
  • 論理積(OR):||
  • 否定(NOT):!

上記以外にもRubyで用意されている演算子はたくさんあります。

条件分岐

Rubyは、条件式を使って条件分岐させることができます。ここではif文について説明します。

条件式とは、真偽値(true、false)を返す式(や値)のことです。

true # 真
false # 偽
3 == 5 # 偽
3 < 5 # 真
8 <= 5 + 3  # 真
3 # 真
nil # 偽

Rubyには、nilとfalseは偽、それ以外は真というル真偽判定のルールがあります。

nil(ニル)とは、何もないを表すオブジェクトです。

  • if〜end
if 条件式
  内容
end

これは、もし[条件式]が真だったら[内容]を実行するという構文です。[条件式]が偽(真ではない)であれば、何も実行しません。

  • if〜else〜end
if 条件式
  内容1
else
  内容2
end

これは、もし[条件式]が真だったら[内容1]を実行し、それ以外は[内容2]を実行する構文です。[内容1]か[内容2]のどちらか、必ず実行されます。両方とも実行されることはありません。

  • if〜elsif〜end
if 条件式1
  内容1
elsif 条件式2
  内容2
end

これは、もし[条件式1]が真だったら[内容1]を実行し、もし[条件式1]が偽かつ[条件式2]が真だったら[内容2]を実行する構文です。[条件式1]と[条件式2]が両方とも偽であれば、何も実行しません。

  • if〜elsif〜else〜end
if 条件式1
  内容1
elsif 条件式2
  内容2
else
  内容3
end

これは、もし[条件式1]が真だったら[内容1]を実行し、もし[条件式1]が偽かつ[条件式2]が真だったら[内容2]を実行し、それ以外は[内容3]を実行する構文です。[内容1]、[内容2]、[内容3]のいずれか、必ず実行されます。

elsifを複数使うこともできます。elseは1回しか使えません。

繰り返し

Rubyには、繰り返す処理の書き方がいくつかあります。ここでは、代表的な2方法を説明します。

  • while

これは、もし[条件式]が真だったら[内容]を実行する=>もし[条件式]が真だったら[内容]を実行する=>・・・繰り返す・・・もし[条件式]が偽だったら繰り返しを終了する構文です。

while 条件式
  内容
end

[条件式]が真から偽に変わる処理を[内容]に入れる必要があります。そうでなければ、プログラムが終了しなくなります(無限ループ)。

以下は、while文を使った、1から10までの数字を出力して終了するプログラムです。

count = 1
while count <= 10
  puts count
  count = count + 1
end
  • loop

これは、[内容]を実行する=>[内容]を実行する=>・・・繰り返す・・・**構文です。つまり無限ループになります。

loop
  内容
end

実行したプログラムは、終了させる必要があります。Rubyでは、ループを終了させるためのbreak文を使います。

以下は、loopを使った、1から10までの数字を出力して終了するプログラムです。

count = 1
loop
  puts count
  count = count + 1

  if count > 10
    break
  end
end

break文は、loopだけでなく、whileやその他の繰り返し構文でも使えます。

更新日: