計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)

Slides:



Advertisements
Similar presentations
アルゴリズムとプログラミン グ (Algorithms and Programming) 第6回:クラスとインスタンス クラスの宣言 アクセス修飾子 インスタンスの生成 (new キーワード) this キーワード フィールドとメソッドの実際の定義と使い 方 クラスの宣言 アクセス修飾子 インスタンスの生成.
Advertisements

情報システムプロジェクト I 第2回 FileScanner.java ~ファイル入力、文字切り出し機能を持つ プログラムの作成~
6.4継承とメソッド 6.5継承とコンストラクタ 11月28日 時田 陽一
プログラミング基礎I(再) 山元進.
Java I 第2回 (4/18)
1.1 C/C++言語 Hello.ccを作りコンパイルしてa.outを作り出し実行する
~手続き指向からオブジェクト指向へ(Ⅰ)~
プログラミング基礎I(再) 山元進.
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
アルゴリズムとデータ構造1 2007年6月12日
アルゴリズムとプログラミング (Algorithms and Programming)
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
プログラミング基礎I(再) 山元進.
プログラミング基礎I(再) 山元進.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
2006/10/19 山下 諒蔵 佐藤 春旗 前田 俊行 大山 恵弘 佐藤 秀明 住井英二郎
プログラミングIII演習 第1回目.
社会人学習講座 「Javaプログラミング概論」
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
プログラミング演習Ⅰ 課題2 10進数と2進数 2回目.
C#とC++とオブジェクト指向 上甲 健史.
オブジェクト指向入門.
計算機プログラミングI 第8回 2002年12月5日(木) メソッドとクラス (教科書6章) クイズ インスタンスメソッド インスタンス変数
第6回独習Javaゼミ 第6章 セクション4~6 発表者 直江 宗紀.
コンパイラの解析 (2) GCJのデータ構造 - 1.
プログラミング言語入門 手続き型言語としてのJava
JAVA入門.
アルゴリズムとプログラミング (Algorithms and Programming)
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
プログラミング言語入門.
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第七回 知能情報学部 新田直也.
計算機プログラミングI 第11回 再帰 再帰的なメソッド定義 帰納的定義 再帰的なデータ構造 計算機プログラミングI (増原) 2003年度.
C#言語ソースプログラムの原型 C言語 C#言語 Hello World! Hello Students! オマジナイ! 適当なクラス名
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
計算機プログラミングI 第8回 素数を見つけるアルゴリズム 継承とインスタンスメソッド クラスの設計 オブジェクトに機能を加える
オブジェクト プログラミング 第2回 プログラムの基本.
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
C#プログラミング実習 第3回.
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
Chapter 5 5.5 thisキーワード 5.6 インスタンス変数とインスタンスメソッド 結城 隆
第5回 プログラミングⅡ 第5回
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
プログラミング基礎a 第9回 Java言語による図形処理入門(1) Javaアプレット入門
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
ねらい 数値積分を例題に、擬似コードのアルゴリズムをプログラムにする。
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
プログラミング 3 ポインタ(1).
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木) 履習にあたって プログラミングとは? プログラムの作成・コンパイル・実行 練習

履習にあたって Webページ参照

計算機プログラミング プログラム: 計算機が情報を処理する 手順を記述したもの 記述のレベル プログラム: 計算機が情報を処理する 手順を記述したもの 記述のレベル 低: 計算機のCPUが理解できる 単純な命令の羅列 高: 人間が理解しやすいように 抽象化されたもの

計算機が発明された当初は人間が直接、機械語プログラムを 作成していた 計算機プログラミング 2: xorl %eax,%eax EAXの値を0にせよ 3: xorl %edx,%edx EDXの値を0にせよ 4: addl %edx,%eax EAXの値をEDXだけ増やせ 5: incl %edx EDXの値を1増やせ 6: cmpl $99,%edx EDXの値と99を比較せよ 7: jle 4 EDXの方が小さかったら4へ行け 8: leave 退避していたEBPの値を戻せ プログラム: 計算機が情報をどのように 処理すべきかという手順を記述したもの 記述のレベル 低: 計算機のCPUが理解できる 単純な命令の羅列 高: 人間が理解しやすいように 抽象化されたもの 「機械語」という 計算機が発明された当初は人間が直接、機械語プログラムを 作成していた

