見出し画像

制御構造を『写経』する

お疲れ様です。Y研究員です。けったいなタイトルですが制御構造とはIf-elseとか、そういうやつです。条件をつけて分岐させたり、ループを作って命令の順番を制御するための要素です。自分も調べて正式な名前を知りました。

型の章は地味でしたが、この章にきて途端にプログラミングらしくなりました。最初の例は二分探索です。配列の中に要素があるか、半分に切りながら見ていくアルゴリズムです。デバッグのテクニックでも、用語として使いました。ソースコード内だけでなくGitでバグを仕込んだコミットを探すときに使ってる人もいました。コマンドは`git bisect`です。

参考までに二分探索のソースコードもつけておきます。

/*binarysearch: find x in v[0] <= v[1] .... <= v[n-1] */
int binarysearch(int x, int v[], int n)
{
    int low, mid, high;
    low = 0;
    high = n - 1;
    while (low <= high)
    {
        mid = (low + high) / 2;
        if (x < v[mid])
            high = mid - 1;
        else if (x > v[mid])
            low = mid + 1;
        else
            return mid; // found match
    }
    return -1; // no match
}

この二分探索は、覚えるとプログラミングが書けるようになる『般若C経』に取り入れたいと思いました。というのも最近、写経に値するプログラミングを議論する機会があり、一人の答えはアルゴリズムとデータ構造でした。たしかに基本のキで、繰り返し書いて覚えると基礎力はつきそうです。

写真はジョージアの川です。たしか首都トビリシから近い古都で、山の上の教会から撮りました。分岐やflowということで2つの川の合流点です。2つの川で水の色が全然違い面白かったです。

では!

般若心経の写経とプログラムの『写経』に関する記事はこちらからどうぞ。


いいなと思ったら応援しよう!

KY研究所@CoderDojo横浜港北ニュータウンやってます
無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。