課題の締め切りですが、2 段階に設定しています。
最初の締め切りは、11/5 です。出せる人は、11/5 までに提出するように頑張りましょう。
出せなかった人は、現在の状況を連絡するように。
皆さんの状況をもとに 11/5 の夜にヒントを出します。最終締め切りは、11/13 にします。
このあと、解答例を紹介することにする予定です。
もし、最終締め切りに間に合わなかった場合でも、解答例などを参考にシッカリとした解説などを送ってくれれば、評価します。 とはいえ、自作プログラムではないので、点数は低くなりますけど。
それから、他の人に色々アドバイスをもらった場合は、必ずレポート冒頭にその旨明記してください。 何の断りもなく他人のプログラムに酷似したプログラムを提出した場合、確認の上、僕の演習分の点数はなくなると思ってください。
さて、この演習ページには例えば
"compile_app_gcc.html"から"compile_link.html"へのリンクという風に沢山のリンクがあります(情報)。 で、基本的には、"index.html" が玄関口になっています。
さて、これらのリンクをたどることでいろんなページに行くことができるのですが、 ページの中には、
というわけで、僕の方で Page_t というWEB Page を表す構造体(中身は内緒)と、
利用可能な関数群を準備しました。webPage.hで宣言してあります。
つまり、あるページについて、その名前や別のページへのリンク情報などをたどることが出来るわけです(本当は、、、)。
ページをたどる際に、自分でデータを書き留めておきたければ、各ページの UserArea に書き込みましょう。
UserArea にもっと変数領域を足したければ、userArea.hを自分で書き足してください。
皆さんに与えられた仕事は、このリンク空間を"index.html"からリンクをたどりながら探索し、以下の課題をこなすことです。
userArea(page)->inverseLinkに結果を格納しましょう。
index.html ページに関しては、 本来は、見つかったページからのリンクだけをカウントするはずです。 でも、それよりカウント数が一つ多い(最初の index.html へのアクセスを余分に数えた)場合でも OK にしています。
userArea(page)->depthに結果を格納しましょう。
main program は、初期セットアップが終わってから、index.html の page に対して、 userProg.cの中の
void userSearch(Page_tp page)を呼び出します(page->name == "index.html"である)。 皆さんは、この関数を完成させて問題 1, 2 をクリアしましょう。
ファイル群の説明をしておきますと、
% make gcc -g -Wall -c -o webPage.o webPage.c gcc -g -Wall -c -o userProg.o userProg.c gcc -o webSearch webPage.o userProg.o % ./webSearch 今のところ、userSearch(page)は、単に page の中身を表示しているだけ Name: index.html HTML?: true uara depth 0 uara inverse link 0
プログラムが完成し、その解説ができたら課題を提出しましょう(提出法)。 提出物は、プログラム解説と、皆さんの変更/作成したプログラムです。 くれぐれも、名前や学番を忘れないようにしてください。 書き忘れていましたが、演習の感想もお願いします。
それから、この課題は、再帰関数の扱いと、 pointer を辿る skill と、有向グラフのイメージがあれば、特に難しくないはずです。 あと、debugger が結構役立つと思います(segmentation fault とかを起こしやすそうだし)。
2002.10.29/ Tomio KAMADA: kamada@cs.kobe-u.ac.jp