こんばんは。先週、E開講(授業のメイン言語が英語)の数学の授業ではアルゴリズムの章に入りました。
もう、超嬉しい。
C言語を少し勉強したことがあるおかげで授業の意味がわかった!!!
そう。つまりこの授業の内容を普段は全然分かっていないのです。
英語ができても数学用語の英語を知っていないと、辞書を常に引き続けなければならない授業なのですが、引いた先に出てくる日本語の数学用語も理解できていないと最後まで何も分からないで終わってしまうことも少なくありません。
そんな授業で唯一の命綱が、例題です。
すごくゴチャゴチャした説明で途方に暮れていても、意外と例題はシンプルで理解できることがあります。
ですので、アルゴリズムを紹介する授業だと、例題がC言語っぽくて理解しやすいのです。
何十個もアルゴリズムの種類があったのですが、2つだけ紹介します。
一つ目。
Finding the Maximum Element in a Finite Sequence(列挙された実数で最も大きいものを見つける)
procedure max(a1, a2, ...., an: integers) max := a1
for i := 2 to n
ifmax<ai thenmax:=ai
return max{max is the largest element}
これをC言語で実際に動くようにしてみたのが以下
ちょっと凝って数字列を自分で入力できるようにしちゃいました。(そのおかげで時間かけてstringを復習することになりましたが)
ちゃんと最も大きい数字が表示されました。
理解。
では、2つ目。
Linear Search Algorithm
Pseudocode:
procedure linear search(x:integer, a1, a2, ...,an: distinct integers)
i := 1
while (i ≤ n and x ≠ ai)
i := i + 1
if i ≤ n then location := i else location := 0
return location{location is the subscript of the term that equals x, or is 0 if x is not found}
これをC言語で実際に動くようにしてみたのが以下
ちょっとこれは最後の1か0を表示するところがうまくいかなくて、こうなっちゃいました。
なんか…ガムテープ貼って止めたみたいな応急処置感。
まぁとりあえず、お目当の数字があれば1。なければ0と動く様にはなりました!
理解。
そして、2つのプログラムを書いてやっと分かったこと。ずっと先生が言ってたPseudocodeって「実際には動かないけど大雑把な仕組みを示す偽コード」って意味だったんだ…
pseudo=偽物の code=コード
理解。
0コメント