ホーム » 2010 » 5月 » 06

日別アーカイブ: 2010年5月6日

2010年5月
 1
2345678
9101112131415
16171819202122
23242526272829
3031  

最新の投稿(電子情報)

アーカイブ

カテゴリー

創造工学演習のネタ

創造工学演習で作ってみるテーマで、半期かければできそうなネタをいくつか紹介。

パソコンを操作という感覚なしで、ゲームができる事例。 手のひらの動きにあわせて、上からプロジェクタで投影する。

音と位置情報をあわせたものづくりができないか?

  • GPSデータつきのTwitterのつぶやきを、自分の位置情報にあわせてサラウンドで読み上げる。
  • 音を地図にマッピングし、ユーザの動きに合わせて音が変化する。
  • 遠方の音ほど、小さい音で、低音がカットされた音で再生する。 ユーザに方角センサーをつけ、ユーザの向いている方角の音は大きな音で再生する。

再帰処理の処理時間の分析

再帰呼び出しの含まれる処理の、分析について説明を行う。 再帰に慣れていない人のために、fact(N) , pyra(N) , fib(N) のプログラムを示し、 適当な引数での実行結果を答えて貰う。

fact(N):階乗のような再帰であれば、処理の時間も繰り返しになることから、代入法で 簡単に説明ができる。しかし、フィボナッチ数列fib(N)であれば、自身の呼び出し回数も 簡単には説明ができない事例。ということで、まずはハノイの塔の処理ステップの証明を、 (1) 代入法による一般解の予想、(2)数学的帰納法を交えてた証明について 説明を行う。

最後に、フィボナッチ数列の再帰の処理時間を、代入法により示し、ピネの公式より オーダを示す。

C構造体からC++クラスへ

授業3回目にて、電子情報以外の学生さんが受講を取りやめ、 受講者全員が電子情報学生となった。 基本的な部分の説明が不要となるため、細かい内容まで話すことができた。 最初に、前回授業で話すことができなかった、参照渡し(ポインタ渡し,値渡し)を説明した後、 C言語でオブジェクトっぽく書くスタイルを発展させながら、下記のようなC++における、 クラス宣言を説明する。

class Person {
private:
char name[ 20 ] ;
int age ;
public:
Person( char s[] , int a ) { // コンストラクタ
strcpy( name , s ) ;
age = a ;
}
inline void print() const // inline 開いたサブルーチンにする
{                         // const メンバ変数を書き換えないメソッド
printf( "%s %d\n" , name , age ) ;
}
} ;
void main() {
Person saitoh( "T-Saitoh" , 46 ) ,
mitsuki( "Mitsuki" , 10 ) ;
saitoh.print() ;
mitsuki.print() ;
}

例年は説明を省略しているけど、const メンバ関数宣言や、inline 宣言による説明を行う。