オブジェクト指向言語論 第二回 知能情報学部 新田直也.

Slides:



Advertisements
Similar presentations
2.5 プログラムの構成要素 (1)文字セット ① ASCII ( American Standard Code for Interchange ) JIS コードと同じ ② EBCDIC ( Extended Binary Coded Decimal for Information Code ) 1.
Advertisements

配列の宣言 配列要素の初期値 配列の上限 メモリ領域 多次元配列 配列の応用
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第7回 データの基本型 情報・知能工学系 山本一公
データ構造とアルゴリズム 第10回 mallocとfree
基礎プログラミングおよび演習 第9回
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
C言語 第2講 生物機能制御学講座 濱田 農学部7号館209室.
オブジェクト指向言語論 知能情報学部 新田直也.
情報基礎A 第10週 プログラミング入門 VBAの基本文法2 データ型・If ~Then~Else
プログラミング言語論 第6回 型 情報工学科 篠埜 功.
第2回:Javaの変数と型の宣言 プログラミングII 2007年10月2日.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
プログラミング言語論 理工学部 情報システム工学科 新田直也.
オブジェクト指向 プログラミング 第一回 知能情報学部 新田直也.
情報処理Ⅱ 第4回 2007年10月29日(月).
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
情報処理Ⅱ 第2回 2007年10月15日(月).
第二回 VB講座 電卓を作ろう.
Cプログラミング演習 第7回 メモリ内でのデータの配置.
プログラミング演習I 2003年5月7日(第4回) 木村巌.
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
プログラミング入門2 第11回 情報工学科 篠埜 功.
第7回 プログラミングⅡ 第7回
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第八回 知能情報学部 新田直也.
コンピュータープログラミング(C言語)(2) 1.文字列出力と四則演算 (復習) 2.関数と分割コンパイル
プログラミング言語論 第四回 理工学部 情報システム工学科 新田直也.
岩村雅一 知能情報工学演習I 第9回(後半第3回) 岩村雅一
2013年度 プログラミングⅡ ~ 計算してみよう ~.
2015年度 プログラミングⅡ ~ 計算してみよう ~.
情報処理Ⅱ 第2回:2003年10月14日(火).
第5章 計算とプログラム 本章で説明すること ・計算の概観と記述法 ・代表的な計算モデル ・プログラムとプログラム言語.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
C言語ファミリー C# 高級言語(抽象的) Java オブジェクト指向 C++ C 機械語(原始的)
地域情報学 C言語プログラミング 第2回 変数・配列、型変換、入力 2017年10月20日
プログラミング言語論 第十一回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
ポインタとポインタを用いた関数定義.
情報処理Ⅱ 第2回 2005年10月14日(金).
情報処理Ⅱ 第2回 2006年10月13日(金).
アルゴリズムとデータ構造1 2009年6月15日
ネットワーク・プログラミング Cプログラミングの基礎.
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
情報処理Ⅱ 2006年11月24日(金).
情報処理Ⅱ 2005年10月28日(金).
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
岩村雅一 知能情報工学演習I 第8回(後半第2回) 岩村雅一
岩村雅一 知能情報工学演習I 第8回(C言語第2回) 岩村雅一
アルゴリズムとデータ構造 2010年6月17日
オブジェクト指向言語論 第一回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
情報処理Ⅱ 第2回 2004年10月12日(火).
第3回簡単なデータの入出力.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.
オブジェクト指向言語論 第七回 知能情報学部 新田直也.
情報処理Ⅱ 2005年11月25日(金).
オブジェクト指向言語論 第三回 知能情報学部 新田直也.
プログラミング演習II 2003年12月10日(第7回) 木村巌.
プログラミング基礎a 第5回 C言語によるプログラミング入門 配列と文字列
情報処理Ⅱ 小テスト 2005年2月1日(火).
オブジェクト指向言語論 第九回 知能情報学部 新田直也.
復習 いろいろな変数型(2) char 1バイト → 英数字1文字を入れるのにぴったり アスキーコード → 付録 int
情報処理Ⅱ 2006年10月27日(金).
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
岩村雅一 知能情報工学演習I 第9回(C言語第3回) 岩村雅一
Presentation transcript:

オブジェクト指向言語論 第二回 知能情報学部 新田直也

プログラミング言語に関する チューリング賞 1966年 A. J. Perlis コンパイラ 1971年 John McCarthy  Lisp 1972年 Edsger W. Dijkstra  ALGOL 1983年 Dennis M. Ritchie  C 1984年 Niklaus Wirth  Pascal 1991年 Robin Milner ML 2001年 Ole-Johan Dahl / Kristen Nygaard  Simula 2003年 Alan Kay Smalltalk

