ホーム » 2011 » 12月 » 08

日別アーカイブ: 2011年12月8日

2011年12月
« 11月   1月 »
 123
45678910
11121314151617
18192021222324
25262728293031

最近の投稿(電子情報)

アーカイブ

カテゴリー

テスト返却とデータ構造の共有問題

2分木とハッシュ法を範囲とする中間テストの返却と、 後期期末までの授業のための導入部分を説明する。

テスト解説の後は、データの共有と削除に伴う問題点を紹介し、 来週からの授業の導入とする。

データの共有が発生する場合の代表的な例として、リストを用いた集合における、 和集合とそのリスト廃棄で説明を行う。

// すべてのリストを捨てる処理
void list_free( struct List* p ) {
struct List* del ;
while( p != NULL ) {
del = p ;
p = p->next ;
free( del ) ;
}
}
// 補助関数:find
int find( struct List* p , int key ) {
for( ; p != NULL ; p = p->next )
if ( p->data == key )
return 1 ;
return 0 ;
}
// 和集合
struct List* add( struct List* p1 , struct List* p2 ) {
for( ; p1 != NULL ; p1 = p1->next ) {
if ( ! find( p2 , p1->data ) )
p2 = cons( p1->data , p2 ) ;
}
return p2 ;
}
void main() {
struct List* p1 = cons( 1 , cons( 2 , cons( 4 , NULL ) ) ) ;
struct List* p2 = cons( 2 , cons( 3 , NULL ) ) ;
struct List* p3 = add( p1 , p2 ) ;
// p1 = { 1 , 2 , 4 }
// p2 = { ※2 , 3 }
// p3 = { 4 , 1 , ※2 , 3 } , ※の部分が共有されている
list_free( p3 ) ;
list_free( p2 ) ; // ※の部分は既に前処理で消されている
// のでリストの廃棄処理でトラブル。
list_free( p1 ) ;
}

中間テスト返却&データベース設計

データベースのテスト問題の答え合わせと解説の後、データベースの設計についての説明を行う。

SQLの動作確認や、SQLの記述問題について解説し、 後半の説明問題について説明を行う。

授業後半は通常の授業に戻り、データベースの設計について説明を行う。

トップダウン設計では、要求仕様書などに記載された、名詞をベースに実体とその属性を抽出する。 動詞に注目すれば、関連を取り出すことができる。 これを元に、ER図を描いていく。

ボトムアップ設計では、既存のデータベースの元となる帳票をベースに属性を 作っていく。 最初に、レベル毎に分類し、その属性の中で、従属する属性を見つけテーブルを 分割してく流れを説明する。 ただし、処理の効率や更新の頻度を考慮して、表を併合する場合もあることを紹介。

後期中間(構造体ネタ)テスト返却

中間テストの採点結果の返却と問題の解説を行う。

間違った回答の傾向をみていると、成績の悪い人は 2重forループの繰り返しから怪しそうな雰囲気が見えてくる。 4年の情報構造論になれば、構造体のポインタが絡むからこそ、 データの型に注目してプログラムが書けるようになってほしい。

最後の問題で、5年のデータベースの問題を流用し、 2つの表を串刺しのプログラムを書いてもらった。 しかし、この3年間、データベースに関連した出題をしていたことから、 傾向を予想されているのか、正解率は高かったかな。

解説終了後は、後半のグラフィックスの授業内容の導入として、 最近の映画をネタにグラフィックス処理の大変さを解説する。

3軸の加速度・角加速度…(12/07)

  • 12/07 3軸の加速度・角加速度・方位センサー全部入り…I2Cバス 3.3[V] いいなぁ…ArduinoでMotion系これで全部いけるじゃん。 http://tinyurl.com/7cddm2b #fnct

この記事は、twitter の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。