天国にいけるC言語入門 ヘキサ構造体 ver3.2128
for (i = 1; i == 1;){}文をdo{}while文でかきかえてみよう for (i = 1; i == 1;){}文とdo{}while文はとても仲良しで置き換えることができます
for (i = 1; i == 1;){}文をdo{}while文でかきかえてみよう for (i = 1; i == 1;){}文とdo{}while文はとても仲良しで置き換えることができます
つづきです
以下 エクセレントC言語入門より
ではでは(*´▽`*)
今のプログラムを実行してみましょう
#include <stdio.h>
int main(void) {
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
}
return 0;
}
プログラムの実行結果
C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 23668) は、コード 0 で終了しました。
このウィンドウを閉じるには、任意のキーを押してください...
マックス「
まあ
もともと
for (zokkouhantei = 1; zokkouhantei == 1;)
に
zokkouhantei = 1
が
設定されているので
zokkouhantei == 1
は
真の値1をもつことになるので
🌞1回🌞
だけは
for (zokkouhantei = 1; zokkouhantei == 1;){}のブロック{}内の命令文
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
👆
が
実行されるのはあたりまえか
if (a < 0)のaの値によって
zokkouhantei = 1;
が実行されるかどうかが決まる
つまり
条件式
zokkouhantei == 1
が真の値1を持つかどうかが決まる
つまり
条件式
zokkouhantei == 1
が真の値を持つかどうかで
for (zokkouhantei = 1; zokkouhantei == 1;){}のブロック{}内の命令文
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
👆
が
実行されるかどうかがきまるってわけだ
まあ 当たり前か
簡単なことだな
以下 エクセレントC言語入門より
そうね
マックス「・・・まてよ・・・
なんか
🌞最低1回は🌞
🌞ブロック{}内の命令文が実行される🌞
って
なんか
そんなことができる方法がなかったか・・・?
なんだったっけ?
あれは そう 確か・・・
1万5千年前だったか・・・
はじめて あいつに出会ったのは・・・
あいつはいうことをきかなかったからなぁ・・・・・
確か あいつの名前は・・・
以下 エクセレントC言語入門
いか天
じゃなかったかしら?
マックス「ちが~うぅ
思い出した
🌞最低1回は🌞
🌞ブロック{}内の命令文が実行される🌞
それは
🌞do while{}文だ🌞
以下 エクセレントC言語入門より
ここで
🌞do while{}文🌞
が出てくるとは・・・
通ね・・・
マックス「
今のプログラム
👇
#include <stdio.h>
int main(void) {
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
}
return 0;
}
プログラムの実行結果
C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 23668) は、コード 0 で終了しました。
このウィンドウを閉じるには、任意のキーを押してください...
👆
は
条件式
zokkouhantei == 1
が
真の値を持つかどうかによって
for (zokkouhantei = 1; zokkouhantei == 1;){}のブロック{}内の命令文
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
👆
が
繰り返し実行されるかどうかきまるんだろう
そして
条件式
zokkouhantei == 1
が
いずれ
真の値1を持つことになるかならないかにかかわらず
for (zokkouhantei = 1; zokkouhantei == 1;){}のブロック{}内の命令文
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
👆
が
最低一回は実行される
だって
for (zokkouhantei = 1; zokkouhantei == 1;)
のなかで
zokkouhantei = 1
が記述されているので
zokkouhantei == 1
は
1== 1
となり
真の値1を持つことになるので
最初の1回目の
for (zokkouhantei = 1; zokkouhantei == 1;){}のブロック{}内の命令文
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
👆
の繰り返しは
確実に実行されるからなあ にゃはは
これも当たり前か
だったら
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
}
は
最低1回はブロック{}内の命令文が実行される
do{}while文でかきかえることができるんじゃないか?
以下 エクセレントC言語入門より
そ、それは・・・
なんてすばらしいアイデアなの
マックス「
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
}
を
do{}while文でおきかえるのは簡単じゃないか?
do{}while文の
ブロック{}内には
最低1回は実行される命令文を記述するので
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
👆
を
記述すればいいんじゃないか?
そして
zokkouhantei = 1;
により
zokkouhantei に1が代入され
zokkouhantei == 1
が
1==1
となり
条件式
🌞zokkouhantei == 1🌞
が
真の値1を持つことになれば
do{}while文のブロック{}内の命令文
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
👆
が実行されるようにするには
do{}while文の条件式は
zokkouhantei == 1
で決定でいいんじゃないか(註を参照してください)
となると
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {
int a;
a = 5;
zokkouhantei = 0;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
}
は
int zokkouhantei ;
zokkouhantei = 1
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
}while (zokkouhantei == 1);//🌞条件式はこのように最後に記述します セミコロン;を打ち忘れやすいのでご注意ください
となる
これで決定だ~~~~~~
わおう
☆ ☆ ☆
註
do{}while文
は
初期化式
条件式
継続処理方法
の3つにより成り立っています
その
初期化式
条件式
継続処理方法
が決定すれば
do{}while文の完成となります
この場合
do{}while文は
👇
int zokkouhantei ;
zokkouhantei = 1
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
}while (zokkouhantei == 1);//🌞条件式はこのように最後に記述します セミコロン;を打ち忘れやすいのでご注意ください
👆のように構成されています
初期化式は
int zokkouhantei ;
zokkouhantei = 1;
となっていますが
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {}文の
初期化式である
int zokkouhantei ;
zokkouhantei = 1;
を
そのまま
do{}while文の初期化式に設定しています
do{}while文の条件式は
zokkouhantei == 1
となりますが
これも
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {}文の
条件式
zokkouhantei == 1
を
そのまま
do{}while文の条件式に設定しています
for (zokkouhantei = 1; zokkouhantei == 1;) {}文
の
for (zokkouhantei = 1; zokkouhantei == 1;😊ここの部分😊)
には
zokkouhanteiに格納される値を変化させながら繰り返しをおこなうための
zokkouhantei++;のような
継続処理方法のような記述
は
みあたりませんねw
ですので
do{}while文にも条件式は設定されていません
☆ ☆ ☆
以下 エクセレントC言語入門より
な、 なんて 技の冴え・・・
マックス「
では
for (i = 1; i == 1;){}文をdo{}while文で置き換えたプログラムを
実行だ!
#include <stdio.h>
int main(void) {
int zokkouhantei;
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
return 0;
}
プログラムの実行結果
C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 6280) は、コード 0 で終了しました。
このウィンドウを閉じるには、任意のキーを押してください...
マックス「このプログラムの場合
1回だけ
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
のブロック{}内の命令文
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
👆
は実行される
まず
zokkouhantei = 0;
に実行により
zokkouhanteiに0が代入される
次に
int a;
a = 5;
により
条件式
a < 0
は
5<0
となり
a < 0
は
偽の値0をもつことになるので
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
のブロック{}内の命令文
printf("プログラムは実行されました\n");
zokkouhantei = 1;
は
実行されることはない
ということは
zokkouhantei は1の値をとることはなく
ブロック{}内の命令文
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
👆
の最初の命令文
zokkouhantei = 0;
により
zokkouhanteiに格納されているデータは0のままとなるので
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
の
while (zokkouhantei == 1)
の
zokkouhantei == 1
が
0==1
となり
真の値1をもつことはない
よって
2回目の
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
のブロック{}内の命令文
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
の繰り返し実行が起こることはないってわけだ」
以下 エクセレントC言語入門
とても良い説明ね
そんなあなたに(^_-)-☆
いいね!
を
1クリック!
マックス「い、いやあ そ、そうか・・・
今のプログラムは
aに5が代入された場合だったろう
今度は
aは-5が代入された場合で
for (i = 1; i == 1;){}文をdo{}while文で置き換えたプログラムを
実行だ!
#include <stdio.h>
int main(void) {
int zokkouhantei;
do {
zokkouhantei = 0;
int a;
a =-5;//👈🌞ここです
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
return 0;
}
プログラムの実行結果
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
・
・
・
・
・
・
・
マックス「このプログラムの場合
1回は必ず
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
のブロック{}内の命令文
👇
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
👆
は実行されるんだ
なぜかって?
それは・・・そ~いう仕組みなのだ
まず
zokkouhantei = 0;
の実行により
zokkouhanteiに0が代入される
次に
int a;
a =-5;
により
条件式
a < 0
は
-5<0
となり
a < 0
は
真の値1をもつことになるので
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
のブロック{}内の命令文
printf("プログラムは実行されました\n");
zokkouhantei = 1;
は
実行されるのだ
まず
printf("プログラムは実行されました\n");
が実行されると
コマンドプロンプト画面に
プログラムは実行されました
が表示される
次に
zokkouhantei = 1;
の実行により
zokkouhantei には1が代入される
zokkouhantei は1の値をとるので
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
の
while (zokkouhantei == 1)
の
zokkouhantei == 1
が
1==1
となり
真の値1をもつことになる
よって
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
のブロック{}内の命令文
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
の2回目の繰り返し実行が起こることになるわけだ
2回目の繰り返しでは
まず
zokkouhantei = 0;
の実行により
zokkouhanteiに0が代入される
次に
int a;
a =-5;
により
条件式
a < 0
は
-5<0
となり
a < 0
は
真の値1をもつことになるので
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
のブロック{}内の命令文
printf("プログラムは実行されました\n");
zokkouhantei = 1;
は
実行されるのだ
まず
printf("プログラムは実行されました\n");
が実行されると
コマンドプロンプト画面に
プログラムは実行されました
が表示される
次に
zokkouhantei = 1;
の実行により
zokkouhantei には1が代入される
zokkouhantei は1の値をとるので
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
の
while (zokkouhantei == 1)
の
zokkouhantei == 1
が
1==1
となり
真の値1をもつことになる
よって
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
のブロック{}内の命令文
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
の3回目の繰り返し実行が起こることになるわけだ
以下 ずっと
3回目の繰り返し実行
4回目の繰り返し実行
5回目の繰り返し実行
6回目の繰り返し実行
7回目の繰り返し実行
・
・
・
・
・
がおこなわれ
コマンドプロンプト画面に
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
・
・
・
・
・
・
・
が表示されつづけるわけだ
まあ
while (zokkouhantei == 1)
の
条件式
zokkouhantei == 1
が真の値1をとり続ける限り
do {
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
} while (zokkouhantei == 1);//🌞セミコロン;を打ち忘れやすいのでご注意ください
のブロック{}内の命令文
zokkouhantei = 0;
int a;
a = 5;
if (a < 0) {
printf("プログラムは実行されました\n");
zokkouhantei = 1;
}
が実行され続けるので
プログラムの実行結果
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
プログラムは実行されました
・
・
・
・
・
・
が表示されつづけるわけだ
うむ
do while{}文の仕組みはこんなところか?」
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます