ホーム » 2004 » 4月

月別アーカイブ: 4月 2004

2004年4月
« 3月   5月 »
 123
45678910
11121314151617
18192021222324
252627282930  

最近の投稿(電子情報)

アーカイブ

カテゴリー

遠足でバーベキュー

今日は遠足で、西山公園。体育祭の応援練習で風邪をひいている学生やら、 サボりの学生やらで、出発時には27名。まあ、こんなもんでしょう。 JR武生駅から、日野川堤防沿いに西山公園まで。 別に車で移動してもらった、ママにバーベキューセットを店開きして、 焼きそば中心の低予算バーベキュー。 思ったよりも、楽に着いたという学生多数。

しかし体調不良は、自分自身もひどかった。 しっかり学生から風邪を写されていた。おかげで翌日も風邪で身動きとれず。

なにげなく、「来年は日野山かぁ〜」と振ってみたが、反対意見が多かったな。

達成度チェックシート

JABEEでは、学生各自が学習教育目標を達成しているのかを、 チェックできるようなシステムが要求されている。 JABEE向けの自己点検書で、各自の達成度の資料を簡単に 作成するためのExcelシートを作成した。 専攻科の学生さんは、一度このシートを使ってチェックしてみましょう。

抽象化と隠蔽化、およびC++のプログラム例

先週からの続きとして、C言語によるオブジェクト指向のエッセンスを 取り入れた短いプログラム例を通して、説明を行う。 関数による 手続き抽象 の説明、三角形のデータ表現を例に用いて データ抽象 の説明および、メンバのアクセス制限の必要性の説明を行う。

この後、Cによる説明から、C++を用いたプログラム例に書き換える。 先週の説明での Person[氏名,年齢,身長]を class 化し、 set,printのメソッドを定義したプログラム例を用いる。 private/publicによるアクセス制限にも言及。 これによりデータ抽象、手続き抽象の効果が得られ、 プログラム開発の役割分担が容易、原因究明の線引きが容易という点を強調。

ただしコンストラクタ、デストラクタなどは用いない。

class Person {
private:  // private指定では、メソッド外からのアクセスを禁止
char  name[20] ;
int   age ;
float height ;
public:   // public指定では、メソッド外から参照できる
void set( char s[] , int a , float h ) { // データ初期化のメソッド
strcpy( name , s ) ; age = a ; height = h ;
}
void print() {    // データ表示のメソッド
printf( "%s %d %f\n" , name , age , height ) ;
}
} ;
int main() {
Person saitoh ;
saitoh.set( "斉藤" , 39 , 172.3 ) ;
Person mitsuki ;
mitsuki.set( "充輝" , 4 , 97.4 ) ;
saitoh.print() ;
mitsuki.print() ;
}

工場見学旅行の行き先の見積もり

今日、前回担任の時にお世話になった、旅行社の方が来られた。 先日の特活の時間の結果を踏まえ、九州方面の旅行パンフレットなどの 準備を依頼する。他業者さんにも、同様の依頼をすることになるだろう。

んで、特活の時の意見での、沖縄、台湾、ハワイなどの見積もりの場合 を聞いてみた。沖縄や台湾は、ほぼ同額で、9万円程度となるらしい。 学校で3年から集める予算は、7万5千円らしいので、 沖縄・台湾に決まると追加で旅行費用を集める必要があるらしい。

ちなみに、 わぃは〜 FN シンガポールでも同様な予算規模となるらしい。 /FN の場合には 9.11 事件の後とはいえ、人気が高いため航空業界の 不景気の状態があったとしても、やっぱり10万を超えるらしい。

対外接続用 DNS 情報の変更

一般科目のWWWサーバを学外からも参照可能となるように、設定の変更。 うちのガッコの対外WWWサーバは、DMZ 設置の apache から、PROXY 機能で 学内サーバを見せている。このため、学内のサーバをガッコから見える ようにするためには、 (1)一般科目のドメイン名を学外でも見えるように、DNS を変更し、 (2)DMZ設置の apache の virtual domain 機能内の proxy の設定を変更する。

浮動小数点の扱いと、変数のスコープと寿命

浮動小数点の扱いを簡単に説明。
大域変数と、局所変数について説明したあと、ループ変数をわざと大域変数にして、 挙動のおかしくなるプログラムについて解説し、「大域変数は極力使わない」と説 明。

この後で、具体的に局所変数のスコープについて、簡単なプログラム例を交えて 有効範囲の説明を行う。次に、大域変数と局所変数の初期化のタイミングと 寿命について解説し、auto変数、static FN 今年はマニアな人がいないので、ファイル内に閉じた大域変数での static に ついて、ツッコミを入れてくる人が居なかったなぁ。 /FN 変数の説明を行う。

再帰のあるプログラムのオーダ

先週の続きとして、再帰プログラムの処理速度予測について説明。 比較のために、ループによる2分探索の処理速度を示した後で、 O(N)となる式の事例や、O(2^N)となる事例で処理速度を示す。

来週の予告としてフィボナッチ数列の処理速度の例を示そうと したら、クラスが歯科検診のため、中断。

来週は、フィボナッチ数列の処理速度と、Mergeソートでの 処理速度の事例を示す予定。

構造体とポインタ

今日は、午前が新入生歓迎会であったためか、欠席者が多い。 機械・電気の出身者は、プログラミングの基礎が弱いので、先週の構造体の解説 の続きを行う。 OOP的使い方ではポインタの利用が多いので、 簡単なポインタの解説も行う。 簡単な構造体と、set(),print()だけの例で、 FN 要素参照は、今週までは、(*p).member 書式の説明に留める。 /FN 呼び出し側が、直観的な呼び出しだけ、要素名が隠蔽化、データに処理を適用の スタイルにできることを示す。来週にはOOP用語を交えた説明を追加予定。

解説をしていると、M・E科では関数の利用も苦手みたい。 返り値や仮引き数・実引き数の話までせなあかんとは、おもわんかった。 FN 関数も使わずにプログラミングの授業で何を勉強してるんだろう….不思議だ… /FN この解説のなかで、値渡し、ポインタ渡しに加えて、参照渡しも説明。

struct Person {
char  name[20] ;
int   age ;
float height ;
} ;
void set( struct Person* p , char s[] , int a , float h ) {
strcpy( (*p).name , s ) ; (*p).age = a ; (*p).height = h ;
}
void print( struct Person* p ) {
printf( "%s %d %f\n" , (*p).name , (*p).age , (*p).height ) ;
}
int main() {
struct Person saitoh ;
struct Person mitsuki ;
set( &saitoh , "斉藤" , 39 , 172.3 ) ;
set( &mitsuki , "充輝" , 4 , 97.4 ) ;
print( &saitoh ) ;
print( &mitsuki ) ;
}

アイディア討議

プロコン・ロボコン対策のシステム設計演習では、 学生の考えてきたアイディアの紹介・学生の趣旨説明を交えながら、 高久先生と私で問題点の指摘と方式案の説明を行った後、 競技・自由・課題・プロコンの4グループに分れてアイディア討議を行う。

来週までの課題として、アイディア説明と5つ以上の問題点指摘を示す。 余裕があれば、問題点の対策案も記載するように指導するが、どうなることやら。

数値の扱い

今日は、数値の扱いの説明として、unsigned/signed,char/short/int/longの 数値のとりうる範囲について説明。2進桁数計算での D=B log 2の説明を行う。 数値の範囲の与える問題例として、16bit intの座標間距離で桁あふれの 起こる例と、2038年問題を紹介。2004年問題もタイムリーなので紹介。

すこし時間が余ったので、浮動小数点の扱いの入り口も説明するが、 中途半端。

学級日誌を見ると、雑談系の2038年問題の方に興味が高かったみたい。