読み込み中...

【Ruby】余りを求めるシンプルな5つの手順

プログラミング言語Rubyで余りを得る方法の解説 Ruby
この記事は約7分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、Rubyで余りを求める方法を完全に理解し、自分のコードに適用することができるようになります。

あなたがRubyの初心者であれ、中級者であれ、この記事が余りの計算とその使い方、応用例、注意点を深く理解する手助けになることでしょう。

それでは、Rubyの魅力的な世界へ一緒に飛び込んでいきましょう。

●Rubyとは

Rubyは、まつもとゆきひろ氏によって開発されたプログラミング言語です。

人間が自然に思考するのに近い形でコードを書くことができ、直感的に理解しやすいと評価されています。

○Rubyの特性

Rubyの特性として、オブジェクト指向という思想があります。

すべてのデータはオブジェクトとして扱われ、それぞれに独自の属性と振る舞いを持つことができます。

これにより、コードはより読みやすく、理解しやすくなります。

●余りを得る方法

Rubyでは、割り算の結果として得られる余りを求める方法があります。

それは ‘%’ 演算子を使います。例えば、9を2で割ったときの余りを求めるには、下記のようにコードを書きます。

○サンプルコード1:基本的な余りの計算

Rubyで余りを求める最も基本的な方法は、’%’ 演算子を用いる方法です。

puts 9 % 2

このコードでは、数値9を2で割った余りを計算しています。’puts’ はRubyの標準出力メソッドで、括弧内の計算結果を画面に表示します。

そして、’%’ は剰余演算子と呼ばれ、左側の数を右側の数で割った余りを返します。

よって、このコードは数値9を2で割った余りを計算し、その結果を画面に表示します。

このコードを実行すると、次の結果が得られます。

1

つまり、9を2で割った余りは1となります。

○サンプルコード2:変数を用いた余りの計算

次に、変数を用いた余りの計算方法について説明します。

変数を使用することで、同じ計算を何度も行う際や、計算対象の値を途中で変更したい場合に便利です。

num1 = 15
num2 = 4
puts num1 % num2

このコードでは、変数num1に15、変数num2に4を代入し、その後でこれら2つの変数を使って余りを計算しています。

変数num1をnum2で割った余りが何であるかを求め、結果を出力します。

このコードを実行すると、次の結果が得られます。

3

これは、15を4で割ったときの余りが3であることを示しています。

○サンプルコード3:条件分岐による余りの利用

次に、余りの計算結果を条件分岐に利用する例を説明します。

条件分岐とは、特定の条件を満たすかどうかに応じて、実行する処理を変えるプログラミングの技法です。

num = 7
if num % 2 == 0
  puts "#{num}は偶数です。"
else
  puts "#{num}は奇数です。"
end

このコードでは、変数numに7を代入し、その値が偶数か奇数かを判定しています。変数numを2で割った余りが0であれば、それは偶数であると判定されます。

それ以外の場合(つまり余りが1の場合)は、奇数と判定されます。

このコードを実行すると、次の結果が得られます。

7は奇数です。

これは、7を2で割った余りが1(つまり、奇数)であることを示しています。

●余りの応用例

余りの計算は、単純な数値計算だけでなく、様々なプログラミングの場面で有用です。

ここでは、ループと配列インデックス指定に余りを応用した例を表します。

○サンプルコード4:ループと余りを使ったパターンの生成

余りの計算は、周期的なパターンを生成する際によく用いられます。

例えば、ある範囲の数値に対して交互に0と1を割り当てたい場合、その数値を2で割った余りを使用することで実現できます。

10.times do |i|
  puts i % 2
end

このコードでは、0から9までの数値について、それぞれを2で割った余りを計算して出力しています。

具体的には、10回のループを行い、その各回でループの回数(0から始まる)を2で割った余りを出力しています。

ループ回数を2で割った余りは、0と1が交互に現れるので、このコードは0と1が交互に出力されるパターンを生成します。

このコードを実行すると、次のような結果が得られます。

0
1
0
1
0
1
0
1
0
1

これは、0から9までの数値を2で割った余りが0と1が交互に現れることを表しています。

○サンプルコード5:余りを用いたリストのインデックス指定

また、余りの計算はリストや配列のインデックス指定にも応用できます。

リストの長さを超えるインデックスが指定された場合、そのインデックスをリストの長さで割った余りをインデックスとして使用することで、リストの範囲内にインデックスを保つことができます。

array = ["apple", "banana", "cherry", "date"]
index = 5
puts array[index % array.length]

このコードでは、配列arrayに4つのフルーツの名前を格納し、その後でインデックス5の要素を取り出そうとしています。ただし、インデックス5は配列の範囲(0から3)を超えています。

そのため、インデックス5を配列の長さ4で割った余りを新たなインデックス

として使用しています。これにより、範囲を超えたインデックスを配列の範囲内に戻すことができます。

このコードを実行すると、次のような結果が得られます。

banana

これは、インデックス5を配列の長さ4で割った余りが1であるため、配列のインデックス1の要素(”banana”)が出力されることを示しています。

●注意点と対処法

Rubyで余りを計算する際の注意点として、最も重要なことは、ゼロ除算を避けることです。

ゼロ除算とは、ある数値をゼロで割ろうとする行為を指し、これはプログラムエラーを引き起こします。

Rubyでは、ゼロ除算を行うとZeroDivisionErrorが発生します。

begin
  puts 5 % 0
rescue ZeroDivisionError
  puts "ゼロ除算エラーが発生しました"
end

このコードでは、5を0で割った余りを計算しようとしています。

しかし、この操作はゼロ除算エラーを引き起こすため、ZeroDivisionErrorが発生します。

このエラーを捕捉するために、エラーハンドリングの構文であるbegin-rescueを用いています。

ゼロ除算エラーが発生した場合、”ゼロ除算エラーが発生しました”というメッセージが出力されます。

このコードを実行すると、次のような結果が得られます。

ゼロ除算エラーが発生しました

これは、5を0で割ろうとした結果、ゼロ除算エラーが発生したことを示しています。

このようなエラーを防ぐためには、割る数(除数)がゼロでないことを確認することが重要です。

もしゼロであれば、エラーメッセージを出力するか、別の適切な操作を行うべきです。

●余りを得るためのカスタマイズ方法

Rubyの割り算では、除数と被除数の型によって余りの計算結果が異なることがあります。

Rubyでは整数の除算と浮動小数点数の除算があり、それぞれに対応する余りの計算方法が存在します。

puts 10 % 3     # 整数の除算
puts 10.0 % 3.0 # 浮動小数点数の除算

このコードでは、整数の除算(10 % 3)と浮動小数点数の除算(10.0 % 3.0)でそれぞれ余りを計算しています。

この例では、10を3で割った余りを計算しています。

このコードを実行すると、次のような結果が得られます。

1
1.0

これは、整数の除算では余りが整数として、浮動小数点数の除算では余りが浮動小数点数として出力されることを示しています。

このように、Rubyでは除数と被除数の型によって余りの計算結果が異なることがあります。

必要な結果を得るためには、除数と被除数の型を適切に選択することが重要です。

まとめ

Rubyで余りを得る方法について詳しく解説しました。

この記事を通じて、余りの計算とその使い方、応用例、注意点について理解できたことでしょう。

これらの知識を活用して、Rubyプログラミングのスキルを一層磨いてください。

この記事があなたのRuby学習に役立つことを願っています。

何か疑問点や困ったことがあれば、遠慮なくお問い合わせにてご相談ください。