ホーム » 2009 (ページ 26)

年別アーカイブ: 2009

2025年6月
1234567
891011121314
15161718192021
22232425262728
2930  

検索・リンク

高校でも専攻科卒で大学編入

ニュースサイトの情報によると、 高校「専攻科」卒業生、大学編入可能に 文科省が方針 を示したそうだ。 元々、高専の専攻科でも人数の少なさから認知度は高くはないけど、 高校でも専攻科が設置されていたんだ…んで、大学に編入ができるようになるのか…. 高専卒の大学編入組にとっては、競争相手の登場で、狭き門になるのかな…

2009年5月3日 (第110回)

  • つつじ祭り会場から生放送!!
  • 数学の部屋 第47回「2月8日放送の問題の答え」 長水先生
    math090503.mp3

photo090503.jpg

体育祭

0904300934_320x240.jpg

今日は朝から体育祭。 電子情報の応援では、例年よりは力強さをアピールするような応援の声でした。 デコレでも、ステージ上でのパフォーマンスはノリも良く、フィットネスネタが 良かったかな….

別の意味では、今日は新しいカメラの動作試験。ズームも利いて面白く写真が取れました。

歯みがきロボコンルール原案決め

歯みがきロボコンでは、「斬新なアイディアで、正確に歯をみがこう」との趣旨で、 ルールの基本的な見直しを検討中。

今までは、「ブラシの加工NG、モータ・電池の制限アリ」であったけど、 今度は制約を最小限のルールになりそう。 「虫歯マグネットのペナルティを大きくして正確に…」というルールがあれば、 「ハイパワーでまるごと根こそぎブラッシング…」という作戦ができなくなるためで、 リモコン(操縦)部門・自律部門ともに制限を減らし、斬新なみがき方の車体を 期待することになった。
# さて、ルール文面原案を書き直し…

創造工学演習テーマを具体化

第3回目の授業ということで、前回提出してもらったアイディア草稿を、 各グループに分かれてもう少し具体化したアイディアに直してもらう。

  • 開発に必要な物品の検討
  • 実際の処理で行う内容の検討
  • グループの役割分担などの検討

最終的にグループ毎で、物品・処理・分担などをレポート用紙にまとめて提出してもらう。

PHP講習会/H8割り込み講習会

4EIの実験時間を用いた創造工学演習向けの基礎講習会の2回目。 40人を2つに分けて実施するため、場所が狭かったり実験が困難だったり。 H8の割り込み講習会の参加グループの方が、実際の実験環境の準備が大変で、 割り込みやモータ制御の文献調査になってしまった。

PHP講習会の方は、簡単にアクセスカウンタのプログラムを説明し、 何らかのファイル操作を伴うプログラムを作成し、 レポートに「この知識を自分のテーマに使えそうか?」、 「PHPのプログラムの起動の際のユーザ権限」、 「ファイルロックなどの問題点」などを、各自選んでレポートとして記載し提出してもらう。

<?php
if ( ($fp = fopen( "count.txt" , "r" )) != FALSE ) {
   $count = fgets( $fp ) ;
   fclose( $fp ) ;
} else {
   $count = 0 ;
}
$count++ ;
print "counter = $count" ;
// このプログラムのディレクトリは、
// 誰からも書き込みできる許可を与えておく。
// 別途危険性は説明する。
if ( ($fp = fopen( "count.txt" , "w" )) != FALSE ) {
   fputs( $fp , "$count" ) ;
   fclose( $fp ) ;
}
?>

プログラムをちょっと修正したら、レポートを書きだすと思っていたけど、 予想に反して、くだらない機能追加なんだけど、全員が積極的に「修正」している。
# レポート作成に時間を取ってほしいんだけど….

整数の型と数値の範囲

整数型の様々な型と数値の範囲についての解説。 N進数の変換、小数を含む場合の変換の説明と、2の補数を紹介し、 char / unsigned char / short int / unsigned short int / int / unsigned int / long int / unsigned long int などの扱える数値の範囲を紹介。

数値の範囲が及ぼす具体的な事例をいくつか紹介。

