天国にいけるC言語入門 ヘキサ構造体 ver3.2128
for (zokkouhantei = 1; zokkouhantei == 1;){} 文をはdo{}while文に簡単に置き換えることができます
for (zokkouhantei = 1; zokkouhantei == 1;){} 文をはdo{}while文に簡単に置き換えることができます
以下 エクセレントC言語入門
いよいよ
最終段階ね
今さっきのエピソードでは
for (zokkouhantei = 1; zokkouhantei == 1;) {}文を使って
配列変数に適当に格納されている数値データを
大きい数値データから順に
配列変数に
入れ替え直すことに成功したワンw
マックス「いったい、にゃん😽のことお?」
以下 エクセレントC言語入門より
先ほどは
for (zokkouhantei = 1; zokkouhantei == 1;){} 文を使って
配列宣言
int hairetu[5];
により
生成される
配列変数
hairetu[0]
hairetu[1]
hairetu[2]
hairetu[3]
hairetu[4]
に
hairetu[0]に格納されている数値は0
hairetu[1]に格納されている数値は1
hairetu[2]に格納されている数値は2
hairetu[3]に格納されている数値は3
hairetu[4]に格納されている数値は4
と数値が代入されている状態から
hairetu[0]に格納されている数値は4
hairetu[1]に格納されている数値は3
hairetu[2]に格納されている数値は2
hairetu[3]に格納されている数値は1
hairetu[4]に格納されている数値は0
と
大きな数値から順に数値が代入されている状態に
変更することができたわ
そのプログラムはこちらです
👇
#include <stdio.h>
int main(void) {
int hairetu[5];
hairetu[0] = 0;
hairetu[1] = 1;
hairetu[2] = 2;
hairetu[3] = 3;
hairetu[4] = 4;
int i;
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
//🌞改行しています
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {
zokkouhantei = 0;
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
zokkouhantei = 1;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}//👈🌞ここまでがfor (k = 0; k < 4; k++) のブロック{}内の命令文です
}//👈🌞ここまでがfor (zokkouhantei = 1; zokkouhantei == 1;) のブロック{}内の命令文です
return 0;
}
プログラムの実行結果
01234
10234☆
12034☆
12304☆
12340☆
21340□
23140□
23410□
23410□
32410〇
34210〇
34210〇
34210〇
43210▽
43210▽
43210▽
43210▽
43210◎
43210◎
43210◎
43210◎
C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 2420) は、コード 0 で終了しました。
このウィンドウを閉じるには、任意のキーを押してください...
マックス「おもいだしたにゃ~😸」
以下 エクセレント言語入門より
このプログラムのfor (zokkouhantei = 1; zokkouhantei == 1;){}文は
do{}while文に
書き換えることができるの
それも
何も考えずに機械的に・・・ね💖
マックス「にゃんと😽
そんなことができるのかにゃん」
以下 エクセレントC言語入門より
今のプログラムの
for (zokkouhantei = 1; zokkouhantei == 1;){}文
👇
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {
zokkouhantei = 0;
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
zokkouhantei = 1;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}//👈🌞ここまでがfor (k = 0; k < 4; k++) のブロック{}内の命令文です
}//👈🌞ここまでがfor (zokkouhantei = 1; zokkouhantei == 1;) のブロック{}内の命令文です
👆
は
初期化式は
int zokkouhantei;
と
zokkouhantei = 1
により構成されているの
条件式は
zokkouhantei == 1
となっているわね
継続処理方法は記述されていないわ
そして
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;){}文である
👇
int zokkouhantei;//🌞初期化式
👇初期化式 👇条件式
for (zokkouhantei = 1; zokkouhantei == 1;) {
zokkouhantei = 0;
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
zokkouhantei = 1;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}//👈🌞ここまでがfor (k = 0; k < 4; k++) のブロック{}内の命令文です
}//👈🌞ここまでがfor (zokkouhantei = 1; zokkouhantei == 1;) のブロック{}内の命令文です
👆
により
最低1回は実行されることになるのが
for (zokkouhantei = 1; zokkouhantei == 1;){}文のブロック{}内の命令文
👇
zokkouhantei = 0;
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
zokkouhantei = 1;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
👆
というわけなの
マックス「
初期化式
条件式
最低1回は実行されることになる命令文がブロック{}内に記述されている・・・
部品わけができるのか・・・」
以下 エクセレントC言語入門より
ところで
do{}while文の仕組みについて考えてみない?
do{}while文は
まず
初期化式を記述する
次に
do{}while文を記述する
do{}whileの{}内には
最低1回は繰り返されることになる命令文を記述する
そして
do{}while(条件式);//🌞セミコロンは忘れやすいのでご注意ください
のように
whileの後に条件式を記述する
という仕組みになっているわね
準備は整ったわ
for (zokkouhantei = 1; zokkouhantei == 1;){}文
👇
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {
zokkouhantei = 0;
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
zokkouhantei = 1;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}//👈🌞ここまでがfor (k = 0; k < 4; k++) のブロック{}内の命令文です
}//👈🌞ここまでがfor (zokkouhantei = 1; zokkouhantei == 1;) のブロック{}内の命令文です
return 0;
}
👆
を
機械的に何も考えず
do{}while文に変換するには
👇
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;) {
zokkouhantei = 0;
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
zokkouhantei = 1;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}//👈🌞ここまでがfor (k = 0; k < 4; k++) のブロック{}内の命令文です
}//👈🌞ここまでがfor (zokkouhantei = 1; zokkouhantei == 1;) のブロック{}内の命令文です
return 0;
}
👆
の
初期化式
int zokkouhantei;
と
zokkouhantei = 1
を
まず
int zokkouhantei;
zokkouhantei = 1;
と記述し
次に
do{}while(条件式);
を記述するの
do{}while(条件式);
のブロック{}内には
for (zokkouhantei = 1; zokkouhantei == 1;){}文
の
ブロック{}内の
最低1回は繰り返されることになる命令文
zokkouhantei = 0;
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
zokkouhantei = 1;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}//👈🌞ここまでがfor (k = 0; k < 4; k++) のブロック{}内の命令文です
を記述し
do{}while(条件式);
の条件式の部分に
for (zokkouhantei = 1; zokkouhantei == 1;) の条件式
zokkouhantei == 1
を
記述すればいいの
となると
do{}while文は次のようになるわ
👇
int zokkouhantei;//🌞初期化式
zokkouhantei = 1;//🌞初期化式
do {
zokkouhantei = 0;
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
zokkouhantei = 1;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
} while (zokkouhantei == 1);//🌞条件式
👆
これで完成ね
あとは
この
do{}while文を用いてプログラムを構成して実行してみると
👇
#include <stdio.h>
int main(void) {
int hairetu[5];
hairetu[0] = 0;
hairetu[1] = 1;
hairetu[2] = 2;
hairetu[3] = 3;
hairetu[4] = 4;
int i;
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
//🌞改行しています
int zokkouhantei;//🌞初期化式
zokkouhantei = 1;//🌞初期化式
do {
zokkouhantei = 0;
int k;
for (k = 0; k < 4; k++) {
if (hairetu[k] <= hairetu[k + 1]) {
int a;
a = hairetu[k];
hairetu[k] = hairetu[k + 1];
hairetu[k + 1] = a;
zokkouhantei = 1;
}
for (i = 0; i < 5; i++) {
printf("%d", hairetu[i]);
}
printf("\n");
}
} while (zokkouhantei == 1);//🌞条件式
return 0;
}
プログラムの実行結果
01234
10234
12034
12304
12340
21340
23140
23410
23410
32410
34210
34210
34210
43210
43210
43210
43210
43210
43210
43210
43210
C:\Users\solar\source\repos\Project2\Debug\Project2.exe (プロセス 13872) は、コード 0 で終了しました。
このウィンドウを閉じるには、任意のキーを押してください...
以下 エクセレントC言語入門より
なんと
for (zokkouhantei = 1; zokkouhantei == 1;){}文
と
同じ実行結果が得られるのよ
このように簡単に
int zokkouhantei;
for (zokkouhantei = 1; zokkouhantei == 1;){}文
を
int zokkouhantei;
zokkouhantei = 1;
do{}while(zokkouhantei == 1);文
に置き換えることができるの
さあ、みんな
未来へはばたいていくのよ
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます