アルゴリズム体操の「アルゴリズム」って何のことか知ってますか?


アルゴリズムの意味

知ってようと知ってまいと踊れますが

甥っ子がいます。2歳です。
アルゴリズム体操をよく踊ってます。

せっかくなので「アルゴリズム」はなにか、というのを甥っ子の母親に話したのですが、意味はどうでも良かったみたいです。興味なさそうでした。

さて、アルゴリズムとはなにかご存知ですか?
まあ、ググってしまえばすぐ分かってしまいますが、しばしお付き合い頂ければ。

私は昔プログラミングの勉強をしていたのですが、その時に教えてくれた人が、言語は何でもいいからアルゴリズムを学べ、と教えてくれました。

最初に教わったのがこの人で良かったと思います。
アルゴリズムが何か?ということさえ知っておけば、言語が変わっても対処出来る、ということを今は十分に理解出来るからです。

プログラミングを学びたい、と考えている人が「はてブ」やTwitterで沢山いるようなので、その一助になればと思います。

とはいえ、私は現役プログラマーというわけではありません。
今使うのはJavaScriptくらいではありますが、プログラミングは好きです。

プログラミングって難しいな、と思ってる人に好きになるキッカケになればいいな、ということで。

アルゴリズムとは分解と順序である

次の問題を考えてみます。

問題:自販機でジュースを買う時の行動を文章で書いて下さい。

え?なにいってんの?なんて思わないでください。

答えは「お金を入れてジュースを買う」 でも正解なのですが、これを分解してみましょう。なるべく分解して文章に書いてみます。

さて、ヒントを書きますね。

  1. 自販機の前に立つ
  2. ~~~~~~~~~
  3. ~~~~~~~~~
  4. ~~~~~~~~~
  5. 欲しいジュースのボタンを押す



2,3,4を埋めてみましょう。

どうでしょうか?

一例を挙げてみますね。

  1. 自販機の前に立つ
  2. お金を取り出す
  3. お金を選ぶ
  4. お金を入れる
  5. 欲しいジュースのボタンを押す



というような感じに出来ましたか?
これはあくまでも一例ですし、10くらいに分解しようと思えば出来ます。
例えば、財布を取り出す。財布を開く、小銭ポケットを開く、などなど。
あまりこだわらなくても大丈夫です。

ポイントは分解して考える、というところです。

ではもう一問やってみましょう。

問題:「アルゴリズム体操!始め!」をタイピングする時のアルゴリズムを完成させなさい。

ヒントです。

  1. キーボードをうつ
  2. 変換する
  3. ~~~~~~~
  4. 確定する



3に入るのはなにかわかりますか?
変換と確定の間に何が入るでしょうか?

答えは「正しいかどうかのチェック」 です。

結構無意識にやっていることですが、絶対にチェックしているはずです。
わざわざ正しくない文字を入力することは無いでしょうから。


アルゴリズムからプログラミングへ

アルゴリズムを理解するとプログラミングが出来る、と思う

さて、アルゴリズムがどういうものかなんとなく掴めたでしょうか?
日本語で言えば「分解」と「順序」という感じになるかも知れません。

では、このアルゴリズムがプログラミングとどう関連してくるのか?
というと、プログラミングで大事なことは「繰り返す部分はどこか」というのを見つけることです。

プログラミング、というのは「自動化」ですから、「自動的に繰り返せる部分」を見つけてあげれば、プログラムで動かせるはずです。
繰り返している部分を見つけるのに「分解」と「順序」が必要というわけです。

この繰り返す、という部分をどういう言葉で書くか?C言語なのかJavascriptなのか?
つまり、やってることは一緒ということです。書いている言語が違うだけ。

もう少しプログラミング寄りに考えてみます。

では、次で最後です。

問題:10÷2=5 この数式を「÷」の記号を使わずに表し答えを出しなさい。

「÷」 の記号を使わずに答えを出すにはどうすれば良いでしょうか?
もちろん、答えが「5」ということはわからない、という前提です。

これは少し難しいので、ヒントです。「引き算」を使うことです。



いかがでしょうか?答えは

  • 10-2=8
  • 8-2=6
  • 6-2=4
  • 4-2=2
  • 2-2=0



最初の数字「10」から「2」を引いて、出た答えからさらに「2」を引いていく、ということを続けると、最終的に「2」よりも小さくなります。

答えである「5」はどこにあるでしょうか?
これは、「何回2を引いたか」というのが答えになるのです。
つまり、「10÷2」 は、言い換えれば10から2を何回引けるか、ということになるのです。

さて、この「2を引く」という部分、共通してますよね?

これをプログラミングすると

  1. 最初の数字をセット→10
  2. セットした数字から2を引く=8(1回目)
  3. 出た答えから2を引く=6(2回目)
  4. 出た答えから2を引く=4(3回目)
  5. 出た答えから2を引く=2(4回目)
  6. 出た答えから2を引く=0(5回目)
  7. 0から2は引けないので終わり。
  8. 何回引いたか、を答えとしてセット=5。



2~6の部分は2を引く、ということを繰り返しているだけです。
プログラミング言語で書けば、プログラムの出来上がりです。

例えば最初の数字が20になっても、このプログラムなら答えが出ます。
つまり、2で割る、というのが自動化出来た、ということです。

数字を入れる部分をテキストボックスにして、計算する、というボタンを作ってあげれば、どんな数字を入れても、2で割った答えが出るというわけです。


仕事の効率化にも応用出来る

日々の仕事で同じことをやっているなら、自動化出来るかも

「分解」して「順序」を考えて「繰り返せる部分を探す」というのを常に考えてると、仕事をする上でも繰り返している部分はどこなのか?というのを考えるようになります。

例えば、毎日メールチェックをして、決まった転送先に転送するメールがあったりしませんか?
自動的に転送するようにプログラムしてみましょう(メールの機能で出来ますね)。

毎月同じ計算をするエクセルがあるならば、空白だけ埋めれば答えが出るように予め式を入れましょう。
VBAというのを使うと、これはまさにプログラミングです。

というように、日々繰り返していることを自動化出来ないか、と考えるとアルゴリズムということが理解出来ると思います。

関連記事

facebooklogo

フェイスブック乗っ取りと効果的なパスワードの作り方

ログインしようとしたらロックされていた セントルイスだとぅ! ...

記事を読む

dropbox-logo

DropBox無料版の容量がいきなり50GB増えたんだけどなぜだ!とこの記事を書いているうちに原因がわかったのでそのまま晒す。

いきなり50GB位容量が増えてた 何事だ!嬉しいけど何事だ! 普段...

記事を読む

no image

レーシック、という検索ワードはすでに死んでいるかも知れない。

レーシックはアフィリエイトの餌食 レーシックの失敗例や、体験談を検索...

記事を読む

hatebuspam

はてブでのスパムエントリーがスゴイ

はてブスパムの真骨頂 ある意味凄いけど・・・ はてブのスパムエント...

記事を読む

affiliate2

アフィリエイトは儲かる!って言うと儲かる。

情報商材アフィリエイトの被害が拡大中 そんなにうまい話は無いってこと...

記事を読む

新着記事

コメント/トラックバック

トラックバック用URL:

この投稿のコメント・トラックバックRSS




管理人にのみ公開されます

PAGE TOP ↑