((16bitコンピュータにて))
int i ;  // i:16bit
for( i = 0 ; i < 1000 ; i++ ) ; // 1μsecの処理。
ならば、100μsecは、
×  for( i = 0 ; i < 100000 ; i++ ) ; // 100000 > (2^15-1)
○  for( j = 0 ; j < 100 ; j++ )
for( i = 0 ; i < 1000 ; i++ ) ;
○ long i ;
for( i = 0 ; i < 100000 ; i++ ) ;
((16bitコンピュータにて))
int x1 , y1 , x2 , y2 ; // (x1,y1),(x2,y2)の距離を求める。
int r = sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) ) ;
// 負の数の平方根はエラーとかが発生。
((32bitコンピュータにて))
int t1 , t2 ; // 1970年1月1日からの積算秒(unix time)
× int tm = (t1 + t2) / 2 ;
○ int tm = t1 + (t2 - t1) / 2 ;

来週は、浮動小数点の扱いと double / float 型 , 文字列の扱いをやりたいな…

2009年4月26日 (第109回)

  • 英語の囃子 第8回 吉田先生、電子情報4年丸山さん
    eng090426.mp3
  • メールテーマ: 名物先生、名物授業
  • ゲスト: 1年電子情報工学科 山本さん

photo090426.jpg

PHPによるWebアプリケーションとセキュリティ

5EI学生を対象とした、PHPによるアプリケーションでのセキュリティネタを解説するための 実験を担当し、今日はその第1クールの1週目。 ちょうど、自分の卒研の学生でWebアプリケーション系のテーマの人がいたので、 内容的にもちょうどいい。

余計な処理をしない、セキュリティ的に穴だらけのプログラムを示し、 具体的なトラブルを発生させて、問題点を考えてもらい、 実験ではプログラムの修正を行ってもらう。

  • あえてC言語で書いたCGIにて、バッファオーバフローの体験
  • PHPの基礎として極めて単純な動作例を示す
  • ディレクトリトラバーサルのネタ
  • 入力値の単純表示処理によるフィッシングネタ
  • コマンドインジェクションのネタ

再帰方程式の説明

処理速度の分析の第2段階として、再帰を含む処理の処理速度について説明を行う。

再帰による階乗の処理速度

再帰で階乗の処理を記述し、その動きを説明したあと、処理速度を分析してみる。

((階乗の再帰))
int fact( int x ) {
if ( x <= 0 )
return 1 ;
else
return x * fact( x - 1 ) ;
}
((処理速度の再帰方程式))
 T(0) = Ta
 T(N) = Tb + T(N-1)   |  N≧1
((再帰方程式を代入法で予測))
 T(0) = Ta
 T(1) = Tb + T(0) = Ta + Tb
 T(2) = Tb + T(1) = Ta + 2*Tb
    :
 T(N) = Ta + N * Tb
よって、再帰による階乗の処理は、O(N)

再帰による2分探索の処理速度

次に2分探索法を再帰によって記述してみる。 この処理にかかる時間は、データ件数Nに対して….

((2分探索の再帰による記述))
int find( int data[] , int L , int R , key ) {
if ( L+1 == R ) {
if ( data[ L ]  == key )
return L ;
else
return -1 ;
} else {
int  M = (L + R) / 2 ;
if ( data[ M ] == key )
return M ;
else if ( data[ M ] > key )
return find( data , L , M , key ) ;
else
return find( data , M , R , key ) ;
}
}
int array[8] = { 12 , 23 , 34 , 45 , 56 , 67 , 78 , 89 } ;
void main() {
printf( "%d番目に見つかった" , find( array , 0 , 8 , 78 ) ) ;
}
((処理速度の分析))
この関数は、対象となるデータ件数によって時間が変化し、
対象となるデータ件数(R-L) の関数Tであるとして...
 T(1) = Ta
 T(N) = Tb + T( N / 2 )
で表すことができる。
代入法で予測してみると、
 T(1) = Ta
 T(2) = Tb + T(1) = Ta + Tb
 T(4) = Tb + T(2) = Ta + 2 * Tb
   :
 T(2^m) = Ta + m * Tb
ただし m = log2( N ) だから、
 T(N) = Ta + Tb * log(N)
よって、O(log(N))

ハノイの塔や再帰によるフィボナッチ数列の処理速度

システム

最新の投稿(電子情報)

アーカイブ

カテゴリー