ホーム » 2010 (ページ 8)
年別アーカイブ: 2010
インターンシップ報告会
今日は、夏休み期間中に実施された、 4年生のインターンシップ報告会が行われた。
1人あたりの発表時間が3分+質疑応答1分という 短い時間ながら、自分の体験をみなさん上手く説明してくれていた。
特に、K君の発表では、発表で説明したいポイントを 交えて、話が行われていたため解りやすいものであった。
また、Kさんの発表では、「自分がインターンシップに参加する前に、 ××を目標と決めて参加した」との目的の説明から始まり、 社会人としての意識の高さが際立っていたし、 内容も極めて解りやすい説明であった。

プロコントラブル、今年はイノシシ
例年、プロコンではみごとにトラブルが続いている。 BLOGに残っているだけでも、以下のような状況。 昨年度は高久先生のみの引率で、成績以外でのトラブルなし。 ということで、ほとんど私が疫病神って気分になってきた。
- 2009年、高久先生引率でトラブルなし。
- 2008年、競技部門試合不成立
- 2007年、旅行社のトラブル続き
- 2006年、台風で列車が止まる。現地着夜中の2時
- 2005年、o_yui氏の証言より、トラブルなし。
- 2004年、台風で土砂災害の横通過&熊はねる。
今年はイノシシをはね、今庄で1時間待ち
ここまで連続でトラブルが続いているため、 今年も何が起こるか…と思っていたけど、新大阪サンダーバードの出発で、 安心して、高久先生と「何も起こりませんでしたね…」といったら、鯖江駅につく 10分前の今庄駅で、前の特急が「イノシシをはねた」という理由で、停車。 最終的に1時間ほど今庄駅に待たされ、鯖江駅到着は23:10分頃。
あまりの例年のトラブルで、列車の中ではもう笑うしかない状態。
2010年10月17日(第186回)
スタジオお休みにつき収録でお送りしました!
高専プロコン2日目
競技部門は、目の前の餌に釣られない改良が間に合ったのかなぁ〜♪
自由部門もデモが見やすくなるような、改良をしたものの、朝のセットアップで間に合ったのかなぁ〜♪
競技:敗者復活戦敗退、自由:敢闘賞
競技部門は、昨日の進入できない場所に囲まれた水瓶につられて動けなくなるトラブルの 対応などを行ったりしましたが、残念ながら敗者復活戦敗退となってしまいました。
自由部門は、デモ審査とマニュアル審査でしたが、事前の準備やちょっとした改良が間に合い、 無事に審査を終えました。帰りのJRの都合から、閉会式を待たずに出発しましたが、 帰路にWebでチェックしましたが、例年通りの敢闘賞でした。
プロコン1日目
朝からトラブル?
file-scope(static)とextern文
プロコンの競技部門の学生さんたちが、最後の追い込み。 各パーツに分かれて動作確認が取れてきたし、 1つのプログラムに合成する最後の段階になっている様子。 しかしながら、合成した後プログラムが動かないとの相談。 1度目の処理は動くけど、2回目で動かないという状態なので、 不完全な初期化データを使って動かなくなっているのではと想像する。 といっても、そう簡単に間違いが見つかる訳もないけど、 ひとまずコードを見せてもらう。 すると、覚えたての分割コンパイルで、ヘッダファイルの中に、 static int array[…] ; といった記載が見つかる。
このままでは、array[] が、各C言語ファイル毎に、file-scope の別な実体を持つため、 大域変数渡しの副作用が伝わらなかったり、その結果として未初期化が発生したり。
ファイルスコープ
C言語では、静的変数の局所変数を作りたい場合、関数ブロック内で "static"キーワードを指定すればよい。 しかしながら、関数ブロック外で static キーワードをつけると、 分割コンパイルした場合、file-scope を持つようにコンパイルされる。 つまり、各ファイル毎の大域変数は、たとえ同じ名前の大域変数が別ファイルに あったとしても、別な記憶領域を確保してくれる。
(( aaa.c )) int x1 ; // 静的変数・大域変数 static int x2 ; // 静的変数・大域変数・ファイルスコープを持つ void foo() { static int x3 ; // 静的変数で局所変数 : } (( bbb.c )) extern int x1 ; // aaa.c の x1と同じ実体を参照できる。 static int x2 ; // aaa.cのx2とは大域変数だけど別の実体をもつ
分割コンパイルして、各ファイルで共通の変数や関数を定義する場合は、 以下のように行う。 ポイントは、extern によって宣言すると、実体は別のところにある変数となる。
(( common.h )) int foo() ; // プロトタイプ宣言 extern int bar ; // 実体はどこかで確保される変数として宣言 (( aaa.c )) #include "common.h" int bar = 123 ; // 変数barの実体 int foo() { // 関数foo()の実体 } (( bbb.c )) #include "common.h" void main() { bar = 234 ; // aaa.c の大域変数barに代入 printf( "%d" , foo() ) ; // aaa.c の関数foo()を呼び出し }
関係データベースとSQL
データベースの基礎の説明が終わったので、 データベースの実際のデータベース操作言語SQLの詳細を説明する。
関係データベースの用語
関係データベースでは、表構成のデータで表現され、 集合であらわされる項目の複数の組み合わせで表現される。 1つの項目フィールドの取り得る値の集合をAとした場合、 直積とは、 で表現される。A,Bの間の関係とは、直積の一部
であらわされる。
SQLの基本
SQLの基本として、データのテーブルを作る "CREATE TABLE" 文の説明として、 数値型・文字型・日付型などの型の名前や説明を交えながら説明。 参考にしている教科書では、CREATE VIEWの説明がある割に、CREATE TABLEの説明が無い… この他に、INSERT文の説明を行う。
データを探す場合は、SELECT文を使うが、 選択とは、特定条件のレコードを探す処理、射影でそのレコードの中の特定のカラムを取り出す。 結合とは、カラムの組み合わせを記述すものである。
SELECT [射影] FROM [結合] WHERE [選択] ; 例: SELECT S.名前 FROM S,P WHERE P.点数>80 AND S.学科='電子情報' ;
教科書で説明の無い部分として、WHERE節の中のBETWEEN,LIKE,IS NULLなどを紹介。
来週は副問い合わせ文などの説明の後、Web上のSQL演習環境を説明した後、練習課題とする。
計算機システム:OSの歴史と機能概要
コンピュータの歴史の説明の後の、8bit,16bitのパソコンの発達をうけ、 32bitパソコンの発達やOSの発達について説明する。
16bitパソコンの登場とともに、マイクロソフト社のMS-DOSや、GUIを取り入れたApple社の Macintoshの発達したころ、16bitコンピュータはシングルタスク・シングルユーザであった。 この頃の汎用機では、その計算機パワーを活用すべくマルチユーザ・マルチタスクで 処理が行われていた。 この便利な機能を、ミニコンやパソコンで使いたいという要求がでてきた。 この中で、C言語を開発したカーニハンやリッチーは、Multicsをミニコンで動かすために、 unixを開発した。 unixでは、複数ユーザが同時に複数の処理をこなすために、プログラムが並行動作している 別プログラムに悪影響を及ぼさないようにするなどの保護機能・セキュリティ機能が 重要になってきた。 32bitコンピュータが出てきたころになり、パソコンでもようやくマルチタスク・マルチユーザを 実現するための保護機能を実装できるようになってきた。 パソコンOSでは、Windows 95/98/Me/Home等ではシングルタスク・シングルユーザ がベースであった。しかし、OS/2やWindows/NT/2000/Xp/Vista/7とマルチタスク・マルチユーザ の機能が発達していった。 一方、unixでは、BSD/SysVの2系統に分かれて発達する中、 インターネットを利用したオープンソースのOSのLinuxが発達していく。
コンピュータの基本構成
計算の手順はプログラムであり、計算に必要なデータと共に使われることで、 ソフトウェアと呼ばれる。プログラムの計算手順の考え方はアルゴリズムと呼ばれる。 コンピュータは、CPU,メモリ(主記憶),補助記憶装置,周辺装置から成り立っている。 ほとんどのコンピュータは、ノイマン型と呼ばれる構成で、 (1)メモリから命令を読む,(2)命令を解読,(3)データをメモリから読む,(4)計算,(5)結果をメモリに書き込むの処理を繰り返して行われる。
主記憶のメモリには、不揮発性のROMと揮発性のRAMがあり、 最近のOSでは、処理に応じてプログラムの中身を変える必要から、 RAMがほとんどとなっている。 しかし、このままでは電源を入れた直後のコンピュータは動けない。 このためメモリの一部はROMがあり、この中には、 周辺装置の使い方のBIOSと、電源投入直後の処理のブートローダのプログラムが 書き込まれている。 コンピュータは、ブートローダがBIOSを使って、補助記憶装置内のOSを主記憶に呼び出して OSが動き始める。利用者が、アプリケーションを起動すると、 OSが補助記憶装置内のプログラムをRAMに呼び出して処理が行われる。
プログラムを動かすにあたって、CPUでは機械語で処理が行われる。 昔はプログラムはアセンブリ言語を使って記述していた。 しかし高級言語の登場によって、プログラムが書きやすくなった。 高級言語で書かれたプログラムが動くにあたって、実行方式にはコンパイラ方式と インタプリタ方式がある。 コンパイラ方式は、処理前に機械語をすべて生成してあるため、実行速度が速い。 しかしテストプログラムを動かすような場合、全命令を機械語に直す時間がかかるので、 インタプリタ方式が多用される。コンパイラ方式は実行時に高級言語で書かれた ソースプログラムが不要のため、プログラムの考え方が盗まれることがない。