リスト構造と公開授業
公開授業週間ということで、他の先生が30分ほど見学にきていたけど、マイペースに授業。
リスト構造のプログラムの説明ということで、先週の逆順格納のリストの改良として、 末尾追記型のリスト処理のプログラムを示す。 ポインタのポインタがでてくる事例なので、式と型による意味の理解も目指す。 その後、リスト処理に再帰を使ったプログラム例なども示す。
授業後の質問で、構造体の "." と "->" の違いを聞かれる。
リストポインタの先のデータ部...の説明を、 (*p).data と書いてあげたら、疑問点が氷解した様子。
ポインタの使い方(ぬるぽ)
先週のポインタの説明の続きとして、 関数の値の受け渡しにおけるポインタ渡しの方法と、 ポインタをずらしながら処理を行うスタイルの説明を行う。 ポインタをずらしながらの処理では、末尾に-1をいれた整数排列の合計プログラムと、 strcpy の記述例を通して、x++,++xの違いなども説明する。
ぬるぽ
書いてはいけないプログラムという例で、 初期化していない実体を指していないポインタ の例を示し、説明を行う。 そのおまけとして、そのポインタ変数が大域変数だったら、0番地を指し示し、 そのプログラムは「NULL ポインタ代入エラー」が発生するだろうと説明。
このように間違ったポインタを含むプログラムでは、「NULLポインタ代入」が発生し、 初心者のプログラムではよく発生する。 これが転じて初心者プログラマーを揶揄する時に使われ出して、 2ch用語「ぬるぽ」となった…といった説明をする。
# この手のネタは、反応がいいのぉ…
学校閉鎖だよ
ハシカの疑いのある学生さんがでて暫定の学校閉鎖。 今日は高専大会にでる可能性のある学生さんの抗体検査となりました。
はしか疑いによる29日休校
麻疹の疑いのある5年学生の発生から、 本日午後緊急会議があり、 当該学生の結果判明までの29(金)が、 暫定で休校となりました。 陽性が判明した場合、 来週が休校となるそうです。
北陸地区高専大会の参加/不参加が懸案となっています。
EPCS起業セミナー
高専で学生,OBの起業サポートを目標としたアントレプレナーサポートセンターの 後援にて、電子情報OBにて会社を起業している3名の先輩による講演会が開かれました。 電子情報 4年,5年の学生さんも参加して、起業までの思いなど語ってくれました。
講演 北野氏,花山氏,福野氏
UL
色々と起業までの熱い思いを語ってくれましたが、最後の私の質問は、 「北野,福野両氏とも、奥さんも同じクラスのEIのOBですが、奥さんは『会場の学生さんへの一言』だと何を語ってくれそうですか?」 と、ちょっとはずした質問をしてしまいました。
福野氏曰く:自分がこういう人なので 「常識って大切だよ!!」と言うだろう… だそうな…(^^;
テスト返し
テストを返しながら、説明の抜けている点を補足説明する。
- 局所静的変数宣言 statick の意味、
- return は関数でない。void では末尾の return は不要。
- main の返り値は、プロセス正常かを返す int 型。
70未満学生は、間違った箇所のテスト直し提出。 60点未満学生は、全部の問題のテスト直しを提出。 テスト直しを提出しない場合、今後の追試などには参加させない。
学外から電子情報サーバが見えない時がある。
テストを返却したら、学生さんより「電子情報サーバが見えない時がある」との報告をうける。
自宅にて調べてみたら、負荷分散用のラウンドロビンDNSの設定がされているけど、 その一方のアドレスにて、アクセスすると学校のサーバに接続できない。 負荷分散用対外接続サーバの内向きProxyが一方だけ動いていない様子。 このため、確率1/2でつながったり、つながらなかったりという状況が発生している。 センターに報告し、修正してもらう。
MindStorm NXT Programming Sotware
MindStorm NXT Programming Sotware
LEGO MindStorm NXT でのロボット作りのチームより、 「使いやすそうなプログラミング環境は?」と聞かれる。 ひとまず、 色々と探してみる(MindStorm NXT Programming Sotware) けど、 Next Byte Codes & Not eXactly C あたりが良さそう。
仮想関数をもちいたグラフィック
今までの仮想関数の説明だと、新しい考え方に悩んでいそうなので、 簡単に総括説明をしたあと、演習の導入を説明する。
例年どおりの、図形クラスへの機能追加をテーマとする。 ただし、EI系以外の学生さんだと、グラフィックスプログラミングの 経験がないので、まずは演習とは関係無く、グラフィックス機能の演習を行う。
++i と i++ の違いを質問される。
printf( "%d\n" , i++ ) ; は、 printf( "%d\n" , i ) ; i = i+1 ; と同じ。 printf( "%d\n" , ++i ) ; は、 i = i+1 ; printf( "%d\n" , i ) ; と同じ。 基本的に、式全体の評価の前に i=i+1 するのが "++i"
「+=」と「=+」の違いを質問される。
比較演算子 i <= 10 と i =< 10 と書いても同じように、 どちらで書いても良い….といいたいけど、
i=+1; ~が「i = (+1)」と「i=i+1」の間違った2つの解釈の可能性がある。
このため、慎重なプログラマーは、
i += 1 ; // += 演算子の前後に必ず空白を入れる。