第3講 繰り返し処理for文
第1話 for文とは?
1+2+3+4+5+6+7+8+9+10
を計算させるには、
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int main() {
  int a; //整数を入れる箱aを用意
  //以下計算
  a = 0;
  a = a + 1;
  a = a + 2;
  a = a + 3;
  a = a + 4;
  a = a + 5;
  a = a + 6;
  a = a + 7;
  a = a + 8;
  a = a + 9;
  a = a + 10;
  //以上計算
  cout<<"1+2+3+4+5+6+7+8+9+10="<<a<<endl; //箱aの中身を表示
  return(0); //mainを閉じるためのお呪い。
}
実行結果
1+2+3+4+5+6+7+8+9+10=55
で良いわけですが、余りに芸のないプログラミングですね。
  a = a + 1;
  a = a + 2;
  a = a + 3;
  a = a + 4;
  a = a + 5;
  a = a + 6;
  a = a + 7;
  a = a + 8;
  a = a + 9;
  a = a + 10;
は10行にわたって同じようなことを繰り返します。
同様なことを繰り返して処理することを繰り返し処理といいます。
その繰り返し処理の一つにfor文があります。
for文を使ってこの芸のないコードを書き直すと、
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int main() {
  int a,i; //整数を入れる箱a,iを用意
  a = 0;
  //繰り返し処理
  for(i=1;i<=10;i++){
    a=a+i;
  }
  cout<<"1+2+3+4+5+6+7+8+9+10="<<a<<endl; //箱aの中身を表示
  return(0); //mainを閉じるためのお呪い。
}
となります。
i++はi=i+1の簡略表現です。
for(i=1;i<=10;i++)の中は3文で構成されていますが、
iを1からはじめてひとつずつ増やしながらiが10になるまで{}内を繰り返しなさいという命令になります。
1つ目のi=1;が1から始めを意味し、
3つ目のi++がひとつずつ増やしていくことを意味して、
2つ目のがi<=10;が10までを意味しているからです。
この処理が優れているのは、
for(i=1;i<=10;i++)をfor(i=1;i<=
10000;i++)と変更するだけで、
1から10000までの和を求めるプログラムに変更できることです。
#include<iostream> //c++プログラミングをはじめるためのお呪い。
using namespace std; //c++プログラミングをはじめるためのお呪い。
int main() {
  int a,i; //整数を入れる箱aと箱iを用意
  a = 0;
  //繰り返し処理
  for(i=1;i<=10000;i++){
    a=a+i;
  }
  cout<<"1から10000までの和="<<a<<endl; //箱aの中身を表示
  return(0); //mainを閉じるためのお呪い。
}
実行結果
1から10000までの和=50005000

どうです。急に面白くなったのではないでしょうか。
ちょっと変えただけで
1+2+3+・・・+9999+10000
が計算できるようになったのです。しかも、一瞬です。

for文の基本的な形は、
  for(i=0;i<10;i++){
    A;
    B;
    ・・・・
    ・・・・
  }
ですが、{}内の命令文が1つしかない場合には、
  for(i=0;i<10;i++)A;
と書くことも出来ます。

尚、C言語では冒頭で変数の宣言をしなければなりませんが、
C++の場合は好きな場所で宣言して、
さらに、変数の有効な範囲を{}に限定することも出来ます。
例えば、

#include<iostream> //c++プログラミングをはじめるためのお呪い。
using namespace std; //c++プログラミングをはじめるためのお呪い。
int main() {
  int a; //整数を入れる箱aを用意
箱iを削除
  a = 0;
  //繰り返し処理
  for(
int i=1;i<=10000;i++){
    a=a+i;
  }
  cout<<"1から10000までの和="<<a<<endl; //箱aの中身を表示
  return(0); //mainを閉じるためのお呪い。
}
とすると、変数iの有効な範囲は
025
図の
内に限定されます。
変数を箱と比喩していますが、
正確には一定のメモリを変数用に割り当て、
そのメモリにデータを書き込んでいます。
変数の適応範囲=スコープを{}内に限定できるのは、
メモリが節約できるという大きなメリットがあります。


尚、for(i=1;i<=10000;i++)のiを制御変数といいます。
これは1万回同じ処理を繰り返しますが、
for(i=0;i<10000;i++)としても同じ1万回処理します。
iは
0,1,2,・・・,9999
の値を取りますが、0もカウントしなければなりませんので、
1万種類の値を取りますよね。

i++はi=i+1の簡略表現であると説明しました。
C言語にはこのような簡略表現がたくさん用意されています。
i--;
a+=5;
w*=3;
x/=6;
のそれぞれは、
i=i-1;
a=a+5;
w=w*3;
x=x/6;
の簡略表現です。
w*3はw×3です。
×はキーボードにないので*で代用します。
また、x/6はx÷6を意味します。
÷もキーボードにないので、/で代用するのです。
*と/の代用は、私が知っているすべてのプログラム言語で共通です。
私が知っているのは、C言語・C++・Java・Visual Basic・パスカル・Ruby・Parl等です。


ではこれを頭に留めて、
次の問題に取り組んでください。
@ 2+3+4+・・・+99
A 3+5+7+・・・+101

第2講第8話へ 第2話へ
 
002

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

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