ホーム » 2012 » 5月 (ページ 3)

月別アーカイブ: 5月 2012

2012年5月
 12345
6789101112
13141516171819
20212223242526
2728293031  

検索・リンク

2012年5月13日(第268回)

誠市、ご縁市開催中でした。

  • 体育祭について 青組団長 前田さん(5E)
  • キャンパスウォークについて
  • つつじマラソン直後のマラソン同好会の皆さんが出演
    田中さん(5E)、宗沢さん(5E)、玉木さん(5E)、嶋崎さん(5C)

担当:前田(3EI)、松島(1C)、西(教員)

キャンパスウォーク・デモ(part2)

H8とLEDパネルで、テト◯スを動かしてくれました。 デモのためとはいえ、一晩で作ってくれました。

剛体の衝突運動シミュレーションの説明中。 難しいお話の前段階。

低学年での実験の雰囲気を説明するために、 トランジスタで音声を増幅…の説明中。

キャンパスウォーク(5/12)

5/12には、中学生への学校紹介ということで、キャンパスウォークが開催されました。 電子情報工学科でも、ロボットやプロコン作品の説明など、 幅広く内容を見てもらいました。

1205121117_320x240.jpg

本日5/12は、キャンパスウォーク

今日は中学生向けのキャンパスウォーク、 電子情報では、電子系実験・プロコン・ロボットなどを見てもらいました。

動画での様子

スナップ写真

スタンプウォークラリー形式なので、各ブース見学でスタンプを押してもらいます。 途中で校長先生と出会うと、1ポイント追加ゲット。

1205121117_320x240.jpg

昨年度の高専プロコン作品の紹介中

1205121117-2_320x240.jpg

電子情報デモの電脳メガネをかける校長先生。

1205121117-1_320x240.jpg

mallocとfree

処理速度の分析が終わったので、メモリの使用量の問題の解説。 メモリの使用量が多かった場合の問題点を質問してみるが、 仮想記憶が動き出して処理速度の低下につながるといった認識は乏しい。

固定サイズ配列の問題

定番の質問として、クラスの名簿を作りたい。宣言はどう書くか?と質問してみる。 普通だったら、以下のような宣言が多い。

// 1クラス50人、名前は長くても漢字10文字程度
char name[ 50 ][ 20 ] ;

しかしながら、このプログラムでは、寿限無のような長い名前は覚えられないし、大学のような 大人数1クラスであれば、破たんする。 一方で、発生頻度が低いのに、寿限無や巨大クラスを想定した宣言をすれば、 メモリのほとんどは利用されず、効率が悪くなる。

C言語では、配列は基本固定サイズであり、以下のような変数によって、 サイズを指定することはできない。 新しいプログラム言語であれば、任意長配列も使えるが、それはプログラム言語が便利に なっただけであり、アルゴリズムと効率を学ぶこの授業であれば、その便利なプログラム言語が、 裏で何をしてくれているのか知っておく必要がある。

int n = 式 ;
int a[ n ] ; // こんなことはできない。

mallocとfree

malloc は、必要に応じて指定されたbyte数のメモリを確保してくれる命令。前述のような 変数で指定される配列確保であれば、以下のようになる。

int n = 式 ;
int *a = (int*)malloc( sizeof( int ) * n ) ;
if ( a != NULL ) {
   配列を使う処理 ;
   free( a ) ;
}

mallocは、void*型ポインタを返すので、適切なデータのポインタに型キャストで変換してから 用いる。また、メモリ確保に失敗した場合には、NULLポインタを返すので、 if 文によるチェックが必要となる。 利用が終わったメモリ空間は、free() によって、返却し後で再利用される。

free() が適切に呼び出されず、確保したメモリを不要になった時に返却しないと、 使用されないメモリ空間が発生する。(メモリリーク) 「最後に確保したメモリから、不要になる」ような、関数の中でのみ使われる配列であれば、 alloca() なども便利である。 また、malloc+freeで確保されるヒープメモリは、プロセスの停止と共にOSに返却されるため、 処理が終わるとともに、メモリが不要となり、プロセスが終了するのであれば、 あえてfree()を書かない場合もある。しかしながら、初心者のうちは適切にfreeを呼び出す プログラム習慣を身に着けるべきであろう。

昨年度のテスト過去問題…(05/09)

  • 05/09 昨年度のテスト過去問題のページの更新ができていなかったので、更新作業。ファイルは保存してあったけど、問題ページからリンクが無かった… #fnct http://tinyurl.com/d5kcxvl

この記事は、twitter の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。


N進数と文字数値変換

N進数の話の演習として、C言語における8進数,16進数の話や、 文字コード、エスケープ文字などを説明の後、 文字列⇔数値の相互変換プログラムを説明。

テスト前演習課題とするが、レポートでの採点基準を説明。

  • プログラムの難易度
  • プログラムの説明
  • 実行結果(動作が怪しくなりそうなケースの動作検証をしているか)
  • 動作検証や、プログラムの改良についての考察

課題テーマN進数

参考資料で10進数⇔文字列変換(atoi,itoa)などを取り扱ったので、 これを拡張し、8進,16進,N進などを取り扱えるようにする。 自信があれば、小数点を含む文字列の変換などに取り組む。

2012年5月6日(第267回)

ゲスト OB 五十嵐さん

  • ゴールデンウィークの過ごし方
  • 修学旅行について
  • 大学生活について

鯖江Webアプリコンテスト EI4山腰君 最優秀賞

鯖江市をPRするWebアプリを作るコンテストにて、 EI4年の山腰 貴大君が「鯖江の野望」にて、最優秀賞に選ばれました。

1205031047_552x298.png

補数とN進数

前回の授業で数値範囲についての説明はしたけど、 2の補数表現やN進数の話が抜けていたので、説明。 基本は、他の授業で既に行われているが、小数点以下のN進数変換などを 交えながら、Nで割りながら余りを書き並べるとか、Nをかけながら整数部を書き 並べるといった、N進数変換を説明。

この前に、説明の不十分であった、ポインタ渡し・配列渡しなどを 説明しておく。

システム

アーカイブ

カテゴリー