第5講 ブロック崩しその3(ブロックを描き、ボールがブロックに当たったら跳ね返るようにする)
第4話 2次元ループの詳しい解説
コード再掲
#include<stdio.h>
void f();
int main()
{
f();
return 0;
}
void f() {
int a,i, j;
for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) {
a = 3 * i + j + 1;
if (a < 10)printf("0%d ", a);
if(a>=10 && a<100)printf("%d ", a);
}
printf("\n");
}
}
コピペ用添付ファイル
実行画面
解説
まず、このプログラムの動きを追ってみましょう。
動きを追うことをトレースといいます。
プログラミングする上でトレースは大変重要なものです。
わからなくなったら、トレースを常にする習慣を身につけましょう。
i = 0 の場合
j = 0 のとき、
a = 3 * i + j + 1 = 3 * 0 + 0 + 1 = 1
です。
すると
if (a < 10)printf("0%d ", a);
if(a>=10 && a<100)printf("%d ", a);
のうち該当する文は、上の文です。
aが1だからです。
しがたって、コンソール画面(黒い画面)に
01
と表示されます。
j = 1 のとき、
a = 3 * i + j + 1 = 3 * 0 + 1 + 1 = 2
です。
すると
if (a < 10)printf("0%d ", a);
if(a>=10 && a<100)printf("%d ", a);
のうち該当する文は、上の文です。
aが2だからです。
しがたって、コンソール画面(黒い画面)に
01 02
と表示されます。
間が半角スペースなのは"0%d "のdの後に半角スペースが入っているからです。
j = 2 のとき、
a = 3 * i + j + 1 = 3 * 0 + 2 + 1 = 3
です。
すると
if (a < 10)printf("0%d ", a);
if(a>=10 && a<100)printf("%d ", a);
のうち該当する文は、上の文です。
aが3だからです。
しがたって、コンソール画面(黒い画面)に
01 02 03
と表示されます。
以上で中のループfor (j = 0; j < 3; j++){}は終了となり
printf("\n");
が実行されて改行されます。
01 02 03
改行
i = 1 の場合
j = 0 のとき、
a = 3 * i + j + 1 = 3 * 1 + 0 + 1 = 4
です。
すると
if (a < 10)printf("0%d ", a);
if(a>=10 && a<100)printf("%d ", a);
のうち該当する文は、上の文です。
aが4だからです。
しがたって、コンソール画面(黒い画面)に
01 02 03
04
と表示されます。
j = 1 のとき、
a = 3 * i + j + 1 = 3 * 1 + 1 + 1 = 5
です。
すると
if (a < 10)printf("0%d ", a);
if(a>=10 && a<100)printf("%d ", a);
のうち該当する文は、上の文です。
aが5だからです。
しがたって、コンソール画面(黒い画面)に
01 02 03
04 05
と表示されます。
間が半角スペースなのは"0%d "のdの後に半角スペースが入っているからです。
j = 2 のとき、
a = 3 * i + j + 1 = 3 * 1 + 2 + 1 = 6
です。
すると
if (a < 10)printf("0%d ", a);
if(a>=10 && a<100)printf("%d ", a);
のうち該当する文は、上の文です。
aが3だからです。
しがたって、コンソール画面(黒い画面)に
01 02 03
04 05 06
と表示されます。
以上のトレースによって、どうして実行画面が
となるということと、
a = 3 * i + j + 1;
の意味が明らかになりました。
なぜ3 * iなのかは表示されている数字を縦に見ればわかります。
01 02 03
04 05 06
01の下は04です。
上と下では差が3です。
3飛びの値にするために3 * iなのです。
今回は、いずれの場合も
if(a>=10 && a<100)printf("%d ", a);
は使用しませんでしたが、
使用する場合を考えましょう。
例えば、
コードを考えてください。
第3話へ 第5話へ
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