制御構文
今回から、制御構文の項目に入っていきます。
プログラムとは、基本的に上から下に処理が進んでいくのですが、
制御構文を使うことによって、
- 流れを分岐させたり
- 特定の範囲を繰り返したり
- 好きな位置にジャンプしたり
といった処理の進ませ方をすることができるようになります。
これらを組み合わせることにより、複雑な処理を行うことが実現できるわけです。
ココがポイント
制御構文によって、複雑なフローの処理を行える
if 文
それではさっそくですが、制御構文を1つお教えいたします。
1つ目の制御構文は、 if 文です。
もしかしたら if という名前から想像がつくかもしれませんが、これは、
もし〜だったら
という処理、つまり、条件分岐を行うための構文になります。
ココがポイント
if 文とはもし〜だったら、という条件分岐を行うための構文
if文の構文
if 文の構文を見てみましょう。
このようなプログラムで使用します。
if ( /*ここに条件式を書く*/ )
{
// 条件がなりたつときにここの処理が実行される
}
if () と書いて、かっこの中に条件分を書きます。
その条件分が真であるとき、つまり条件が整ったときに、{} の中の処理が実行されます。
そしてその条件分は以下のように書きます。
- a == b (a と b が等しければ)
- a != b (a と b が異なれば)
- a < b (a が b より小さければ)
- a <= b (a が b 以下(等しいか、小さい)であれば)
- a > b (a が bより大きければ)
- a >= b(a が b 以上(等しいか、大きい)であれば)
等しければ、の演算子は、== (= が二つ)であることに注意してください。
= (=が一つ)だと、代入の演算子になります。
ココがポイント
if 文の構文は、 if( 条件式){条件が真の時処理される}
else 文、else if 文
条件が偽の時、つまり条件が整わなかった時の処理も行うことができます。
以下のようにします。
if ( /*条件式*/ )
{
}
else
{
// 条件が偽の時ここの処理が実行される
}
ココがポイント
else 文で、条件が偽の時の処理を行える
また、一つ目の条件は偽で、さらに条件式をつけたい時は if 〜 else 文を使用します。
if( /*一つ目の条件式*/ )
{
}
else if( /*二つ目の条件式*/ )
{
}
else
{
}
のように書きます。
ココがポイント
複数の条件で分岐したい場合は else if を用いる
if 文の具体例
それでは、if 文の具体例を見ていきましょう。
int a = 100, b = 200; // このように続けて宣言、初期をすることができる。
if( a == b )
{
// ここの処理は通るか?
}
さて問題です、上記の「ここの処理は通るか?」の部分の処理は行われるでしょうか?
正解は、行われません。
なぜなら、a == b は 100 == 200 という意味になりますから、条件は成り立たちません。
if 文の感覚が掴めたでしょうか?
それでは次の日本語から if 文を書いてみてください。
a が 300、b が 200 の時、a と b が異なる時に「異なる」という文字列を表示するプログラムを書いてください。
正解は、
int a = 300, b == 200;
if( a != b )
{
printf( "異なる" );
}
となります。
いかがでしょうか?
簡単すぎるでしょうか?それとも難しいでしょうか?
日本語で条件式を考えて、それをプログラムに落とし込むというのは大変重要な作業になります。
自分なりにプログラムを改造して、色々な条件分を書いてみてください。