next up previous contents
Next: 4. 課題 4 Up: 4. 制御構造1 繰り返し(for文) Previous: 2. 括弧の対応関係

3. ソースプログラムの書き方

美しいソースプログラムというのは、結局、読みやすく間違いが減るようなものをいう。 そういう意味で、「きれい」といっても芸術的というような意味ではなく、優れて 機能的な意味における美しさを意味する。ソースコードの書き方には、従って、 色々な流儀があり、それぞれ一理を持っているために、唯一の書き方というものは、 当然存在しない。ここでは、K & R に準拠した書き方について述べる。


        for ( i=0; i<10 ; i=i+1 ){
   if ( i < 5 ){
   printf("test1\n");
        }else{
printf("test2\n");
}
}
この例では、for 文と if 文が入れ子になっており、特に $\{ \}$ の対応が問題 となる。しかし、この例の書き方は、どの括弧がどれに対応するかが非常に分かり づらい。 従って、こうした書き方はミスやバグの原因となる。これを、K & R 風に括弧の 対応を付けた書き方に直すと、

        for ( i=0; i<10; i=i+1 ){
                if ( i<5 ){
                        printf("test1\n");
                }else{
                        printf("test2\n");
                }
        }
のようになる。ポイントは、字下げ(インデント)の部分で、for と for の終わり を示す $\}$ が同じ桁位置にあり、if と真であるときの終わりの $\}$ および偽である ときの終わりの $\}$ がすべて同じ桁位置にきている。更に、これらの if 文の 実行文は全て if より一段右に寄っていて、同じ桁位置に置かれている。 これによって、プログラムの構造が非常に見やすくなる。ここで、桁位置を 合わせるためには、空白で揃えるよりもタブを使ったほうが効率が良い。 タブは、目で見たときは数個の空白のように見えるが、実際は1つの文字である ので、削除すると左に1段づつ寄ることになるので、便利である。 キーボードからは、Q の隣にある Tab キーを押すことによって入力できる。 ちなみに、通常タブは 8 文字の空白として表示されるが、vi では、これを 4 文字の空白として表示するように設定することも出来る。(入れ子が多くなり 大量の字下げが必要なときに便利である。) タブで表わす空白の数は、以下のコマンドで変更できる。 ex モードで、:set ts=? (? は、4又は8)、従って、4個の空白を表わす ようにしたい場合は、 :set ts=4 とすれば良い。



Noriyo Kanayama