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 とする事。 但し、それぞれのモジュールが 分かるようにして送りなさい。