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

Slides:



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

山元進.  for 文  while 文  do ~ while 文  文のネスト  break 文  continue 文.
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也. 講義計画(あくまで予定) 第 1 回 プログラミング言語の種類と歴史 第 2 回 eclipse の基本操作 第 3 回 eclipse のデバッグ機能 第 4 回 構造化プログラミングの復習 第 5 回 演習 第 6 回 構造化指向からオブジェクト指向へ.
プログラミング実習 1 ・ 2 ク ラス 第 2 週目 担当教員 : 渡邊 直樹. 課題 2 ● 2 × 2型行列の固有値, 固有ベクトルを求め る EigMatrix.java というプログラムを作成せ よ。 ● 行列の各要素はコマンド・プロンプトから入力 ● 計算した結果もコマンド・プロンプトに表示.
Java I 第2回 (4/18)
数理情報工学演習第一C プログラミング演習 (第3回 ) 2014/04/21
プログラミング基礎I(再) 山元進.
プログラミングパラダイム さまざまな計算のモデルにもとづく、 プログラミングの方法論 手続き型 関数型 オブジェクト指向 代数 幾何.
アルゴリズムとデータ構造1 2007年6月12日
実行時のメモリ構造(1) Jasminの基礎とフレーム内動作
プログラミング基礎I(再) 山元進.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
String - 文字列 2009年10月9日 7ADD2116 佐藤洋輔.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
アルゴリズムとデータ構造 2011年6月13日
プログラミングIII演習 第1回目.
第2章 Eclipseと簡単なオブジェクト 指向プログラミング
第20章 Flyweight ~同じものを共有して無駄をなくす~
Javaプログラムの実行まで バイト Javaの コード 実行 ソースコード Java ファイル名 ファイル名 abc.java
アルゴリズム入門.
コンピュータの原理 1E17M053-9 奈良 皐佑 1E17M070-7 師尾 直希        1E17M078-6 渡邊 惇.
細かい粒度でコードの再利用を可能とするメソッド内メソッドのJava言語への導入
アルゴリズムとプログラミング (Algorithms and Programming)
第9章 例外処理,パッケージ 9.1 例外処理 9.2 ガーベッジコレクション.
オブジェクト指向 プログラミング 第八回 知能情報学部 新田直也.
独習JAVA 6.8 コンストラクタの修飾子 6.9 メソッドの修飾子 6.10 ObjectクラスとClassクラス 11月28日(金)
オブジェクト指向 プログラミング 第十一回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第十三回 知能情報学部 新田直也.
暗黙的に型付けされる構造体の Java言語への導入
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
コンパイラの解析 (3) クラスとインスタンスの初期化.
プログラミング言語入門.
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
パソコンのしくみ ハードウェア OS(Operating System) アプリケーション NEC DOS
C#言語ソースプログラムの原型 C言語 C#言語 Hello World! Hello Students! オマジナイ! 適当なクラス名
アルゴリズムとデータ構造1 2005年6月24日
アルゴリズムとデータ構造 2010年6月21日
オブジェクト指向 プログラミング 第十ニ回 知能情報学部 新田直也.
再帰的手続き.
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
計算機プログラミングI 第5回 配列 文字列(Stringクラス) mainの引数 配列の利用例
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
アルゴリズムとプログラミング (Algorithms and Programming)
オブジェクト指向 プログラミング 第九回 知能情報学部 新田直也.
オブジェクト指向 プログラミング 第六回 知能情報学部 新田直也.
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
計算機プログラミングI 第3回 プリミティブ値 クラスメソッド クラス変数 式と演算 変数の利用
アルゴリズムとデータ構造 2012年6月11日
アルゴリズムとプログラミング (Algorithms and Programming)
計算機プログラミングI 第4回 2002年10月31日(木) 問題解決とアルゴリズム クラスメソッドと手続きの抽象化 最大公約数
アルゴリズムとデータ構造1 2009年6月15日
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
さまざまなプログラミング言語, オンライン開発環境
第6回放送授業.
JAVA入門⑥ クラスとインスタンス.
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
コンパイラ 2012年10月11日
プログラミング 4 文字列.
アルゴリズムとデータ構造 2010年6月17日
ソフトウェア工学 知能情報学部 新田直也.
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
情報処理Ⅱ 小テスト 2005年2月1日(火).
1.2 言語処理の諸観点 (1)言語処理の利用分野
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
オブジェクト指向言語論 第十回 知能情報学部 新田直也.
計算機プログラミングI 第10回 2002年12月19日(木) メソッドの再定義と動的結合 クイズ メソッドの再定義 (オーバーライド)
計算機プログラミングI 第5回 2002年11月7日(木) 配列: 沢山のデータをまとめたデータ どんなものか どうやって使うのか
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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); }

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);

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

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

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

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

ソーティング(選択ソート) 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); }

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();

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; }

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