#99 Article 985 Posted at 1995/12/06 03:00:16 by 与作 (MAP4732) [SAHOU.1]

Subject: Re:*6 プログラミングお作法の話 /946 ... /941 /940

えすさんが in を使ってましたね、Pascal はやっぱり美しい...
    私のはCです。

----
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    if (argc == 2) {
        int i, j, n;
        
        n = atoi(argv[1]);
        for (i = 1; i <= n; i++)
            if (i == 3 || i == 5 || i == n) {
                for (j = 0; j < i; j++)
                    printf("にゃん");
                printf("\n");
            } else
                printf("%d\n", i);
        return 0;
    } else {
        printf("Usagi\be: %s <number>\n", argv[0]);
        return 1;
    }
}
----

    エディターは MIFES で、オートインデント機能を利用
    インデントはブランク4個分の幅のタブ
    空行でも他の行と同じインデントにする
    変数宣言の次に空行
    label は1段浅いインデント
    case は label と同じ扱いにし switch と同じ桁
    
    英文タイプの教則にならい , ; の右に空白、かっこの内側には空白を入れない
    for 文で無限ループを書くときは for (; ; ) に
    if 文などは if と (...) と {...} の間に空白
    (Pascal では if ... begin ... end のように空白を入れた)
    単文の場合は { } で囲まないことが多い(これがたまにバグを産む)
    関数はかっことセットとしてとらえ func(...) のように空白を入れない
    二項演算子は間に必ず空白(入れたり入れなかったりが混じると面倒)
    単項演算子は空白を入れない
    比較には < か <= を使う(直感的にわかりやすい)
    コメントはコードを読むだけではわからないことを補足する程度
    
    行が長くなるときは適当な区切りで改行し1段下げて続ける
    そのとき , ; は行末に、演算子は行頭にくるようにする
    長い文字列を切るときは "str" "ing" のように連接を利用
    
    改行は行末に "\n" (もし「カーソルが行頭にあるときには改行をしないような
    改行コード」が存在するなら行頭にそれを使うことがあるかもしれない)
    
                                            与作