ホーム » 2012 (ページ 24)
年別アーカイブ: 2012
2EI実験でオセロプログラム
2EIの後期実験では、後半の私の担当実験では、「五目並べ・オセロ」のプログラム 作成というテーマを実施しています。 思考プログラムは大変だけど、標準入出力で2人が交互にコマを置く場所の x,y座標を入力する。そしてゲームの禁止手判定や勝敗判定をするプログラムを 作るというテーマ。 授業で、2次元配列や関数がちょうど終わったあたりなので、 配列表示や盤面周辺に壁の領域を作るというテクニックを、 雛形プログラムで見せるだけで、2週テーマの割にそれなりに完成させてくれます。
ただ今回、元々プログラミングが好きなK君は、自分の実験週のちょっと前あたりから、 先発で実験をやっている友達をみて面白そうということで、グラフィックス表示・マウス入力も含めて完成度の高いものを 実験前から作り始めたようです。
思考ルーチン組んじゃった
実験2週目ということで、課題に取り組んでもらっていたら、K君のプログラムの前で 他の人が「すげーすげー」の声。よく見ると、思考ルーチン組んでます。 完成度も高く、オセロで手を打てる場所をヒント表示してくれたり、 オセロも得意そうな学生さんも「負けそう」な雰囲気。
本人に、完成度を何気なく聞いてみる。
「何手読み?」→「難易度変えられるけど、これは7手です」
「終盤は完全読み?」→「終盤は打てる手少ないし倍の手数、だから14手です」
「コーナーの処理は?」→「配点高くしてます」
「枝切りは?」→「α・βです」
「行数は?」→「3000行」
適当なサイトに転がっている物を、自己流で部分的に改造しただけなら、 こういった回答をスラスラできません。
思わず、「来年の高専プロコンの競技部門、声かけるからね…」
「レポートに3000行印刷は、頼むからやめてね。フローチャートだけにして…」
ものづくりとしては面白…(01/31)
- 01/30 ものづくりとしては面白いけど、逮捕されてもしらんぞ… "下腹部を押し付けて「いいね!」" #fnct http://japanese.engadget.com/2012/01/29/…
- 01/30 各種センサーを使った制御実験に使えそうなキット…と思ったが品切れかょ!! #fnct http://www.switch-science.com/products/d…
- 01/30 Seeeduinoなんて製品も出てる、Arduino互換ボードでUSBがmini&CPU等も小型品を使用。 #fnct http://flyman.jugem.cc/?eid=959
この記事は、 の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。
グラフィックスと総括
プログラミング応用の授業は、3次元グラフィックスの計算方法の説明も先週に終り、 今日は課題作成の時間とした。 途中、試験前ということもあり、関数の引数の受け渡しの復習と、型についての説明を行った。
変数の受け渡し
基本は、関数への値渡しと返り値による受け渡しを説明。 関数による複数の計算結果を、呼び出し側に伝えるには、 ポインタ渡し、配列渡し、構造体渡しがある。 簡単には、以下のような例をベースに説明。
int foo( int x , int y ) { : return x*x + y*y ; } void main() { printf( "%d\n" , foo( 12 , 34 ) ) ; } //--- void rarg( double*r , double*th , double x , double y ) { *r = sqrt( x*x + y*y ) ; *th = atan2( y , x ) ; } void main() { double zr , zth ; rarg( &zr , &zth , 1.0 , 2.0 ) ; } //--- void rarg( double rth[2] , double xy[2] ) { rth[0] = sqrt( xy[0] * xy[0] + xy[1] * xy[1] ) ; rth[1] = atan2( xy[1] , xy[0] ) ; } void main() { double zrth[2] , zxy[2] = { 1.0 , 2.0 } ; rarg( zrth , zxy ) ; } //--- struct RTH { double r , th ; } ; struct XY { double x , y ; } ; void rarg( struct RTH*p , struct XY*q ) { p->r = sqrt( q->x * q->x + q->y * q->y ) ; p->th = atan2( q->y , q->x ) ; } void main() { struct RTH rth ; struct XY xy = { 1.0 , 2.0 } ; rarg( &rth , &xy ) ; }
この後に、プログラムの式を正確に理解するためのヒントとして、 型の概念を説明し、式の一部分もそれぞれ型を持ち、 演算子を適用するごとに型が変化していく状況を説明する。
電子情報棟の無線LANの更新
電子情報棟では、学生実験などでのノートパソコンのネットワーク接続手段 として、FERECのルータを活用している。 アクセスポイントのSSID,パスワードを知っている利用者であれば、 WiFi接続後に、Web認証が要求されるので、 自分の学籍番号ベースのIDとパスワードを入力すれば、 ネットワークが利用できるようになる。
ただし、ネットワーク接続によるトラブルを避けるために、 http,httpsしか利用できないようにFirewall機能を設定してある。 特別の登録IDを設定すれば、Firewallの条件を変えることもできる。
IEEE.802.11n対応ハイパワーAPに更新
これまでは、主要な実験室にはハイパワーのアクセスポイント、 実験的に導入していた部屋には、小型のアクセスポイントを設置していた。 元々の機材は11a.b.gに対応していたが、フロアや実験室の場所によっては、 電波が弱く接続が困難であった。
今回、業務用の11n対応のハイパワーアクセスポイントに変更し、 電波条件もかなり改善し、電子情報棟のすべての教室・大きな実験室では、 十分な電波強度でアクセスポイントに接続が可能となった。
2012年1月29日(第253回)
- 校長賞受賞者インタビュー 高専ロボコン地区大会デザイン賞
機械工学科4年 土田さん、伊藤さん、電気電子工学科3年 山田さん
robocon120129.mp3 - 推薦入試の話
スタジオ周辺にはうずたかく積まれた雪が
情報構造論の総括
先週説明した、ヒープ領域管理のオマケとして、 OSの主記憶管理についても、簡単に説明を加える。 主記憶管理でも、プロセスの起動・停止と共にメモリ領域の確保と解放が行われる。 OSでは、メモリ空間の断片化をしたら、大きなプロセスのための領域が使えないようでは、ダメ。 断片化の対策が必要かもしれないけど、 OSでは、論理アドレス・物理アドレス変換のための、メモリマップユニット(MMU)などが あるため、断片化対策はあまり重要ではない。
この後は、配列から固定領域は使いづらい点を紹介する。 しかし、最近の新しいプログラミング言語では、ハッシュ法などを用いて、keyから値を検索 してくれる連想配列が一般的になってきた。こういう言語では、配列サイズなども あまり気にする必要もなく、プログラムが記述できる。
この後に、単純リスト・循環リスト・双方向リスト・2分探索木・B木などの、 リスト構造の応用データについて改めて総括を行った。
データベースの内部と最近のDBの動向
ほぼ、解説する内容も終盤ということで、 データベースの内部構造の話の後半と、最近のデータベースの動向を説明し、授業を終える。 来週は、データベース設計の課題を作成する演習とする。
DBの内部構造
データベースのインデックスファイルの作り方として、先週説明したB木、B+木の さらなる高速化ということで、ハッシュ法を説明する。
4年の情報構造論の授業で説明しているので、簡単にオープンハッシュ法と、 チェイニング法を説明する。
また、データベースシステムでは、Tableのファイルとインデックスファイルを どう保存するかといった手法を説明。(a)各テーブル各インデックス毎に1ファイル という方式もあれば、(b)全テーブル・全インデックスで1ファイルという方式もある。 (c)全テーブルで1ファイル、全インデックスで1ファイルというのもある。
最近のデータベースシステムの動向
教科書としている本に記載されている、オブジェクト指向データベースを紹介。 といっても基本となるオブジェクト指向プログラミングの話として、 (a)クラス=オブジェクト+メソッド、 (b)追加データを扱う派生と継承、 (c)派生を応用した仮想関数 といった概念を紹介に留める。
昨年度の斉藤研で試行したデータベースでもあり、XMLデータベースも紹介。XMLは、タグによって記載されるデータであるが、属性を自由に追加できる 自由度の高いデータで、これを自在に扱えるようにしたものがXMLデータベース。
ただ、自在にデータを拡張できるものの、システム側では拡張要素を取り扱う処理を、後で追加できるようにする必要もあり、まだ発展途上のデータベースシステム。
最後に、最も注目されているものとして、NO-SQLを紹介する。 データベースでは分散処理が重要だけれど、同期や排他処理は面倒な処理。 そこで、データをKey-Valueだけで取り扱うようにしたものが、Key-Value型データベース。 これらのシステムは、Googleを代表とするクラウドコンピューティングの世界の データベースとして採用されている。 データの検索はKey参照をベースに行い、SQLなどの検索言語が無いことから、 NO-SQLといった言い方をすることが多い。
緊急連絡システムの利用分析
緊急連絡システムの2006年からの運用5年目を受け、 利用状況の分析を行い、その結果を高専教育に投稿しています。
今回、地域連携テクノセンターの冊子用に、 論文内容の概要を作りましたので、 PDFにて掲載します。
講演会案内:Webデザインのセオリーを学ぼう
■電子情報通信学会北陸支部 学生会講演
■講演開催日時 平成24年2月16日(木)
16時~(90分程度)
■講演会場 福井工業高等専門学校 合併教室
■講師 佐々木 敏明 氏(Webデザイナー)
■講師所属 ベースライン株式会社
■講演題目 「Webデザインのセオリーを学ぼう」
■対象者 デザイン初心者・入門者
■概要
普段デザインをしない人に話しを聞いてみると、 「どうやっていいかわからない。」「自分にはセンスが無いからできない。」 という声がよく聞こえてきます。 しかし実際は、ある程度のポイントを押さえることで、 「デザイン」というものをもっと気軽に行うことができます。 デザインができることによって、制作する作品の表現力が広がり、 より楽しい学生生活を送ることができるかもしれません。 本講演ではノンデザイナー向けに、 そういったデザインする上での「セオリー」についていくつか紹介します。