概ね方位不定だが多分割と偏っている
スポンサーサイト
--年--月--日 (--) | 編集 |
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


C ループする制御2
2006年07月22日 (土) | 編集 |
ループというか繰り返し、ということでfor文があるということは分かったが、これはfor文によって回数が決められているループなのである。
今回は回数が決められていない、while文によるループを見ていく。


っていうかストーリー的なループはどちらかというとwhile文的なループじゃねー?
~の条件を満たしたらループから抜ける、みたいな。
まあ個人的な嗜好はさておいてもこれまた面倒そうな話だが。
とりあえず形式からだ。

while(式){

}

でwhile文は表現される。見た目はfor文と変わらなくて分かり易い。
状況によってwhileとforを切り替えて使えばいいわけやね。

while文ではまず(式)を見て、それが(式の条件を満たすこと)なら次の{ }内にある文を実行した後、また同じように(式)を見て…、と(式)のが真である限り繰り返す。ループだな。
ちなみにこの「式を見ること」を「式を評価する」と言うそうな。
そして(式)の条件が満たされなくなったとき、つまりになったときにループは終わる。ああエンディングコールはすぐそこに。でも大抵は分かり易いハッピーエンド大団円ってよかThe END的な終わり方するよな。いや個人的には大団円よかそっちの方が好きなので文句は無いが。

話が逸れたな。


でもまあこれ以上書くことはあまりない。
後は実際にやってみるのが一番だ。

前回の例題で1+2+3+…xの和を求めるというプログラムを組んだので、この和が1000を超えるまで計算し、結果を表示し続けるプログラムを組んでみる。


苦手分野なのでやはり順番に見ていく。

入出力について
まず、何も数値を入力しないのでscanfちゃんは必要ない。
出力するのでprintfは必要だが、それは後の話だ。

変数の宣言について
…+xということでxの宣言は必要だ。
…+xまでの和、ということでyも宣言しておこう。
for文でないのでループ変数は必要ないのでiはいらない。
よって、今回宣言する変数は2つということになる。

値の初期化について
xは1から、合計値、和であるyは0からスタートする。

whiletest.jpg
ここまで書いた

while文について
和が1000を超えるまで、なので条件はy<1000になる。
yは例によってy=y+iで表現されるが、今回はループ変数iが存在しないのでy=y+xになる。
後はこのyを出力する。というか画面に表示する。でないと分からないからな。

whiletest2.jpg
あと少し

んで、最後にループ文の肝として、xを+1する必要が出てくる。
for文で言うところのi++;だ。これがないとxが1のままなので、1+1+1+1+1+1+x…を繰り返すだけの文になってしまう。なので、x++;でxに+1する。

whiletest3.jpg
完成

これでwhile文は終了だ。

実際に動かしてみよう。

whiletest4.jpg
ちょ、改行

いやこれはこれで幾何学的で美しいが



くそ、また俺は同じ過ちを…!
ま、待ってくれニューライン子! お前をどうでもいいなんて思ったことは一度もない 
本当だ お前のことはとても大事に思っている 信じてくれ 
お前がいないと画面が見辛くて仕方がないんだ

俺にはお前が必要なんだよ!






しかし何故毎回忘れるかね。

まあ数値的には合っているのでよし。実際に電卓で計算したので間違いないぜ。

おまけ
whiletest_a.jpgwhiletest_b.jpg
if文と組み合わせてみた

この方がそれっぽかろう。


まとめてみる

while文は繰り返し回数が決まっていないループに使う
(式)により条件を与え、その結果が真の間はwhile以下の文を繰り返す
偽になればループを終える
for文と違って終わり際に条件の変化(増減式か)を記述する(場合によるかも)


以上。
ま、概念的にはfor文とやってることは大差ないぜ。繰り返しだしな。
ただ、使い道も記述も微妙に異なるので両方を覚えておく必要があるだろうが。
少々難しいが、慣れるしかないのだろうな。
スポンサーサイト

コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。