C++セミナー(初級)条件分岐処理(if)

HOME->講習会->プログラミングセミナー->C++セミナー(初級)


計算によっては,この変数がこの範囲に含まれるときは,別の計算が必要といったように条件によって処理を分岐させることがあります.ここでは,if文を使った条件分岐処理について紹介します.

目次

if文
複数の条件式
演習

if文

if文の基本文法は以下のようになっています.

if(条件式1){
    条件式1がtrueのとき実行される
}
else if(条件式2){
    条件式1がfalseかつ条件式2がtrueのとき実行される
}
else{
    すべての条件式がfalseのときに実行される
}

条件式1をチェックし,trueであれば「{ }」で囲まれた処理が実行され,falseであれば,else ifの条件式をチェックする…,if, else ifすべての条件式がfalseだった場合はelseの「{ }」で囲まれた処理が実行されます.

なお,else ifやelseは不要な場合は省略が可能です.たとえば,入力された値が10以上か判定するプログラムを書いてみましょう.

#include <iostream>
int main()
{
    int i;
    std::cin >> i;
    if(i>=10){
        std::cout << "10以上" << std::endl;
    }
    else{
        std::cout << "10未満" << std::endl;    
    }
}

上記のプログラムを実行して,さまざまな値を入力してためてみてください.10以上の値を入力して「10以上」,10未満の値を入力して「10未満」と表示されればOKです.また,今回,各条件でのプログラムが1行しかないので,「{ }」を省略することもできますが,プログラミング初心者は間違えやすいので,慣れるまでは「{ }」を省略しないようにしましょう.

今回の例では,条件式「>=」を使用しましたが,C++セミナー(初級)演算子で説明したように比較演算子を使用して条件式を記述するのが一般的です.比較演算子の一覧を再度掲載します.

演算子動作
A==BAとBが一致のときtrue(1),
そうでないときfalse(0)
A!=BAとBが不一致のときtrue(1),
そうでないときfalse(0)
A<BAがB未満のときtrue(1),
そうでないときfalse(0)
A<=BAがBが以下のときtrue(1),
そうでないときfalse(0)
A>BAがB超過のときtrue(1),
そうでないときfalse(0)
A>=BAがB以上のときtrue(1),
そうでないときfalse(0)

複数の条件式による分岐

場合によっては,条件式Aと条件式Bがあり,どちらも正しい場合は処理を行うといったときに以下のように記述するのはスマートではありません.

if(条件式1){
    if(条件式2){
        条件式1と条件式2がtrueのとき実行
    }
}

また,条件式Aと条件式Bがあり,どちらか一方の条件式が正しい場合は処理を行うといったときに以下のように記述するのもスマートではありません.

if(条件式1){
    条件式1もしくは条件式2がtrueのときに実行したい処理
}
else if(条件式2){
    条件式1もしくは条件式2がtrueのときに実行したい処理
}

どちらにも共通して言えることは,プログラムが長くなってしまいます.このような場合には,論理演算子を用いることでコンパクトに記述することができます.

if(条件式1 && 条件式2){
    条件式1と条件式2がtrueのとき実行
}

if(条件式1 || 条件式2){
    条件式1もしくは条件式2がtrueのときに実行
}

このように「&&」や「||」を用いることによって,複数の条件式を1つのifの中で用いることができるようになります.

演習

1.3つの入力\(a,b,c\)において,\(ax^2+bx+c=0\)における\(x\)を求めるプログラムを作成せよ.(Hint: 解の公式と判別式)