プログラミング素人のはてなブログ

プログラミングも電気回路も専門外の技術屋の末端が勉強したことや作品をアウトプットするブログ。コードに間違いなど見つけられたら、気軽にコメントください。 C#、Python3、ラズパイなど。

アルゴリズムをはじめよう

アルゴリズムとは「問題を解決するための手順をもれなく表現したもの」。
プログラミングをするにあたっては、まず初めに考えるものです。

例えば、文字列を表示したいなら

Console.WriteLine("*****");

であったり、

MessageBox.Show("*****");

といったものを使う、ということを考えて組み立てていきます。
このように、すでに関数として完成しているものではそのまま使うことができますが、

・土壌湿度が下がったら
・ポンプをオンにして
・一定時間経過したら
・ポンプをオフにする
※自動水やり器のアルゴリズム

このようなものもアルゴリズムの一つです。

プログラムはそのほとんどが、じつは「for」と「if」の組み合わせで表現することができます。
・関数として出来上がっているものをどのような順番で呼び出すか?
・関数がなければその処理をどのように「for」と「if」の組み合わせで実現するか?
が、アルゴリズムの設計です。

そこで、私は最初の一歩としてこの本を選択しました。

基本的な、主にデータの並べ替え(ソート)や抽出について丁寧に説明されています。
また、流れ図(フローチャート)と疑似言語ですべての例が説明されています。

フローチャートは考えをまとめるときや説明するときにも使えますので、プログラマでなくても使えると便利です。

疑似言語は慣れないとむしろ若干わかりにくいですね。
"if(i<5)" なら "i<5"と書かれていたり、
"i=5" を "5→i" と書いていたりします。
C言語と疑似言語の関係

内容的には少なめだと思いますが、ここに出てくるようなものがプログラミングできるようになれば一段階複雑な問題にも取り組めるようになると思います。

この次ぐらいにこちらをみると、さらに多くの例にふれられると思います。

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

アルゴリズム図鑑 絵で見てわかる26のアルゴリズム

Androidiphoneアプリで一部が無料で見られます。
こちらは、アルゴリズムをアニメーションで説明していて動きはわかりやすいですが、いきなりこちらを見てもプログラミングは難しいかもしれません。

勉強の目標を立てるために一度見てみると、意欲がわくのではないでしょうか?