4
第 1 章 E T プ ロ グ ラ ミ ン グ
1 . プ ロ グ ラ ミ ン グ と は
計 算 機 に 与 え る 計 算 方 法 の 指 令 を プ ロ グ ラ ム と い い 、 プ ロ グ ラ ム を 記 述 す る た め の 言 語 を プ ロ グ ラ ミ ン グ 言 語 と い う 。例 え ば
C
やBasic
な ど は プ ロ グ ラ ミ ン グ 言 語 で あ る 。そ し て 、 与 え ら れ た 問 題 を 解 く た め の プ ロ グ ラ ム を 作 り 出 す こ と を プ ロ グ ラ ミ ン グ と い う 。上 の 図 は 、 C 言 語 で 書 い た プ ロ グ ラ ム の 例 を 示 し た も の で あ る が 、 他 に も 、
Basic
や そ の 他 の 言 語 で 同 様 の プ ロ グ ラ ム を 書 く こ と が で き る 。2 . プ ロ グ ラ ミ ン グ 言 語 E T
本 書 で は E T と い う プ ロ グ ラ ミ ン グ 言 語 を 学 ぶ 。 E T の プ ロ グ ラ ム は 、 問 題 を 正 し く 変 換 す る よ う な 「 き ま り 」 か ら な る 。 そ れ ぞ れ の 「 き ま り 」 の こ と をル ー ルと 呼 ぶ 。 い く つ か の ル ー ル が 集 ま っ て 、 1 つ の
ET
の プ ロ グ ラ ム に な る 。 そ し て 、 1 つ 1 つ の ル ー ル は 、 問 題 を 簡 単 化 す る た め に 使 わ れ る 。 次 ペ ー ジ の 図 で は 、問 題
2つの数の最大公約数を 求める。
プログラム
#include <stdio.h>
void main(void) {
int a, b, m, n, k;
scanf (“%d %d”, &a, &b);
m=a; n=b;
do { k=m % n;
m=n; n=k;
} while(k!=0);
printf(“%d¥n”,m);
}
プログラミング
プログラミング言語 問 題
問 題
2つの数の最大公約数を 求める。
プログラム
#include <stdio.h>
void main(void) {
int a, b, m, n, k;
scanf (“%d %d”, &a, &b);
m=a; n=b;
do { k=m % n;
m=n; n=k;
} while(k!=0);
printf(“%d¥n”,m);
}
プログラム プログラム
#include <stdio.h>
void main(void) {
int a, b, m, n, k;
scanf (“%d %d”, &a, &b);
m=a; n=b;
do { k=m % n;
m=n; n=k;
} while(k!=0);
printf(“%d¥n”,m);
}
プログラミング
プログラミング言語
2つの数の最大公約数を 求める。
問 題 C プログラム
Basic
プログラムFortran
プログラムETプログラム
2つの数の最大公約数を 求める。
2つの数の最大公約数を 求める。
問 題
問 題 C プログラム C プログラム
Basic
プログラムBasic
プログラムFortran
プログラムFortran
プログラムETプログラム
ETプログラム
5
(gcd *A 0 *X) ‑‑> (= *X *A).(gcd *A *B *X),{(> *B 0)} ‑‑> (:= *C (mod *A *B)),(gcd *B *C *X).
の 2 つ が ル ー ル と な る 。 そ し て 、 こ れ ら 2 つ の ル ー ル か ら な る 集 合 が 1 つ の プ ロ グ ラ ム で あ る 。
ET
の 枠 組 み で は 、 問 題 が 入 力 さ れ る と 、 プ ロ グ ラ ム 中 の ル ー ル が 次 々 に 使 わ れ て 問 題 が 簡 単 化 さ れ る 。 そ し て 、 最 終 的 に 問 題 が 最 も 簡 単 な 形 に な り 、 そ こ か ら 解 答 を 得 る こ と が で き る 。 こ の よ う な 問 題 解 決 の 方 式 は さ ま ざ ま な 問 題 を 解 く た め に 用 い ら れ る 。例 え ば 、 連 立 方 程 式 を 解 く 場 合 を 考 え て み よ う 。 私 た ち は 加 減 法 や 代 入 法 な ど を 用 い て 連 立 方 程 式 を ど ん ど ん 簡 単 な 形 に し て い く 。 そ し て 、 最 終 的 に 連 立 方 程 式 は 最 も 簡 単 な 形 で あ る 、 X = 数 、 Y = 数 と い っ た 形 に な る 。 こ れ は 連 立 方 程 式 の 解 を 表 し て い る 。 連 立 方 程 式 の 解 法 で は 、 代 入 法 や 加 減 法 な ど が 問 題 を 簡 単 化 す る ル ー ル と 考 え る こ と が で き る 。
実 は 、連 立 方 程 式 だ け で な く 、非 常 に 広 い 範 囲 の 問 題 が 同 じ 原 理 で 解 決 で き る の で あ る 。
ET
の 枠 組 み で は 連 立 方 程 式 よ り も 、 ず っ と 広 い 範 囲 の 表 現 方 法 が 導 入 さ れ て お り 、 数 だ け で な く 論 理 式 な ど で 問 題 を 表 現 す る こ と も 可 能 で あ る 。 そ し て 、 そ れ ら を ル ー ル で 変 換 す る こ と に よ っ て 、 連 立 方 程 式 を 解 く の と 同 じ よ う に 、 さ ま ざ ま な 問 題 を 統 一 的 な 考 え 方 で 解 く こ と が で き る 。3 .E T の プ ロ グ ラ ム の 作 り や す さ
E T の 枠 組 み で は 、 プ ロ グ ラ ム を 作 り 出 す こ と は 比 較 的 た や す く な る 。 そ れ は 、 一 挙 に プ ロ グ ラ ム 全 体 を 作 り 上 げ る 必 要 が な い か ら で あ る 。 あ る 問 題 が 与 え ら れ た と き 、 そ の 問 題 を ま ず ど う 簡 単 化 し よ う か と 考 え 、 そ の た め の ル ー ル を 1 つ 書 く 。 そ れ は 、 あ る 特 別 な 場 合 に 適 用 さ れ る 簡 単 化 ル ー ル で よ い 。 そ し て 、 そ れ は プ ロ グ ラ ム の 一 部 分 と な る 。 そ れ を 適 用 す る と 問 題 は 少 し 簡 単 化 さ れ る で あ ろ う 。 そ し て 、 簡 単 化 さ れ た 問 題 を 、 再 び ど の よ う に し て さ ら に 簡 単 化 す る か を 考 え る 。 そ し て 、 再 び ル ー ル を 書 き 、 プ ロ グ ラ ム が 少 し 大 き く な る 。 こ れ を 繰 り 返 す こ と に よ っ て 、 少 し ず つ ル ー ル が 蓄 積 し 、 プ ロ グ ラ ム が 完 成 に 近 づ く 。 こ の よ う に し て 、 ル ー ル を 貯 め て い く こ と が 、 ま さ に プ ロ グ ラ ム を 作 る と い う こ と に 他 な ら な い わ け で あ る 。
問 題
2つの数の最大公約 数を求める
(gcd *A 0 *X) ‑‑> (= *X *A).
(gcd *A *B *X),{(> *B 0)}‑‑> (:= *C (mod *A *B)), (gcd *B *C *X).
E T 問 題
問 題
2つの数の最大公約 数を求める
(gcd *A 0 *X) ‑‑> (= *X *A).
(gcd *A *B *X),{(> *B 0)}‑‑> (:= *C (mod *A *B)), (gcd *B *C *X).
E T
E T
6
4 . イ ン タ プ リ タ と コ ン パ イ ラ計 算 機 が 直 接 に わ か る 言 語 は 機 械 語 で あ る が 、 私 た ち は 、 人 間 に と っ て わ か り や す い プ ロ グ ラ ミ ン グ 言 語 を 用 い て ア ル ゴ リ ズ ム を 表 現 す る 。 そ こ で 、 プ ロ グ ラ ミ ン グ 言 語 か ら 機 械 語 に 翻 訳 す る 必 要 が あ る 。 プ ロ グ ラ ミ ン グ 言 語 の 処 理 方 式 は 、 大 き く イ ン タ プ リ タ と コ ン パ イ ラ と い う 2 つ に 分 け て 考 え る こ と が で き る 。 イ ン タ プ リ タ と は 、 プ ロ グ ラ ム の 断 片 を 逐 次 解 釈 し 実 行 す る 処 理 系 で あ る 。 コ ン パ イ ラ と は 、 全 て の プ ロ グ ラ ム を 一 括 し て 機 械 語 に 翻 訳 し て か ら 、 実 行 す る 処 理 系 で あ る 。
イ ン タ プ リ タ を 用 い る と 、 は じ め か ら プ ロ グ ラ ム 全 体 を 機 械 語 に 翻 訳 す る 必 要 は な い 。 プ ロ グ ラ ム は 実 行 の 段 階 で 、 少 し ず つ 解 釈 さ れ て 実 行 さ れ る 。 そ の た め 、 実 行 を す ぐ 始 め る こ と が で き る が 、 実 際 の 実 行 に か か る 時 間 は 長 く な る 。 一 方 コ ン パ イ ラ の 場 合 に は 、 実 行 す る 前 に コ ン パ イ ル と い う 処 理 に よ っ て 、 プ ロ グ ラ ム 全 体 を 機 械 語 に 直 す 作 業 が 必 要 に な る た め 、 そ の 作 業 に 要 す る 時 間 が 長 く な る 。 し か し 、 高 速 な 実 行 が 可 能 に な る 。
こ の よ う に 、イ ン タ プ リ タ 方 式 の 処 理 系 と コ ン パ イ ラ 方 式 の 処 理 系 は 、一 長 一 短 が あ る 。 有 力 な 考 え 方 と し て 、 プ ロ グ ラ ム を 開 発 す る 段 階 で は イ ン タ プ リ タ を 使 い 、 完 成 し た 段 階 で は コ ン パ イ ラ を 使 う 手 が あ る 。 そ う す れ ば 、 少 し ず つ 頻 繁 に プ ロ グ ラ ム を 修 正 し た い と き に は 、 す ぐ に 実 行 し て 確 か め る こ と が で き
(
イ ン タ プ リ タ)、 完 成 し た 場 合 に は 、 高 速 に
大 規 模 な 計 算 を 実 行 す る こ と が で き る(
コ ン パ イ ラ)。
E T の イ ン タ プ リ タ で あ る E T I は 、 プ ロ グ ラ ム を 作 っ て 実 行 し て み た り 、 少 し 修 正 し て 実 行 し て み た り す る と い う よ う な 、 プ ロ グ ラ ミ ン グ の 練 習 に と て も 便 利 に 使 う こ と が で き る 。 も し 、 皆 さ ん が そ の よ う に し て 、 お も し ろ い プ ロ グ ラ ム を 完 成 し た 場 合 に は 、 E T の コ ン パ イ ラ で あ る E T C を 用 い て 機 械 語 に 直 す こ と で 、 よ り 高 速 な 実 行 が 可 能 に な る 。