やじゅ@アプリケーション・ラボ わんくま支局

目次

Blog 利用状況

ニュース

プロフィール

MSMVP

2007年9月7日 #

余りが使えるということは意外と知られていない

「余りとは何よ」と聞く人もいないと思うが、一応説明すると
ある数を割った時の残りである。例えば、10個のりんごがあった
として3人に同じ数だけ分けるとすると、1つ残る、この1つが
余りである。

これを、算数で表わすと10 ÷ 3 = 3 ・・・ 1

この余りをプログラム言語で求める場合、Basic言語なら
「Mod」、C言語なら「%」を使用する。

例 a = 10 Mod 3 a = 1 となる。(Basic)
 a = 10 % 3; a = 1 となる。( C )

では、この余りはいったいどのような時に使えるのでしょう。

 仕事として、よくあるのは帳票のプログラムで、例えば5明細ごと
に実線を引く、または交互に色を分けるといった使い方でしょうか

 明細の場合 カウント値 Mod 5 → (0,1,2,3,4)
 交互の場合 カウント値 Mod 2 → (0,1)

つまり、余りとは、~ごとに処理を行いたい時に使えるのである。

もう少しふみこんだ例としては、トランプゲームがあります。
トランプカードは、4つの種類がそれぞれ13枚、計52枚あります。
この52枚を、スペード、ハート、クローバ、ダイヤの順に0~51と
連番にしてプログラム上で管理したとします。
スペード 0 ~ 12
ハート 13 ~ 25
クローバ 26 ~ 38
ダイヤ 39 ~ 51

こうしたとき余りを使うと、0~12までの値のみを求めることが
できるようになります。例えば、15ならハートの2というように。
プログラム変数
Card 0~51
Mark 0~3(スペード:0、ハート:1、クローバ:2、ダイヤ:3)
Tranp 0~12

Mark = Card / 13 (13で割る、マーク番号が求まる)
Tranp = Card Mod 13 (13で剰余、トランプ番号が求まる)

0~51の連番とすることで、プログラム上の管理が簡単になり効率
も上がるわけですね。なお、ジョーカーは52にすればいいでしょう。

posted @ 2:42 | Feedback (12)