blog_thum_sample
マリンロード

2015.12.11システム開発 

マリンロード

アルゴリズムを難しいものだと思っていませんか?

難しいことは毎度おなじみWikipedia様に聞きましょう
https://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0

要するに、結果を導き出すための手続きをアルゴリズムと言います。

例えば、値を1ずつ加算して100になるようなアルゴリズムを書くと

値の初期値は0です
 ↓
○繰り返し始端
 ↓
値は100か? →Yes→ ○ループを抜ける → 値が100になった!!
 ↓
 No
 ↓
値に1を加算
 ↓
○繰り返す(始端に戻る)

のようになります(一例です)

何もアルゴリズムはプログラムである必要はなく
このように日本語を羅列したものもアルゴリズムには変わりません。

みなさんプログラムを書くときに
すごく難しく悩んだ経験はないでしょうか?

最初からプログラミング言語の文字が頭に浮かんではいなかったでしょうか?

まずは、日本語でもいいので自分の作ろうとしている
アルゴリズムを図式化または文章化することが重要です。

先ほどのアルゴリズムをプログラム(PHP)に変えてみます。

$val = 0;
while(true){
    if($val == 100){
        break;
    }
    $val = $val + 1;
}
echo “値が100になった!!”;

これは、分かる人がみたら”なんだこの非効率なコーディングは!!”と怒られると思います。
それはなぜかというと、プログラムでも人間の思うように作るといちいち確認のステップが入ったり
コンピューターなら省略できるけど人間には難しいところなどがあるので、そういったことになります。

では、実際に綺麗にしてみましょう。

$val = 0;
while($val < 100){
    $val++;
}
echo “値が100になった!!”;

何をやったかといいますと。

while(true)とif($val == 100)は一つにできます。
なぜ$val < 100になったのかというとwhileのカッコの中は継続条件です。
それに対してifは終了条件に利用していたので意味が逆になるためにこうなります。
while(true)というのは無限ループを作るということです、直下のif分がなかった場合
終了せずに一生回り続けます、これは怖いですね。
$val = $val + 1;は$val++;と置き換えられますこれは1ずつ加算を簡単に書く方法だと思ってください。
ちなみに、2ずつ加算だったら$i+=2;となります(詳しいことは聞かないで)

ここまで読んで、まだまだ行けるじゃん!!って思った方がいると思うので最終形を発表します。

for($val=0;$val<100;$val++);
echo “値が100になった!!”;

以上です。

おそらく、わからないままここまで読んだ人は
_人人人人人人人人人人人人人人人人人_
  >Why!!!!Computer!!!!Program!!!!!<
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

ってなってると思います。

for文は、初期化・カウントアップ・判定を1行でやってしまう
都合のいい命令です。
なので、上記のようになりました。

ということで、何が伝えたかったかというと
最初は図式もしくは文章化したアルゴリズムを思うままにコーディングして
コーディングし終えたプログラムに対して
効率化をしていくという手順が一般的だと思います。

以上になりますが、ちょっとしたツールをご紹介をしておきます。

今回のアルゴリズムを簡単に学べるツールを作りました。
ぜひ遊んでみてください。
https://www.regeneration.link/algorithmer.html

以上、飯岡でした。

システム開発サービスはこちら
ページTOPへ