#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" (もし「カーソルが行頭にあるときには改行をしないような
改行コード」が存在するなら行頭にそれを使うことがあるかもしれない)
与作