====== プログラムのフレームワーク ====== ===== プログラミング言語 ===== * 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'')まで含めてライブラリ関数にわたす