先週の課題を採点していて,これまで経験のないインデントの仕方を見かけました.
インデントしよう!(2021年度版)のプログラムをもとにすると,次のようなコードです.
#include <stdio.h> int main(void){ int i, j; for (i = 1; i <= 9; i++) { for (j = 1; j <= 9; j++) { printf("%d", i * j % 10); } printf("\n"); } return 0; }
特徴的なのは,「printf」が2行連続で並んでいることです.そして後者の行には,左に「}」が書かれています.
とはいえ少し考えてみると,これはよいインデントの仕方とは言えません.構造化プログラミングの観点では,「for (j = 1; (略) }」が一つの処理,「printf("\n");」が一つの処理で,順接となっているのですが,上記はそれが読み取りにくくなっています.
2つのprintfの呼び出し回数も,異なります."%d"を含む方のprintfの呼び出し回数は,1≦j≦9のそれぞれにつき1回ずつ,1回のプログラムでは81回です.それに対し,改行の出力はjに依存せず,1≦i≦9のそれぞれにつき1回ずつで合計9回です.異なる実行となるものを,2行連続で並べるのは,よいスタイルではないということです.
ただし,プログラムの動作としては,おかしいところはありません.2つのfor文の「{」「}」をともに除去すると,挙動が変わって,改行は1回のみとなります.