第3講 繰り返し処理for文
第1話 for文とは?
1+2+3+4+5+6+7+8+9+10
を計算させるには、
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
  class Program //初心者はお呪い=決まり事と思い一切気にしない
  {
    static void Main(string[] args) //私は社長だ。
    {
      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;
      //以上計算
      Console.WriteLine("1+2+3+4+5+6+7+8+9+10={0:d}",a); //箱aの中身を表示
    }
  }
}
実行結果
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文を使ってこの芸のないコードを書き直すと、
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
  class Program //初心者はお呪い=決まり事と思い一切気にしない
  {
    static void Main(string[] args) //私は社長だ。
    {
      int a,i; //整数を入れる箱a,iを用意
      //以下計算
      a = 0;
      for (i = 1;i<= 10; i++) //繰り返し処理
      {
        a = a + i;
      }
      //以上計算
      Console.WriteLine("1+2+3+4+5+6+7+8+9+10={0:d}",a); //箱aの中身を表示
    }
  }
}
となります。
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までの和を求めるプログラムに変更できることです。
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
  class Program //初心者はお呪い=決まり事と思い一切気にしない
  {
    static void Main(string[] args) //私は社長だ。
    {
      int a,i; //整数を入れる箱a,iを用意
      //以下計算
      a = 0;
      for (i = 1;i<= 10000; i++) //繰り返し処理
      {
        a = a + i;
      }
      //以上計算
      Console.WriteLine("1から10000までの和={0:d}",a); //箱aの中身を表示
    }
  }
}
実行結果
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#の場合は好きな場所で宣言して、
さらに、変数の有効な範囲を{}に限定することも出来ます。
例えば、

//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
  class Program //初心者はお呪い=決まり事と思い一切気にしない
  {
    static void Main(string[] args) //私は社長だ。
    {
      int a,i; //整数を入れる箱aを用意
箱iを削除
      //以下計算
      a = 0;
      for (
int i = 1;i<= 10000; i++) //繰り返し処理
      {
        a = a + i;
      }
      //以上計算
      Console.WriteLine("1から10000までの和={0:d}",a); //箱aの中身を表示
    }
  }
}
とすると、変数iの有効な範囲は
001
図の
内に限定されます。
変数を箱と比喩していますが、
正確には一定のメモリを変数用に割り当て、
そのメモリにデータを書き込んでいます。
変数の適応範囲=スコープを{}内に限定できるのは、
メモリが節約できるという大きなメリットがあります。


尚、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言語・C++・Java・Visual Basic・パスカル・Ruby・Parl等です。
簡略表現使用例
//以下C#を始めるためのお呪い
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//以上C#を始めるためのお呪い
namespace a //初心者はお呪い=決まり事と思い一切気にしない
{
  class Program //初心者はお呪い=決まり事と思い一切気にしない
  {
    static void Main(string[] args) //私は社長だ。
    {
      int a; //整数を入れる箱aを用意 箱iを削除
      //以下計算
      a = 0;
      for (int i = 1; i <= 10000; i++)
a += i; //繰り返し処理
      //以上計算
      Console.WriteLine("1から10000までの和={0:d}",a); //箱aの中身を表示
    }
  }
}

ではこれを頭に留めて、
次の問題に取り組んでください。
@ 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 入門 サイト 基礎から応用まで
本サイトトップへ