Skip to content.

kagome.lab.tkikuchi.net

Sections
Personal tools
Views

演習6

Document Actions

毎度ですが

  • ~/da/ex6 でやってね。

C言語でライブラリを使う

  • 実際の開発現場で整列や探索をゼロから作るというのはありえません。
  • 大概の言語ではライブラリやモジュールとして用意されています。
  • ところが、マニュアルを読めないがために使いこなせないことが往々にしてあります。
  • マニュアルや例題を探してやってみます。

整列

とりあえず例題もやってみる

  • q6-1.c という名前で作成
  • FAQ:qsortの使い方 の「構造体をソートする例」
    • なお、このプログラムには一部バグがあるようなので、データを変更・追加などして確かめ、正しいものにすること

データベース・ライブラリを使う

  • Berkeley DB を使う
  • 例題 に従ってやってみる よし。
  • 若干環境が違うので、以下のように修正。
  • この場合 #include <db.h> でなく #include <db4/db.h> と修正し、
  • gcc のオプションは -I/sw/include -L/sw/lib のように修正する。

が、

  • やはり、C は面倒なので Python で例題をやってみる。

前準備

B木データベースの作成

  • まず、B-tree データベースを作成する。次のスペルチェックでは、元の辞書ではなく、このデータベースを利用する。
  • words2db.py を実行して、データベース (words.db) を作成。

B木データベースを用いたスペルチェック

  • spelld.py を参考に、q6-2.py の名前で作成する。
  • 留意点
    • 元の辞書 (/usr/share/dict/words) を参照する必要はない。
    • WD = bsddb.btopen("words.db", "r") を用いて、「読み込み専用」でデータベースを開く
    • WD は「ディクショナリ」のように使うことができる。
  • 参考マニュアル

ちょっと考えてみよう

  • spelld.py (ディクショナリ) と q6-2.py (B木データベース) のどちらが速いか?
  • 1回だけ実行するなら?
  • 何度も実行するなら?
Created by tkikuchi
Last modified 2006-07-24 10:22
 

Powered by Plone

This site conforms to the following standards: