目的
プログラムの流れの分岐や繰返しに慣れるようにする。
内容
①キーボードから5つの数字を読み込んで、小さい順に表示するプログラムを作成する。
②入力する回数に従い、点数が減るような仕組みをいれたゲーム(プログラム)を作成する。
ソースコード
以下に内容の①、②のソースコードを示す。
①-1



①-2(配列使用)


②


結果
3の①、②の実行結果の画面キャプチャを図1,2、3に示す。




考察
3の①-1の小さい順に並べるプログラムは、a~eの5個の変数に値を自身で適当に代入し、まずaをbと比べてaの値がbの値より大きい場合はaとbの値を交換するというのをaと残りのc~eも同様に比べることによって、aには必然的に一番小さい値が入る。これをbの場合、cの場合、dの場合とやることにより、a~eの値が小さい順になる。しかし、このやり方では時間がかかると考え、3の①-2で配列を利用してバブルソートを行った。for文を2回使ったがfor文の中身としては、3の①-1と同じことをした。こちらのプログラムの方が早く、コンパクトになった。
3の②-2のゲームを作成するプログラムでは、最初のdo文で得点、回数、0~99の数の乱数を初期化しているが、ここで初期化を行ないと、関連しているwhileでゲームをもう一度やるかどうかの際、もしやると「1」を入力した場合doの部分ではなく、例えばその上に初期化しておくと、まだ正解してないのに途中で終わってしまう可能性がある為、最初のdo文で初期化しておいた。
3つ目のdo文では、数当てゲームの0~99の解答場所であるが、もし0~99以外の数を入力してしまった場合に備え、whileでは0~99の数を入力しないとdo文を抜け出せないというプログラムを作成した。2つ目のdo文では3つめのdo文を囲んでおり、また関連するwhileでは、10回まで数を入力できることにした。この数当てゲームは、100点満点の1回間違えるごとに-10で10回間違えると得点は0点になり、0点になるとゲーム終了に設定した。
今回のプログラムで使用したif文は、if文の式の値を調べて、その値が真となった時にのみ文を実行した。また、偽の時はelse文を実行した。また、do文はwhileの式を評価した値がtrueである限り、doの中の文を繰り返した。また、for文は初期化部を一度だけ評価・実行した。式を評価した値がtrueである限り、文を実行して、更新部を評価・実行することを繰り返した。
まとめ
数を小さい順に並び変える際、配列を使い、バブルソートを使うと計算量的に良いプログラムになる。後判定繰り返しは、do文によって実現出来る上、前判定繰り返しは、while文とfor文によって実現でき、またwhile文とfor文は相互に置換することが可能だ。
コメントを残す