プログラミング : リーダブルコードを読もう
プログラミング : 関数を使う
タイトルを見て、
「あぁ、モジュール化が大事なのね。」
と思った方は、もう少し読んでみてください。
ここでいう関数とは、
「ある入力に対してただ一つだけの値を取る射」
という、数学の意味での関数です。
プログラミングにおいて強力なのは繰り返し構文ですね。
これさえあれば、どんな反復作業もシンプルにかけます。
しかし、ある作業に関しては、繰り返しよりも、数学的に導き出せる関数の方が、いい選択になるのだ、と、ここでは書きたいわけです。
例としては、総和が挙げられます。
1から10の和を求める時、明らかに繰り返しよりも、台形公式の方が計算量が減りより良いです。小数を扱う時は、特に誤差に気をつけなくてはならない繰り返しよりも精度が高いです。
ゲームなどで、キャラクターや弾の位置を決める時、もし、プレイヤーの行動が影響しないのであれば、関数で位置を決定する方が、リプレイの情報量が減ったり、記述がシンプルになったり、複雑なことができます。(時間を止めたり、巻き戻したりするのは、関数だと時間tをいじるだけでできます。)
また、関数はただ一度の計算で値を算出できるので、記述はシンプルになるし、場合によっては処理速度も向上します。
もし、時間に余裕があるならば、処理内容を表す関数を考えてみると、より良いプログラムができるかもしれません。
まとめ
精度が求められたり、シンプルに変わったことを実装したい時は、一度数学的な式で表せないかを考えてみると良い。また、普段のプログラムでも数学的な式で表す工夫をすると、良いものができることがある。
以上Raptorでした。
C言語 : 配列とポインタ
配列へのポインタは面白い性質を持っている.
int foo[3] = {0}; int (*ptr)[3]; ptr = &foo; printf ("ptr = %lu\n", (unsigned long)ptr); printf ("foo = %lu\n", (unsigned long)foo);
これの実行結果は
ptr = 140737222446752 foo = 140737222446752
更新再開のお知らせ
使わないのもなんか勿体無いので、何かしら情報発信していこうかと思います。
主なテーマは以下の通り:
プログラミング
ゲーム開発
デジ絵
では、改めてよろしくお願いします。
Raptor