前判定の「while」と後判定の「do-while」

while文は前に習ったぞい。今回は後から判定するdo-while文じゃ。
とりあえずwhile文とdo-while文を並べて比較してみようかの。

見て分かると思うが、do-while文の方は、一度は繰り返す文を実行するわけじゃ。
普通のwhile文は条件が偽(no)なら繰り返す文は、一回も実行されないんじゃがの。
実行文

プログラムと実行結果をそれぞれ見てみるとしようかの。
while文
#include <stdio.h> main() { int i=0; while(i>0) { printf("test\n"); } }
do-while文
#include <stdio.h> main() { int i=0; do { printf("test\n"); } while(i>0); }
実行結果
何も表示されない
test

こんな風になるんじゃぞ。
さてと分かっているかどうかテストをするかのう。
次のプログラム1、2、3を実行した際、表示される数値を答えよ。

3は2の条件式++iをi++に変えただけじゃが・・・。

手抜きだー!ブーブー!!
プログラム1
#include <stdio.h> main() { int data[]={10,20,30,40,50,0}; int i=0,goukei=0; do { if (goukei>100) break; goukei=goukei+data[i++]; } while (data[i]); printf("goukei=%d",goukei); }
プログラム2
#include <stdio.h> main() { int data[]={60,20,50,40,80,-1}; int i=0,goukei=0; do { if (data[i]>50) continue; goukei=goukei+data[i]; } while (data[++i]>0); printf("goukei=%d",goukei); }
プログラム3
#include <stdio.h> main() { int data[]={60,20,50,40,80,-1}; int i=0,goukei=0; do { if (data[i]>50) continue; goukei=goukei+data[i]; } while (data[i++]>0); printf("goukei=%d",goukei); }
答えは・・・?

・・・う~んと・・ここでこれを足して、これはスキップして・・う~んと、う~んと・・・・・あ~メモがぐしゃぐしゃになっちった!!

・・・どうしても分からんかったら、実際にプログラムを入力してやってみたらどうじゃ?
値の変化がよく分かるぞ!
そうじゃな、繰り返す文の最後に、
printf("goukei=%d i=%d\n",goukei,data[i]);
を入れたらいいじゃろう。

・・・だから、Cのソフトはないんだって言ったでしょ?

そ、そうじゃった、そうじゃった。

博士・・・怪しい・・・・・・誰かからの差し金か?・・はたまたスパイか?

な、なんでスパイなんかしにゃならんのじゃ?
お前さんの事など探ってもしかたなかろうに。

・・・それもそうだ・・・。

と、とにかく今はプログラムの値じゃ。どうじゃ、計算できたかの?

・・・また、すぐ話をそらす・・・・

正解じゃったら今日は終わりにしようと思ったんじゃが。
(本当はもっとするつもりだったんじゃが。)

あっ、ち、ちょっと待って!え~とぉ~…。
ぷうさんは、真剣に考えたのであった。
プログラム1~3の答え

『1は、150』で、『2は、110』。
それで、『3は、109』!!

よくできたのお。3つとも正解じゃ。「i++と++i」の違いも忘れておらんかったらしいの。
それじゃ、また明日。

ちょっと待てっ!

どうも怪しいんだよなあ・・・
そうだ!もしかして、まあじょさんに頼まれたとか☆
・・・私にでもなんとか理解できれば、まあじょさんなら絶対大丈夫だという保証(安心惑)を得る為によこした、とか?

(ギクッ!)
な、何を言っとるんじゃな?わしは本当にお前さんの事が心配で・・
別にモルモットになんてことは・・・ととと・・

ふーん、ヘーえ、そうだったんだあ・・・マージョ(魔女)の使い魔だったんだ!
魔族め、成敗してくれようぞ!

あ、あのじゃなあ・・・ちとRPGのやりすぎじゃないのかの?

ぶーぶー!ちょっとはずれーっ!
正しくは『RPG作成にのめり込みすぎた』なのだ!

威張って言えることかの、それが。

自分はどうなのよ、自分は?

あ・・い、いや・・じゃが、お前さんの事を心配してというのは本当じゃぞ。
ま、まあとにかく今日はこれで。

あっ、逃げたっ!・・・ったく!

でも、その通りだったりして・・それに・・Cのソフトかあ・・パソコンはメモリに余裕がないし・・・予算も、ない。
やっぱ、机上シミュレーションでいくしかないか。・・・でも、そんなんで大丈夫かな?
・・・・・・