★分岐構造2★
前回は、基本的な使い方を説明しましたが、それで全て理解できるわけではありません。(理解できる方も大勢いらっしゃるとは思いますが・・・)
書かないといけないことは、どういう時にどのような条件を設定するか?ということです。
例えば、「以下」なのか「未満」なのか、この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 VC++ Express Edition>
英語の得点を入力してください:85
合格
続行するには何かキーを押してください・・・
<実行結果2 VC++ Express Edition>
英語の得点を入力してください: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 VC++ Express Edition>
整数を入力してください:5
入力データは奇数です。
続行するには何かキーを押してください・・・
<実行結果2 VC++ Express Edition>
整数を入力してください: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 VC++ Express Edition>
整数を入力してください:5
入力データは奇数です。
続行するには何かキーを押してください・・・
<実行結果2 VC++ Express Edition>
整数を入力してください: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;
}
|
<実行結果 VC++ Express Edition>
入力データは4の倍数です。
続行するには何かキーを押してください・・・
「4で割った余り」が「0(ゼロ)」であれば、「4の倍数」です。
何で、こんなプログラムを説明するかというと、前に書いた「応用」につながるからです。
普段の生活では、「4の倍数」を意識することはあまりありません。
が、プログラムの世界では、「4の倍数」を意識することもあるのです。
人間は、漠然と理解したり、意識せずに出来ることもありますが、コンピュータには出来ません。
しっかりと「なぜ、そうなるのか」を教えなければならないのです。
なぜ、そうなるのかという「原理」を意識して考えてみてください。