🫠

おバカな私のためのfor文解説

に公開

for文って?

一般的によく言われているのが、繰り返し処理を行うための制御構文
ただ今回はfor文の条件部分の記述を、ほぼ毎回と言っていいほど間違える私のために詳しく掘り下げてみる
なお、今回例として出しているコードはすべてGolangとなっている

使い方

大体の言語のfor文は以下のような書き方をする

for (初期化; 条件; 更新) {
    // 繰り返す処理
}

使い方としてはこんな感じ

for int i = 0; i < 5; i++ {
    fmt.Printf("%d\n", i);
}

forのヘッダー部分の使い方は以下の通り

初期化

ここでヘッダー内で使用するループ変数を初期化する
言語にもよるが、意外と自由に書けたりする

基本

int i = 0;

複数初期化することもできる

row, col := 0, 0;

条件

私がいつも躓いている部分
最終的にtrueとfalseのどちらにすれば続くのかがわからなくなる

基本

i < 100;
//iが0と定義されていて、更新部分にi++と書かれていたら100回繰り返される

最終的にbool型で返せばいいので、以下のようなこともできる

(i < 10) && (j < 15);

更新

ループ変数を加算したり、複数の演算を追加したりなどできる

基本

i++;

応用

i, row, col = i+1, (i+1)/10, (i+1)%10

応用まとめ

これらをうまく活用すると、一行でrows×colsの2次元走査結果を出力することができる

rows := 7
cols := 4

for i, row, col := 0, 0, 0; i < rows*cols; i, row, col = i+1, (i+1)/cols, (i+1)%cols {
	fmt.Println(row, col)
}

最後に

for (初期化; 条件(繰り返したいならtrueを返せ); 更新) {
    // 繰り返す処理
}

Discussion