プログラミングの原理 データ構造とプログラミング (第4回).

Slides:



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

プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
プログラミング言語論 第10回(演習) 情報工学科 木村昌臣   篠埜 功.
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
プログラミング基礎I(再) 山元進.
Java I 第2回 (4/18)
数値計算及び実習 第3回 プログラミングの基礎(1).
JAVA GUIプログラミング 第1回 JAVAの実行 絵を描こう.
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
      特別支援学校 高等部学習指導要領 聴覚障害教育について.
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
JAVA.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
応用情報処理V 第1回 プログラミングとは何か 2004年9月27日.
情報科学1(G1) 2016年度.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
対話システム論 第六回 日本語によるプログラミング
応用情報処理V 第1回 プログラミングとは何か 2003年9月29日.
トキのカタチ2016 電子工作(Arduino)講習
計算機プログラミングI 第8回 2002年12月5日(木) メソッドとクラス (教科書6章) クイズ インスタンスメソッド インスタンス変数
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
情報処理3 第5回目講義         担当 鶴貝 達政 11/8/2018.
岩村雅一 知能情報工学演習I 第11回(後半第5回) 岩村雅一
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
プログラミング入門 電卓を作ろう・パートIV!!.
アルゴリズムとプログラミング (Algorithms and Programming)
第1回 プログラムの基本 他人が読めるプログラムを書く.
ソフトウェア制作論 平成30年10月3日.
indentについて forやifの「中身」を右に寄せる. forやifの「外枠」は右に寄せない. int x; x = 3;
データ構造とアルゴリズム論 第1章 アルゴリズムの表現-流れ図
ソフトウェア制作論 平成30年9月26日.
プログラミング基礎a 第12回 Java言語による図形処理入門(3) アニメーション入門
プログラミング基礎a 第11回 Java言語による図形処理入門(3) アニメーション入門
正多角形の作図 プログラミングで多角形を描く方法を考えよう 1時間目.
プログラミング入門第6回 ~レゴロボットのプログラミング6~
プログラミング基礎a 第8回 プログラムの設計 アルゴリズムとデータ構造
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
先週の復習: CPU が働く仕組み コンピュータの構造 pp 制御装置+演算装置+レジスタ 制御装置がなければ電卓と同様
復習 一定回数を繰り返す反復処理の考え方 「ループ」と呼ぶ false i < 3 true i をループ変数あるいはカウンタと呼ぶ
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
これからの情報教育 識字教育としての情報教育
オブジェクト プログラミング 第2回 プログラムの基本.
プログラムのコメント.
アルゴリズムとプログラミング (Algorithms and Programming)
基礎プログラミング演習 第6回.
JAVA GUIプログラミング 第3回 イベント処理① マウスイベント.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
アルゴリズムとプログラミング (Algorithms and Programming)
ウェブデザイン演習 第6回.
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
プログラミングⅠ 平成30年12月10日 森田 彦.
復習 if ~ 選択制御文(条件分岐) カッコが必要 true 条件 false 真(true)なら この中が aを2倍する 実行される
情報教育のブーターとしてのプログラミング
情報実習I (第1回) 木曜4・5限 担当:北川 晃.
プログラミング入門2 第6回 関数 情報工学科 篠埜 功.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
プログラミング1 プログラミング演習I 第2回.
CGと形状モデリング 授業資料 1,2限: 大竹豊(東京大学) 3,4限: 俵 丈展(理化学研究所)
プログラミング入門2 第3回 条件分岐(2) 繰り返し文 篠埜 功.
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
情報処理Ⅱ 2006年10月20日(金).
岩村雅一 知能情報工学演習I 第13回(後半第7回) 岩村雅一
分岐(If-Else, Else if, Switch) ループ(While, For, Do-while)
プログラミング演習I 補講用課題
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
ファーストイヤー・セミナーⅡ 第10回 if文による選択処理(2).
Presentation transcript:

プログラミングの原理 データ構造とプログラミング (第4回)

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

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

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

プログラムの基本構造(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); // 四角形の一辺を描く 見出しコメント ブロックコメント 行コメント

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

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

「言霊」によるプログラム メインとは{ 大きさが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言語の文法に悩むのではなく、  アルゴリズムを考え、作り出し、記述する事に集中できる

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

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

論理的思考能力とは? これを養う為の訓練なのです。 このような能力は、社会のあらゆる所で 必要になってきます   ・ 漠然としたアイデアを具体的な「目的」に 置き換える能力   ・ 「目的」を実現する為に必要なプロセスを、 正確に順序だてて組み立てる能力   ・ 組み立てたプロセスを正確かつ 簡潔に記述する能力

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

リテラシーとは何か ことばの使用 文字の使用 プログラム(=ことばによる仕組)の使用 人間が解釈する 学校教育が始まる コンピュータが解釈する 学校教育が変わる