C言語講座 第二回 ファイルサイズの縮小post

始めに

第二回のC言語 講座は、ファイルサイズの縮小を扱うことにします。

ポケコンでC言語のプログラムを作成するメリットは、「BASICプログラムよりも実行速度が速い」ことが挙げられます。 当然ですが、マシン語には実行速度はかないません(プログラム言語の中では最速です)。←当たり前だ

ただ、C言語でプログラムを作ったことがある人は、分かると思いますが、BASICに比べてファイルサイズが大きすぎるのです。

其の壱

まず、以下のソースを見てください。

void main(void)
{
int c;
while(1) {
c = getch();
printf("KEY = %c[%02X] \n", c, c);
}
}

プログラム的には、キーを取得し、その値をキャラクタと16進のキャラクタコードを表示するだけのプログラムです。

まず、基本的に省略可能な部分から省略していきます。

  1. void を省略
  2. 見やすいように入れてある空白・改行を削除
  3. 大カッコ( { )を移動
  4. 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
構成変更
| C言語講座 第二回 ファイルサイズの縮小 |

   /   変更履歴  /   Permalink  /  このエントリーをはてなブックマークに追加 
 カテゴリ: ポケコン, ポケコン講座  /   タグ: ポケコン