Presentation is loading. Please wait.

Presentation is loading. Please wait.

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

Similar presentations


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

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

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

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

4 計算機が発明された当初は人間が直接、機械語プログラムを 作成していた
計算機プログラミング 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が理解できる 単純な命令の羅列 高: 人間が理解しやすいように 抽象化されたもの 「機械語」という 計算機が発明された当初は人間が直接、機械語プログラムを 作成していた

5 計算機プログラミング プログラム: 計算機が情報をどのように 処理すべきかという手順を記述したもの 記述のレベル
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; 「高級言語」という

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

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

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

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

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

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

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

13 プログラムの構造 /** 最初のプログラムの例 */ 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 進め }

14 プログラムの構造 クラス名 コメント(注釈): /* 何でも */ // 何でも(行末まで) コメント(注釈): /* 何でも */
/** 最初のプログラムの例 */ 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 進め } クラス名 コメント(注釈): /* 何でも */ // 何でも(行末まで) コメント(注釈): /* 何でも */ // 何でも(行末まで)

15 変数式: 変数に入っている値をとり出す変数名
/** 最初のプログラムの例 */ 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型・・・ 型宣言: 型名 変数名; 代入文: 変数に値を入れる指示 変数名 = 式; 型宣言 + 代入文: 型名 変数名 = 式; 変数式: 変数に入っている値をとり出す変数名

16 オブジェクト クラス ― オブジェクトの種類 コンストラクタ ― オブジェクトを作る 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 クラス名(引数式, ...); メソッド呼び出し ― 操作の指示 オブジェクト式 . メソッド名(引数式,...);

17 式と値 式が計算されると値が求められる コンストラクタ → 作られたオブジェクト 数値式 → 数 変数式 → 変数にしまわれている値
/** 最初のプログラムの例 */ 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 進め } 式が計算されると値が求められる コンストラクタ → 作られたオブジェクト 数値式 → 数 変数式 → 変数にしまわれている値

18 要素の組み合わせ 要素は組み合わせることができる メソッド呼び出し: オブジェクト式 . メソッド名( 引数式, ... ); +
/** 最初のプログラムの例 */ 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());

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


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

Similar presentations


Ads by Google