講習会:LEGO NXTに外部インタフェース
昨年度の外部の方を対象とした自律ロボット制御の 講習会を今年度も継続して実施している。 昨年度とは違った内容と思い、LEGOに外部インタフェースを つける内容で講習会を行っている。
内容は別日記に記載してあるが、 機械系の業種の方で電子回路などは詳しくない方が対象。 このため半田付けやブレッドボードの配線なども 体験して頂いた。 時間配分がどうなることかと心配したけれど、 予定時間どおりに無事終えることができた。
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記法を解説中。 構造図と振る舞い図の一連のもので主要なものを解説。 特にクラス図は、宣言などを交え説明を行う。 下記のサイトの説明が、概要把握には記号と説明の対比と、具体例もあって、 短時間に理解するには判りやすかった。