アルゴリズムとは(Scratchで学ぶ)

プログラム

さて、最後さいごかいはアルゴリズムについてまなぼう。いつものように最初さいしょ動画どうがをみてね。

 

今回こんかいまなぶアルゴリズムってなにかというと、アルゴリズムとはプログラムで問題もんだいくときのやりかたのことだよ。プログラムはなにかの目的もくてきをもってつくられ、その目的もくてきのためにゴールにむかってコンピュータに計算けいさんをさせるのだけど、このゴールにかって、最初さいしょにこうして、つぎはこうして、こういうときには処理しょりかえしてとコンピュータに指示しじあたえる、そうまさ前々回ぜんぜんかい勉強べんきょうしたフローチャートそのものがアルゴリズムなんだ。

みんな大好だいすきき(なハズの)ピタゴラスイッチのなかでも、アルゴリズム体操たいそうというものがあるけど、あれも先頭せんとうにいるひとから2番目ばんめ、3番目ばんめならひとみな、1びょうおくれで規則きそくただしく体操たいそうのフローチャットを実行じっこうするから、全員ぜんいんがぶつからないで行進こうしんできるんだね。

そして、このゴールにかって計算けいさんする手順てじゅんにはいろんなパターンがあるということがポイントなんだよ。このいろんなパターンのうち、一番いちばん効率こうりつのいいやりかたになるフローチャートでプログラミングすることが重要じゅうようなんだ。なぜなら、このあと説明せつめいするように計算けいさん仕方しかたによってコンピュータの処理しょりスピードがおおきくわることになるからだよ。

programing-kiso-13-01

たとえば、1から100までのかずすというプログラムをつくることをかんがえてみよう。普通ふつうかんがえると1からじゅんしていくよね。

programing-kiso-12-02

でも、あるときドイツのガウスっていう学者がくしゃは、こうかんがえたんだ。「1と100をたしたら101、2と99をたしても101、3と98をたしても101、これをずっとくりかえして、50と51をたしても101、つまり1から100までの間に101が50ある。だから101x50を計算けいさんしたらおなこたえの5050になるよね」

programing-kiso-13-03-01

これをプログラムにくためにフローチャートにしてみよう。

これが、ふつうに1から100を順番じゅんばんすフローチャートだよ。動画どうがをみるとわかるとおり、このフローチャートを実行じっこうするとざん計算けいさんのために100かい反復処理はんぷくしょりしているんだ。ちょっとコンピューターからすると大変たいへんだよね。

programing-kiso-13-04

一方いっぽう、こちらがガウスの計算けいさんをフローチャートにしたもの。こちらも動画どうがでみるとわかるとおもうけど、なんとこの方法ほうほうだと順次処理じゅんじしょりの1かいながれで処理しょりおわわらせることができるんだよ。

programing-kiso-13-05

最近さいきんのコンピュータは頭脳ずのうにあたるCPUしーぴーゆー処理性能しょりせいのうたかいので、なかなかふつう計算けいさんとガウスの計算けいさんではがみられないけれども、おおきなかずまでざんをさせるとそのがでてくるはず。

 

programing-kiso-13-06

Scratchで2つの計算けいさん方法ほうほうをプログラムしてみたよ。スタートをすといくつまでかぞえる?といてくるので、かず入力にゅうりょくすると、そのかずまでのざんをふつういぬとガウスいぬ計算けいさんをはじめ、よこにいるホイッスルくんがかかった時間じかんをいってくれるんだ。

なか確認かくにんしたい場合ばあいはこちら

https://scratch.mit.edu/projects/337723111

 

小さなかずではそれほど計算けいさんスピードにはないのだけど、10,000,000くらいのかず(0が7つなので1千万せんまんだね)をいれるとあきらかにおおきくなって圧倒的あっとうてきにガウスの計算方法けいさんほうほうがはやいよ。

このように1から100まですやりかたは、いくつかあって、計算けいさんスピードがかわることがわかるよね。つまり、このざんをするという問題もんだい解決かいけつするにはガウスの計算けいさんのほうが、いいかた、いいアルゴリズムだといえるんだよ。

programing-kiso-13-07

そして、このガウスの計算方法けいさんほうほうで1かい順次処理じゅんじしょりだけでこたえにたどりつけたのは、途中とちゅうにある最後さいごかず+1)x(最後さいごかず÷2)という計算式けいさんしきのため。

今回こんかいはとても簡単かんたん計算式けいさんしきだったけど、暗号化あんごうか処理しょり人工知能じんこうちのうといったプログラムでは、もっと高度こうど計算式けいさんしき使つかうよ。そして、その高度こうど計算式けいさんしきをもちいることで、とても処理しょりはやくなる、つまりいいアルゴリズムになるというわけさ。

なので、これからプログラムをまなんで、どんどんいい作品さくひんをつくっていきたいみんなは、たくさん勉強べんきょうして高校こうこう大学だいがくすすんで、数式すうしきつよくなってね。

※いま学校がっこうでならっている算数さんすうは、中学校ちゅうがっこうすすむと数学すうがくというかたにかわって、さらにたくさんの知識ちしきがえられるよ。

programing-kiso-13-08

さて、今回こんかいをふくめて13かいおこなってきたScratchでまなぶプログラミングの基礎きそはこれで一旦いったんおしまいだよ。でも、だいかいから今回こんかいぶんまで見返みかえしてみると、これだけでもプログラミングに必要ひつよう基本きほんはかなりカバーできているはずだよ。

programing-kiso-13-09こまかなことをいえば、プログラミング全体ぜんたいでは、まだ最初さいしょおぼえてもらってほうがいいなということもあるけど、Scratchをまなうえでは、まだ必要ひつようなかったりする知識ちしきもあるので、まずはここまでの学習内容がくしゅうないようをもとに、どんどんScratchでプログラミング作品さくひんをつくってれていこう。

programing-kiso-13-10

明日あすのマークザッカーバーグ(Facebook創業者そうぎょうしゃ)、イーロンマスク(Paypal・テスラの創業者そうぎょうしゃ)がみんなの中からうまれることをねがって。プログラミング頑張がんばってね!

 

Scratchでまなぶプログラミング基礎きそ一覧いちらんはこちら

Scratchでまなぶプログラミングの基本
このブログはプログラミングがはじめてな人、子供こどもにプログラミングを教おしえる親向おやむけに発信はっしんするというコンセプトで書かいていたのですが、小学生向しょうがくせいむけにやさしく説明せつめいした記事きじもあっていいよねと。 こ...

 

コメント

タイトルとURLをコピーしました