情報教育のブーターとしてのプログラミング

Slides:



Advertisements
Similar presentations
1 情報基礎 A 第 9 週 プログラミング入門 VBA の基本文法 1 準備・変数・データの入出力 徳山 豪・全 眞嬉 東北大学情報科学研究科 システム情報科学専攻 情報システム評価学分野.
Advertisements

プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
社会人学習講座 「Javaプログラミング概論」
情報処理演習 (9)グラフィックス システム科学領域 日浦 慎作.
第3回:ボールを上下に動かそう! (オブジェクトの移動、一次元)
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
プログラミング基礎I(再) 山元進.
Java I 第2回 (4/18)
数値計算及び実習 第3回 プログラミングの基礎(1).
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
JAVA.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
対話システム論 第六回 日本語によるプログラミング
CGプログラミング論 平成28年4月27日 森田 彦.
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
オブジェクト指向入門.
トキのカタチ2016 電子工作(Arduino)講習
計算機プログラミングI 第8回 2002年12月5日(木) メソッドとクラス (教科書6章) クイズ インスタンスメソッド インスタンス変数
コンピュータの原理 1E17M053-9 奈良 皐佑 1E17M070-7 師尾 直希        1E17M078-6 渡邊 惇.
CGと形状モデリング 授業資料 長井 超慧(東京大学)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
アルゴリズムとプログラミング (Algorithms and Programming)
第1回 プログラムの基本 他人が読めるプログラムを書く.
ソフトウェア制作論 平成30年10月3日.
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
ソフトウェア制作論 平成30年9月26日.
正多角形の作図 プログラミングで多角形を描く方法を考えよう 1時間目.
プログラミング入門第6回 ~レゴロボットのプログラミング6~
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
学 正多角形のどんな性質を使えば,プログラミングで正多角形を描くことができるだろうか。
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
オブジェクト・プログラミング 第8回.
これからの情報教育 識字教育としての情報教育
オブジェクト プログラミング 第2回 プログラムの基本.
プログラムのコメント.
アルゴリズムとプログラミング (Algorithms and Programming)
基礎プログラミング演習 第6回.
アルゴリズムとデータ構造 2012年7月2日
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
本時のねらい 「合同な三角形の作図を通して三角形の合同条件を導き、それを理解する。」
プログラミング入門 はじめてのタートルグラフィックス マイクロワールドEX講義用資料(ICT活用教育ICT活用教育研究所)
アルゴリズムとプログラミング (Algorithms and Programming)
ウェブデザイン演習 第6回.
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
プログラミングⅠ 平成30年12月10日 森田 彦.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
4.プッシュダウンオートマトンと 文脈自由文法の等価性
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
skill-net(MILESTONE CAI,笈川他,1982)[Fortranの課題選択など]
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現
プログラミング1 プログラミング演習I 第2回.
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
情報処理Ⅱ 2006年10月20日(金).
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
プログラミング演習I 補講用課題
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
プログラミングの原理 データ構造とプログラミング (第4回).
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
Presentation transcript:

情報教育のブーターとしてのプログラミング 情報教育論 2002.12.16

情報教育のブーターとしてのプログラミング 情報教育において「プログラミング」の学習は、「ブーターの読み込み」の過程に相当する 「ブーター」とは、コンピュータが起動(ブート)する際に一番最初に読み込まれる最小限の命令群 ブーターは、その後に読み込まれる、より複雑なプログラム(ひいてはシステム全体)の基礎となる ここでは、「応用的な知識を生み出すために必要な最小限の基盤」を表す比喩

コンピュータの本質 コンピュータの本質はプログラム コンピュータのあらゆる動作はプログラムによって規定される 「コンピュータの何たるか」を理解するためには、「プログラムの何たるか」を学ばなければならない

プログラムとは プログラムは「仕事の手順」を書いたもの プログラムが書けないことを、コンピュータは実行できない 人間は手順が書けなくてもいろいろなことを実行できる 人の顔を見分ける、声を聞き分ける、字を読む

プログラムの基本構造(1) プログラムの基本は命令文の連続 命令は上から順に実行される→逐次構造 1: fd(100); 2: rt(90); 3: fd(100); .……… ………. 命令は上から順に実行される→逐次構造

