テスト返却とデータ構造の共有問題
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
この記事は、 の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。