04 月 12 日(水)3-4h
アルゴロジック(1)
アルゴリズム体験ゲーム
「
アルゴロジック」
を利用して,
手続き型プログラミングの考え方を遊びながら学ぼう.
それと,C言語プログラミングへの準備として,前回と同様に
vimtutorを利用して,
vi エディタの操作方法についての学習も進めておこう.
本日は,レッスン2程度まで終わらせよう.
また時間があれば,
前回の開発プロセス
について,最後まで試してみよう.
プログラミング言語の分類
まず,プログラムとは,コンピュータに与える「指示書」のことだ.
コンピュータに実行させたい仕事や解決させたい問題について,
コンピュータが理解できる言語を使って,
人間(プログラマ)がプログラムを記述することになる.
現在,多種多様なプログラミング言語がある:
- 手続き型言語:
その仕事をどのように進めるのか?(How to do it?)
仕事の手順や問題の解法について記述する.
3J で学ぶ「C」は,大体,このタイプの言語だ.
コンピュータのネイティブ言語である「機械語」もこのタイプだ.
つまり,Cは,機械語に変換(翻訳)しやすく,
コンピュータの性能を引き出しやすい.
- 関数型言語:その仕事はどのようなものなのか?(What is it?)
仕事の目的や問題の意味について記述する.
すでに 2J で学んだ「Scheme」は,大体,このタイプの言語だ.
(Cにも,このタイプの要素が含まれている.)
例題:三角形の面積を計算せよ:
(底辺の長さを x,三角形の高さを y とする.)
- 手続き型の考え方:
(コンピュータの機械語の考え方,C言語的に記述すると...)
s = x;
s = s*y;
s = s/2;
return (s);
(人)「まず, x を記憶しておきなさい.
次に,その値に y を掛けなさい.
最後に,2 で割りなさい.
その結果が面積になるんだ.」
→(PC)「了解,できました.」
→(人)「早っ.」
(指示は面倒だったが,コンピュータは迷いなく,すばやく実行してくれる.)
- 関数型の考え方:(Scheme 的に記述すると...)
(人)「面積とは(底辺×高さ)÷2だよな.じゃ,よろしく.」
→(PC)「えーと,何から計算すれば...,
あー,まず括弧内の掛け算ですね...,
うー,それから割り算ですか...,
お待たせしましたー.」
→(人)「...待ちました」
(指示は簡単だが,コンピュータが考えながら実行するので,
複雑な問題では時間がかかる場合がある.)
注意:「C言語ならば,すべて手続き型」と言っているワケではない.
上の例題のような簡単な問題であれば,
Cでも普通は,関数型と同様の形式で,次のように記述する:
そして,このソースコードをコンパイルすると,
上の手続きのような形の機械語プログラムに変換される.
機械語は,すべて手続き型だ.
(c) 2017, yanagawa@kushiro-ct.ac.jp