第10講 for文以外の繰り返し(ループ)処理
第8話 while文とfor文の関係
1から10までの和
while文の場合
#include<iostream>
using namespace std;
int f();
void main(){
cout<<"1から10までの和="<<f()<<endl;
}
int f(){
int i,w;
i=1;
w=0;
while(i<=10){
w=w+i;
i++;
}
return(w);
}
for文の場合
#include<iostream>
using namespace std;
int f();
void main(){
cout<<"1から10までの和="<<f()<<endl;
}
int f(){
int i,w;
w=0;
for(i=1;i<=10;i++){
w=w+i;
}
return(w);
}
もう一度関数fの部分をwhile文、for文の順に並べると
int f(){
int i,w;
i=1;
w=0;
while(i<=10){
w=w+i;
i++;
}
return(w);
}
int f(){
int i,w;
w=0;
for(i=1;i<=10;i++){
w=w+i;
}
return(w);
}
両者の間に違いはない!
というのが結論なのでしょうか。
ですが、while文の場合
while(1){
・
・
if(条件式)break;
}
や
h=1;
while(h){
・
・
if(条件式)h=0;
}
のように、終了するための条件を
処理中に挟むことが出来ます。
for(i=1;i<=10;i++)にような形で終了条件を
最初に、示すことが難しいプログラムも確かにあります。
例えば、限界値までの和のプログラミングです。
1+2+3+・・・の1000を越えない和を求めるプログラムなら、
int f(){
int i,w;
i=1;
w=0;
while(1){
w=w+i;
if(w>1000){
w=w-i;
break;
}
return(w);
}
で済むわけです。
ですから、最近まで私はwhile文の方が
汎用性が広いのではないかと考えていました。
ところが、偶然私はfor文の次のような使い方を発見しました。
for(;;){
・
・
if(条件式)break;
i++;
}
1+2+3+・・・の1000を越えない和を求めるプログラムは、
#include<iostream>
using namespace std;
int f();
void main(){
cout<<"1000を超えない1+2+3+・・・の最大値="<<f()<<endl;
int f(){
int i,w;
i=1;
w=0;
for(;;){
w=w+i;
if(w>1000){
w=w-i;
break;
}
i++;
}
return(w);
}
これは、
#include<iostream>
using namespace std;
int f();
void main(){
cout<<"1000を超えない1+2+3+・・・の最大値="<<f()<<endl;
int f(){
int i,w;
i=1;
w=0;
while(1){
w=w+i;
if(w>1000){
w=w-i;
break;
}
i++;
}
return(w);
}
と全く同じです。
ですから、結局while文とfor文は
本質的には全く同じ、
ということになります。
どちらを使うかは、
好みの問題にすぎない!!!
これが結論です。
さて、これで第10講を閉めさせて頂きます。
第10講の終了は、同時に
『eclipse c c++ 入門 初心者 基礎から応用まで』
の第1部の終了ということになります。
第11講以降は、第2部に引き継がれます。
第7話へ 第11講第1話へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