余りを求める方法について  (amari.txt)  2000.9.11 (割りきれるかを調べる方法) 長い間、余りを求めるのに下記のように おかしな方法をとってきました。 それは、余りを求める %式を知らなかった からです。 ●おかしな方法 # 例えば、閏年の年ならば2月を29日に調整するため、4で割り 、小数以下があるか調べました $a=$yy / 4; ($seisu,$syosu)=split(/\./,$a); if ($syosu == 0) { $max{2}=29; } ○正しい方法 $amari=$yy%4; if ($amari == 0) { $max{2}=29; } 今後は、%式を使っていきます。 さて、今までせっかく使ってきた方法なので その考え方を説明したいと思います。 割りきれるかどうかを調べるには 割って、小数以下があるかないかです それを式に直せば、いいわけで $a=$yy / 4; ($seisu,$syosu)=split(/\./,$a); 割った答えに、もし小数以下があれば、小数点という『.』点があるはずです。 つまり、点の右側に数字があれば、割りきれないことと言えます。 それを調べるのが、下の式です。 if ($syosu == 0) { $max{2}=29; } # では、もっと簡単な考え方として、小数ならば小数点という『.』点があるはずです。 # つまり、点があれば、割りきれないこと、なければ割りきれることを意味します。 # 割り切れるか調べる・・・商に、点『.』があるか見る $b=10; $a=$b/5; if ($a =~ /\./) {print "割り切れない"; } else {print "割り切れる"; } # この例では、10/5=2となり、割り切れると表示します ※\は、エスケープといって、点.を明確に判別するために付けてあります。 最後に、ここで、私のおかしな方法を宣伝するつもりはありません CGIおもちゃ箱では、全体に簡単な命令を使ってプログラムを作って あります。その理由は、2つあります。1つは作者が難しいことを知らない こと、もう1つは、ここで紹介したように、処理の流れを言葉に変えて その言葉をできるだけ簡単な命令に置き換えているためです。 という訳で、みなさんもできるだけ自分の言葉をプログラムに置きかえられる ように、練習してください。 長いプログラムも、いろいろなユニットの組み合わせです、自分流のパターン を多く持つことにより、複雑な処理もそれらの組み合わせにより作れるようになります ・・・たぶん・・・ 以上です。