前回は、基本的な使い方を説明しましたが、それで全て理解できるわけではありません。(理解できる方も大勢いらっしゃるとは思いますが・・・)
書かないといけないことは、どういう時にどのような条件を設定するか?ということです。
例えば、「以下」なのか「未満」なのか、この2つはまったく意味が異なります。
自分が設定したい「条件」をいかに正しく設定できるか(理解して書いているか)ということが問われます。
多くの場合、プログラムは「自分の考え」を具現化するために作成されます。
例えば、シューティングゲームを作ることを考えて見ましょう。
「もしも、自機の弾が敵に当たったら、敵が消滅する」という「条件」をどう記述しますか?
もう少し、身近(単純)な例を書いてみましょうか。
「ある数」が「偶数」か「奇数」かを調べるには、どのような「条件」を書きますか?
ほとんどの場合、「日本語」を「C言語」に変換する「皆さん」の「言語変換能力」が試される訳です。
「プログラムって?」でも書きましたが、コンピュータに指示を出す方法を考えるのがプログラマです。
やりたい事は、通常「日本語」で考えますが、書かなければならないのは「C言語」という「プログラム言語」です。
「基礎」も大事ですが、「応用」(自分で考えること)の方が重要だと思います。
では、「応用」です。
英語(何でも良いのですが)のテストがありました。
得点を入力し、80点以上であれば「合格」と表示するプログラムを作ってみましょう。
解答例です。
<sample program 008-01>
#include <stdio.h> int main(void) { int english; printf("英語の得点を入力してください:"); scanf("%d", &english); if (english >= 80) { printf("合格\n"); } return 0; } |
<実行結果1>
英語の得点を入力してください:85 合格 続行するには何かキーを押してください・・・
<実行結果2>
英語の得点を入力してください:63 続行するには何かキーを押してください・・・
これは、前回の「応用」で出来る範囲だと思います。
では、上にも書きましたが、「偶数」か「奇数」かを調べるプログラムを作ってみましょう。
なぜ、「偶数」か「奇数」かを調べなければならないのか?というと「応用」だからです。
「考える」という上で大事な「応用」です。
そんな「小学校で習うようなこと」を考えるより、もっと「やらないといけないこと」があるんじゃないの?
と思い勝ちですが、「偶数」と「奇数」の区別をきちんと説明できる方がどれだけいるのでしょうか?
「偶数」って何でしょうか?「奇数」って?説明できますか?
<sample program 008-02>
#include <stdio.h>
int main(void)
{
int input;
printf("整数を入力してください:");
scanf("%d", &input);
if ( 条件 ) {
printf("入力データは奇数です。\n");
}
return 0;
}
|
さて、この「条件」の部分に、皆さんは何を書きますか?
私達(プログラマ)がやらなければならないことは、「コンピュータに指示を出す」ことです。
コンピュータに「偶数」と「奇数」を判別させるためにしなければならないこと、を考えるのです。
※必要であれば変数を追加してください。
解答例です。
<sample program 008-03>
#include <stdio.h> int main(void) { int input; int result; printf("整数を入力してください:"); scanf("%d", &input); result = input % 2; if (result == 1) { printf("入力データは奇数です。\n"); } return 0; } |
<実行結果1>
整数を入力してください:5 入力データは奇数です。 続行するには何かキーを押してください・・・
<実行結果2>
整数を入力してください:8 続行するには何かキーを押してください・・・
「偶数」か「奇数」かは「2で割った余り」を調べれば分かります。
このプログラムでは、変数「result」に、変数「input」の中身を「2で割った余り(%)」を代入しています。
その上で、「result」の中身が、「1」と「等しい」かどうかを調べています。
これは、次のように書くこともできます。
<sample program 008-04>
#include <stdio.h> int main(void) { int input; printf("整数を入力してください:"); scanf("%d", &input); if ((input % 2) == 1) { printf("入力データは奇数です。\n"); } return 0; } |
<実行結果1>
整数を入力してください:5 入力データは奇数です。 続行するには何かキーを押してください・・・
<実行結果2>
整数を入力してください:8 続行するには何かキーを押してください・・・
変数「result」を使わなくても、「条件」の部分に計算式を入れることで判断することも出来ます。
では、「ある数」が「4の倍数」かどうか、はどうでしょう?
考えてみてください。
解答例です。
<sample program 008-05>
#include <stdio.h> int main(void) { int input; printf("整数を入力してください:"); scanf("%d", &input); if ((input % 4) == 0) { printf("入力データは4の倍数です。\n"); } return 0; } |
<実行結果>
入力データは4の倍数です。 続行するには何かキーを押してください・・・
「4で割った余り」が「0(ゼロ)」であれば、「4の倍数」です。
何で、こんなプログラムを説明するかというと、前に書いた「応用」につながるからです。
普段の生活では、「4の倍数」を意識することはあまりありません。
しかし、プログラムの世界では、「4の倍数」を意識することもあるのです。
人間は、漠然と理解したり、意識せずに出来ることもありますが、コンピュータには出来ません。
しっかりと「なぜ、そうなるのか」を教えなければならないのです。
なぜ、そうなるのかという「原理」を意識して考えてみてください。