ホーム » 2010 » 4月 » 22

日別アーカイブ: 2010年4月22日

2010年4月
« 3月   5月 »
 123
45678910
11121314151617
18192021222324
252627282930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

学力到達度試験で優秀者2名

今年最初に3年を対象として行われた、全国高専学力到達度試験にて、 2名の学生が優秀な成績であったとのことで、学内表賞の 賞状と副賞(図書券)を配りました。優秀者は以下の2名。 3年末での試験といいながら学生さんにしてみれば、 メリットが少なくきちんと準備して受験していない人も多い中、 日頃の成果をきちんと出してくれたと思います。

  • 4EI本山くん(数学・物理の2科目)
  • 4EIツェンデくん(数学)

ループ型処理の時間見積もり

先週の単純サーチの処理時間に引き続き、 2分探索法の処理時間と、最大選択法の処理時間の式を示す。 この結果を踏まえ、処理時間の見積もりでは、Nが巨大化したときの最大項と、 その項から比例乗数を抜いた式を、オーダ記法と言うことを説明する。

今日の授業だけど、4年になった変化なのか、いい意味でのツッコミなどがぽんぽんと 出てきて、説明のリズム的にもすごく話しやすかった。 積極的に質問も出てくるし、どこが変わったんだろうか…. 楽しく話ができて、気持ちいい授業でした!!

関数ポインタやプロセス起動

今日は、専攻科の特別研究中間発表のある日で、短縮授業。 時間短いしテキパキやろうと授業に乗り込んだけど、発表準備があるためか、 電子情報の学生さん2人のみ。 このまま授業を進めると、来週復帰してくる学生さんがワケワカメになるので、 講義内容を変更する。

通常、電子情報以外の学科の人には、C言語の基本が知らなかったりするので、 話を省略している、関数ポインタについて紹介する。

関数ポインタ

オブジェクト指向が多用されるGUIなプログラミングでは、マウスが押されたときに動かす処理… といったように、GUIライブラリに自作処理を渡すコールバック関数が多用される。 また、後々のオブジェクト指向の講義で話す、仮想関数の実装でも関数ポインタが使われる。 典型的な使い方は、以下のとおり。

int add( int x , int y ) { return x+y ; }
int mul( int x , int y ) { return x*y ; }
void main() {
int (*f)( int , int ) ;
// fは関数へのポインタ。
// (2つのint引数を持ち、intを返す関数)
f = add ;
printf( "%d" , (*f)( 2 , 3 ) ) ; // 2+3が表示
f = mul ;
printf( "%d" , (*f)( 2 , 3 ) ) ; // 2*3が表示

プロセス起動

説明の中で、お二人さんから特別研究に関係するC言語のテクニックとして、質問がでたので 回答する。

(( main は、どう書くのが正しいか? ))
int main( int argc , char* argv[] ) {
:
return 0 ;
}
// argcはコマンドライン引数の数(プロセス名を含む)
// argvはコマンドライン引数の実体
// mainのreturn値は、プロセスの実行結果
//   0:正常終了
//   それ以外:異常終了
(( 自分で書いた処理から、gnuplot を起動したい...))
表示させる処理を書いたscriptを作って、
system( "gnuplot スクリプト" ) ;
みたいに呼び出せばいい。ただし、gnuplot の処理が終わるまで、
呼び出し側は処理ができない。呼び出し側で凝った処理をしたい
ならば、fork() + exec() で gnuplot を呼び出し、必要に応じて
gnuplot とパイプで処理を渡すなどのテクニックを使うべきかも。