2009年5月31日 (第114回)
- 英語の囃子 第10回 吉田三先生、電子情報4年丸山さん
eng090531.mp3 - 福井大学大学祭会場から生電話 高専ライブ特派員 山本さん
歯科健康フェアで工作教室
6月4日虫歯の日を前に、歯科健康フェアの会、場ににて「歯みがきロボット工作教室」を 行ってきました。午前中に2家族の工作を終え安心していたら、途中参加の2名が加わり、 時間内に工作を終えようと、アシスタントの学生さんも協力しながらの工作教室となりました。 無事に完成しましたが、参加者数は少なかったものの予想外に疲れました。
派生クラスの説明
先週の問題提起をうけて、その解決手段でもある派生クラスについて説明する。
// 基本となるクラス // ⇒ "基底クラス" ("親クラス"と呼ぶ場合もある) class Person { private: char name[20] ; int age ; public: Person( char s[] , int a ) { strcpy( name , s ) ; age = a ; } void print() { printf( "name=%s , age=%d\n" , name , age ) ; } } ; // Personのデータにbukaをちょっとだけ加えたクラス // ⇒ 派生クラス(導出クラスと呼ぶ場合もある。) class Joshi : public Person { private: Person* buka ; public: // 上司のデータ構造のコンストラクタ Joshi( char s[] , int a , Person* b ) : Person( s , a ) , // 上司の名前と年齢を初期化 buka( b ) // 部下の情報を保存 {} void print() { Person::print() ; // Joshiの名前と年齢を // Personのデータとして表示 buka->print() ; // 部下の情報を表示 } } ; int main() { Person saitoh( "T-Saitoh" , 44 ) ; saitoh.print() ; Joshi ashida( "Ashida Noboru" , 55 , &saitoh ) ; ashida.print() ; // 上司の情報と部下の情報がペアで表示される。 // テーブルという配列に、saitohとashidaを登録。 // table[]は、「Personへのポインタ」の配列。 Person* table[2] ; table[0] = &saitoh ; table[1] = &ashida ; // table[]に格納された、saitohとashidaを表示する。 for( int i = 0 ; i < 2 ; i++ ) table[i]->print() ; // ただし、table[1] に代入する時点で、Joshi は Person に // 降格させられているので、部下の情報は表示されない。 }
プロジェクタ&エディタそのままで
いつもは、ホワイトボードにコードを書きながら説明を行っているが、 今日はEmacsを24ポイント表示にして、直接コードを入力しながらの説明を行った。 すぐにプログラムを実行した結果を見せながらだったので、ある意味便利。 しかしながら、継承の説明の前に、Joshi::print() を書いたコードを示し、 説明の順序を間違えた点で反省。
プロジェクタの説明では、エディタでスクロール移動をしすぎると、どこを見るべきか 追従できずに不満がでるだろうと、注意しながら…と思っていたが、 やっぱり画面移動が激しくなってしまった。 試験的に、プロジェクタを使ってみたけど、あまり巧い使い方ではなかったと反省。 「学生さんからは、この資料印刷して…」と頼まれたけど、 『そのまま日記にあげておく…』と説明する。
2009年5月24日 (第113回)
- バララット大学留学交換留学報告会 前半
- F-レックスの福井仕事塾のお知らせ F-レックスのサイトは こちら
- ゲスト F-レックス学生チーム 木下さん、三田村さん
メモ:LEGO MindStorm NXT に拡張インタフェース
MindStorm NXT に自作のハードウェアを接続するためのノウハウ?
- RCX変換ケーブル
- NXT拡張センサ
- NXT拡張センサ
- LEGO MINDSTORMS NXTグレーブック プログラムノツヅラ (単行本)
- NicoSensor
- NXTに自作センサを繋ごう
- NXTに自作のタッチセンサを付けるには
- NXTにLEDを繋ぐ
NXTにLEDをつなげる回路をそのまま使って、フォトカプラにつなげてやれば 自作モータも簡単にまわすことができるだろう。 また、通常のタッチセンサーであれば、1つのポートにスイッチ1つが基本。 だけれども、自作のタッチセンサーを接続させる回路の例をみると、 単純にアナログセンサーに接続されているだけみたい。 リンク先の記事では、抵抗値の違うスイッチを並列接続することで、 2つのスイッチを確認する方法が記載されている。
クソゲーは大体こういう流れでプロジェクトが進む
「ゲームプログラマ」を夢見る学生さんの夢をつぶすのか… といった問題もあるが、やっぱりゲーム会社なんて、ひどい環境はやっぱりひどい。 ということで、知り合いより教えてもらったページを見てみましょう。
継承の概念の必要性
オブジェクト指向プログラミングの授業にて、 先週は隠蔽化などの基本についての演習を行っていて、 初めてのC++による戸惑いもあってレポート完成に 至るのは困難な様子であった。 そこで、今日の授業では、次の継承などの概念が 必要とされる問題点を解説し、後半を先週からの引き続きの演習とした。
継承が必要とされる状況として、GUIプログラミングでの、 共通部分がある癖に、拡張部分が発生すると別なデータ構造となる。 古いGUIプログラミングでは、型IDに応じた分岐処理の 煩雑さが発生することを説明する。
異なる型による問題点の別例として、データの並び替えにおける、 アルゴリズムは同じなのに、異なる型に応じて同じ処理を 何度も書くことの煩雑さを紹介する。
新型インフルエンザの対応
一昨日の夕方、全担任を集めての学校の対応の 説明があった。私自身は別用があったが別途話を聞いて、 下記のような学校の示した対応を行っている。
- 関西方面に出かけた学生の動向確認。
- 当面、発熱による欠席などの学生の状況を、担任が毎朝確認&報告。
- 学生に、関西方面への移動自粛および移動の際は担任などへの連絡を行う。
- 5/20午前を短縮授業とし、1限目最初に20分のショートホームルームを行い、 上記の対応を説明する。
- 午後の特活の時間に、医師による予防対策の校内放送を行う。(放送のミスがあり校内放送は後日になった)
- 学生玄関にアルコール消毒、トイレに薬用石鹸の設置。
創造工学・テーマ概要書作成
創造工学演習の授業において、開発するテーマの概要書
(プロコン応募時の予選応募書類を兼ねる)
を作成する。来週5/26を、プロコン学内選抜の締め切りと
しているため、来週までにプロコン応募書類書式に沿った
書類を作成してもらい、来週は書類添削および、実際の
開発を始めてもらう予定。
N進数変換(atoi,itoa相当)
先週までのN進数変換、データ型の範囲、文字列の扱いの説明が終わったので、 その応用ネタで、定番のN進数文字列の変換のプログラムを示し、 そのプログラムを2進数、8進数、16進数に変更する内容を、説明&実習で行う。
この課題をやると例年なんだけど、「int型って何進数ですか?」と質問される。 「あえて言うなら2進数だけど、数値で覚えているだけで、 表示するときに%d,%o,%xなりで、都合のよい表示のしかたをするだけ..」と 説明しても、やはり???な様子。 自分で、色々な数値で表示してみるなりをやってみないと、解らないんだけどね。 まずは、色々テストすべし!!!。
そりゃ、昔々のCOBOLなら、"PIC 99999" あたりで宣言して、10進5桁とか 扱ってりゃ、話は別だけど…