for文による繰り返しの中 if()continue文でとばされた回の命令文の代わりとなる別の命令文を実行させてみよう 猫の喜びの声が聞こえる・・・

ソーラー 「かつお、かつお~~


純粋なねこのneeds《ニーズ》にこたえるためには


常に最新の技術をとりいれないと・・・・・


今日は

if()continue;


という命令文を仕入れてきたんだよ。


てんC。


if()continue;


はfor文の中でのみ用いられる命令文で


for(a=1;a<10;a++){

if(a==5)continue;

printf("%d回目のご飯はかつおです\n",a);

}


のように記述するんだ


このように記述すると


for文によりa=5回目の繰り返しが実行される際


if(a==5)continue;


のあとに続く命令文

printf("%d回目のご飯はかつおです\n",a);

実行されないんだ。


つまり


a=5のとき


if(a==5)の()内の


論理式

a==5



1


つまり真の値をもつため


if(a==5)につづく


continue;


が実行されるというわけなのさ


continue;


っていうと


なにかがコンティニューされるのかと思ったらそういうことはなく


continue;


につづく命令文は


実行されないという仕組みになってるんだ。


だから


次のようなプログラムが実行されると→」


#include <stdio.h>

int main(void){

int a;

for(a=1;a<10;a++){

if(a==5)continue;

printf("%d回目のご飯はかつおです\n",a);

}

return 0;

}


コンパイル結果


1回目のご飯はかつおです

2回目のご飯はかつおです

3回目のご飯はかつおです

4回目のご飯はかつおです

6回目のご飯はかつおです

7回目のご飯はかつおです

8回目のご飯はかつおです

9回目のご飯はかつおです


ソーラー「→for文による


a=5回目の時の


printf("%d回目のご飯はかつおです\n",a);


の繰り返しは


実行されないんだ。


このif(a==5)continue;によってとばされることになった


5回目のご飯はかつおです


に かわって


4回目のご飯はかつおです

6回目のご飯はかつおです

の間に

あらたに文章を記述してみたいな。



どうしよっかな~



5回目のご飯、お料理は なにが いいかな


どんな お料理だったら 😻ちゃん喜ぶかな 


どうかな


てんC」



てんC「かつおさんだけでなく、


まぐろさんも料理の素材に導入されてはいかがですか?


次のプログラムのように・・・


#include <stdio.h>

int main(void){

int a;


for(a=1;a<10;a++){

if(a==5)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)continue;

printf("%d回目のご飯はかつおです\n",a);

}

return 0;

}


コンパイル結果


1回目のご飯はかつおです

2回目のご飯はかつおです

3回目のご飯はかつおです

4回目のご飯はかつおです

5回目のご飯はまぐろです

6回目のご飯はかつおです

7回目のご飯はかつおです

8回目のご飯はかつおです

9回目のご飯はかつおです


ソーラー 「おぉっ  てんC~~~ 超ナイス!😊


さりげなく すごいね。


なんと 今まで


コンパイル結果


1回目のご飯はかつおです

2回目のご飯はかつおです

3回目のご飯はかつおです

4回目のご飯はかつおです

6回目のご飯はかつおです

7回目のご飯はかつおです

8回目のご飯はかつおです

9回目のご飯はかつおです



空欄だった5回目の場所に


新たに5回目のご飯はまぐろです が


表示されてる~」


てんCの手をとり喜ぶソーラー。


それほどまでにソーラーは


ねこ食事ミールに執着しているのだ。


ねこ食事ミールへのあくことのなき渇望。


さすがは お猫とお料理好き!なだけのことはある。


てんC 「そんなに喜んでいただけるとは・・・


光栄です。」


ソーラー 「これを応用すれば


コンパイル結果に


1回目の猫ご飯はまぐろ


5回目の猫ご飯はしゃけ


それ以外の全ての回の猫ご飯は


かつおというような


いろいろなネコのご飯の献立表を作製、表示できるんだよ


次のプログラムのように、ね(^^)/


#include <stdio.h>

int main(void){

int a;


for(a=1;a<10;a++){

if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);

if(a==1||a==5)continue;

printf("%d回目のご飯はNouvel de かつおです\n",a);

}

return 0;

}


コンパイル結果


1回目のご飯はまぐろです

2回目のご飯はNouvel de かつおです

3回目のご飯はNouvel de かつおです

