== プログラムってどんなもの ==
プログラムってどんなものでしょうか。
コンピュータのプログラムを考える前に、日常生活で目にすることのあるプログラムを見てみましょう。
音楽会のプログラム、運動会のプログラム、大学祭のプログラムなどイベントや行事のプログラムがありますね。
たとえば運動会のプログラムにはこんなことが書かれています。
{{{
2008年度地区運動会プログラム
日時 : 4月27日 午前10時より
場所 : 小学校グラウンド
1.開会式
2.ラジオ体操
3.障害物競走
4.玉入れ
5.地区対抗リレー
}}}
1行目にタイトル「2008年度地区運動会プログラム」があります。<
>
2、3行目には「日時」と「場所」が書かれています。<
>
4行目以降は運動会の内容で、行われる順番に記述されています。
他の行事のプログラムでも同様に、
. 1)タイトル
. 2)基本的な情報
. 3)行われる内容を時間順に並べたもの
でできています。
ではコンピュータでのプログラムを見てみましょう。
{{{
int main(int argc, char* argv[])
{
int tate, yoko, nmax;
tate = atoi( argv[1] );
yoko = atoi( argv[2] );
nmax = 0;
init();
move(0, 0, 1, 3);
}
}}}
これも
. 1)タイトル
. 2)基本的な情報
. 3)行われる内容を時間順に並べたもの
が書かれているのように見えますね。その通りです。
プログラムは '''行うことがらを順番どおりに記述したもの''' なのです。
----
=== 詳細なプログラム ===
上で見た運動会のプログラムは簡単なものでしたが、スタッフ用のプログラムにはもっと詳しい情報が書かれています。
集合時間は何時、道具の準備、グラウンドの整備、各競技の進行の仕方などです。
例えば、障害物競走の部分は
. 選手は入場門に集合
. 整列、点呼
. 障害物を配置
. 選手入場
. ゴールの準備
. スタートラインに整列
. スタートの合図
. …
のようになるでしょう。
詳細なプログラムがちゃんと出来ていればスムーズに進行できるでしょうし、スタッフが急に変更された場合でもすぐに対応できるでしょう。
----
=== ハードウエアとソフトウエア ===
元々は計算機分野の用語で、ハードウエアは計算機の装置自体を、ソフトウエアは計算機を動かすための命令群などを指していました。
現在はコンピュータに限らずハードウエア、ソフトウエアという言葉を使います。
{{{
ハードウエアは形ある「もの」そのものを指します。
ソフトウエアはものの「使い方」などのことを言います。
}}}
文字通りハードウエアは硬いもの、ソフトウエアは柔らかいもののことです。
一度作ると簡単には変更できないものがハードウエア、比較的簡単に変更できるものがソフトウエアと考えると良いでしょう。
----
=== プログラム ===
上で述べたことを表にするとこのようになります。
|| ||コンピュータ||一般||
||ハードウエア||装置||もの||
||ソフトウエア||プログラム||使い方||
使い方を知っていないとパソコン(コンピュータ)は使えません。
表の中の「使い方」とある部分がこのことに対応しますが、これは人が使うときに「人が使い方を知っている」ということです。
表の中の「プログラム」とある部分を同様に考えると、
'''動作の仕方をコンピュータが知っている'''ということになります。
つまり'''「プログラミングとは動作の仕方をコンピュータに教える」'''ことです。
----
=== パソコンと会話する ===
友達や他の人と会話するときには、自分の話がちゃんと伝わったのか、それを了解してくれたのか、断られたのか、といったことを知らず知らずのうちに確認していますね。
プログラミングの授業ではパソコンとの会話を行うことになります。そこでも、
. 自分がパソコンに対して言ったことが'''ちゃんと伝わったのか'''、伝わらなかったのか。
. 伝えたことに対してパソコンはちゃんと(指示したとおりの)処理をしてくれたのか。
は'''自分で判断'''しなければなりません。
{{{
これからパソコンを使った実習が毎回あります。
練習問題や課題を行うにあたっては、次の手順を守ってください。
}}}
'''1)予想する'''
. データを記述するときには、これを利用した結果がどうなるかを必ず考えること。
. パソコンを用いて実際に行ってみる(実験)の前に、しっかり考えることが理解につながります。
'''2)実験する'''
. パソコンを用いて実際に動作させてみます。
. その結果が正しいかどうかはどうやって確認するのでしょうか?
'''3)予想と実験の結果を比較する'''
. 実験の結果は解答と比較するのではなく、実験の前に行った予想と比較すること。
. 結果が一致しなかったときは、予想が間違っていたのか、実験が間違っていたのか考察することで、次回の糧になります。
予想と結果が一致するようになれば、理解できたことになります。
いつも予想通りの結果が得られるのなら、もう実験する必要はなくなりますね。
予想どおりにプログラムが動くようになれば、プログラムが書けるということです。
----
=== いろいろなプログラミング言語 ===
プログラムを作るにはプログラミング言語が使われます。
プログラミング言語にもさまざまな種類があります。
用途により使い分けられています。
私が最初に習ったのは
. Fortran
で、その後
. Cobol, PL/1, Basic, Pascal, Logo, Smalltalk, Lisp, Scheme,
. C, Snobol, Awk, Perl, Prolog, Python, Java, Javascript
を覚えました。
どれか1つをマスターすれば、他の言語は簡単に覚えられます。
----
=== ECMA script ===
この授業では ECMA script について学びます。<
>
ECMA script はブラウザで動作する javascript のコア部分に対応します。
. ECMA script + ブラウザ対応部分 = javascript
と考えるとよいでしょう。
なお javascript は Netscape社の付けた名前です。
他の会社のもの、他のブラウザでは別の名前のこともあります。
また java と javascript は名前は似ていますが全く別のものです。
どちらもプログラミング言語なのでややこしい話です。
java は sun社が無償で提供しています。
----
=== Rhino ===
ここで使用する
[[http://www.mozilla-japan.org/rhino/|Rhino]](ライノ)は Javaで書かれたjavascriptの処理系です。
授業ではこれを利用します。