ホーム » 2004 (ページ 13)
年別アーカイブ: 2004
ファイルとコマンドプロンプト
絶対PATH,相対PATHの理解と、木構造ファイルの理解のために、 Windowsコマンドプロンプト環境を用いて、dir,echo,type,mkdir,rmdirの説明。 最後に、指定したtree構造と同じディレクトリをコマンドで作成し、 explorerで確認した結果と、そのために用いたコマンドの記録を、 レポートにして提出。
久々にDOS窓で仕事をすると、ドライブレターの扱い注意の説明のタイミング がおろそかになる。
今年度から、オペレーティングシステムの講義が4年から3年に移り、 高久先生担当にて始まっている。 今回の説明の範囲は、丁度重複しているとの指摘を受ける。 高久先生の話しでは、来週にパイプとリダイレクトの内容を予定しているとの 話しであるため、今年度以降は、ファイル入出力処理に専念できそう。
リスト構造によるFIFO
リスト構造によるStackの続きの話しとして、リスト構造にてFIFOを作るプログラム の解説。
リストでqueue
最初に、配列を使ったFIFOのプログラムを示し、 (1)プログラムにリング操作となる処理の追加、 (2)read pointer がwrite pointer を追い抜くなどの対処の必要性を示す。 最終的に リングバッファ という名前を示し、実例としてキーボードなどの、 受け側が忙しい時の一時データ保管という意味合いを説明。 その後で,リストでFIFOの説明として、以下のコードを示す。
struct List* queue ; // 初期状態は最初伏せて説明 struct List** tail ; void put( int x ) { (*tail) = cons( x , NULL ) ; tail = &( (*tail)->next ) ; } int get() { struct List*d = queue ; int ans = queue->data ; queue = queue->next ; free( d ) ; return ans ; }
課題の提示
演習課題として、リスト構造のプログラム作成として、 (1) 文字列,(2)複素数,(3)名前と電話番号のいずれかのリスト構造を定義し、 (a) 先頭挿入型、(b)末尾追加型のいずれかの方法で入力データを保存し、 データ検索などの処理を行った後、全データを表示する。
データの途中への挿入・削除
void insert( struct List* p , int x ) { struct List* n ; n = (struct List*)malloc( sizeof( struct List ) ) ; if ( n != NULL ) { n->data = x ; n->next = p->next ; p->next = n ; } } void del( struct List* p ) // 関数名にC++キーワードdeleteは避ける { struct List* d = p->next ; p->next = d->next ; free( d ) ; }
プロコン予選の通過
プログラムコンテストの予選結果の発表があった。 予選を通過したのは、以下の4チーム
「予選通過おめでとう」と叫びたい一方で、 「これからが大変だ!」というのが、素直な感想。
グラフィックの課題の続きと多重継承
先週の課題の続きとして、仮想関数を用いた図形クラスにおいて、色のある図形をど う扱うかを プログラム例を見せながら説明。この説明中で、多重継承の概念を説明する。
- 図形クラス→(継承)→四角のクラス→(継承)→色つき四角のクラス
- 色つき図形クラス→(継承)→色つき四角のクラス
- 図形クラス , 色クラス →(多重継承)→色つき四角のクラス
ガッコのサーバの設定
図書館の書籍検索サーバ が、学外から読めるように設定追加の依頼。 対外接続サーバで、DNSの登録と,apacheで virtual host の設定を追加。
いつもながら、zoneファイルの Serial 番号を増やす作業を忘れて、 「あれぇ〜、設定が有効にならねぇなぁ…」を繰り返す。
ファイルの導入部(絶対PATH,相対PATH)
ファイルの概念の説明の前に、絶対/相対 PATH の説明を行う。 参考: 配付資料
来週は演習室にて、DOS 窓のコマンドラインを使いながら、 指定するディレクトリ構造を作り、その結果をレポートとする予定。
画像処理
卒業研究でのリアルタイム画像処理の実例を知ってもらうために、 一昨年度のデジQ制御の画像処理システムを卒研生に触ってもらう。 今までの予備知識もあったので、2値化・ネガ・特定色の変更、 といったプログラムを書いて遊んでいたみたい。 自分のプログラム通りに、リアルタイムに絵が替わるのは、 やはり面白いし、実体験から HSV の色の概念が身に付きそう。
卒研は、『画像内の特定部分にレーザーポインタを当てる』 FN 最終的には、ゴミ集積場のカラスにレーザ光をあててもらう予定 /FN テーマと、 『QCAM のカメラにサーボモータを付け、特定画像を追いかける』 テーマで進めてもらう予定。
学校で購入した、 Webcam 5 は、 デバイス認識 は通るものの、xawtv でデータをうまく読めない。 しかたがないので、自宅で使っていた QCAM を持って来る。
リストの生成
簡単にリストの利点・欠点や考え方のおさらいをやったあと、 リストデータを生成するプログラムの実例
struct List* cons( int x , struct List*p ) { struct List* n ; n = (struct List*)malloc( sizeof( struct List ) ) ; if ( n != NULL ) { n->data = x ; n->next = p ; } return n ; } void main() { // 単純な機械的生成 struct List* top = cons( 1 , cons( 2 , cons( 3 , NULL ) ) ) ; // 先頭に挿入型 struct List* top = NULL ; int x ; while( scanf( "%d" , &x ) == 1 ) top = cons( x , top ) ; // 末尾連結型 struct List* top = NULL ; struct List** tail = &top ; while( scanf( "%d" , &x ) == 1 ) { (*tail) = cons( x , NULL ) ; tail = &( (*tail)->next ) ; } }
基礎プログラムを見せた後、時間が余ったので来週のネタの入り口として、 リスト構造による Stack の説明
サーバ再起動
カーネルの更新と共に、CPU温度監視などの lm-sensor 等が、 コンパイル済みパッケージで動かせるのが確認できたので、 インストール&再起動。 家のマシンと違って、ARAID99あたりも入っているし、 極めて安定運用できているのが、いいね。