ホーム » 2009 (ページ 28)

年別アーカイブ: 2009

2025年6月
1234567
891011121314
15161718192021
22232425262728
2930  

検索・リンク

Cでのオブジェクト指向もどき

先週の、機械系・電気系学生向けの構造体の説明の続き。 C言語でのオブジェクト指向もどきの解説。

変数と関数

プログラミングの基礎として、大域変数と局所変数を説明。 特に大域変数は、常に操作できる領域で、誤った操作による破壊の可能性が高く、 関数や局所変数を利用すべき点を力説する。 次に、関数と呼び出し側のデータの受け渡しとして、 値渡し・ポインタ渡し・参照渡しなどを説明する。

これにより、必要最小限の情報だけを関数に開示して、 値を修正してもらうことができる点を説明。

/* 値渡し */
void func( int x ) {
x++ ;
printf( "%d" , x ) ;
}
void main() {
int a = 123 ;
func( a ) ;  // 124 を表示
func( a ) ;  // 値渡しでaへの副作用がないので再び124を表示。
}
/* ポインタ渡し */
void func( int* p ) {
(*p)++ ;
printf( "%d" , (*p) ) ;
}
void main() {
int a = 123 ;
func( &a ) ;  // 124を表示。
func( &a ) ;  // ポインタの先のaが変化しているので125を表示
}
/* 参照渡し */
void func( int& x ) {
x++ ;
printf( "%d" , x ) ;
}
void main() {
int a = 123 ;
func( a ) ;  // 124の表示。a への副作用あり
func( a ) ;  // 125の表示。
}

Cでのオブジェクト指向もどき

C言語の構造体だけでオブジェクト指向の雰囲気を示すことができる点を、 下記のプログラムによって説明する。

これによって、main内部では、データの内容を知らなくても(データ隠ぺい), 関数の中身を知らなくても(手続き隠ぺい)プログラムが書けるようになった点を説明。 さらに、struct 宣言がオブジェクト、データ操作の関数をメソッドと呼び、 その2つを合わせてたものをクラス(class)と呼ぶことを説明する。

// Personオブジェクト
struct Person {
char name[ 10 ] ;
int  age ;
} ;
// Personの初期化メソッド
void set( struct Person* p , char s[] , int a ) {
strcpy( (*p).name , s ) ; // 最初の説明ではあえて
(*p).age = a ;            // アロー演算子は使わない
}
// Personの表示メソッド
void print( struct Person* p ) {
printf( "%sさんは%d才です。" ,
p->name , p->age ) ;  // ちょっと説明したあとでアロー演算子を使う。
}
void main() {
struct Person saitoh ;     // Personのインスタンス
struct Person family[ 4 ] ;
set( &saitoh , "とおる" , 44 ) ;
print( &saitoh ) ;
set( &family[0] , "あゆか" , 7 ) ;
set( &family[1] , "みつき" , 9 ) ;
print( &family[ 0 ] ) ; print( &family[ 1 ] ) ;
}

第3回・歯みがきロボコン打ち合わせ

歯みがきロボコンの3回目に備えて、最初の打ち合わせが行われた。

昨年度の問題点などを踏まえながら、色々と相談を行う。
今年は5月末までに明確にルールを示してしまおうと方針を決める。
基本ルールは変えないで行こうとの話ではあったが、車体のバリエーション
がでるようにしたい点と、自律部門では同じルールの中で新しい取り組みが
見えるようにという意見がでる。
これに合わせ、「正確に歯を磨く」つまり、虫歯マグネットの中に混ぜてある、
減点マグネット(お歯黒)のペナルティを重くしようと方針が決まった。
そうなると、自律部門でも決められた配置の所に正確にブラシを動かす
必要から「自律ではブラシは1本。位置決め機構にブラシをうまく取り付けが
できるように、ブラシの柄の加工・切り詰めは認めようとの方針を決める。
操縦部門は、歯ブラシの形状の加工はNGで、ブラシ間の間隔を制限するか
しないのかが議論になりそう。
詳細は、工大の先生や参加希望学生さんとの意見も交えながら、
ルール原案を4月末までに決める予定となった。

創造工学テーマ検討

例年通り、創造工学が始まった。 昨年度は授業アンケートで、「教員の点数稼ぎにつきあわすんじゃない!」などと記入する 学生もいたし、今年度はテーマ決めの段階でも

  1. この授業は技術ニーズや仕組みを理解して、新しいアイディアを考え発表する
  2. そのアイディアの中で自分たちの技術で可能な範囲で実際にもの作りを行って 最終成果を発表する

を実践するのが目標であり、プロコン応募は単なる目標や締切設定にすぎないことを明言する。

携帯のお財布機能利用者5%?

実際に作るアイディアの導入として、既存技術の説明を色々と行う。 その中で、RFIDの応用として「おさいふ携帯使ってるでしょ?」と聞いたら、 43人中たったの2名。予想外に利用者が少ない。 (個人的には1/3程度の普及はしてると思ってた。)

個人的には、70%ほどが最近の3G携帯系でそのほとんどがお財布対応と、 裏付けの無い予想を抱いており、その感触からすれば5%の利用率は、異様に低い。 学生さんに聞いてみると、携帯からチャージする振り込み元の銀行やカードを 持っていないことが原因のようである。

この結果からすると、銀行やカード会社は、親に利用額や支払先をその都度レポート する契約を組み込んだカードを作ると、子供に普及し電子マネー普及に貢献できると 思うのだが….やはり技術的・超過支払の制御の面で難しいネタが潜んでいるんだろう。

才能のない○○にどうやって○○への思いをとどまらせるか…

はてな匿名ライブラリーにて、才能のない子にどうやって美術への進路を思いとどまらせるかというネタが 盛り上がっている。

反応としては、「子供に芸術の才能がないとを告げること」の是非が討論され、 「『芸術家くずれの教員』が冷たく才能を見切ることが本当にいいのか?」 といったような非難をうけていたりする。 たしかに、将来才能を開花させる人もいるだろうし、 変に期待をもって芸術家を目指しても、 本当に才能を開花するひとはほんの一部で、 それ以外だと就職すら大変…という現実が待っているからこそ、 思いをとどまらせるのも大切という意見の対立である。

私の情報系であれば、このネタは、 「プログラミングの才能の無い『単なるゲーム好き』に、 どうやって『ゲーム会社』への就職を思いとどまらせるか…」と 読み替えることができる。 んで、私自身の感想では、この先生の意見に近く、「現実を知らせるべき…」と…

確かに、「お前才能ないし…」と言うのは簡単。 実際、任天堂に就職するのは大変ということは、例年学生に伝えているし、 ゲーム企業への就職希望は持つなと叫んでいる。 ただし、もう大人なんだし、「夢を持つならその努力はすれば、可能性はあるけど…」と、 夢と現実の微妙なところは言及しないようにしている。

さて、今年も例年どおり「ただのゲーマー」が、「ゲーム会社に就職したい」と言っている。 熱心にプログラムを書いているんなら、「厳しいけどがんばれ!」と声をかけるだろう。 でもなぁ….プログラムを2年以上習ってるのに、 100行程度のプログラムしか書いたことが無いとか、 数学の成績も最低レベルとか、 夜更かししてゲームばっかりしてます…というヤツが、そう言うんなら、 冷たい一言も言わざる得ないと思うんだけど…
# 私って、冷たい才能をつぶす悪い教員?

追記:ふとこういう記事も見つける。これが現実だ….

全メールの97%以上がSPAM

自宅でも迷惑メール(SPAM)の多さには、あきれているけど、 マイクロソフト社の分析では、全メールの97%以上がSPAMという分析結果 が報告されたらしい。

うーむ、なんとかならんの….

プログラム応用のシラバスと制御構文の復習

3EIのプログラミング応用のシラバスの説明を行った後、制御構文の復習などを行った。

昨年度は、ループ命令の式の実行順序を問う問題では、理解度が高かったけど、 今年はちょっと誤解している人もいた様子。 特に、条件式の真偽を0,0以外で判定している点は、 以前の講義ではなかった様子。 また、"式;"・制御構文・複文・空文などの文の定義も理解してもらう。 最後のswitch・case文やbreak・continue文については、使う頻度も含め慣れていない様子。 途中でcaseラベルの説明の都合上、あえてgoto文を説明する。

この際に、「構造化プログラミング」や、「インデント」、「ネスティング」などの用語も 取り上げて説明を行った。

2009年4月12日 (第107回)

  • 英語の囃子 第6回 吉田先生、電子情報4年丸山さん
    eng090412.mp3
  • ゲスト: 福井高専OB起業家 福野さま、 4年電子情報 加藤さん

この後、正面で開催されている誠市、ご縁市に繰り出しました!

photo090412.jpg

講義の目標の解説

内科検診が行われていたため、6限目は講義できず。

講義の目標として、情報構造論にてデータ構造の設計の評価のための 基礎知識の必要性を解説。 プログラム速度・メモリ使用量・コードの単純さが、トレードオフの関係。

速度の評価

単純サーチにおいて、処理時間が T(N)=Ta+Tb*N となる点を解説する。 同様に2分探索法のプログラムを示し、 ループ回数がm=log2(N) であることまで。

オブジェクト指向プログラミング概要

オブジェクト指向プログラミングの講義についてシラバスの説明。 機械系・電気系の専攻科学生用にC言語構造体の解説を行う。

  • オブジェクト指向が使われる訳
  • OOP系プログラム言語の歴史
  • 構造体の宣言とデータの取扱い

3EI-HRメモ

  • クラス役員の選挙
  • 席決め
  • 体育祭の応援・デコレへの協力要請
  • 連絡先・進路希望・意見の調査用紙回答

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー