ホーム » 2009 » 7月 » 09

日別アーカイブ: 2009年7月9日

2009年7月
« 6月   8月 »
 1234
567891011
12131415161718
19202122232425
262728293031  

最近の投稿(電子情報)

アーカイブ

カテゴリー

講習会:LEGO NXTに外部インタフェース

昨年度の外部の方を対象とした自律ロボット制御の 講習会を今年度も継続して実施している。 昨年度とは違った内容と思い、LEGOに外部インタフェースを つける内容で講習会を行っている。

内容は別日記に記載してあるが、 機械系の業種の方で電子回路などは詳しくない方が対象。 このため半田付けやブレッドボードの配線なども 体験して頂いた。 時間配分がどうなることかと心配したけれど、 予定時間どおりに無事終えることができた。

0907092301_314x205.jpg

Listの挿入削除と、演習

先週でのリストの追加のネタの前に、いつもであればリストの挿入削除を説明していたのに、 説明が抜けていたので、挿入処理と削除処理を説明する。

昇順リストにデータを挿入

昇順にデータを保存しているリストに対し、与えられた値を挿入。 授業では、consを用いた例と使わない例をしめした。 ここでは、consを使わない例を記録しておく。

void insert( struct List* p , int key ) {
struct List *q = p , *r ;
while( p != NULL && p->data < key ) {
q = p ;
p = p->next ;
}
r = (struct List*)malloc( sizeof( struct List) ) ;
if ( r != NULL ) {
r->data = x ;
r->next = q->next ;
q->next = r ;
}
}

説明の後、挿入場所が先頭だったら、末尾だったらの確認をしないと、 動かない場合があるから、チェックは大切と「次の番兵」の伏線を…

リスト中の削除

リストの途中のデータを削除する処理。 処理を短く書くために、削除すべき場所を探す処理は、別に行うものとする。 pは消したいデータの1つ前の要素を指している。

void remove( struct List* p ) {
struct List* del = p->next ;
p->next = p->next->next ;
free( del ) ;
}

この説明の後、学生さんより「消したいデータが末尾だったら?」と質問される。
# 伏線の効果あり…
ということで、番兵のテクニックの概要を紹介しておく。

UML記法

オブジェクト指向のまとめとして、UML記法を解説中。 構造図と振る舞い図の一連のもので主要なものを解説。 特にクラス図は、宣言などを交え説明を行う。 下記のサイトの説明が、概要把握には記号と説明の対比と、具体例もあって、 短時間に理解するには判りやすかった。