if文ネスト(入れ子)多重構造をよみとってみよう
ソーラー 「ここで、ソーラー精密工業の出番かな。
腕がなるね。
#include <iostream>
using namespace std;
int main() {
if(1){
if(1){
if(1){
if(1){
if(1){
if(1){
if(1){
if(1)cout<<"お花見にいこう!\n";
}
}
}
}
}
}
}
return 0;
}
から
🐈さんにたべられ
#include <iostream>
using namespace std;
int main() {
cout<<"お花見にいこう!\n";
return 0;
}
👆
ここまでシンプルになったプログラムを
今 再び・・・・・
あらたなプログラム
でで~ん
#include <iostream>
using namespace std;
int main() {
if(1) if(1) if(1) if(1) if(1) if(1) if(1)if(1)
cout<<"お花見にいこう!\n";
return 0;
}
として
再復活させたんだよ。
命令文
cout<<"お花見にいこう!\n";は
1つの命令文なので
if(1){cout<<"お花見にいこう!\n"; } のように
if(1)が複数の命令文に作用できるように
ブロック{}を
つかって
cout<<"お花見にいこう!\n";
を囲わなくても
if(1)cout<<"お花見にいこう!\n";
のように
if(1)を直接
cout<<"お花見にいこう!\n"; にくっつけても
いいわけだよね。
if(1)cout<<"お花見にいこう!\n";
も
1つの命令文とみなされます
そして
if(1) をくっつけた
if(1)if(1)cout<<"お花見にいこう!\n"; も
1つの命令文とみなされます。
このように
if(1){}をつかわなくても
さらに
if(1)if(1)if(1)cout<<"お花見にいこう!\n"; と
どんどん
if(1)をつけることができるので
このエピソードの一番最初のプログラムは
ブロック{}を省略して
if(1) を次々とくっつけて
if(1) if(1) if(1) if(1) if(1) if(1) if(1) if(1)
cout<<"お花見にいこう!\n";
と表記できるんだ
もちろん今までのように
if(1) if(1)cout<<"お花見にいこう!\n";
を
if(1) {if(1)cout<<"お花見にいこう!\n";}
とブロック{}で括って表記してもOKだね!
ビルド実行結果はもちろん
お花見にいこう!だね。」
てんC「
この命令文
if(1) if(1) if(1) if(1) if(1) if(1) if(1) if(1)
printf("お花見にいこう!\n");
において
if(1) if(1) if(1) if(1) if(1) if(0) if(1) if(1)
cout<<"お花見にいこう!\n";
や
if(1) if(0) if(1) if(1) if(0) if(1) if(1) if(1)
cout<<"お花見にいこう!\n";
のように
途中で if(0)がはいってくると
if(0)から先のプログラムは実行されないので
プログラムの実行結果は
お花見にいこう!ではなく
なにも表示されなくなるのですね。」
マックス 「なんかif文のネスト構造に慣れてきたな
ではここで問題だ~~~~はっは。
🐈さん?用意はいいか?」
🐈さん
「ちゅう🐭/
(もちろんOK!)」
マックス「今まではif文ネスト構造をつくってきたが・・・
なら、これはどうかな?
今度は・・・つくるだけでなく
つくったif文ネスト構造・・・
よみとれるかな?
#include <iostream>
using namespace std;
int main() {
if(1){ cout<<"PS1でいこう!\n";
if(1){ cout<<"PS2でいこう!!\n";
if(1){ if(1) cout<<"PS3でいこう!\n";
}
}
}
return 0;
}
さあ、これのプログラムの実行結果はど・う・な・る・か・な?(^^)
🐈さん?
🐈さん?」
🐈さん
「ZZZZZZZZZ. . . . . .」
ソーラー 「🐈さん 熟睡しているようです・・・」
🐈さん 「みゃおお~ん・・・」
ソーラー 「なになにっ🐈さん?
いってごらん」
🐈さん
「みゃあああ~~~ん」
マックス「な、なんか、たのしそうだな・・・」
ソーラー「じゃあ、僕が
このプログラムから
👇
プログラムの実行結果をよみとってみようかな
#include <iostream>
using namespace std;
int main() {
if(1){ cout<<"PS1でいこう!\n";
if(1){ cout<<"PS2でいこう!!\n";
if(1){ if(1) cout<<"PS3でいこう!\n";
}
}
}
return 0;
}
ソーラー「
このif文ネスト構造では
まずっ
いつもどおり
int main(){ return 0;}をはずしてみると
命令文
if(1){ cout<<"PS1でいこう!\n";
if(1){ cout<<"PS2でいこう!!\n";
if(1){ if(1) cout<<"PS3でいこう!\n";
}
}
}
が残るよね
この命令文の実行結果を知りたぁ~~~~~い
そのときは
この命令文のようにかぎ括弧{ }が上下に3つ並んでいるときは
if(1){ ・・・かぎ括弧1
if(1){ ・・・かぎ括弧2
if(1){・・・かぎ括弧3
} ・・・かぎ括弧3
} ・・・かぎ括弧2
} ・・・かぎ括弧1
まず
一番先頭の{
と
一番最後の}
のかぎ括弧1のペアに注目してみよう。
どうかな?
そおう、
一番先頭と一番外側の
if(1){ } ・・・かぎ括弧1のペアに
命令文
cout<<"PS1でいこう!\n";
if(1){cout<<"PS2でいこう!!\n";
if(1){ if(1)cout<<"PS3でいこう!\n";
}
}
は囲まれているんだ。
だから
if(1){ } ・・・かぎ括弧1で
if(1)のように
if文の()の中の論理式が真の値1をもつと
if(1){ } ・・・かぎ括弧1
の{ } 内の命令文が実行されることになります
。。。。。。。。。。。。。。。。。。。。。
if(1){cout<<" ";}ならif(1){ }がはずれ
cout<<" ";の命令文が実行されることになります
。。。。。。。。。。。。。。。。。。。。。。
すなわち
if(1){ }がはずれ
命令文
cout<<"PS1でいこう!\n";
if(1){cout<<"PS2でいこう!!\n";
if(1){ if(1) cout<<"PS3でいこう!\n";
}
}
が実行されることになります。
ここで
cout<<"PS1でいこう!\n";
はif文でないので
無条件で実行され
PS1でいこう!がコンパイル結果に表示されます。
cout<<"PS1でいこう!\n";
が実行されたあとは
命令文
if(1){cout<<"PS2でいこう!!\n";
if(1){ if(1) cout<<"PS3でいこう!\n";
}
}
が残ることになります。
この命令文も一番外側のif(1){ }
のかぎ括弧セットに
命令文
cout<<"PS2でいこう!!\n";
if(1){ if(1) cout<<"PS3でいこう!\n";
}
が
囲まれていて
一番外側のif(1){ }のかぎ括弧セットの
if(1)の()の中の論理式が真の値1をもつので
一番外側のif(1){ }のかぎ括弧セット内の
cout<<"PS2でいこう!!\n";
if(1){ if(1) cout<<"PS3でいこう!\n";
}
が実行されることになります
ここで
cout<<"PS2でいこう!!\n";
はif文でないので
無条件で実行され
PS1でいこう!につづいて
PS2でいこう!!が
プログラムの実行結果に表示されます。
いままでの命令が実行されると
プログラムの実行結果
PS1でいこう!
PS2でいこう!!
となっているはずです
さらに
cout<<"PS2でいこう!!\n";
が実行されたあとは
命令文
if(1){ if(1) cout<<"PS3でいこう!\n";
}
が残ることになります。
ここでも一番左のif(1)の論理式が1の値をもつので
if(1){ }のカッコ内の命令文が実行されることとなり
命令文
if(1) cout<<"PS3でいこう!\n";
が実行されます。
そして、ここでもif(1) の( )内の論理式が1の値をもつので
if(1)につづく命令文
cout<<"PS3でいこう!\n";
が実行されることになり
PS1でいこう!
PS2でいこう!!
につづき
PS3でいこう!
が
プログラムの実行結果に表示され
プログラムの実行結果
PS1でいこう!
PS2でいこう!!
PS3でいこう!
がコマンドプロンプト画面に表示されます。
どうかな🐈さん・・・?」
🐈さん「ZZZZZZZZZZ. . . . .
美味しいにゃ~ 」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます