====== プログラムのフレームワーク ======
===== プログラミング言語 =====
* c言語
* Pascal
* FORTRAN77
===== c / Pascal / FORTRAN77の特徴 =====
* 高水準言語
* 汎用型プログラミング言語
* 構造化言語 (オブジェクト指向の上位言語をもつ)
* 翻訳型(コンパイラ)で実装 (インタープリタの実装も可能)
; c言語
: 幅広い分野で利用されている
: 低水準な処理が可能
: 言語仕様が単純
: ライブラリによる拡張が容易
: 多彩なデータ構造 (ポインタ、構造体など)
; Pascal
: プログラミングの教育に適する
: 言語仕様が厳格で移植性が高い
: 多彩な制御構造 (アルゴリズムをそのままプログラムすることができる)
: 柔軟な入出力機構をもつ
; FORTRAN77
: 最古の高水準言語
: 数値計算に最適 (複素数を扱うこともできる)
: 過去の膨大な資産を利用できる
: 計算機科学以外の多数ユーザ
: 77→構造化言語
: 90→オブジェクト指向言語
===== プログラム(モジュール)の保存 =====
* ファイル
T97E121 85 A
T97E121 48 D
T97E121 72 B
* フィールド
* レコード
^ ^ フィールド ^ フィールド ^ フィールド ^
^ レコード | ''T97E121'' | ''85'' | ''A'' |
^ レコード | ''T97E121'' | ''48'' | ''D'' |
^ レコード | ''T97E121'' | ''72'' | ''B'' |
* ビット列
011000
011110
110100
===== プログラムのフレームワーク =====
**例題** 標準出力にHello, worldと表示するプログラムを作成せよ
* 用意されているキーワード(予約語)
* 特別な意味を持つ記号
* ユーザ定義名前付きオブジェクト
* ユーザ定義リテラル
* システムに依存するリテラル
==== Pascal ====
program hello(output);
begin
writeln(’Hello, world’)
end.
* 「 」(ホワイトスペース)「;」「begin」「end」「end.」「{」「}」で区切られたバイト列
* 「行・桁(レコード・フィールド)」の概念なし
プログラムのフレームワーク
==== FORTRAN77 ====
PROGRAM HELLO
WRITE(6, *) ’HELLO, WORLD’
STOP
END
|''1''|''2''|''3''|''4''|''5''|''6''|''7''|''8''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''.''|''.''|''.''|'' ''|'' ''|'' ''|'' ''|
|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''P''|''R''|''O''|''G''|''R''|''A''|''M''|'' ''|''H''|''E''|''L''|''L''|''O''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|
|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''W''|''R''|''I''|''T''|''E''|''(''|''6''|'',''|'' ''|''*''|'')''|'' ''|''’''|''H''|''E''|''L''|''L''|''O''|'',''|'' ''|''W''|''O''|''R''|''L''|''D''|
|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''S''|''T''|''O''|''P''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''| '' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|
|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''E''|''N''|''D''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|
* 行・桁の概念あり
* コメントフィールド
* 文番号フィールド
* 継続行フィールド
* 1行(1レコード)1文
* 実行文フィールド
* 72桁まで
==== c言語 ====
#include
int main(void) {
printf("Hello, world\n");
return 0;
}
#includeà
* プリプロセッサにより1レコード毎に処理される
* 「#キーワード」のフィールドから始まる
int main(void){printf("Hello, world\n"); return 0;}
* コンパイラで処理される
* 「'' ''」「'';''」「''{''」「''}''」「''/*''」「''*/''」で区切られたバイト列
* 「レコード・フィールド」の概念なし
===== 基本構造 =====
==== Pascal ====
program プログラム名 (入出力);
begin
実行すべき処理
end.
* 実行すべき処理が複数あるときは「'';''」で区切る
==== FORTRAN77 ====
PROGRAM プログラム名
実行すべき処理
STOP
END
* 処理は7桁目から72桁目までに記述する
==== c言語 ====
#プリプロセッサ命令
int main(引き数) {
実行すべき処理;
return 0;
}
===== キーワードと特殊記号 =====
==== Pascal ====
program begin end end. , writeln ; ’ ( )
==== FORTRAN77 ====
PROGRAM STOP END WRITE ’ ( ) *
* 大文字と小文字を区別しない
==== c言語 ====
int ; ( , ) { } main #
* 大文字と小文字を区別する
===== 注釈 (コメント) =====
* プログラム作成者が原始プログラム(ソースファイル)中に説明や覚書を書き込んだもの
* 使用や保守に必要な情報を簡潔にまとめておく
* スペース(White space)と同じ扱いを受ける
==== c言語の注釈 ====
「''/*''」 と「''*/''」で囲まれた文字列
#include
int main(void) {
/* This is the program to write
"Hello World" onto the standard
output. */
printf("Hello, world\n");
return 0;
}
==== Pascalの注釈 ====
「''{''」 と「''}''」で囲まれた文字列
program hello(output);
{ This program shows strings onto
the screen. }
begin
writeln(’Hello, world’)
end.
==== FORTRANの注釈 ====
第一桁に文字(通常「C」が使われることが多い)を記入した一行(レコード)
|''1''|''2''|''3''|''4''|''5''|''6''|''7''|''8''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''.''|''.''|''.''|'' ''|'' ''|'' ''|'' ''|
|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''P''|''R''|''O''|''G''|''R''|''A''|''M''|'' ''|''H''|''E''|''L''|''L''|''O''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|
|''C''|'' ''|''P''|''R''|''I''|''N''|''T''|'' ''|''H''|''E''|''L''|''L''|''O''|'',''|''W''|''O''|''R''|''L''|''D''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|
|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''W''|''R''|''I''|''T''|''E''|''(''|''6''|'',''|'' ''|''*''|'')''|'' ''|''’''|''H''|''E''|''L''|''L''|''O''|'',''|'' ''|''W''|''O''|''R''|''L''|''D''|
|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''S''|''T''|''O''|''P''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''| '' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|
|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|''E''|''N''|''D''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|'' ''|
===== 入出力 =====
==== Pascal ====
* 標準入出力が言語仕様として存在
==== FORTRAN ====
* 入出力装置を番号で指定
==== c言語 ====
* 言語仕様としては存在しない
* 標準入出力ライブラリを使用
===== 文字列リテラルと出力 =====
==== Pascal ====
writeln(’文字列’); { 出力後改行する }
write(’文字列’); { 出力後改行しない }
==== FORTRAN ====
WRITE(6, *) ’文字列’
C 出力後改行する
==== c言語 ====
printf("文字列\n")
* 改行記号(''\n'')まで含めてライブラリ関数にわたす