第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文でも、どちらでもいとしましょう。



第7話へ 第9話へ

a


初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