第3講 for文の学習
第2話 複数の命令文
を実現するプログラム例
#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;
}
・
・
・
}
の場合は、
であるのに対して、
void main(){
for(char i=0;i<10;i++){
cout<<"繰り返し処理を実現する1つの方法は、";
cout<<"for文だ。"<<endl;
}
・
・
・
}
の方は、
の違いです。
有効の意味が???ですね。
具体的に説明しましょう。
次の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' : 定義されていない識別子です。
と表示されます。
の意味がお分かりですか。
iは、for文の中でのみ有効な変数なのです。
その外に出てしまえば、
iは使えないのです。
つまり、宣言されていない文字ということになり、
..\a.cpp(14) : error C2065: 'i' : 定義されていない識別子です。
となってしまうわけです。
変数の有効な範囲=変数の宣言の及ぶ範囲のことを
スコープといいます。
スコープという言葉覚えてださい。
初心者用の講義ですから、
基本的には専門用語は使いませんが、
専門用語を覚えることも大切です。
でないと、他のサイトや書籍を読むときに不便になります。
では、次の課題です。
1から100までの和を求めて下さい。
第1話へ 第3話へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