まず、本題ではないですけど、質問に図があって分かりやすいですね。
質問を分かりやすく工夫する質問者は少ないので、感心しました。
**問題を言語化(図化)**できているので、プログラミングの上達も早いと思います。
前判定型ループはwhile文、後判定型ループはdo while文という解釈で正しいでしょうか
正しいです。
定回数型ループの場合だとfor文の構文
「定回数」という言葉は微妙なところです。
もしかしたら、試験対策でそう覚える必要があるのかもしれませんが、
私自身は「For文=定回数ループ」だと思ったことはないです。
c
1#include <stdio.h>
2int main(void) {
3 int j = 2;
4 for(int i = 0; i < j; i++) {
5 if(i == 1) { j = 3; }
6 printf("i:%d / j:%d\n",i,j);
7 }
8 return 0;
9}
というのは、CのFor文は、上のコードのように、
ループ途中でループ回数を変えることができます。
定回数と思っていると、デバッグで盲点になります。
だから、言語の文法上は、実質的に前判定ループと大差ないと思います。
まあなるべくトリッキーなことはしない方がいいんですが、
For文=定回数というより、「なるべく定回数にしよう」、
という紳士協定の方が実態に近いと思います。
ruby
110.times { |i| p i }
Rubyだとtimesというのがありますが、これなら、
単純に数字が10なら10回で、本当の定回数ループに思えます。
Bが1以上であれば繰り返しを行うという理解で、終了条件とは異なる
ruby
1def add(n)
2 return 0 if n < 1
3 n += add(n-1)
4end
5
6p a = add(10) #=> 55
だんだん減る書き方は、関数型で多用する再帰ループに当てはまりそうです。
数値が一定以上というループの判定条件は、再帰でよく使われます。
「これは継続条件だから、終了条件ではない」というよりは、
上のように、継続か終了は表裏一体(同じIF文)である場合が多いです。
こういうのは、英語と同じで、文法用語より実際のコードで覚えた方が確実ですが、
盲点になりがち(デバッグで苦しみがち)な部分なので、あえて説明してみました。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/11/29 05:53
2017/11/29 06:21
退会済みユーザー
2017/11/29 09:20
2017/11/29 11:43