Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング言語入門.

Similar presentations


Presentation on theme: "プログラミング言語入門."— Presentation transcript:

1 プログラミング言語入門

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 オブジェクト オブジェクト: 意味的なまとまりのあるデータの単位. メソッド: オブジェクトに対して可能な操作
単純なもの: 整数,文字列など 複雑なもの: 有理数,スタック,リストなど メソッド: オブジェクトに対して可能な操作 整数に対する加算,文字列に対する置換 スタックに対するpush, pop クラス: 同じ種類のオブジェクトを定義する単位.適用可能なメソッドはクラスで定まる.

11 クラス定義 class BaseballPlayer attr_accessor :team, :position, :bat_order
Ruby クラス定義 class BaseballPlayer attr_accessor :team, :position, :bat_order def initialize(t,p,bo) @team = t @position = p @bat_order = bo end ichiro = BaseballPlayer.new("Mariners", "right field", 1)

12 スタックの定義 Ruby class Stack def initialize(size) # newのときの初期化
@data = Array.new(size) @pos = -1 -1. end def push(obj) # objがプッシュされるデータ @pos += と同じ意味 = obj # 前頁の図では上のほうが番地が大きい def pop @pos -= # 先にトップへのポインタを減らす + 1] # ∵ 最後の式が値となるため def == -1 end end この定義の後に 試してみよう s = Stack.new(100) s.push :abc s.push :def p s.pop

13 スタックの定義 Ruby class Stack attr_accessor :pos
def initialize(size) # newのときの初期化 @data = Array.new(size) @pos = -1 -1. end def push(obj) # objがプッシュされるデータ @pos += と同じ意味 = obj # 前頁の図では上のほうが番地が大きい def pop @pos -= # 先にトップへのポインタを減らす + 1] # ∵ 最後の式が値となるため def == -1 end end

14 色々な変数 class BaseballPlayer attr_accessor :team, :position, :bat_order
Ruby 色々な変数 BaseballPlayerはクラス class BaseballPlayer attr_accessor :team, :position, :bat_order def initialize(t,p,bo) @team = t @position = p @bat_order = bo end ichiro = BaseballPlayer.new("Mariners", "right field", 1) これも変数 これも変数 ichiroは変数

15 変数の有効範囲 局所変数: 宣言された場所の含まれる範囲内でのみ有効.
範囲: 通常はメソッド定義の初めから終わり より小さい単位はブロック より大きい単位はクラス/モジュール定義の初めから終わり インスタンス変数: 大域変数: プログラム全体で有効.Rubyでは変数名の語頭に$をおく規約


Download ppt "プログラミング言語入門."

Similar presentations


Ads by Google