if文ネスト(入れ子)構造をもったプログラムをを構成して実行してみましょう 

てんC「ではつづきを始めてみます。


#include <iostream>


using namespace std;


int main() {


int a=20;


if(a>0)


cout<<"らっき~\n";


return 0;


}


ビルド実行結果


らっき~


てんC「


このプログラムでは


まず


int a=20;


が実行されます


すると


if(a>0)の論理式a>0がa=20で


20>0


となり


真の値1をもつので


if(a>0)につづく命令文


cout<<"らっき~\n";


が実行されて


らっき~



コマンドプロンプト画面に表示されます。


そして


次のプログラムのように


#include <iostream>


using namespace std;


int main() {


int a=20;


if(a>0){


cout<<"らっこさん\n";


}


return 0;


}


ビルド実行結果


らっこさん



てんC「このプログラムのように


if(a>0)につづく命令文


cout<<"らっこさん\n";



ブロック{ }でくくってもプログラムは実行されます。



if(a>0)


cout<<"らっこさん\n";




if(a>0){


cout<<"らっこさん\n";


}



どちらのif文も同じプログラムとして


コンピュータには認識されています。」



ソーラー 「なるほど」


マックス「よくみかけるな、ブロック{}」


てんC「


では このプログラム内の


if(a>0){


cout<<"らっこさん\n";


}


のif(a>0){     }のなかに


命令文

cout<<"らっこさん\n";


に並んで


命令文


if(a>8){


cout<<"かもしかさん\n";


}


を追加してみると・・・


プログラムは以下のようになります

👇

#include <iostream>


using namespace std;


int main() {


int a=20;


if(a>0){


cout<<"らっこさん\n";


if(a>8){


cout<<"かもしかさん\n";

}

}

return 0;

}


                           」


ソーラー「??」


マックス「このプログラムをわかりやすくすると


#include <iostream>


using namespace std;


int main() {


int a=20;


if(a>0){


/*////////////////////////////////////////////////////////////*/


cout<<"らっこさん\n";


/*/////////////////////////////////////////////////////////////*/



/*////////////////////////////////////////////////////////////*/


if(a>8){


cout<<"かもしかさん\n";


} 


/*/////////////////////////////////////////////////////////////*/


}

return 0;

}


マックス「


どうだっ


cout<<"らっこさん\n";



if(a>8){


cout<<"かもしかさん\n";


} 


の二つの命令文が並んでいる。なあ」



ソーラー「


/*/////////////////////////////////////////////////////////////*/


なんて斬新な


コメント文の使い方なんだ~


/*/////////////////////////////////////////////////////////////*/


これで


cout<<"らっこさん\n";



if(a>8){


cout<<"かもしかさん\n";


} 


の2つの命令文が


if(a>0){     }のなかに記述されているのがよくわかるね。



てんC「そうですね


このプログラムでは


if(a>0){ }の中に


命令文


cout<<"らっこさん\n";と


命令文


if(a>8){


cout<<"かもしかさん\n";


}


が仲良くならんでいるのがわかります。


このif(a>0){}の{}の中の二つの命令文


cout<<"らっこさん\n";



if(a>8){


cout<<"かもしかさん\n";


}



if(a>0){}の()内の論理式a>0が


int a=20;


より


20>0



論理値1をもつので


両方ともに実行されていきます。


cout<<"らっこさん\n";


が実行されたあとは


if(a>8){


cout<<"かもしかさん\n";


}


が実行されるという流れです。


そして


if(a>8)のa>8はaが20の値をもつので論理値1をもつので


cout<<"かもしかさん\n";


も実行されます。


よって


ビルド実行結果は


らっこさん

かもしかさん


となります。


つまり


if(a>0){ }の論理式(条件式)a>0の判定の次に


{ }内の


if(a>8)命令文の論理式(条件式)a>8の判定が行われていくわけです。


このように


if文のなかにif文が入っているような構造は



               🌳ネスト構造🌳



とよばれています。


ここで


次のプログラムのように

👇

#include <iostream>


using namespace std;


int main() {


int a=20;


if(a>0){


/*////////////////////////////////////////////////////////////*/


cout<<"らっこさん\n";


/*////////////////////////////////////////////////////////////*/




/*////////////////////////////////////////////////////////////*/


if(a<-8){


cout<<"かもしかさん\n";


}


/*/////////////////////////////////////////////////////////////*/


}


return 0;


}


👆

if文であるif(a>0){ }のなかに


if(a<-8)のif文が記されていたら


どのような実行結果になるでしょうか?


if文においてはif( )文の( )の中の論理式が0か1を


もつかどうかで


命令文を実行するかどうかが判定されるので、


この場合 まず


if(a>0){ } において


int a=20;


により


論理式a>0が1の値をもつので


if(a>0){ }の{ }の中の


cout<<"らっこさん\n";


if(a<-8){


cout<<"かもしかさん\n";


}


の命令文が実行されることになり


cout<<"らっこさん\n";


が実行された後の次の命令文


if(a<-8){


cout<<"かもしかさん\n";


}


の実行においては


さきほどの論理式a>0=1とは関係なく


int a=20;より


論理式a<-8が偽となりfalseの値をもつので


if(0){


cout<<"かもしかさん\n";


}


となり



if(a<-8)


につづく


命令文


cout<<"かもしかさん\n";



は実行されないというわけです。」



ソーラー 「つまり


このプログラムは


 if(1){ 命令文; if(0)命令文;}のような構造になっていて


if(1)により


ブロック{}内の


命令文; if(0)命令文;


が実行されることになるけど


if(0)により


if(0)につづく命令文が実行されないんだね。


だから


cout<<"らっこさん\n";


が実行されても


cout<<"かもしかさん\n";


は実行されず



ビルド実行結果は


らっこさん~


になるっと😊


if()文の仕組みがわかってきたかな?」

  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る