2012年11月5日月曜日

0の0乗はいくつ・・・?

今までアプリを作るためにいつもプログラムは手段だ!みたいな感じで書いてきました。

アプリを作るためにプログラミング言語のマニアになる必要はありません。
ですが、プログラミングという作業自体も実はとても面白いことです。
今日は、そのことについて書きたいと思います。

プログラムを勉強するとなると数学が苦手なんですが大丈夫ですか?
みたいな不安を持つ方が多くいます。
でも大丈夫、計算はコンピュータがやってくれます。

計算は、コンピュータがやってくれますけども数学的な考え方は必要です。
ベン図とかブール代数とか集合とか覚えてますか?
(実は私も怪しいのですが、プログラムできてます)

私も計算得意じゃありません、でも数学の世界は大好きです。

プログラムの世界にはアルゴリズムという言葉があります。
何かの問題を解くためのよく知られた方法のことで、並べ替えや探索、暗号化などいろいろなものがあります。
フローチャートって図で表したりします。



アプリを作るにあたって、これらのアルゴリズムを自分で作ることはまずありません。
ほとんどのプログラミング言語にはライブラリという形でこれらの問題を解くための方法が用意されているからです。

でもライブラリに用意されたアルゴリズムでは、解決できない場合には自分で考えないといけません。
アルゴリズムについて解説した書籍というのも世の中には出てて、私の部屋にも何冊かあります。

SEを10年以上やって来ましたが、実はこれらの書籍にお世話になったことはありません。
ライブラリでできてしまうから・・・

インストラクターの仕事になってから勉強熱が再燃してきてて改めて勉強してみようと思って読みなおしてみることにしました。

「改訂C言語によるはじめてのアルゴリズム入門」という本からです。
(もう2001年の本なんですね・・・)

練習問題1に「Horner(ホーナー)の方法」という例題が出てきます。
多項式の値をHornerの方法を用いて計算する・・・とあります。

う・・・多項式ってなんだっけ? (;_;)

いきなり挫折です、、、でも諦めません。
ネットの無い時代は、図書館いくしかありませんでしたが、今はすぐに調べられます。

なるほど、、、なるほど、、、なんとなく分かりました。

問題の中に「漸化式」(ぜんかしき) というのも出てきました。
アルゴリズムの本にはよく出てくる言葉ですが、正直よくわかってないのでこれも勉強することにします。

こんなページが見つかりました。

高校で学べない人のための・・・って感じでいろいろ解説してくれてます。助かります。
と、このページには、先に「高校で学べない人のための数列」を理解しろと・・・そしてそのページには、先に「指数法則」を理解しろと・・・

指数くらいは分かるさ・・・と読んでみたら

2^2・2^3 まずはこれを考えてみましょうとあります。(^は累乗です)
む、この 「・」 ってなんだ? (そこから?)
・って検索しにくっ!

なるほど、、、掛け算のことね、プログラムだと*で表すからなー忘れてるなぁ

一応終わって数列のページに戻ります。等比数列というのが出てきました。

a1 = 2 = 2 ・ 2 ^ 0
a= 4 = 2 ・ 2 ^1 とあります、、、これメモリーとかによく出てくるね

簡単簡単・・・え?

計算式よく見てみると 2・2^1はいいです。 2 x 2 x 1ですからね
問題は最初の 2・2 ^ 0 って 2の0乗って0じゃないんだ・・・(初歩?)
えーーー1なんだ、、、へーどんな数でも0乗は1になるんだ、、、へー

じゃ、0の0乗は、、、、0でしょ?
手元のiPhoneの電卓で計算してみると・・・

えーーーー1なんだ!

Googleで検索してみるとGoogle電卓機能でも1とます。
Wikipediaにもちゃんとページがありますが特別な意味を持たず定義されないとあります。

検索結果のその次くらいにアンサイクロペディアというサイトが出てきて、こちらでは0としていますが、こちらはWikipediaを揶揄するのが目的のおもしろページなので気にしないことにします。
(でも実は アンサイクロペディアの2=1 なんてページは超面白いですが、ユーモア好きな方はどうぞ、私は好きです)

なるほどねー、勉強になった。
(休みの日とかは、だいたいこんなことやってて終わります・・・あれ、練習問題1は?)

つまりこんなレベルでもプログラミングできてるんですから大丈夫ですよ
(え?こんなヤツに習って大丈夫かと不安に・・・?)

0 件のコメント:

コメントを投稿