Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也.

Similar presentations


Presentation on theme: "プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也."— Presentation transcript:

1 プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也

2 プリプロセッサ プリプロセッサ; コンパイルに先立って行われるソースコードの 書き換え.
ディレクティブ: ソースコードの書き換え命令.Cでは,# で始まる.

3 マクロ定義 マクロ定義: #define A B A を B と定義する. (プログラム中の A を B と置き換える.)
例: #define TRUE (1) #define FALSE (0) #define PI # square(x) (x * x) // 引数を持つマクロ 注意: square(a++) は,(a++ * a++) と置き換えられる.

4 ファイルインクルード ファイルインクルード: ヘッダファイル(.h)をソースファイル(.c)の先頭に読み込むことができる. #include <パス名> // 標準ディレクトリ#include “パス名” // カレントディレクトリ ヘッダファイルに含まれるもの #define 文 構造体の宣言 プロトタイプ宣言 外部変数(他のファイルにある大域変数)の参照

5 条件コンパイル 条件コンパイル: 条件部が真のときのみコンパイルする. #if #else #endif #ifdef #ifndef :
テスト用のコードや古いコードを残しておきたい場合など. #define DEBUG (1) : #if DEBUG [テスト用のコード] #endif (0) //#define DEBUG (1) #define DEBUG (1) : #ifdef DEBUG [テスト用のコード] #endif

6 分割コンパイル(1) プログラムの作成は分業で行われる.

7 分割コンパイル(2) プログラムは複数のソースファイル(モジュール)に分割される.

8 分割コンパイル(3) 各ソースファイルは別々にコンパイルされる コンパイル リンク コンパイル

9 分割コンパイル(4) 他の人のヘッダファイルを利用する場合もある コンパイル インクルード コンパイル

10 ヘッダファイルの役割 他のファイルが宣言を参照する場合. <item.h> <class.c>
#define ARRAY_MAX (1000) struct List { int items[ARRAY_MAX]; int num; }; void init_list(struct List *l); : <class.c> #include “item.h” #include “class.h” : int create_class( … struct List l; init_list(&l); <item.c> #include “item.h” void init_list(struct List *l) { :

11 ライブラリ ライブラリ: あらかじめコンパイルされているオブジェクトファイル. 一般にソースコードは存在しない.
他の言語(アセンブラなど)でコンパイルされている場合も. 利用するにはヘッダファイルが必要. コンパイル リンク インクルード

12 標準ライブラリ(1) 標準ライブラリ: コンパイラと一緒に提供されているライブラリ. コンパイラメーカが作成し,コンパイルしたもの.
基本的な関数(特に入出力関数)が含まれている. printf scanf strlen strcpy malloc free : stdio.h string.h stdlib.h

13 標準ライブラリ(2) 標準ライブラリの内容はコンパイラによって異なる MSVC GCC

14 C言語の設計 なぜC言語なのか? 設計がシンプルであること 高級言語であること 高速であること メモリ操作ができること 関数を記述単位とする
式の評価の一貫性 入出力関数を言語仕様に含んでいない 高級言語であること 構造化プログラミング 構造体などのサポート モジュール指向プログラミング 高速であること コンパイラ,ポインタの使用 メモリ操作ができること ポインタ,配列

15 そしてオブジェクト指向へ… より高級化を目指す言語発展の歴史. 高級化には「思想」が必要. 高級化の失敗例? 失敗の理由: 人工知能 関数型
形式的仕様記述 失敗の理由: コストに見合わない 難しすぎる 現実のソフトウェアに合わない 社会のニーズに 答えていない!!


Download ppt "プログラミング言語論 第九回 理工学部 情報システム工学科 新田直也."

Similar presentations


Ads by Google