第12講 for文以外の様々なループ文の学習
第8話 違いの原因
#include<stdio.h>
int f();
int main(){
printf("%d\n",f());
printf("プロジェクト終了\n");
return(0);
}
int f(){
int w,i;
w=0;
i=20;
while(i<=10){
w+=i;
i++;
}
return(w);
}
コード3
コード4
#include<stdio.h>
int f();
int main(){
printf("%d\n",f());
printf("プロジェクト終了\n");
return(0);
}
int f(){
int w,i;
w=0;
i=20;
do{
w+=i;
i++;
}while(i<=10);
return(w);
}
コード4
コード3の実行画面
0
プロジェクト終了
コード4の実行画面
20
プロジェクト終了
の違いが生じる原因は、
条件の前判定と後判定です。
i=20;
while(i<=10){
w+=i;
i++;
}
の場合は、while文ループをするかどうか判断するのに、
条件文i<=10を満たしているかどうか、
正確には「条件文i<=10」の値が0であるか、1であるかを調べますが、
20<=10は正しくないですから、「条件文i<=10」の値は0で、
ループは1回も実行されません。
それに対して、
i=20;
do{
w+=i;
i++;
}while(i<=10);
の方は、最初に条件の判定が行われずに、
ループに入ってしまいますから、
1回は処理されるのです。
後判定によって、「条件文i<=10」は満たされません、
すなわち、「条件文i<=10」の値は0ですから、
2回目のループは行われません。
つまり、条件を満たしていなくても{ }の処理を1回はさせたい場合には、
do〜while文を使えば良いのです。
この講最後の課題です。
#include<stdio.h>
int main(){
int w,i;
w=0;
i=1;
while(i<=10){
w+=i;
i++;
}
printf("1+2+3+4+5+6+7+8+9+10=%d\n",w);
printf("プロジェクト終了\n");
return(0);
}
1から10までの和
は
1+2+3+4+5+6+7+8+9+10
を計算させるものでした。
このコードを2つの条件の下に変更して下さい。
@ 和の計算は社長(main)がするのではなく、社員(関数)に命じる。
A 1から10までの和ではなく、
1+2+3+・・・の合計が100を超えない範囲で計算させる。
ということです。
結構難しいですよ。
尚、while文でもdo〜while文でも、どちらでもいとしましょう。
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