計算機言語:lecture2
目次
プログラムのフレームワーク
プログラミング言語
- 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 <stdio.h> int main(void) { printf("Hello, world\n"); return 0; }
#includeà<stdio.h>
- プリプロセッサにより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 <stdio.h> 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
)まで含めてライブラリ関数にわたす
計算機言語/lecture2.txt · 最終更新: 2022/08/23 13:34 by 127.0.0.1