始めに
第二回のC言語 講座は、ファイルサイズの縮小を扱うことにします。
ポケコンでC言語のプログラムを作成するメリットは、「BASICプログラムよりも実行速度が速い」ことが挙げられます。 当然ですが、マシン語には実行速度はかないません(プログラム言語の中では最速です)。←当たり前だ
ただ、C言語でプログラムを作ったことがある人は、分かると思いますが、BASICに比べてファイルサイズが大きすぎるのです。
其の壱
まず、以下のソースを見てください。
void main(void) { int c; while(1) { c = getch(); printf("KEY = %c[%02X] \n", c, c); } }
プログラム的には、キーを取得し、その値をキャラクタと16進のキャラクタコードを表示するだけのプログラムです。
まず、基本的に省略可能な部分から省略していきます。
- void を省略
- 見やすいように入れてある空白・改行を削除
- 大カッコ( { )を移動
- while(1) を for(;;) に(動作結果が同じなので)
main(){ int c; for(;;){ c=getch(); printf("KEY = %c[%02X] \n",c,c); }}
でこんな感じです。
これで、だいたい 126byte → 77byte ぐらいです。
ずいぶん見にくくなりました。
さらに、一行にまとめると、
main(){int c;for(;;){c=getch();printf("KEY = %c[%02X] \n",c,c);}}
結果、126byte から 59byte減って、67byte になりました。
が、エーと、ものすごく見にくいです。
(そのぐらいは、我慢してください...)
其の弐
また、文字の表示位置の変更のために gotoxy()
などを大量に使っている時に効果的なのが、 #define
です。
gotoxy()
を例に、簡単に計算方法を書いてみます。
main(){ gotoxy(8,2);putchar(43);gotoxy(3,2);putchar(104); gotoxy(6,2);putchar(107);gotoxy(4,2);putchar(97); gotoxy(5,2);putchar(114);gotoxy(7,2);putchar(43); gotoxy(9,2);putchar(33);gotoxy(2,2);putchar(83); }
上記のプログラムを下のように変更すると
#define gxy gotoxy main(){ gxy(8,2);putchar(43);gxy(3,2);putchar(104); gxy(6,2);putchar(107);gxy(4,2);putchar(97); gxy(5,2);putchar(114);gxy(7,2);putchar(43); gxy(9,2);putchar(33);gxy(2,2);putchar(83); }
で、実際の計算は、8 × (6 - 3) - 18 - 4 = 2
です。
だだし、
8 =
元の名称の数 → "gotoxy"
の数
6 =
元の名称の文字数
3 =
新名称の文字数 → "gxy"
18 =
追加した行の文字数 → "#define gxy gotoxy"
4 =
行番号+改行
計算結果の値が、+の値になったら、減らすことが出来るということです。
ただし、新名称は、どんな名前でもいいのですが、くれぐれも変数名と重ならないようにしてください。
ファイルサイズの縮小は、アイデア次第?でかなり削れます(その分、見にくいですが)。
皆さんも頑張ってください。
最後に
最後に、この講座は乗せるかかどうか迷ったんですが (プログラミングスタイルにかかわるので)、 まあ、ヘ~、てな具合に見てくれればいいかなという事を付け足しておきます。
単純に書くことが無いだけだったりして。
履歴
- 2004/03/02
- 公開
- 2005/02/06
- 構成変更