第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;
  }
の(jはどのように動くでしょうか。
11)→(12)→(13)→(14)→(15)→(16)→(17)→(18)→(19)→(110)→
21)→(22)→(23)→(24)→(25)→(26)→(27)→(28)→(29)→(210)→
31)→(32)→(33)→(34)→(35)→(36)→(37)→(38)→(39)→(310)→
41)→(42)→(43)→(44)→(45)→(46)→(47)→(48)→(49)→(410)→
51)→(52)→(53)→(54)→(55)→(56)→(57)→(58)→(59)→(510)→
61)→(62)→(63)→(64)→(65)→(66)→(67)→(68)→(69)→(610)→
71)→(72)→(73)→(74)→(75)→(76)→(77)→(78)→(79)→(710)→
81)→(82)→(83)→(84)→(85)→(86)→(87)→(88)→(89)→(810)→
91)→(92)→(93)→(94)→(95)→(96)→(97)→(98)→(99)→(910)→
101)→(102)→(103)→(104)→(105)→(106)→(107)→(108)→(109)→(1010

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

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

 入門  初心者  基礎    vba

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

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

  }
の場合先に動くのはjなのです。もう一度(j)の動きを見てください。
11)→(12)→(13)→(14)→(15)→(16)→(17)→(18)→(19)→(110)→
21)→(22)→(23)→(24)→(25)→(26)→(27)→(28)→(29)→(210)→
31)→(32)→(33)→(34)→(35)→(36)→(37)→(38)→(39)→(310)→
41)→(42)→(43)→(44)→(45)→(46)→(47)→(48)→(49)→(410)→
51)→(52)→(53)→(54)→(55)→(56)→(57)→(58)→(59)→(510)→
61)→(62)→(63)→(64)→(65)→(66)→(67)→(68)→(69)→(610)→
71)→(72)→(73)→(74)→(75)→(76)→(77)→(78)→(79)→(710)→
81)→(82)→(83)→(84)→(85)→(86)→(87)→(88)→(89)→(810)→
91)→(92)→(93)→(94)→(95)→(96)→(97)→(98)→(99)→(910)→
101)→(102)→(103)→(104)→(105)→(106)→(107)→(108)→(109)→(1010
先にjが動いていますよね。
for文が入れ子式
  for(i=0;i<10;i++){
    for(j=0;j<10;j++){
        ・
        ・
        ・

  }

の場合先に動くのはjなのです。もう一度(j)の動きを見てください。
11)→(12)→(13)→(14)→(15)→(16)→(17)→(18)→(19)→(110)→
21)→(22)→(23)→(24)→(25)→(26)→(27)→(28)→(29)→(210)→
31)→(32)→(33)→(34)→(35)→(36)→(37)→(38)→(39)→(310)→
41)→(42)→(43)→(44)→(45)→(46)→(47)→(48)→(49)→(410)→
51)→(52)→(53)→(54)→(55)→(56)→(57)→(58)→(59)→(510)→
61)→(62)→(63)→(64)→(65)→(66)→(67)→(68)→(69)→(610)→
71)→(72)→(73)→(74)→(75)→(76)→(77)→(78)→(79)→(710)→
81)→(82)→(83)→(84)→(85)→(86)→(87)→(88)→(89)→(810)→
91)→(92)→(93)→(94)→(95)→(96)→(97)→(98)→(99)→(910)→
101)→(102)→(103)→(104)→(105)→(106)→(107)→(108)→(109)→(1010
先に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入門