Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング言語入門 手続き型言語としてのJava

Similar presentations


Presentation on theme: "プログラミング言語入門 手続き型言語としてのJava"— Presentation transcript:

1 プログラミング言語入門 手続き型言語としてのJava

2 プログラミング言語入門 機械語 アセンブリ言語 高級言語 仮想機械 手続き型 関数型 オブジェクト指向

3 機械語(machine language)
計算機のCPU(central processing unit、中央処理装置)によって直接的に実行。 機械語プログラムはメモリ上ではビット列によって表現され、CPUはビット列を機械語命令(通常はワード)に区切って実行する。 機械語命令 命令の種類を表すopcode(operation code) 命令の引数を表すoperand 次に実行する命令に関する情報

4 アセンブリ言語(assembly language)
機械語命令におけるopcodeやoperandを人間に理解しやすい記号で表現。 人間が機械語プログラムを書く場合は、アセンブリ言語(assembly language)を用いて行うのが一般的。 アセンブラ(assembler)と呼ばれる処理系が、アセンブリ・プログラムを機械語のプログラムに変換。

5 高級言語(high-level language)
直接的にCPUで実行することはできない。 実行形態によって、大きく二つに分かれる。 コンパイラ(compiler) 高級言語のプログラムを機械語に翻訳。 プログラムの実行効率は高い。 インタープリタ (interpreter) プログラムを機械語に翻訳せずに解釈実行。 即時にプログラムを実行することができるので、小規模なプログラムの実行やプログラムを頻繁に改変して実行する状況には適している。 スクリプト言語 文字列の簡単な操作とコマンドの起動などを組み合わせた処理

6 仮想機械(Virtual Machine)
実際のCPUを真似た仮想的かつ理想的な計算機 コンパイラによっては、高級言語を仮想機械の機械語に翻訳。 Javaのコンパイラは、Java言語のプログラムをJVM(Java Virtual machine)と呼ばれる仮想機械の機械語に翻訳。 仮想機械の機械語プログラムは、さらに本当の機械語に翻訳されて実行されるか、仮想機械のインタープリタによって解釈実行される。 Java 前者の場合、JVMの機械語から本当の機械語への翻訳は、仮想機械のプログラムをJVMの処理系に読み込んだ時点で行われる。(just-in-time compilation)

7 手続き型(procedural) 命令型(imperative)ともいう。
基本的な操作を組み合わせて、メモリ上に表現されたデータを変更することにより計算が行われる。 ひとまとまりの処理を行うための一連の操作をまとめたものを手続き(procedure)という。 手続きは、別の手続きから呼び出すことができる。自分自身を呼び出すことも可能。 プログラムは手続きの集まりとして作られる。

8 関数型(functional) 関数をプログラムの基本単位とする。
関数とは、与えられた入力に対して出力を返すもので、手続き型言語の手続きのようにメモリ上にあるデータを変更するものではない。 手続き型言語においても関数という言葉は使うが、値を返す手続きという意味であり、関数型言語における純粋な関数とは異なる。

9 オブジェクト指向(object-oriented)
オブジェクトとは一連の関連するデータを集めたもの。 例えば、学生を表すオブジェクトは、名前、所属学部、学生証番号、学年、履修科目などからなる。 オブジェクトに属するデータをフィールド(field)という。 クラス(class)によってオブジェクトの形式を定義。 学生オブジェクトのクラス クラスには、フィールドだけではなく、そのクラスに属するオブジェクトを操作するための手続きを定義。 メソッド(method)という。 継承(inheritance)の機能により、既存のクラスをもとにして新しいクラスを定義することができる。

10 手続き型言語としてのJava 手続き=スタティック・メソッド コンパイルと実行 データの種類=型 制御構造 入出力など ソーティング

11 手続き=スタティック・メソッド Javaの簡単なプログラム class SimpleProgram { ... }
適当な名前のクラス SimpleProgram クラス名に.javaを付けたファイルに格納。 SimpleProgram.java この中に、手続き=スタティック・メソッド(static method)を定義。

12 スタティック・メソッドの例 static int cubic(int x) { int y; y = x; y = y*x;
return y; }

13 mainの例 public static void main(String[] args) { int y;
y = new Integer(args[0]).intValue(); y = cubic(y); System.out.println("Hello world."); System.out.println(y); }

14 class SimpleProgram { static int cubic(int x) { int y; y = x; y = y*x; return y; } public static void main(String[] args) { y = new Integer(args[0]).intValue(); y = cubic(y); System.out.println("Hello world."); System.out.println(y);

15 コンパイルと実行 コンパイル % javac SimpleProgram.java % ls –l SimpleProgram.class
ファイルの中の各クラスをコンパイル。 クラスごとにクラス・ファイルが作られる。 % ls –l SimpleProgram.class 実行 % java SimpleProgram 7 Eclipseの場合...

16 データの種類=型(type) とりあえず必要な型 int --- 整数 boolean --- 真偽値(trueかfalseか)
double --- 浮動少数点数 String --- 文字列 int[] --- 整数の配列 参照型(reference type) 上の中ではStringとint[] 変数の値として格納されたり、引数として受渡しされるのは、データの本体への参照 (reference)であり、データ本体そのものではない。 newで始まる式によって明示的にデータ本体を生成。

17 制御構造(control structure)
とりあえず必要な制御構造 if for while do while return 代入 変数 = 式; 配列の参照 = 式;

18 入出力など 出力 System.out.print(式); System.out.println(式); コマンドの引数の利用
new Integer(args[0]).intValue() これも式

19 ソーティング(選択ソート) class Sorting { public static void main(String[] args) {
int n = args.length; int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = new Integer(args[i]).intValue(); print(a, 0, n-1); sort(a, 0, n-1); }

20 static void print(int[] a, int from, int to) {
for (int i = from; i <= to; i++) { System.out.print(a[i]); System.out.print(" "); } System.out.println();

21 static void sort(int[] a, int from, int to) {
for (int i = from; i <= to; i++) for (int j = i+1; j <= to; j++) if (a[i] > a[j]) { int w = a[j]; a[j] = a[i]; a[i] = w; }

22 演習 これまでのプログラムを コンパイルして 実行してみよ。


Download ppt "プログラミング言語入門 手続き型言語としてのJava"

Similar presentations


Ads by Google