特定の言語に関わらず、見やすいコード、見にくいコード、それすら逸脱した自己流のコード、色々あると思います。
多種多様な書き方をしても(常識的な範囲内なら)、どれも同様に動いてくれますよね。
さて、ここでは、C言語の記述方法について、皆さんどんな感じにコードを書いているんだろう?などを知りたく思いました。
そこで、今から私が掲示する処理を自己流で書いてみていただけませんか?
ここでいう自己流とは、以下の条件の時に書かれる個人的なコードを指します:
・ 他人に見せる予定はない。
・ 特に急いで開発しているわけではなく、まったりと書いたもの。(コードに自分のスタンスがはっきりと出る)
処理内容を掲示した後、私もコードを書いてみるので、そのコードをコピペして自己流に置き換えるのが手っ取り早いと思います。
なお、自分のコードが、(貴方が思う)見やすいコードと逸脱しているところなどを自覚していたりしましたら、
それもコードとは別に記述していただけるとありがたいです。
あと、//や/* */といったコメントの使い方も知りたいのでそれも使う場合は使用してください。
また、変数名や関数名は私のコードに準拠していただけるとありがたいですが、自己流でも構いませんw
さらに、本トピックに限り、インデントの有無等、見やすさは一切不問とします!本来の自分を見せてください。
では、始めます。
以下に示す(a)から(g)までを全て満たす関数を書いてください。
(a) 返り値はintで、引数は4つでそれぞれ、int ,double , float ,int[]。
(b) ローカル変数宣言は整数型が4つ、小数型が4つ。
整数型のうち、2つはカウンタ用(名前はiとj) 、他の2つのうち1つは配列型。最後の1つは0で初期化してください。
小数型は配列型はありませんが、小数型変数1つ目と2つ目が密接に関わるものであること。
(例: 二次元グリッドの処理をしている際に、1つ目にx軸の値,2つ目にy軸の値が入ってる程度の密接度)
(c) ローカル変数宣言の後に、(d)→(e)→(f)→(g)の順番で処理を進める。
なお、(d)と(e)の処理は密接にかかわっており、その2つで1つの大きな処理をするものとする。
(d) 以下に示すif文を記述する。(あえてswitch文を用いてもよい。)
もし条件1または条件2だったら、処理1~3を行う。
上記に当てはまらず、条件3だったら、処理4を行う。
上記に当てはまらず、条件4かつ条件5かつ条件6(4から6の条件式はすごく長いとする)だったら、処理5を行う。
上記に当てはまらない場合、処理6と7(この処理はすごく短い)を行う。
(e) 以下に示すfor文を記述する。(あえてwhile文を用いてもよい。)
(なお、初期化式で変数宣言する派はそれも反映させる。その際、先ほど宣言したカウンタ用変数iはここで初めて宣言する)
次の処理を10回繰り返す。
もし条件7を満たすならbreak文。満たさなければ処理8から10を行う。
(f) 以下に示すfor文を記述する。
次の処理を10回繰り返す。
処理11を行う。
(g) 以下に示すreturn文を記述する。
条件8なら値1を返す。
上記に当てはまらないなら『関数2』の返り値を返す。
// 関数の最初にコメント
int Function1 (int Argument1, int Argument2[], float Argument3, double Argument4){
int j; // 変数宣言時は右側にコメント
int Variable1[IndexNum]; // スラッシュ位置はできるだけ合わせる
int Variable2=0; // 変数や関数名は最初が大文字
double Variable3,Variable4; // 不可抗力でずれてもあまり気にしない
double Variable5; // 小数型は大体double型を選択
double Variable6; // 変数宣言が終わったら1行あける
// 処理ごとにコメントを入れる
if(term1||term2){
process1;
process2;
process3;
}else if(term3) process4;
else if(loooooooooooooooooooooooooongterm4&& // 長い場合は折り返す
loooooooooooooooooooooooooongterm5&& // 条件式の最初の位置はそろえたい
loooooooooooooooooooooooooongterm6) process5;
else{ pro6; pro7; }
for(int i=0;i<10;i++){
if(term7) break;
process8;
process9;
process10;
} // 一つの大きな処理が終わったら1行あける
// 1行で済ませられるならできるだけ済ます。
for(int i=0;i<10;i++) process11;
if(term8) return 1; else return Function2;
}
・スペースを使わずにキツキツに詰めること
例えば、if(term==0)って、if( term == 0 ) の方が見やすいですよね。
・1行で収められるならできる限り1行で!
if(なんとか) i=0; else i=1; 等は1行で書いちゃいたい。けど、他人に見せる時は、 以上です!
以下、自己流のコードを淡々と貼っていくトピックになります。
個別に返信は基本的にしません。
ではよろしくお願い致します。(コンパイルエラーだったらごめんなさいw)