4回目のご飯はNouvel de かつおです

5回目のご飯はしゃけです

6回目のご飯はNouvel de かつおです

7回目のご飯はNouvel de かつおです

8回目のご飯はNouvel de かつおです

9回目のご飯はNouvel de かつおです


ソーラー「このプログラムでは


愛猫ちゃんのためにまぐろ、しゃけのお魚料理のほかに


私が丹精こめて調理いたしました


かつおのなかでも最高級の素材をもちいた


新創作料理


Nouvel de かつおをご用意いたしました。


レディ」


てんC 「Nouvel de かつお・・・猫ちゃんの憧れ・・・


なんと 1回目と5回目以外の猫ご飯はぜんぶ


Nouvel de かつおなんですね(^^)」


ソーラーの手を取り喜ぶてんC。


ソーラーとお猫のお役に立てたことに


システムとして充足した喜びを感じているのだ。


ソーラー 「そう、


           今が旬の🐟かつお🐟、


🐟  🐟  🐟  🐟  🐟  🐟  🐟  🐟  🐟  🐟


🐟  🐟  🐟  🐟  🐟  🐟  🐟  🐟  🐟  🐟



これを用いた


新創作料理


Nouvel de かつおなんです。


おニャンこのお料理に


旬の時期を考えて 


🐟🐟 かつお🐟ちゃん を選択してみたんだよ(´▽`*)


おニャンこ ニャンニャンだね!


このプログラムは


a=1のときは 1回目のご飯はまぐろです を

a=5のときは 5回目のご飯はしゃけですを


それ以外の回は



2回目のご飯はNouvel de かつおです

3回目のご飯はNouvel de かつおです

4回目のご飯はNouvel de かつおです

6回目のご飯はNouvel de かつおです

7回目のご飯はNouvel de かつおです

8回目のご飯はNouvel de かつおです

9回目のご飯はNouvel de かつおです


このように


ご飯はNouvel de かつおです を


printf出力表示するんだ。 やったね。


もう 闇雲に猫まっしぐらだね。


このように


1回目と5回目に別の文章をコンパイル結果に表示するためには


まず


if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);



     if(a==1||a==5)continue;文の前に持ってきました


その後


if(a==1||a==5)continue;をつかって


a=1回目とa=5回目に実行されるはずの命令文


printf("%d回目のご飯はNouvel de かつおです\n",a);


が実行されないようにしました


👇


for(a=1;a<10;a++){

if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);

if(a==1||a==5)continue;

printf("%d回目のご飯はNouvel de かつおです\n",a);

}


そうではなく


if(a==1||a==5)continue;をつかって


a=1回目とa=5回目に実行されるはずの命令文


printf("%d回目のご飯はNouvel de かつおです\n",a);


のあとに

if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);


を記述しては


コンパイル結果がことなってきます。


👇


for(a=1;a<10;a++){

if(a==1||a==5)continue;

printf("%d回目のご飯はNouvel de かつおです\n",a);

if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);

}


実際にプログラムを構成してコンパイルしてみると


#include <stdio.h>

int main(void) {

int a;


for (a = 1; a<10; a++) {

if (a == 1 || a == 5)continue;

printf("%d回目のご飯はNouvel de かつおです\n", a);

if (a == 1)

printf("%d回目のご飯はまぐろです\n", a);

if (a == 5)

printf("%d回目のご飯はしゃけです\n", a);


}

return 0;

}


コンパイル結果


2回目のご飯はNouvel de かつおです

3回目のご飯はNouvel de かつおです

4回目のご飯はNouvel de かつおです

6回目のご飯はNouvel de かつおです

7回目のご飯はNouvel de かつおです

8回目のご飯はNouvel de かつおです

9回目のご飯はNouvel de かつおです


ソーラー「なぜなら



for (a = 1; a<10; a++) {

if (a == 1 || a == 5)continue;

printf("%d回目のご飯はNouvel de かつおです\n", a);

if (a == 1)

printf("%d回目のご飯はまぐろです\n", a);

if (a == 5)

printf("%d回目のご飯はしゃけです\n", a);


}



a=1またはa=5のとき


if (a == 1 || a == 5)continue;


が実行されてしまいます。


すると


if (a == 1 || a == 5)continue;


の後に続く命令文


printf("%d回目のご飯はNouvel de かつおです\n", a);

if (a == 1)

printf("%d回目のご飯はまぐろです\n", a);

if (a == 5)

printf("%d回目のご飯はしゃけです\n", a);


もすべて実行されないことになってしまいます。



ですので


a=1またはa=5回目の時の


printf("%d回目のご飯はNouvel de かつおです\n", a);

if (a == 1)

printf("%d回目のご飯はまぐろです\n", a);

if (a == 5)

printf("%d回目のご飯はしゃけです\n", a);


が実行されないため



コンパイル結果は


1回目のご飯はNouvel de かつおです

1回目のご飯はまぐろです

5回目のご飯はNouvel de かつおです

5回目のご飯はまぐろです

が表示されない


2回目のご飯はNouvel de かつおです

3回目のご飯はNouvel de かつおです

4回目のご飯はNouvel de かつおです

6回目のご飯はNouvel de かつおです

7回目のご飯はNouvel de かつおです

8回目のご飯はNouvel de かつおです

9回目のご飯はNouvel de かつおです


となります。


ですので


#include <stdio.h>

int main(void){

int a;


for(a=1;a<10;a++){

if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);

if(a==1||a==5)continue;

printf("%d回目のご飯はNouvel de かつおです\n",a);

}

return 0;

}


👆

このように

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);

if(a==1||a==5)continue;

printf("%d回目のご飯はNouvel de かつおです\n",a);


の前に記述すればOK 😊


きれいに


コンパイル結果


1回目のご飯はまぐろです

2回目のご飯はNouvel de かつおです

3回目のご飯はNouvel de かつおです

4回目のご飯はNouvel de かつおです

5回目のご飯はしゃけです

6回目のご飯はNouvel de かつおです

7回目のご飯はNouvel de かつおです

8回目のご飯はNouvel de かつおです

9回目のご飯はNouvel de かつおです


となるんだね。


このとき


        「「a=1回目またはa=5回目のとき」」の


printf("%d回目のご飯はNouvel de かつおです\n",a);


の命令文をとばして実行しないよう


if(a==1||a==5)continue;と


if()の()の中の論理式が


          「「  a==1||a==5  」」 


と記述されているところに注目だね。


どうかな 簡単かな?


if(a==1||a==5)は


論理式


a==1||a==5



a=1または5のとき


真の値1をもつことになり


if(a==1||a==5)につづく命令文


continue;


を実行するために記述されているんだよね。


ここで


このプログラムでif(a==1||a==5)continue;の


if(a==1||a==5)だけをとりのぞき


continue;とだけかかれた


次のプログラムを


#include <stdio.h>

int main(void){

int a;


for(a=1;a<10;a++){

if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);

continue; / *👈ここです💖😝*/

printf("%d回目のご飯はNouvel de かつおです\n",a);

}

return 0;

}


コンパイルしてみると


コンパイル結果


1回目のご飯はまぐろです

5回目のご飯はしゃけです


となります。


つまり


命令文continue;


の基本的な仕組みとは


for文の中でのみ用いられ


continue;


のあとにつづく


命令文を実行しないことにあるのです。


ですから


今のプログラムでは


for{}文の{}の中で


if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);


continue;

printf("%d回目のご飯はNouvel de かつおです\n",a);


と記述されているので


continue;

の前に記述されている


if(a==1)

printf("%d回目のご飯はまぐろです\n",a);

if(a==5)

printf("%d回目のご飯はしゃけです\n",a);


は実行されても


for文による 1回目から9回目の

printf("%d回目のご飯はNouvel de かつおです\n",a);

の繰り返しは


printf("%d回目のご飯はNouvel de かつおです\n",a);

continue;のあとにつづく

ために

実行されることはありません。


わたしの新創作料理Nouvel de かつおがぁぁあ パッションがぁぁ


1回も表示されていないとはぁ・・・


このように


if()のない


continue;だけが記述してあると


continue;の後につづく命令文


printf("%d回目のご飯はNouvel de かつおです\n",a);



for文によって 繰り返されるすべての回


実行されないのがわかったね。


そうならないために


if(a==1||a==5)continue;


のように記述して


continue;の後につづく命令文


printf("%d回目のご飯はNouvel de かつおです\n",a);


実行されない回を1回と5回だけに指定してきたんだね。」


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

作者を応援しよう!

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

応援したユーザー

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