わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

新たなインデントスタイル!?

 先週の課題を採点していて,これまで経験のないインデントの仕方を見かけました.
 インデントしよう!(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回のみとなります.