計算機プログラミング プログラム: 計算機が情報をどのように 処理すべきかという手順を記述したもの 記述のレベル 2: xorl %eax,%eax EAXの値を0にせよ 3: xorl %edx,%edx EDXの値を0にせよ 4: addl %edx,%eax EAXの値をEDXだけ増やせ 5: incl %edx EDXの値を1増やせ 6: cmpl $99,%edx EDXの値と99を比較せよ 7: jle 4 EDXの方が小さかったら4へ行け 8: leave 退避していたEBPの値を戻せ 変換する; 「コンパイル」 という 「オブジェクトコード」 という プログラム: 計算機が情報をどのように 処理すべきかという手順を記述したもの 記述のレベル 低: 計算機のCPUが理解できる 単純な命令の羅列 高: 人間が理解しやすいように 抽象化されたもの 人間が書く。 「ソースプログラム」という int i=0; int sum=0; while (i<100) sum = sum + i; 「高級言語」という

Java言語 オブジェクト指向に基くプログラミング言語 ネットワーク機能 グラフィクス機能 色々な計算機で同じように動く 仮想機械 (virtual machine)方式 ...

仮想機械(virtual machine)方式 計算機の中に架空の計算機を作り、 その中でオブジェクトコードを実行する 架空の計算機 = 仮想機械 (これもプログラム) オブジェクト コード コンパイル ソースプログラム 携帯電話用 仮想機械 Wintel用 仮想機械

プログラムのコンパイルと実行 ライブラリプログラムのコピー コンパイル 実行

プログラミング言語の 3要素 基本的な値を表わす方法 (式・文) 値や操作を組み合わせて 複雑な値や操作を作る方法 値や操作を抽象化する方法 100(数値)・“a”(文字)・true(真偽値)・・ 値や操作を組み合わせて 複雑な値や操作を作る方法 2つの値を足す・ある条件が成り立つまで 繰り返す・・・ 値や操作を抽象化する方法 変数・手続・関数・オブジェクト・・・

Java言語 オブジェクト指向に基くプログラミング言語 ネットワーク機能 グラフィクス機能 仮想機械方式 値や操作を “もの” (オブジェクト)として抽象化 例(銀行の口座管理システム): 1口座の情報は文字・数値の集まり (口座番号・名前・残高・1回目の入金額・2回目の入金額・・・) オブジェクト指向: プログラム中で「口座」を“もの”として扱える ネットワーク機能 グラフィクス機能 仮想機械方式

プログラミング言語の 3要素 基本的な値を表わす方法 (式・文) 値や操作を組み合わせて 複雑な値や操作を作る方法 値や操作を抽象化する方法 100(数値)・“a”(文字)・true(真偽値)・・ 値や操作を組み合わせて 複雑な値や操作を作る方法 2つの値を足す・ある条件が成り立つまで 繰り返す・・・ 値や操作を抽象化する方法 変数・手続・関数・オブジェクト・・・

オブジェクトとプログラムの要素 抽象化 (= 詳細をとりあえず気にしなくてよいもの) プログラムの動作 記述のための要素 亀・ウィンドウ ― オブジェクトとして抽象化 亀の動作 ― メソッド呼出しとして抽象化 プログラムの動作 ウィンドウを作る 亀を作る 亀をウィンドウに表示する 亀を動かす 亀の向きを変える 記述のための要素 オブジェクトを作る オブジェクトを覚える オブジェクトのメソッドを呼び出す

プログラムの構造 /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 f.add(m); //f に m を追加 f.add(m1); //f に m1 を追加 m.fd(100); //m よ前に 100 進め m.rt(90); //m よ右に 90 度回れ m.fd(150); //m よ前に 150 進め m1.rt(90); //m1 よ右に 90 度回れ m1.fd(100); //m1 よ前に 150 進め }

