プログラミング的思考(てきしこう)
 プログラミングでは、教科(きょうか)学習(がくしゅう)身近(みぢか)問題(もんだい)(かんが)えるときに使(つか)える、(つぎ)のような(かんが)(かた)があります。
  物事(ものごと)手順(てじゅん)をカメの(うご)きで(かんが)えます。【メタ思考(しこう)
(おお)きな問題(もんだい)(ちい)さないくつもの手順(てじゅん)分解(ぶんかい)して(かんが)えます。分解(ぶんかい)
一連(いちれん)活動(かつどう)実現(じつげん)することを手順(てじゅん)として考えます。手順(てじゅん)
(ちい)さな手順(てじゅん)(ちい)さな手順(てじゅん)をまとめる手順(てじゅん)()けて構造的(こうぞうてき)(かんが)えます。構造化(こうぞうか)
()(かえ)処理(しょり)で、一連(いちれん)活動(かつどう)(なか)()(かえ)処理(しょり)があるかを(かんが)えます。【ループ】
条件分岐(じょうけんぶんき)で、一連(いちれん)活動(かつどう)(なか)で、作業(さぎょう)(なが)れを()える条件(じょうけん)(かんが)えます。条件分岐(じょうけんぶんき)
・カメの(うご)きをクリックや衝突(しょうとつ)などイベントから(かんが)えます。【イベント】
問題(もんだい)分析(ぶんせき)して、命令語(めいれいご)やアルゴリズムとの関連(かんれん)()つけ一般化(いっぱんか)します。一般化(いっぱんか)
手順(てじゅん)関数(かんすう)として(あつか)い、一連(いちれん)活動(かつどう)大事(だいじ)なことを明確(めいかく)にし抽象化(ちゅうしょうか)して考えます。抽象化(ちゅうしょうか)
再帰処理(さいきしょり)で、一連(いちれん)活動(かつどう)全体(ぜんたい)()(かえ)しを(かんが)えます。再帰(さいき)
変数(へんすう)(あたい)文字(もじ)()(わた)し、変化(へんか)(かんが)えます。変数(へんすう)
・プログラムの動作(どうさ)(たし)かめ、間違(まちが)いを()らす工夫(くふう)間違(まちが)いの原因(げんいん)(さぐ)るための(かんが)(かた)をします。【デバッグ】
・カメをプログラムを()つオブジェクトとして使(つか)い、活動(かつどう)(なが)れを時系列(じけいれつ)並列処理(へいれつしょり)(かんが)えます。【オブジェクト】

▲TOP
【メタ思考】 メタ思考.mwx
 物事(ものごと)手順(てじゅん)(かんが)えるとき、カメになった見方(みかた)(うご)きで(かんが)えます。
(つぎ)のようなジグザグの迷路(めいろ)(とお)()けるプログラムを(かんが)えよう」という課題(かだい)で、カメになってジグザグの迷路(めいろ)(すす)命令(めいれい)(かんが)えます。


カメになって、(まえ)へ 100 (みぎ)へ 90 (ひだり)へ 90 の命令(めいれい)実行(じっこう)すれば()いことがわかります。
(した)(コマンドセンター)に()かれた命令語(めいれいご)(うえ)Enter(エンター)キーを()すと命令(めいれい)実行(じっこう)されます。


▲TOP
分解(ぶんかい)ジグザグに進む.mwx
 ジグサグを()けるという問題(もんだい)(ちい)さないくつもの手順(てじゅん)命令(めいれい))に分解(ぶんかい)して(かんが)えます。


(まえ)へ 100 (みぎ)へ 90 (ひだり)へ 90 という命令語(めいれいご)をジグザグ迷路(めいろ)()けるように(なら)べて実行(じっこう)します。
(した)(コマンドセンター)に()かれた命令語(めいれいご)(うえ)Enter(エンター)キーを()すと命令(めいれい)実行(じっこう)されます。


▲TOP
手順(てじゅん) 手順.mwx
 一連(いちれん)活動(かつどう)実現(じつげん)することを手順(てじゅん)として(かんが)えます。日常会話(にちじょうかいわ)使(つか)手順(てじゅん)とは(べつ)に、プログラミングでの手順(てじゅん)は、関数(かんすう)(おな)意味(いみ)使(つか)うことがあります。ジグザクの迷路(めいろ)(すす)手順(てじゅん)をLOGO言語(げんご)の「手順(てじゅん)は ~ ()わり」という手順(てじゅん)関数(かんすう))でプログラミングしてみましょう。


カメを迷路(めいろ)のスタート位置(いち)()いてから、「迷路(めいろ)(すす)め」のボタンを(ひだり)クリックすると、迷路(めいろ)(すす)みます。


▲TOP
構造化(こうぞうか)  構造化.mwx
 迷路(めいろ)(すす)手順(てじゅん)は、(まえ)(すす)手順(てじゅん)(よこ)(すす)手順(てじゅん)(あつ)めた手順(てじゅん)(かんが)えることができます。このようにメインの手順(てじゅん)とサブの手順(てじゅん)()()てて(かんが)えることを構造化(こうぞうか)()んでいます。

