ホーム » 2004 (ページ 13)

年別アーカイブ: 2004

2025年5月
 123
45678910
11121314151617
18192021222324
25262728293031

検索・リンク

ファイルとコマンドプロンプト

絶対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あたりも入っているし、 極めて安定運用できているのが、いいね。

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー