プログラムの作り方
プログラムはどのような手順で作るのか、例をあげて説明します。
(1)どんなプログラムを作るか決める
おみくじプログラムを作ることにします。 実行されるごとに、いくつかの異なったメッセージがランダムに表示されるものです。
(2)そのプログラムの使い方を決める
js> load('...')
を行ったら
今日の運勢は○○です
などと表示されることにします。
ここでファイル名も決めておきます。
(3)プログラム全体の構成を決める
関数を使って書くことにします。 関数名は omikuji にしました。引数は必要ないので名前の後ろは括弧だけです。 printは関数の中で行う書き方を使うことにします。(値を返し、関数を呼び出す側でprintする方法もあります。) loadしたら実行されるように、関数定義のあとに関数呼び出しを書きます。
すると、全体の構成は次のようになります。
テキストエディタを使ってここまで入力し、先に決めたファイル名で保存します。 この時点でコメントも書いておきます。
(4)手順を考える
関数内で行うことがらを、行う順に書き出してみます。
- 1)乱数を発生させる
- 2)乱数の値によって場合分けし、それぞれのおみくじの内容を決める
- 3)表示する
以上3つのことを行うプログラムを書けばよいことがわかります。
3)はprint文で書けます。
2)はif文を使って場合分けする書き方を使えばよい。
1)は乱数を発生させる関数を使います。処理系で用意されています。
Math.random() はこの関数を呼び出すたびに0~1の範囲の数をランダムに返します。 この値を変数 ransu に覚えておき、ransuの値を使って場合分けすることにします。
2行追加し、このようになります。コメントは省略しています。
... の部分が場合分けの処理になります。 場合分けごとに、おみくじの内容を変数の値として覚えさせることにします。
変数の値としては数値だけでなく、文字列も使えます。 例えば
unsei = '大吉';
を行った後で
print ( '今日の運勢は', unsei, 'です' );
を実行すると
今日の運勢は大吉です
と表示されます。
さらに2行修正しました。
(5)プログラムの詳細部分を書く
いくつの場合に分けるか考えます。
- さいこー
- ぼちぼち
- いまひとつ
の3つの場合に分けるときの書き方は次のようになります。
if (...) { unsei = 'さいこー'; } else if (...) { unsei = 'ぼちぼち'; } else { unsei = 'いまひとつ'; }
条件を書けば完成です。 ransu には0~1の範囲の値が入っているので、これを3つに分けて
- 0~0.33 のとき さいこー
- 0.33~0.66 のとき ぼちぼち
- 0.66~1 のとき いまひとつ
にすることにします。 0.33と0.66は2箇所に現れていますが、0.33はぼちぼち、0.66はいまひとつの方に入れることにします。
ransuには0~1の範囲の値しか入っていないので、 さいこー の処理がされる条件としては ransu < 0.33 だけを書けばよいことがわかります。
if ( ransu < 0.33 ) { unsei = 'さいこー'; }
ぼちぼち が処理される条件は 0.33 <= ransu と ransu < 0.66 の2つですが、 最初に判定される条件 ransu < 0.33 が成り立たないときだけについて考えればよいので、0.33 <= ransu は不要で、ransu < 0.66 だけを書けばよいことが分ります。
いまひとつ が処理される条件は 0.66 <= ransu ですが、これは最初と2番目に判定される条件を2つとも満足しないときに対応するので else で良いことも分ります。
プログラムは次のようになります。
この形の場合分けは良く使われます。 場合分けにおける条件の書き方を、図とプログラムで対応させてみてください。
(6)動作するか確かめる
保存し何度か load を行って、そのたびに違った内容が表示されることを確かめます。 どの場合もちゃんと実行されるか、何度も実行してみましょう。