共用体と列挙型
先週、構造体のビットフィールドなどの応用も説明したので、 その応用として同時に覚える必要の無いデータの記憶として、共用体を説明する。 また、列挙型として、週の名前を例に使い方を説明する。
うーむ、Saturday とか、久々に黒板に書いてると綴りが怪しい。 黒板では、綴りを間違っていた様に思うんだが… さすがに「情けない」と反省し、キーボードに向かってタイプし、綴りを確認すると、 綴りミスが無い。どうも脳みそで、手書きとキーボードは別脳になっているようだ….
ハッシュ法
データ高速検索の最終方法ということで、ハッシュ法の説明。 例年どおりの、電話番号で名前を調べるデータベースを作ったら…にて、 説明を行う。 ちなみに、私の自宅電話番号と末尾2桁が同じ学生さんが1名であった。 ハッシュ関数やらハッシュ値、ハッシュ衝突時の対策として、 他の空きエントリーを探すクローズハッシュにて説明を行う。
来週は、文字データからハッシュ値を求める方法や、チェイン法を説明予定。
ビットフィールド
構造体のメモリ割り当ての話として、 ワードアライメントの問題から、中途半端なサイズの要素の前後には、 空き領域を割り当て、ワードアライメントをまたがったメモリ配置されないことを説明。
メモリの無駄が発生する話を受け、節約するための方策を説明。 年月日の情報などは、単純な整数型で覚えると、無駄が発生することを説明し、 その対策として、複数ビット毎で情報を覚える方法を説明。 その面倒な記述の対策として、ビットフィールド機能があることを説明する。
歯みがきロボットコンテスト
福井高専電子情報工学科共催の歯みがきロボットコンテストが行われました。 詳細は、他の記事にひとまず譲り、その関連情報をまとめます。 (2008/3記載)
ありあわせ1号の走行風景
歯みがきロボコンの参考出品用&来年卒研元ネタ&共同研究発掘ネタとして、 開発していたロボットの走行風景。しかし、うまくターゲットをとらえるのは、 確率20%〜30%ほどかなぁ…
- LINK /~t-saitoh/etc/2007/2007-11-09-00.wmv 走行風景の動画(2MB)
# ターゲットを捉え、反転しブラシを動かすまで…
バイパスコンデンサ
歯みがきロボコンも本番を控え、学生さんが苦労してます。 昨日「ロボットがバックするととまっちゃうんです…」と、 H8 を使った車体のチームが、最後の最後でトラブルを言ってきた。 原因がよく解らないんだけど、バックのとたんにリセットがかかっている様子。 電源の電流不足によるトラブルだろうということで、
- 電源の電流不足を補う「パスコン」が、H8/3664F ボード上のパスコンじゃ足りないかも。
- モータ反転時に発生するノイズや電流が影響しているかも。 パスコン追加でダメなら、モータの反転処理の際に、順方向回転→停止→逆方向回転 させると、ノイズが減らせるかも….
と、汚いその場しのぎの対策も含め、試してもらう。 実際には、「パスコン」を入れたら、動いたみたい。 実際に、H8 ボードの Vcc-GND 間と、モータ制御ICに入れてもらった。 こういうテクニックを肌で感じられるというのも、いい体験ですな…
携帯トラブル対策講習会
1年生を対象としたネットワーク犯罪に巻き込まれないため、携帯利用によるトラブルにあわないための講習会を、鯖江警察署の生活安全課の方の協力で行た。
2分木・AVL木・B木と2分木の応用(演算子と木)
2分探索木の実際として、AVL木やB木を説明する。
AVL木
木の高さ(深さ?)を求める再帰関数を示した後、実際に高さの差がでてきた時の対処として、 データ追記時に行う、1重回転,2重回転のポインタの繋ぎ替えを説明する。
B木
2分探索木の「1回の比較で対象データ件数が半分」を発展させた事例ということで、 「B木」を紹介する「N個のデータとN+1個の枝ポインタ」で図を使って紹介。 最近のデータベースの実装の中心であることを説明する。 また、最近のプログラム言語での「連想配列」の実装でもB木の応用が使われていることを紹介。
演算子と木
2分木の応用として、構文木の話しの導入として式の扱いを説明する。 演算子には、演算子の優先順位の他に演算子の結合方向などの考え方を紹介。 それを2分木として表現できることを図で示す。 この演算子を表現するときに、 LINK http://ja.wikipedia.org/wiki/%E9%80%86%E3%83%9D%E3%83%BC%E3%83%A9%E3%83%B3%E3%83%89%E8%A8%98%E6%B3%95「逆ポーランド記法(後置記法)」 (123*+),「前置記法」(+1*23),「中置記法」(1+2*3) などがある。
サーバ系OS,組込み系OS,コンピュータの動き
先週でのパソコンでの OS の歴史を受けて、それ以外のOSを紹介。 サーバ系として、汎用機の MULTICS などを受けて unix が開発され…BSD系SystemV系と別れ、 POSIX 系での統合の結果、BSD系,Linux系,Solaris系へ… 組込み系として、リアルタイムOSのTRONを紹介。特にμITRONは身近に使われていることを説明。
パソコンの動作として、CPU の Fetch,Decode,Read,Execute,Write,次命令..の基本を説明。 ROM,RAM の違いを説明の後に、OS とコンピュータの起動を説明。
- 電源起動で、ROM に書き込まれているブートローダが BIOS を使いながら、 OSを RAM に読み込む。
- RAM上の OS がユーザの要求したアプリを補助記憶から RAM に読み出し、実行する…