cd c
を実行した後で( ~/c
に移動した後で )、以下の課題を
やってみよ。(講義 28 に対する課題も含んでいる。)
プログラムのコマンドラインオプションに指定したオプションが
-F
のように - と英字(大小を区別)で指定できる場合、
オプションを全て表示するプログラムを作成せよ。
> a.out -F -l -x -Y option F option l option x option Y
次のプログラムを実行してみよ。
#include <stdio.h> void test(int); main(){ void (*pf)(); printf("address of test: %x\n", test); pf = test; printf("address of pf: %x\n", pf); test(2); (*pf)(3); pf(4); } void test( int x ){ printf("number is %d\n", x); }
画面に点を表示するライブラリを作ってみよう。 例えば以下のようなものである。
^ | | * | * | * | * | * | * | * | * | * | * | * +------------------------------------------>
これを呼び出すプログラムは以下の通りである。但し、 ライブラリ側ではどのような関数が渡されて来るかは 分からないものとし、実際の点を示す関数 func() は 自分で考えよ。
下のプログラムに対して、 draw()関数を含む別のモジュールを作成せよ。また、 draw()関数は、描画する x,y 方向の広さと、描画する 関数のアドレスを渡すものとする。
#include <stdio.h> #include "draw.h" int func( int ); main(){ int max_x = 40; int max_y = 20; draw( max_x, max_y, func ); } int func( int x ){ /* 関数は自分で考えよ */ /* 例 return x*x; */ }
draw() 内部では、 から
まで funx(x) を
呼び出し、それが
から
までに入っていれば、
適当な配列にその位置を記憶させ、ループで回し、最後に
画面に出力して終了すれば良いだろう。
作成したプログラムをメイルで creport まで送りなさい。題は、kadai27 とする事。 但し、それぞれのモジュールが 分かるようにして送りなさい。