第3講 for文の学習
第2話 複数の命令文
m
を実現するプログラム例
#include<iostream>
using namespace std;
void main(){
   int w,i;
   w=0;
   for(i=1;i<11;i++)w=w+i;
   cout<<"1から10までの和="<<w<<endl;
}

for文は
void main(){
   for(char i=1;i<101;i++){
      cout<<i+0<<":"<<i<<" ";
      if(i>0 && i%10==0)cout<<endl;
   }
}
のように、命令文を2つ以上入れることもできます。
文を2つ以上入れるときは、{}で囲います。
例えば、コードを次のようにしてみますと、
#include<iostream>
using namespace std;
void main(){
 char i;
 for(i=0;i<10;i++){
   cout<<"繰り返し処理を実現する1つの方法は、";
   cout<<"for文だ。"<<endl;
 }
}
実行結果は、

繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。

となります。
『繰り返し処理を実現する1つの方法は、for文だ。』
が何回表示されていますか。
10回です。
for(i=0;i<10;i++)からうっかりすると、
9回と勘違いするところですが、
実際には0から始まりますので、10回なのです。
0,1,2,3,4,5,6,7,8,9
で確かに10回ですよね。
後に学ぶ配列(添え字付き変数)の添え字が
0から始まりますので、
私はfor(i=0;i<
10;i++)という使い方を好みます。
10と実際の繰り返し回数が同数だからです。
これからもしばしば使う方法ですので、
留意されて下さい。

#include<iostream>
using namespace std;
void main(){
   char i;
   for(i=0;i<10;i++){
      cout<<"繰り返し処理を実現する1つの方法は、";
      cout<<"for文だ。"<<endl;         
   }                      
}
は、
#include<iostream>
using namespace std;
void main(){
   char i=0;
   for(;i<10;i++){
      cout<<"繰り返し処理を実現する1つの方法は、";
      cout<<"for文だ。"<<endl;         
   }                      
}
としても、同じ実行結果を得ることができます。
今まで、初期化は
#include<iostream>
using namespace std;
void main(){
   char i;
   i=0;
    ・ 
    ・
    ・               
}
のようにしてきましたが、
   char i=0;
宣言と同時に初期化することもできます。
今回は変数の宣言と共に初期化してありますので、
   for(;i<10;i++){    
の最初のところが空欄になっています。
もちろん、これは
   for(i=0;i<10;i++){
としても良いのですが、
i=0を2回やって無駄な操作になっています。
もちろん、コンピュータは1秒間に億や兆という単位の処理ができますから、
今作っているプログラムでは、ちょっとした無駄は気にする必要はありません。
ですが、将来数独(ナンプレ)自動生成アプリの挑戦するとき、
少しでも無駄な処理は減らすように心がけなければなりません。
1つの良問を作り出すのに、数万回レベルの試行錯誤を必要とするからです。
1つの試行錯誤に必要な処理は、少なくても数万回のレベルに達しますから、
数万回レベルの試行錯誤に要する処理回数は、
軽く億のレベルに達しますし、場合によっては兆や京のレベルになってしまいます。
京までいってしまうと、流石のコンピュータも苦戦を免れません。

さらに、コードは
void main(){
   for(char i=0;i<10;i++){               
       cout<<"繰り返し処理を実現する1つの方法は、";
       cout<<"for文だ。"<<endl;         
   }                      
}
とすることもできます。
void main(){
   char i;
   for(i=0;i<10;i++){               
       cout<<"繰り返し処理を実現する1つの方法は、";
       cout<<"for文だ。"<<endl;         
   }                      
}
との違いは、このコードではありません。
しかし、for文の後に命令が続くときは、
違いが生じます。
それは、後で静的変数を学ぶときに詳しく説明しますが、
char i; の及ぶ範囲が異なるということです。
void main(){
   char i;
   for(i=0;i<10;i++){               
       cout<<"繰り返し処理を実現する1つの方法は、";
       cout<<"for文だ。"<<endl;         
   }   
        ・ 
        ・
        ・                  
}
の場合は、
1
であるのに対して、
void main(){
   for(char i=0;i<10;i++){               
       cout<<"繰り返し処理を実現する1つの方法は、";
       cout<<"for文だ。"<<endl;         
   } 
        ・ 
        ・
        ・                       
}
の方は、
2
の違いです。
有効の意味が???ですね。
具体的に説明しましょう。
次の2つのコードをそれぞれ試してみて下さい。
void main(){
   char i;
   for(i=0;i<10;i++){               
       cout<<"繰り返し処理を実現する1つの方法は、";
       cout<<"for文だ。"<<endl;         
   }   
   cout<<i+0<<endl;                
}
void main(){
   for(char i=0;i<10;i++){               
       cout<<"繰り返し処理を実現する1つの方法は、";
       cout<<"for文だ。"<<endl;         
   }   
   cout<<i+0<<endl;                
}

前者は、エラーせず

繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
繰り返し処理を実現する1つの方法は、for文だ。
10

と表示してくれるのに、後者はエラーして、コンソールに
..\a.cpp(14) : error C2065: 'i' : 定義されていない識別子です。
と表示されます。
2
の意味がお分かりですか。
iは、for文の中でのみ有効な変数なのです。
その外に出てしまえば、
iは使えないのです。
つまり、宣言されていない文字ということになり、
..\a.cpp(14) : error C2065: 'i' : 定義されていない識別子です。
となってしまうわけです。
変数の有効な範囲=変数の宣言の及ぶ範囲のことを
スコープといいます。
スコープという言葉覚えてださい。
初心者用の講義ですから、
基本的には専門用語は使いませんが、
専門用語を覚えることも大切です。
でないと、他のサイトや書籍を読むときに不便になります。

では、次の課題です。
1から100までの和を求めて下さい。

第1話へ
 第3話へ

a

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

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