カメを迷路(めいろ)のスタート位置(いち)()いてから、「迷路(めいろ)(すす)め」のボタンを(ひだり)クリックすると、迷路(めいろ)(すす)みます。


▲TOP
【ループ】 ループ.mwx
 ()(かえ)処理(しょり)で、一連(いちれん)活動(かつどう)(なか)()(かえ)処理(しょり)があるかを(かんが)えます。迷路(めいろ)(すすむ)むプログラムでは、(おな)命令(めいれい)が2(かい)()(かえ)されているので、()(かえ)す 2 「  」 を使(つか)ってプログラミングします。


カメを迷路(めいろ)のスタート位置(いち)()いてから、「迷路(めいろ)(すす)め」のボタンを(ひだり)クリックすると、迷路(めいろ)(すす)みます。


▲TOP
条件分岐(じょうけんぶんき) 条件分岐.mwx
 条件分岐(じょうけんぶんき)で、一連(いちれん)活動(かつどう)(なか)で、作業(さぎょう)(なが)れを()える条件(じょうけん)(かんが)えます。
 カメが(した)(いろ)調(しらべ)べ、(した)緑色(みどりいろ)になったら、(みぎ)()がり、(した)(あお)になったら、(ひだり)()がります。
 (した)(あか)になったら終了(しゅうりょう)します。


 カメを迷路(めいろ)のスタート位置(いち)()き、「迷路(めいろ)(すす)む」のボタンを(ひだり)クリックすると、迷路(めいろ)(すす)み、(あか)()まります。


▲TOP
【イベント】 イベント.mwx
 カメの(うご)きをクリックや衝突(しょうとつ)などイベントから(かんが)えます。カメが緑色(みどりいろ)青色(あおいろ)赤色(あかいろ)(うえ)()ったときには、()がる命令(めいれい)実行(じっこう)させます。
 (いろ)(うえ)(ひだり)クリックして、カメにイベント命令(めいれい)()いてOKボタンを(ひだり)クリックします。




 カメを迷路(めいろ)のスタート位置(いち)()き、「迷路(めいろ)(すす)む」のボタンを(ひだり)クリックすると、迷路(めいろ)(すす)み、(あか)()まります。


▲TOP
一般化(いっぱんか) 一般化.mwx
 問題(もんだい)分析(ぶんせき)して、命令語(めいれいご)やアルゴリズムとの関連(かんれん)()つけ一般化(いっぱんか)します。
 このジグザク迷路(めいろ)()けるには、(みぎ)(ひだり)(みぎ)・・・と()(かえ)して、()がります。ダンゴムシが移動(いどう)するときの(うご)(かた)です。また、奇数(きすう)(みぎ)()がり、偶数(ぐうすう)(ひだり)()がると(かんが)えることもできます。これをどう一般化(いっぱんか)して(かんが)えるかがプログラミングの(たの)しさです。
カメの()きを毎回(まいかい)180度回転(どかいてん)させると、(みぎ)(ひだり)交互(こうご)にすることができます。


カメを迷路(めいろ)のスタート位置(いち)()いてから、「迷路(めいろ)(すす)め」のボタンを(ひだり)クリックすると、迷路(めいろ)(すす)みます。


▲TOP
抽象化(ちゅうしょうか) 抽象化.mwx
 カメが迷路(めいろ)()けるときの(すす)(かた)抽象化(ちゅうしょうか)して、いろいろな(おお)きさでジグザクがかける「ジグザグ」という名前(なまえ)手順(てじゅん)にします。


「ジグザグ 100 2」のボタンを左クリックすると、ジグザグの線がかかれます。


▲TOP
再帰(さいき) 再帰.mwx
 手順(てじゅん)(なか)で、自分(じぶん)手順(てじゅん)()ぶと、()(かえ)しの処理(しょり)になり、これを再帰処理(さいきしょり)()んでいます。
 デザイン の手順(てじゅん)(なか)で、デザインを()ぶと、無限(むげん)にジグザグをかきます。




▲TOP
変数(へんすう) 変数.mwx
 変数(へんすう)使(つか)って(あたい)文字(もじ)()(わた)し、変化(へんか)(かんが)えます。カメがジグザグを()いたあとで、(もと)位置(いち)(もど)るように (もと) という名前(なまえ)変数(へんすう)使(つか)います。


「デザイン」ボタンを左クリックすると、カメがジグザグの線を書き、最初の位置に戻ります。



▲TOP
【デバッグ】 デバッグ.mwx
 プログラムの動作(どうさ)(たし)かめ、間違(まちが)いを()らす工夫(くふう)をして、間違(まちが)いの原因(げんいん)(さぐ)ります。
 デバッグするために、青字(あおじ)命令(めいれい)は、カメの位置(いち)(たし)かめいます。
 赤字(あかじ)文字(もじ)は、手順(てじゅん)説明(せつめい)しています。




▲TOP
【オブジェクト】 オブジェクト.mwx
 カメは、(なか)にプログラムを()つことができるオブジェクトで、それぞれのカメが独立(どくりつ)して並列処理(へいれいつしょり)をすることができます。
 カメの(なか)命令(めいれい)()き、無限(むげん)に にチェックを入れることで、3(ひき)のカメが独立(どくりつ)した(はや)さで図形(ずけい)をかきます。





▲TOP