非天マザー by B-CHAN

iPhoneの使い方、IT、ビジネス、金融、経済、不動産、保険、音楽、映画、ニュース、自己啓発その他。

ifを使わずに指定した回数だけカウントを繰り返すアルゴリズム

指定した回数だけ繰り返す

 

 

今回は、JavaScriptの学習です。

ただし、アルゴリズムの話なので、JavaScriptだけに限らず、あらゆるプログラミング言語にも適用できます。

ボクが単に、感心したので、備忘録として書いておきますね。

 

次のコードです。

 

HTML


<input type="number" value="5" id="def" max=100 min=1>
<button onclick ="count()">押す</button>
<p id="number"></p>

 

JavaScript

 

var num = 1;
function count() {
    var total = document.getElementById("def").value;
    var a = document.getElementById("number");
    a.textContent = num;
    num = ++num % total;
}

 

余りは繰り返す

 

 

これ、恐らく、プログラミングの世界では常識なんでしょうけど、学習中のボクとしては初見だったので、なるほどと思いました。

上記のプログラムを実行すると、

 

5と言う数字とボタンが表示されます。

(ホントは実際にこのページに実装すれば良いんですが、この、はてなブログではなぜかうまく動きませんでした。)

 

5と表示されている場合は、ボタンを押すたびに、

 

0→1→2→3→4→0→1→2→3→4→

 

と繰り返します。

 

数字を8に変更すれば、0から7までになります。

やっていることとしては、数字を1ずつ足していって、指定した値に到達すれば0に戻す、それを繰り返すだけです。

 

ボクが、なるほど、と思ったのは、if文を使っていない点です。

 

ポイントとなる文は、

 

num = ++num % total;

 

です。

numが現在の数値、totalが指定値です。

これ、たぶん、プログラムの世界では常識のアルゴリズムなんでしょうね。

初心者のみなさん、これを見て、何をやっているか、わかりますか?

具体的に数字を入れて考えるとわかりやすいです。

例えば、

  • num = 2
  • total = 8

としましょうか。

++は1を加算する演算子なので、まずnumが先に2増えて3になりますね。

そして、%は余りを求める演算子。

よって、3を8で割った余りは3。

なので、numは3になるので3が表示されます。

あとはこれの繰り返し。

次回は、numは3から4に増えるので、余りは4。

なので、4が表示されます。

そうやって繰り返して、numがtotalの値つまり8に到達すれば、余りは0になります。

0が表示されるわけです。

そして、numが9になれば、余りは1ですね。

 

結局、numを1ずつ加算していくたびに、余りは

 

0→1→2→3→4→5→6→7→0→1→2→3→

 

と繰り返すわけです。

単に加算していくだけなら、

 

num++

 

とか、

 

++num

 

で済むんですが、上記の方法なら、if文を使わなくても、演算だけで、自動的に指定値の繰り返し(0に戻る)が実現できます。

 

数十年前、ボクがBASIC言語でプログラミングしていた頃、if文は処理速度が低下するから、なるべく論理演算で行うように、と学んだ記憶があります。

今、JavaScriptを学習中にまさに遭遇しました。

 

中級者以上の人にはささいなことでしょうが、ボク的には感激。

 

と言うわけで、ここに記しておきました。