プログラミングコンテスト学内選抜
全国高専プログラミングコンテストの応募に向けて、学内選考を行った。 4EIの創造工学演習からの作品と、3EIの学生の競技部門への応募作品から 応募書類を見ながら選考とした。
プロコンの1高専の参加枠自由2作品、課題2作品、競技1チームであり、 選択基準は、以下のとおり。
DL DT 課題・自由部門 DD 説明の資料が適切に作られ、独創性があり、 本選に望んだ際に完成が期待できるもの。 DT 競技部門 DD 現時点で完成しているプログラムの完成度。 もしプログラムだけで判定ができない場合は、 学年の上位のグループとする。 /DL
選考結果は、
自由部門:"People Album"-人と人をつなぐ写真館-
4EI:藤澤、(指導)斉藤
DL DT 講評 DD 1人で取り組んだ内容でも、技術的な調査がなされている。 当初開発グループが同じだった4年競技部門参加希望者に、 協力してもらう予定。 /DL
自由部門:"Welfit"-Wiiバランスボードを用いたPC用フットマウスの開発-
4EI:上田、大石、曽根、高間、柳瀬、(指導)高久
DL DT 講評 DD Wiiバランスボードを用いる技術的な問題点については、 きちんと検討されているが、それを使ってどういったソフトを 作るのかが記載されていない。実際の応募までにもう少し 内容を書き加えてもらう。 /DL
課題部門:"CALMDAY"-写真を聴こう-
4EI:市波、長谷川、山内、(指導)奥田
DL DT 講評 DD 当初のアイディアに高久先生指導のアイディアを盛り込んで、 独自性がだせて、開発も本人たちの技術でこなせそう。 /DL
競技部門:"バグを出しても一人"
3EI:奥村、(指導)西
DL DT 講評 DD C# を用いて、テンプレートなどのデータ構造などを使いながら 基本的なGUI、経路探索などに取り組んでいた。 本選参加の際には、人力の部分も重要となるので、あと2名の 協力学生を追加してもらう。 /DL
全体の講評
近年のプロコンの作品の状況からすると、書類審査による予選通過は 厳しいかもしれない。しかし、創造工学演習の授業での取り組みとして、 学生の技量を越えたテーマ選択は、最終的な完成度や本人達のやる気から、 大風呂敷を広げないように配慮した。学内選考に漏れた作品については、 県内のソフトコンペや他のコンテストなどへの出品に向け、継続して開発 に取り組んでもらいたい。
継承と仮想関数
先週の基本データ構造の拡張版がいくつもできる場合のCの問題点の説明に続き、 C++ における導出クラスの説明を行う。実際の文法を示しながら、 格下げのある継承や、仮想関数を用いた継承などを示す。
N進数と文字列の変換
C 言語でのデータの取扱いとして文字列とN進数の説明が終わったので、 例年どおりの N 進数データと文字列の相互変換 atoi , itoa を課題とする。
画像処理による自律ロボットの初期実験
歯みがきロボットコンテスト の第2回大会では、昨年度より完成度の高い機体を 出すべく、OpenCV を用いた機体を計画中。 まずはその基礎実験として、 カメラ視野を平面視野に変換する処理 。
緊急連絡システム、越前町でも…
越前町の小学校より、元赴任先で使っていた緊急連絡システムを使いたいとの 連絡を受けて、登録作業を行い使ってもらう。
しかしながら、越前町は地域連携協定外であったため、 利用登録したのは早計との話があり、 承認関連の作業を慌てて行う…
# うーむ、こういう所は詰めの甘さだなぁ…反省…
SA5SX Debian インストール失敗
SA5SX がもう1台手に入れられたので、環境を設定。 同じくすぐさま Debian のインストールを試すが、 前回使った"Say goodbye to Microsoft,Now"を使うが、 インストーラが起動して、 ネットワークドライバ認識は成功するものの、DHCP 初期化に失敗する。
実数データと文字列の扱い
先週の実数データの取扱いの説明のため、N進数の説明を行う。
N進数の扱い
で表現されるN進数は、
なので、
で割った 余り が最下位桁
で、 商 が
となる。
小数点のN進数データ は、
なので、小数部にNを掛けた時の 整数部 は
で、 小数部は、
となる。
実数データは近似値
よって、 というデータを2進数に直すと、
となる。このため、0.1 は近似値でしか記憶できない。
実数がからむ間違ったプログラム例
これに関連して実数がからむよくある間違いを示す。
// プログラムは無限ループで止まらないかもしれない。 // 理由:0.1を10回加えても正確に1.0にならないかもしれない。 double x ; for( x = 0.0 ; x != 1.0 ; x += 0.1 ) { // ★ x <= 1.0 で判定せよ! printf( "%f\n" , x ) ; } // 平均の小数部が正しく表示されない。 // 理由1:s/c は整数どおしの計算で小数点以下が消える。 // 理由2:s/c が整数だと、%f は実数64bitのはずだけど、 // 32bitの整数0しか渡されない。 // 結果 :ゴミが表示される。 int s = ≪合計≫ ; int c = ≪個数≫ ; printf( "%f" , s / c ) ; // ★ (double)s / (double)c と書く // sinの計算結果が全部0になる。 // 理由:th/180 は整数どおしの計算で 0 になる。 int th ; for( th = 0 ; th < 90 ; th += 5 ) { double x = sin( th / 180 * 3.141592 ) ; // ★ sin( (double)th / 180.0 * 3.141592 ) printf( "%f\n" , x ) ; }
文字列の取扱い
C言語における文字の取扱いということで、ASCIIコード表の説明と、 ‘文字’と”文字列”の違いの説明と、文字列の末尾に’\0’がついていることの説明。
日本人のプレゼン資料が海外では伝わらない…
学生さんのプレゼン資料作成時のアドバイス用にメモ。
アルゴリズムと処理速度
マージソートの処理時間のオーダ を再帰方程式で代入法により一般式の予測を示す。
これよりクイックソート と最大選択法
において、
、
であった時の、 データ10件、50件でどちらのアルゴリズムが速いのか求め、 何件以上ならどちらが速いのかを示す。
メモリの使用量
「クラスの名前と電話番号のデータベースを作りたい。あなたならどう宣言するか?」 を学生に回答してもらい、電話番号が最悪 int に納まらないとか、 クラス人数は大学の1000人クラスならどうするとか、 名前も 寿限夢 みたいな名前だったらどうする? といったような問題点を提起し、 C言語の固定長配列の問題を示す。 malloc+free の説明をするが、時間切れ…