プログラムの構造 クラス名 コメント(注釈): /* 何でも */ // 何でも(行末まで) コメント(注釈): /* 何でも */ /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 f.add(m); //f に m を追加 f.add(m1); //f に m1 を追加 m.fd(100); //m よ前に 100 進め m.rt(90); //m よ右に 90 度回れ m.fd(150); //m よ前に 150 進め m1.rt(90); //m1 よ右に 90 度回れ m1.fd(100); //m1 よ前に 150 進め } クラス名 コメント(注釈): /* 何でも */ // 何でも(行末まで) コメント(注釈): /* 何でも */ // 何でも(行末まで)

変数式: 変数に入っている値をとり出す変数名 /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 f.add(m); //f に m を追加 f.add(m1); //f に m1 を追加 m.fd(100); //m よ前に 100 進め m.rt(90); //m よ右に 90 度回れ m.fd(150); //m よ前に 150 進め m1.rt(90); //m1 よ右に 90 度回れ m1.fd(100); //m1 よ前に 150 進め } 変数: 値を覚える入れもの 変数の型: 覚えられる値の集合 例: 整数型・Turtle型・・・ 型宣言: 型名 変数名; 代入文: 変数に値を入れる指示 変数名 = 式; 型宣言 + 代入文: 型名 変数名 = 式; 変数式: 変数に入っている値をとり出す変数名

オブジェクト クラス ― オブジェクトの種類 コンストラクタ ― オブジェクトを作る new クラス名(引数式, ...); /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 f.add(m); //f に m を追加 f.add(m1); //f に m1 を追加 m.fd(100); //m よ前に 100 進め m.rt(90); //m よ右に 90 度回れ m.fd(150); //m よ前に 150 進め m1.rt(90); //m1 よ右に 90 度回れ m1.fd(100); //m1 よ前に 150 進め } クラス ― オブジェクトの種類 コンストラクタ ― オブジェクトを作る new クラス名(引数式, ...); メソッド呼び出し ― 操作の指示 オブジェクト式 . メソッド名(引数式,...);

式と値 式が計算されると値が求められる コンストラクタ → 作られたオブジェクト 数値式 → 数 変数式 → 変数にしまわれている値 /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 f.add(m); //f に m を追加 f.add(m1); //f に m1 を追加 m.fd(100); //m よ前に 100 進め m.rt(90); //m よ右に 90 度回れ m.fd(150); //m よ前に 150 進め m1.rt(90); //m1 よ右に 90 度回れ m1.fd(100); //m1 よ前に 150 進め } 式が計算されると値が求められる コンストラクタ → 作られたオブジェクト 数値式 → 数 変数式 → 変数にしまわれている値

要素の組み合わせ 要素は組み合わせることができる メソッド呼び出し: オブジェクト式 . メソッド名( 引数式, ... ); + /** 最初のプログラムの例 */ public class T21 { public static void main(String[] args){ TurtleFrame f; //変数 f の型宣言 f = new TurtleFrame(); //TurtleFrameを作成しfに代入 Turtle m = new Turtle(); //Turtle を作成し,m の初期値として代入 Turtle m1 = new Turtle(); //もう1つ作成し,m1 の初期値として代入 f.add(m); //f に m を追加 f.add(m1); //f に m1 を追加 m.fd(100); //m よ前に 100 進め m.rt(90); //m よ右に 90 度回れ m.fd(150); //m よ前に 150 進め m1.rt(90); //m1 よ右に 90 度回れ m1.fd(100); //m1 よ前に 150 進め } 要素は組み合わせることができる メソッド呼び出し: オブジェクト式 . メソッド名( 引数式, ... ); + コンストラクタ (=オブジェクト式): new クラス名(引数式,...) ↓ (new TurtleFrame()).add(new Turtle());

プログラムの編集 すでにあるプログラムをコピー エディタを使って編集 コンパイル 実行