第6講 同じことの横縦の繰り返し(2次元ループ)

第3話 横縦と逆に表現する理由

前話問題
C言語
自然配列を発生させるプログラム解答例
#include<iostream>
using namespace std;
int main(){
  int i,j,k;
  k=0;
  for(i=0;i<10;i++){
    for(j=0;j<10;j++){
      k++;
      if(k<10){
        cout<<"00"<<k<<" ";
      }
      else{
        if(k<100){
          cout<<"0"<<k<<" ";
        }
        else{
          cout<<k<<" ";
        }
      }
    }
    cout<<endl;
  }
}

kは数を数える働きがあります。
数をカウントする変数をカウンターといいます。
本講義は、専門用語を用いないので、
カウンターを『数える数を入れる箱』と名付けます。
kは『数える数を入れる箱』です。
さて、なぜ縦横でなく横縦なのでしょうか。
  for(i=0;i<10;i++){
    for(j=0;j<10;j++){
      
k++;
      if(k<10){
        cout<<"00"<<k<<" ";
      }
      else{
        if(k<100){
          cout<<"0"<<k<<" ";
        }
        else{
          cout<<k<<" ";
        }
      }

    }

    cout<<endl;
  }
の(i、j)はどのように動くでしょうか。
(1、1)→(1、2)→(1、3)→(1、4)→(1、5)→(1、6)→(1、7)→(1、8)→(1、9)→(1、10)→
(2、1)→(2、2)→(2、3)→(2、4)→(2、5)→(2、6)→(2、7)→(2、8)→(2、9)→(2、10)→
(3、1)→(3、2)→(3、3)→(3、4)→(3、5)→(3、6)→(3、7)→(3、8)→(3、9)→(3、10)→
(4、1)→(4、2)→(4、3)→(4、4)→(4、5)→(4、6)→(4、7)→(4、8)→(4、9)→(4、10)→
(5、1)→(5、2)→(5、3)→(5、4)→(5、5)→(5、6)→(5、7)→(5、8)→(5、9)→(5、10)→
(6、1)→(6、2)→(6、3)→(6、4)→(6、5)→(6、6)→(6、7)→(6、8)→(6、9)→(6、10)→
(7、1)→(7、2)→(7、3)→(7、4)→(7、5)→(7、6)→(7、7)→(7、8)→(7、9)→(7、10)→
(8、1)→(8、2)→(8、3)→(8、4)→(8、5)→(8、6)→(8、7)→(8、8)→(8、9)→(8、10)→
(9、1)→(9、2)→(9、3)→(9、4)→(9、5)→(9、6)→(9、7)→(9、8)→(9、9)→(9、10)→
(10、1)→(10、2)→(10、3)→(10、4)→(10、5)→(10、6)→(10、7)→(10、8)→(10、9)→(10、10)

各行はiではなくjが動くのです。
実際の動きは、横に

---専門用語なしのVBAより借用ですので数字の動きだけ注目してください。---

 入門  初心者  基礎  →  vba

動いていってから、
visual
縦に動くのです。
---以上、専門用語なしのVBAから借用---

  for(i=0;i<10;i++){
    for(j=0;j<10;j++){
        ・
        ・
        ・

  }
の場合先に動くのはjなのです。もう一度(i、j)の動きを見てください。
(1、1)→(1、2)→(1、3)→(1、4)→(1、5)→(1、6)→(1、7)→(1、8)→(1、9)→(1、10)→
(2、1)→(2、2)→(2、3)→(2、4)→(2、5)→(2、6)→(2、7)→(2、8)→(2、9)→(2、10)→
(3、1)→(3、2)→(3、3)→(3、4)→(3、5)→(3、6)→(3、7)→(3、8)→(3、9)→(3、10)→
(4、1)→(4、2)→(4、3)→(4、4)→(4、5)→(4、6)→(4、7)→(4、8)→(4、9)→(4、10)→
(5、1)→(5、2)→(5、3)→(5、4)→(5、5)→(5、6)→(5、7)→(5、8)→(5、9)→(5、10)→
(6、1)→(6、2)→(6、3)→(6、4)→(6、5)→(6、6)→(6、7)→(6、8)→(6、9)→(6、10)→
(7、1)→(7、2)→(7、3)→(7、4)→(7、5)→(7、6)→(7、7)→(7、8)→(7、9)→(7、10)→
(8、1)→(8、2)→(8、3)→(8、4)→(8、5)→(8、6)→(8、7)→(8、8)→(8、9)→(8、10)→
(9、1)→(9、2)→(9、3)→(9、4)→(9、5)→(9、6)→(9、7)→(9、8)→(9、9)→(9、10)→
(10、1)→(10、2)→(10、3)→(10、4)→(10、5)→(10、6)→(10、7)→(10、8)→(10、9)→(10、10)
先にjが動いていますよね。
for文が入れ子式
  for(i=0;i<10;i++){
    for(j=0;j<10;j++){
        ・
        ・
        ・

  }

の場合先に動くのはjなのです。もう一度(i、j)の動きを見てください。
(1、1)→(1、2)→(1、3)→(1、4)→(1、5)→(1、6)→(1、7)→(1、8)→(1、9)→(1、10)→
(2、1)→(2、2)→(2、3)→(2、4)→(2、5)→(2、6)→(2、7)→(2、8)→(2、9)→(2、10)→
(3、1)→(3、2)→(3、3)→(3、4)→(3、5)→(3、6)→(3、7)→(3、8)→(3、9)→(3、10)→
(4、1)→(4、2)→(4、3)→(4、4)→(4、5)→(4、6)→(4、7)→(4、8)→(4、9)→(4、10)→
(5、1)→(5、2)→(5、3)→(5、4)→(5、5)→(5、6)→(5、7)→(5、8)→(5、9)→(5、10)→
(6、1)→(6、2)→(6、3)→(6、4)→(6、5)→(6、6)→(6、7)→(6、8)→(6、9)→(6、10)→
(7、1)→(7、2)→(7、3)→(7、4)→(7、5)→(7、6)→(7、7)→(7、8)→(7、9)→(7、10)→
(8、1)→(8、2)→(8、3)→(8、4)→(8、5)→(8、6)→(8、7)→(8、8)→(8、9)→(8、10)→
(9、1)→(9、2)→(9、3)→(9、4)→(9、5)→(9、6)→(9、7)→(9、8)→(9、9)→(9、10)→
(10、1)→(10、2)→(10、3)→(10、4)→(10、5)→(10、6)→(10、7)→(10、8)→(10、9)→(10、10)
先にjが動いていますよね。
for文が入れ子式
  for(i=0;i<10;i++){
    for(j=0;j<10;j++){
        ・
        ・
        ・

  }

に入っている場合、最初に働く人形は中の人形の方なのです。

中の人形の方が先に動くことを強調するために、
縦横でなく横縦とあえて逆に表現しているのです。
最も講義を始めた頃は、同じことの横縦の繰り返しでいくつもりでしたので、
講義の冒頭では縦横になっていますが、
第6講でこのテーマを取り上げるときに、
逆にした方がよいだろうという判断にいったわけです。
この後は横縦に統一したいと思います。


第2話へ 第4話へ

a

初心者のためのjava 入門 基礎から応用まで
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
VC++入門
VBA入門
専門用語なしのVBA入門
VB入門
初心者のためのEclipseによるJava入門