プログラミング言語の仕組み なぜプログラミング言語は数多くの仕組みを用意しているのか? プログラムに必要とされる機能は計算だけではない. 計算に必要な最小限の機能だけを持つ言語: whileプログラム プログラムに必要とされる機能は計算だけではない. コンピュータ上で走らせるためやむなく必要となる仕組み. より高速に計算するために必要な仕組み. データを包括的に管理するために必要な仕組み. プログラムを読みやすくするために必要な仕組み. プログラムを分割管理するために必要な仕組み.

最小プログラミング言語 まずは,必要最小限の機能から始めよう! Whileプログラム(D.M.Ritchie, C言語の作者) 単純だが,どんな計算でもできることが理論的に証明されているプログラム言語 (チューリングマシンと等価,計算万能) プログラム理論の研究で使われる. 例) 表示意味論(denotational semantics),プログラム検証 制御構造として,連接,判断(if文),前判定反復(while文のみを持つ) →構造化定理参照

Whileプログラムの構文 自然数(0を含む)を表す有限個の変数を持つ. 代入文は以下の3通りのみ. 条件式は以下の1通りのみ. 変数 = 0; 変数 = 変数; 変数++; (変数 = 変数 + 1;) 条件式は以下の1通りのみ. 変数 < 変数 プログラムは再帰的に以下のように構成される. プログラム ::= 代入文 または プログラム プログラム または if (条件式) { プログラム } else { プログラム } または while (条件式) { プログラム }

Whileプログラムの例(加算) z = x + y の計算 z = x; c = 0; while (c < y) { z++; }

Whileプログラムの例(減算) z = y - x の計算 z = 0; c = x; while (c < y) { z++; }

Whileプログラムの例(乗算) z = x * y の計算 z = 0; c = 0; while (c < y) { d = 0; while (d < x) { z++; d++; } c++;

Whileプログラムで満足できるか? Whileプログラムが持っているもの Whileプログラムが持っていないもの 変数 代入文 制御構造 変数の型 演算子, 式 手続き(関数)呼び出し 配列

変数と型 実際はプログラムは有限のメモリ上で動作する. 変数の型宣言とは,各変数に決められたメモリ領域を割り当てること. Whileプログラムでは,各変数が取りうる値に上限が設けられていなかった.(1変数当たり無限バイト必要.) x = 1; y = 0; while (x > y) { x++; } 変数の型宣言とは,各変数に決められたメモリ領域を割り当てること. 変数を使用する前に型宣言しておかなければならない. 割り当てられた型に応じて適用可能な演算が変わる.

データ型の分類 単純な型 構造を持つ型 データ参照型 基本型(char, int, long, …) ユーザ定義型(enum) 文字列型 配列型 構造体型 その他 データ参照型 参照型 ポインタ型

基本型(Java) boolean (論理型) 1バイト byte (バイト型) 1バイト char (文字型) 2バイト short (短長整数型) 2バイト int (整数型) 4バイト long (倍長整数型) 8バイト float (単精度浮動小数点型) 4バイト double (倍精度浮動小数点型) 8バイト

型宣言文 変数を使用する前に宣言. 初期化なし型宣言文 初期化つき型宣言文 型名 変数名; (例) int x;

メモリへの格納形式(整数型) 整数型 リトルエンディアン(最下位バイトを一番下のアドレスに) ビッグエンディアン(最上位バイトを一番下のアドレスに) Intel系 0xffff番地 0x12 0x1234 0x34 0x0000番地 Motrola系 0xffff番地 0x34 0x1234 0x12 0x0000番地

メモリへの格納形式(浮動小数点型) 単精度(float) 倍精度(double) s…符号ビット e…指数部 f… 仮数部 1 8 23 s 下位 1 11 52 s e f 下位

定数表現 10進定数 100 --- そのまま書く 8進定数 0777 --- 先頭に0を付ける 10進定数 100 --- そのまま書く 8進定数 0777 --- 先頭に0を付ける 16進定数 0x53fb --- 先頭に0xを付ける.0~fまでを使う. 単精度定数 3.14F, 1.0E+10F --- 末尾にFを付ける 単精度定数 3.14, 1.0E+10 --- 末尾にFを付けない 文字定数 ‘a’ --- シングルクォーテーションで囲む