プログラミングの原理 データ構造とプログラミング (第4回) 情報教育のブーターとしてのプ ログラミング 情報教育において「プログラミング」の学習は、 「ブーターの読み込み」の過程に相当する 「ブーター」とは、コンピュータが起動(ブート)する際に 一番最初に読み込まれる最小限の命令群 ブーターは、その後に読み込まれる、より複雑なプロ グラム(ひいてはシステム全体)の基礎となる ここでは、「応用的な知識を生み出すために必要な最 小限の基盤」を表す比喩 コンピュータの本質 コンピュータの本質はプログラム コンピュータのあらゆる動作はプログラム によって規定される 「コンピュータの何たるか」を理解するため には、「プログラムの何たるか」を学ばなけ ればならない プログラムとは プログラムは「仕事の手順」を書いたもの プログラムが書けないことを、コンピュータ は実行できない 人間は手順が書けなくてもいろいろなことを実 行できる 人の顔を見分ける、声を聞き分ける、字を 読む プログラムの基本構造(1) プログラムの基本は命令文の連続 1: 2: 3: fd(100); rt(90); fd(100); .……… ………. ………. 命令は上から順に実行される→逐次構造 プログラムの基本構造(2) 同じ命令の繰り返しを ひとまとめにして記述で きる →繰り返し for( i=0; i<4; i++){ fd(100); rt(90); } プログラムの基本構造(3) あらかじめ設定した条 件に応じて複数の命 令を選択的に実行で きる →条件分岐 if( i==2 ){ fd(100); } else{ fd(50); } プログラムの基本構造(4) 逐次、繰り返し、条件分岐は、仕事の手順を記述 する際のもっとも基本となる構造 これら三つをまとめて「(狭い意味の)制御構造」 と呼ぶ プログラムの基本構造(5) 逐次、繰り返し、条件分岐は「入り口1つ、出口1 つ」の構造を持つ点で共通している 一つの構造の中に別の構造を埋め込んで(=入 れ子構造)、複雑な手順を実現できる プログラムのコメント(1) 実際にプログラムを書く場合、命令文(=コ ンピュータに対する指示)だけを書けば済 むわけではない 命令文に加えて、コメント(=人間に対する 注釈)を書くようにする コメントはコンピュータの動作にとっては不 要だが、人間にとっては重要な意味を持つ プログラムのコメント(2) コメントには目的を書く × double x; // xは正の数とする double y; ○ double x; // xは正の数とする double y; // xの小数部は0.5以上か? // xを四捨五入する(xの小数部は?) if((x - Math.floor(x)) < 0.5){ if((x - Math.floor(x)) < 0.5){ y = Math.floor(x); // xの整数部を y = Math.floor(x); // (0.5未満)xの // yとする // 整数部をyとする }else if((x - Math.floor(x)) >= 0.5){ }else if((x - Math.floor(x)) >= 0.5){ y = Math.floor(x) + 1; // xの整数部+1を y = Math.floor(x) + 1; // (0.5以上)xの // yとする // 整数部+1をyとする } } プログラムのコメント(3) /** * 家を描くプログラム * 作成日:00.5.3 (1bcBコース教材より) */ import Turtle; class House01 extends Turtle{ /** * 家を描く */ void start(){ 見出しコメント ブロックコメント // 屋根を描く rt(30); // 前処理(タートルの角度を調整する) int i; for(i=1; i<=3; i++){ fd(100); rt(120); // 三角形の一辺を描く } rt(60); // 後処理(タートルの角度を調整する) } } // 本体を描く for(i=1; i<=4; i++){ fd(100); rt(90); } // 四角形の一辺を描く 行コメント 書法を徹底したプログラム 日本語プログラミング 日本語をベースとしたプログラミング言語 が実現されることによって、従来コメントと して記述していた内容がそのままプログラ ムの命令文となる 「言霊」によるプログラム メインとは{ 大きさが100の家を描く。 } 大きさが「A(整数型)」の家を描くとは{ 長さがAの三角形を描く。 長さがAの四角形を描く。 } 長さが「A(整数型)」の三角形を描くとは{ 30度右に曲がる。 {A歩進む。120度右に曲がる。}を3回繰り返す。 30度左に曲がる。 } 長さが「A(整数型)」の四角形を描くとは{ {90度右に曲がる。A歩進む。}を4回繰り返す。 } コメントがプログラムになる 言霊はその表現力により、 Javaなどで記述していたコメントの 大部分が必要なくなる。 文法表現が理解しやすい Javaによる以下の表現がどういう意味か、 わかるでしょうか? if ( a%3 == 5 && b != 10 ){ ・・・ } 既存のプログラム言語は、文法が難しいと いう問題がある 文法表現が理解しやすい 日本語プログラム言語「言霊」では、以下 のような記述になる if ( a%3 == 5 && b != 10 ){ ・・・ } もし aを3で割った余りが5と等しい かつ bが10と等しくない ならば{ ・・・ } ※空白を入れなくても解釈できます。 文法表現が理解しやすい 既存のプログラム言語は文法が難しいと 言う問題がある その為、やるべき事が分かっているのに、 その処理の記述ができないという人が非 常に多い。 文法表現が理解しやすい 例えば、以下の問題。 タートルグラフィックを使って以下の画像を描いて下さい。 ただし、for文とif文を使って下さい。 ヒント:繰り返し回数が奇数と偶数で場合分けをする 文法表現が理解しやすい 議論すると、この?部分が分からず困る人がたく さんいる。 public static void main( String args[] ){ for( int i=0 ; i<4 ; i++ ){ if( ?????? ){ drawSikaku( 50 ); }else{ drawSankaku( 50 ); } move( 60 ); } } 文法表現が理解しやすい メインとは{ 繰り返し回数(整数型)を生成する。 繰り返し回数に0を代入する。 { 繰り返し回数を2で割った余りが0と等しいならば{ 長さが50の4角形を描く。 }そうでなければ{ 長さが50の3角形を描く。 } 右に60移動する。 繰り返し回数を1増やす。 }を4回繰り返す。 } 日本語プログラミング言語「言 霊」 これにより、 Java言語の文法に悩むのではなく、 アルゴリズムを考え、作り出し、記述する 事に集中できる プログラムを学ぶもう一つの意味 何故、プログラムを学ぶか? コンピュータの本質を理解するため 論理的思考・表現能力を得るため 論理的思考能力とは? これを養う為の訓練なのです。 このような能力は、社会のあらゆる所で 必要になってきます ・ ・ ・ 漠然としたアイデアを具体的な「目的」に 置き換える能力 「目的」を実現する為に必要なプロセスを、 正確に順序だてて組み立てる能力 組み立てたプロセスを正確かつ 簡潔に記述する能力 なぜプログラムを学ぶのか タートルで以下の絵が書けると言う事は 絵を書くための論理的なプロセスを 分析・創造・表現 する事ができると言う事なのです リテラシーとは何か ことばの使用 文字の使用 人間が解釈する 学校教育が始まる プログラム(=ことばによる仕組)の使用 コンピュータが解釈する 学校教育が変わる
© Copyright 2024 ExpyDoc