プログラムの基本構造(2) 同じ命令の繰り返しをひとまとめにして記述できる →繰り返し for( i=0; i<4; i++){ 同じ命令の繰り返しをひとまとめにして記述できる →繰り返し for( i=0; i<4; i++){ fd(100); rt(90); }

プログラムの基本構造(3) あらかじめ設定した条件に応じて複数の命令を選択的に実行できる →条件分岐 if( i==2 ){ あらかじめ設定した条件に応じて複数の命令を選択的に実行できる →条件分岐 if( i==2 ){ fd(100); } else{ fd(50);

プログラムの基本構造(4) 逐次、繰り返し、条件分岐は、仕事の手順を記述する際のもっとも基本となる構造 これら三つをまとめて「制御構造」と呼ぶ

プログラムの基本構造(5) 逐次、繰り返し、条件分岐は「入り口1つ、出口1つ」の構造を持つ点で共通している 一つの構造の中に別の構造を埋め込んで(=入れ子構造)、複雑な手順を実現できる

プログラムのコメント(1) 実際にプログラムを書く場合、命令文(=コンピュータに対する指示)だけを書けば済むわけではない 命令文に加えて、コメント(=人間に対する注釈)を書くようにする コメントはコンピュータの動作にとっては不要だが、人間にとっては重要な意味を持つ

プログラムのコメント(2) コメントには目的を書く × ○ double x; // xは正の数とする double y; // xの小数部は0.5以上か? if((x - Math.floor(x)) < 0.5){   y = Math.floor(x); // xの整数部を                // yとする }else if((x - Math.floor(x)) >= 0.5){   y = Math.floor(x) + 1; // xの整数部+1を // yとする } double x; // xは正の数とする double y; // xを四捨五入する(xの小数部は?) if((x - Math.floor(x)) < 0.5){ y = Math.floor(x); // (0.5未満)xの // 整数部をyとする }else if((x - Math.floor(x)) >= 0.5){ y = Math.floor(x) + 1; // (0.5以上)xの // 整数部+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); // 四角形の一辺を描く 見出しコメント ブロックコメント 行コメント

書法を徹底したプログラム

日本語プログラミング 日本語をベースとしたプログラミング言語が実現されることによって、従来コメントとして記述していた内容がそのままプログラムの命令文となる 岡田さんによる日本語プログラミングのレクチャー

日本語プログラミング言語「言霊」

Javaと日本語プログラム言語 例えばタートルグラフィックスで家を書くプログラムはJAVAではどうなるか?

public class House extends Turtle{  public static void main( String args[] ){   drawHouse( 100 ); //一辺の長さが100の家を描く。  }  //家を描くメソッド  public static void drawHouse( int length ){   drawTriangle( length ); // 一辺の長さがlength の三角形を描く。   drawRectangle( length ); //一辺の長さがlength の四角形を描く。  }

 //三角形を描くメソッド  public static void drawTriangle( int length ){   rt(30);//前処理として角度を調整する   for( int i=0 ; i<3 ; i++ ){ //一辺を描く処理を3回繰り返す    fd(length); rt(120); //一辺を描く処理   }   lt(30); //後処理として角度を調整する  }  //四角形を描くメソッド  public static void drawRectangle( int length ){   //「一辺を描く」という処理を4回繰り返す。   for( int i=0 ; i<4 ; i++ ){    rt(90); fd(length);  //一辺を描く処理   }  } }

Javaと日本語プログラム言語 日本語プログラミング言語「言霊」を用いると、先ほどのプログラムが日本語で記述できる

「言霊」によるプログラム メインとは{ 大きさが100の家を描く。 } 大きさが「A(整数型)」の家を描くとは{ 長さがAの三角形を描く。 長さがAの四角形を描く。 長さが「A(整数型)」の三角形を描くとは{ 30度右に曲がる。 {A歩進む。120度右に曲がる。}を3回繰り返す。 30度左に曲がる。 長さが「A(整数型)」の四角形を描くとは{ {90度右に曲がる。A歩進む。}を4回繰り返す。

言霊の特徴 手続きの表現が自由である 文法表現が理解しやすい

手続きの表現が自由 ここでは「大きさが~の家を描く」と表現したが、状況によっては違う表現の方が良いかもしれない・・・ メインとは{ 大きさが100の家を描く。 } 大きさが「A(整数型)」の家を描くとは{ 長さがAの三角形を描く。 長さがAの四角形を描く。

手続きの表現が自由 好きなように表現を変えることができる メインとは{ 大きさが100の家を描く。 } 大きさが「A(整数型)」の家を描くとは{・・・} メインとは{ 一辺の長さが100の家を描く。 } 一辺の長さが「A(整数型)」の家を描くとは{・・・}

手続きの表現が自由 メインとは{ 家を、三角形と四角形の長さを100として描く。 } 家を、三角形と四角形の長さを「A(整数型)」として描く とは{・・・} メインとは{ 家描画100。 } 家描画「A(整数型)」とは{・・・}

手続きの表現が自由 手続き名の変更 引数の順序 drawLine( 0 , 0 , 100 , 100 ); 既存のプログラム言語では、可能な表現が限られている 手続き名の変更 引数の順序 drawLine( 0 , 0 , 100 , 100 );

手続きの表現が自由 日本語プログラム言語「言霊」なら、好きな文型で表現する事ができる 座標(0,0)から座標(100,100)に線を引く。 座標(「A(整数型)」、「B(整数型)」)から 座標(「C(整数型)」、「D(整数型)」)に線を引くとは{  ・・・ }

コメントがプログラムになる 言霊はその表現力により、  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言語の文法に悩むのではなく、  アルゴリズムを考え、作り出し、記述する事に集中できる

プログラムを学ぶもう一つの意味

何故、プログラムを学ぶか? コンピュータの本質を理解するため 論理的思考・表現能力を得るため

論理的思考能力とは? ・ 漠然としたアイデアを具体的な「目的」に 置き換える能力 ・ 「目的」を実現する為に必要なプロセスを、   ・ 漠然としたアイデアを具体的な「目的」に 置き換える能力   ・ 「目的」を実現する為に必要なプロセスを、 正確に順序だてて組み立てる能力   ・ 組み立てたプロセスを正確かつ 簡潔に記述する能力

なぜプログラムを学ぶのか 自分の考えを組み立てる能力 自分の考えを他人に伝える能力 この能力は、あらゆる所で必要になる なぜなら… に等しいからである 自分の考えを組み立てる能力 自分の考えを他人に伝える能力

なぜプログラムを学ぶのか 端的な例として… 授業中に 大地震が発生したら どうする?

なるべく多くの人命を救わなければならない! なぜプログラムを学ぶのか なるべく多くの人命を救わなければならない! 目的 ・建物内にいる人を避難場所に誘導する ・消火活動を行う ・避難場所を整備する(食料・布団・テントの確保) ・外部へ救難要請

建物内の人を迅速に避難場所に誘導するためには? なぜプログラムを学ぶのか 建物内の人を迅速に避難場所に誘導するためには?    ・ 避難経路の確保する    ・ 限られた通路を有効活用して誘導する    ・ 人数を数人単位のグループに分割し、   グループ単位で行動する

限られた通路を有効活用して誘導する為には? なぜプログラムを学ぶのか 限られた通路を有効活用して誘導する為には?

限られた通路を有効活用して誘導する為には? なぜプログラムを学ぶのか 限られた通路を有効活用して誘導する為には?

限られた通路を有効活用して誘導する為には? なぜプログラムを学ぶのか 出口の一つが使えなかった場合、 限られた通路を有効活用して誘導する為には?

なぜプログラムを学ぶのか 避難方法 教室内でグループに分かれる。 避難はA、B、C・・・の順序で行われる。  教室内でグループに分かれる。  避難はA、B、C・・・の順序で行われる。  避難中、各グループ内ではぐれないよう注意する。  避難経路は、前ページに従う。 A B C ネットワークプログラムと 通じるものがあると思う… D E F

なぜプログラムを学ぶのか 論理的思考・表現能力があれば・・・ これを養う為の訓練なのです。 このような能力は、社会のあらゆる所で 必要になってきます 「地震が発生した際にどのように行動すれば  被害が少なくできるか」 について、 他人に伝え、議論する事が出来る

なぜプログラムを学ぶのか タートルで以下の絵が書けると言う事は  絵を書くための論理的なプロセスを   分析・創造・表現  する事ができると言う事なのです