ホーム » スタッフ (ページ 163)
「スタッフ」カテゴリーアーカイブ
2分木の応用/意思決定木
今日は、前回の演習時間も不足だと思われるので、前半に座学・後半演習とした。
意思決定木
雑誌の占いや性格判断みたいなページには、質問に対して"yes","no"の回答をしてもらって、 最終的にあなたの性格は!みたいなのがよく書かれている。こういうようなものは、
| 勉強好き? / \ もっと勉強? 部活好き? / \ / \ 大学 技術者 アスリート 心配!
意思決定木と呼ばれる。このデータ構造では、ノードに質問事項が書かれ、 木の末端のノードには、最終的な答えが記載される。 これをプログラムで表すならば、
struct DTree { char *mess ; struct DTree* yes ; struct DTree* no ; } ; struct DTree* dtcons( char* s , struct DTree* y , struct DTree* n ) { struct DTree* ret ; ret = (struct DTree*)malloc( sizeof( struct DTree ) ) ; if ( ret != NULL ) { ret->mess = s ; ret->yes = y ; ret->no = n ; } return ret ; } struct DTree* top = dtcons( "勉強好き?" , dtcons( "もっと勉強?" , dtcons( "大学" , NULL , NULL ) , dtcons( "技術者" , NULL , NULL ) ) , dtcons( "部活好き?" , dtcons( "アスリート" , NULL , NULL ) , dtcons( "心配..." , NULL , NULL ) ) ) ; void main() { char buff[ 100 ] ; struct DTree* p = top ; while( p->yes != NULL || p->no != NULL ) { printf( "%s" , p->mess ) ; scanf( "%s" , buff ) ; if ( strcmp( buff , "yes" ) == 0 ) p = p->yes ; else p = p->no ; } printf( "%s" , p->mess ) ; }
入試説明会
昨日は、入試説明会ということで福井のAOSSA会場で学科の説明を担当しました。他の学科の説明では慣れないのもあって、ちょいとカミカミでしたが、興味を持って頂けたのであれば、ぜひとも福井高専においでませ〜!!
moodleサーバのHUB故障
学内で動かしている、moodleサーバが動かないとのトラブル。
高専祭のイベントで、被災体験をするとのことで本館の電気を消して 一晩泊まってみるとの企画から、10/20 の夜に本館が停電となった。
10/21に通電して復旧したはずだったけど、どうも今朝も moodle サーバ が応答しない。お呼びがかかって確認するが、普通にサーバには login はできる。それなりのプロセスも起動している。
次のステップで、学内どうしの ping を確認すると、繋がらない。 ふとヤバイな…とHUBをみると、FAULTのオレンジ色ランプがついている。 確認ということで、お隣にある別サーバに ping を打っても反応せず。
ということで、HUB故障決定。余っていた5ポートHUBを接続し、動作確認 がとれ、無事復旧。
HUBの内部回路的に弱っていて停電が、トドメの一撃だったんだろうな….
2012年10月21日(第291回)
高専祭スペシャル!!
福井高専内のスタジオから生放送!
- 越前市中学ロボコン参加者の方のインタビューの様子
- 高専ロボコン東海北陸地区大会にお越しの方のインタビューの様子
- キャンパスリサーチ参加者の方のインタビューの様子
ゲスト:五味先生(機械工学科)、福井高専43期生 五十嵐様
担当:前田勝(3EI)、牧田(3EI)、松島(1C)、山野(1C)
構造体を使ったプログラム演習
前回までの構造体の説明が終わったので、今日は演習。 基本的に構造体にデータを読み込んで、何らかの処理を加えて出力するプログラムを 作成するというのが課題。
ただし、構造体のポインタ渡しは、プログラム上よく利用される概念であり、 構造体への入力関数・出力関数などを別途使う課題であることが望ましい。 すでにこれらの概念に慣れている学生は、オブジェクト指向のスタイルなどを 紹介したので、オブジェクト指向を利用して課題に取り組んでもよい。
ライブラリとOSの基礎
前回の説明で未消化であった部分のライブラリの説明を行った後、 OSの機能について説明する。
ライブラリ
動く機械語プログラムが出来上がるまでの流れとして、 高級言語が、コンパイラによって中間コード(機械語+未完成の組込関数呼出し)が作られる。 中間コードは、組込み関数などのライブラリと、リンカー(リンケージエディタ)によって、 組合せられ、最終的な機械語が生成される。
ただし、マルチタスクなOSでは、主記憶上でプログラムが動くと、 だれもが使うようなprintf,scanf,sin,cos,…,GUIな処理といったライブラリ処理は、 メモリ上に複数存在するとメモリを効率よく利用できない。 古いOSでは、ライブラリの機械語は、静的リンクによりそのまま機械語の中に 埋め込まれていた。 しかし、最近のOSでは、動的リンク機能により、共通のライブラリを 利用するようになってきた。 動的リンクを使えば、ライブラリ内の処理に間違いが見つかった場合に、 動的リンクライブラリを修正するだけで良いため、OSの不具合修正でも便利となる。
OSの基本
OSは、一般的に基本プログラムなどと呼ばれ、ハードウェアの違うコンピュータでも、 共通となるOSを利用すれば、OS上で動くソフトウェアの共通化ができる。
OSは、制御システム(プロセス制御,メモリ制御,入出力制御,ファイルシステム制御)と呼ばれる、 処理の根幹(kernelなどと呼ばれる)の部分が、最も重要な機能である。 これに、開発環境(コンパイラ、リンケージエディタ、デバッガ)と、 ユーティリティプログラム(コマンドラインインタプリタ/CUI と、グラフィック操作/GUI ) から構成される。
OSを利用すれば、制御システムによりコンピュータ操作の基本的部分で、 プログラムの起動・メモリ管理・周辺装置の利用などの共通化が可能となる。 これらの周辺装置などの物理的なハードウェアや、メモリの使用、CPU処理時間などは、 一般的に資源と呼ばれる。 最近のOSでは、資源の使い方の共通化だけでなく、 資源を適切に扱うための保護機能も重要となってきている。
プログラムが動くとは
プログラムが動くときには、その処理単位としてプロセスがあり、 プロセスでは利用するメモリ領域が決められ他から触れないようになっている。 ユーザに対して一連のサービスを、複数のプロセスで提供している場合、 この処理単位はジョブと呼ばれる。 また、最近のOSでは、並列処理を行う際に、複数の並列処理プログラムが 1つのメモリを共有したほうが便利である。この複数のメモリを共有した処理の個々は、 スレッドと呼ばれる。
また、プログラムで複数の処理をする場合には、バッチ処理(一連の処理をどの順番で処理するか記載し、1プロセス終了後に次のプロセスを起動させる方式)と、 タイムシェアリングシステム(時分割多重処理とも呼ばれ、短い処理単位時間毎に、 複数の処理を切り替え、複数の処理が見かけ上同時に動いているようにみせる方式)がある。
2012年10月14日(第290回)
- 高専祭について
ゲスト:福井高専高専祭実行委員長 前田君、露店長 宮川君、補佐 平君
担当:田中(5E)、松島(1C)、山野(1C)
データベースとSQL
データベースの説明で、最も中心的なSQLについて説明を行う。
SQLの基礎
データベースでは、記録されているデータの読み書きは、SQLという言語を用いる。 SQLでは、射影・結合・選択を表す処理で構成される。
SELECT S.業者番号 -- 必要とされるデータを抽出する射影 -- FROM S -- 複数のテーブルを組合せる結合 -- WHERE S.優良度 >= 20 ; -- 対象となるデータを選び出す選択 --
Sは、テーブル名であり、文脈上対象テーブルが明らかな場合、フィールド名の前の テーブルは省略可能である。
教科書ではいきなりSELECT文から説明が始まるけど、その前にテーブルってなに? といった疑問もあるだろうから、あらかじめ CREATE TABLE 文、DROP TABLE文、 INSERT VALUES文などを紹介する。
CREATE TABLE S ( -- Sはテーブル名 -- 業者番号 CHAR(5) , -- フィールド名の後ろに型を記載 -- 業者名 CHAR(20) , 優良度 INTEGER , 所在地 CHAR(20) ) ; INSERT TABLE S (業者番号,業者名,優良度,所在地) VALUES('S1' , 'ABC社' , 20 , '福井' ) ; DROP TABLE S ; -- テーブルSのデータを消す --
演習として、実験するために、 Web上でSQLを走らせる環境の使い方の説明を行う。 来週は、SQLのもう少し発展させた、集約関数や副クエリ文などを説明し、演習へ…
iOSプログラミング講習会(10/23)
福井高専では、企業技術者活用プログラムの一環として、 企業にお勤めの福井高専OBの方に講師になっていただいて、 最新の技術に触れるための講習会などを企画しています。
この中で電子情報では、OBの中西孝之(ignote.jp)氏・福野泰介(jig.jp)氏をお招きし、 携帯端末などのプログラミングを中心とした講習会を開催します。 つきましては第一回の講習会として、iOSプログラミング講習会を 2回にわけて下記のように開催します。 興味のある方は、参加連絡を斉藤もしくはIT研顧問の西先生に連絡ください。
日時: 10月23日(火) 17:00〜20:00 iOS講習会2回目は、参加者で後日調整します。 場所: 電子情報棟4F 創造工学演習室 講師: 中西孝之(ignote.jp)氏・福野泰介(jig.jp)氏 参加資格: プログラミングに興味のある方
なお、この講習会は、以下の様なテーマなどで引き続き開催を予定しています。 これらの予定は参加者の希望などを踏まえて、何回か実施しますので、 今回は参加しないけれども…次は参加したいという方も積極的に連絡を下さい。
- Android / Unity / Ajaxなどの最新プログラミングの講習会
- アイデア創出のための企画の進め方講習会
- ハッカソン(参加者がアイデアを出しあい実際に動くものを作る)