意味論(Semantics)

個々のプログラムについて、それを実行すると何が起きるか、 を定めた規則の集合
入力と出力の関係(具体的)
属性文法.. 文法に意味記述を付記する(抽象的)

抽象構文と素語

抽象構文木
意味論に即した枝分け
素語
単なるつづりでなく意味を伴う。例)演算子
名標(identifier; 識別子)
基要語(keyword; 鍵語)
基要語などと同じ綴りの名標を許さないことがある ... 予約語
定数語
10進数、2,8,16進数、指数部を持つ10進数([+-]N.NNNe[+-]NN) 文字、文字列

プログラムの運算と環境

環境 ... 算体(object)とそれをめぐる関係
プログラムの意味は、与えられた環境のもとでそれを 運算したとき、環境から何が参照され、環境にどのような 変化をもたらすか、という動的効果の累積である。
算体の生成と消滅 .. 動的・静的

データ型と値

あるデータ型を持つデータの構造・可能な操作の定義。型整合性の検査。

変数と代入、指標型

変数 ... 値を入れておく{物|場所}
局所変数(local)と大域変数(global) 指標型(pointer)

手続き呼び出し、引数結合

手続き(procedure, subroutine, subprogram)
関数(function) .. 実行の結果値を返す。
引数結合
例題1: x,y の値を入れ替える関数 swap を C 言語で作成した。 このプログラムが意図どおりに動くかどうかを調べよ。
同じプログラムを大域変数を用いて作成した このプログラムの問題点を述べよ。

例題2: /usr/include/time.h と man date その他を読んで、 UNIX time (1970年1月1日0時0分0秒からの 経過秒数)から 年/月/日 時:分:秒 形式で時刻を 出力するプログラムを作れ。