ホーム » 2004 » 9月 (ページ 2)

月別アーカイブ: 9月 2004

2004年9月
 1234
567891011
12131415161718
19202122232425
2627282930  

最新の投稿(電子情報)

アーカイブ

カテゴリー

高等学校新人大会出場申込み

夏休み合宿中に、2年学生が高校生の試合に参加したいとの希望があったが、 例年参加していないため情報不足の中、 丁度、「H16高等学校新人大会出場申込み」の調査書類が届く。 今年は H16,11/12(Fri),13(Sat),14(Sun)に開催予定らしい。 テストや学校行事も無いため、希望があれば参加可能かも。 参加費:団体1チーム10000円、個人1000円/人。

申し込みの確認として、 (1)高体連への選手登録の必要性の有無の確認、 (2)バドミントン協会への選手登録の必要性の確認、 →必要。 (3)新人戦とあるが、3年の参加は可能か? の確認中。 詳細はバドミントンの担当の金津高校・酒井先生へ問い合わせ中。

2004/09/17加筆: (1)参加費の納入でOK。 (2)バドミントン協会への加入は11/4顧問会議で1400円/人でOK。 (3)年齢制限でNG。

前期期末試験結果

明日の特別指導日でのテスト返却までということで、採点を終える。 平均点が60台と、前回に比べてかなり落ちている。 問題量を減らすために選択問題を無くしている影響もあるが、 それ以上に理解者が減っていると思われる。 十分な演習時間がとれていないためか….
はぁ…ため息…

前期期末試験、成績の2極化!

プログラム応用のテストは、 ファイルの入出力を中心とした範囲 で実施。 半数程の採点を終えたが、WWWの過去問に取り組んでいた学生は、軽微な間違いは あっても問題の無い結果となっている。 しかし、相変わらず解ってない学生は、ひどい内容。 2年もやっていて、文法からめちゃめちゃなのもいる。
ため息&合掌….

シングルコートって何やねん。

文法の間違い指摘で、'と"の違いを聞いている設問の回答で、 シングル コート 、ダブル コート って書いているのがぞろぞろ。 single/double quote (クォート) やっちゅーに….

追記(9/17):成績不良者の殆んどがテスト前時点でレポート未提出。 自業自得あるね。 成績分布より、70点未満対象で追試予定。(11名対象予定)

リフォームワークス

またもや東京周辺のマンション経営の不動産売り込み。 いつものごとく、相手先電話番号を確かめた上で、 個人情報の取扱いでクレームをつける。 これまたいつものごとく、『個人情報じゃないだの..』の押し問答。

これまたいつものごとく喧嘩口調なんだけど、今日の相手(坂本君)は、 ちょっとだけヤルキのある人かも。途中で 『個人情報保護法』 でつめよると、自分の端末で法令を探しはじめてくれる。 「個人情報取扱い事業者は、利用目的を本人に通知公表しなければならない」(4章18条) で、『あなたの買った名簿業者は私に通知してないよ!』とつめよると、 納得はできないまでも、多少わかってくれたみたい。

まだグレーゾーンの多い法律だから告訴は無理かも知れないけど、 「罪悪感ないの?」とか、 「上司に個人情報の扱いが悪いことを上申したら?」とか、 つめよる。 さらに、『 日本テレマーケティング協会 とかに加入して、 TPS(Don't Call データベース)を見てから電話する ということも勉強してね』と伝えると、 『そんなのあるんですね…』 と、まあまあ説得成功。

んでも、こういう業者って自分が持っている情報を「個人情報」と 認めない。でも「そろそろ黒になりそうだよ」と言っても、 『今は、まだ法律違反じゃないんでしょ!』 と言い返すのが定番。
後から思い付いた作戦だが、 『じゃぁ保護法で黒判定がでるようになったら、あんたの部署は真っ先につぶされて、会社首になること解んないかなぁ!!』 というのは、説得路線にうってつけではないだろうか…. 次の機会に試してみよう。

テスト参加者6名

今まで12名程度の授業参加者であったが、実際にテストになったら、 受験者6名。なんか拍子抜け。 学生さんに聞くと、昨年落した単位のテスト時間が重なっているため らしい。1人については申告があったため、時間をずらしてテストを実施。

最後の課題やテストも含めて、学生さんには面倒臭い講義だったのか? アンケート結果にどうでるか…だな…といっても今から採点。

台風18号

台風一過の今朝、学校に行くと、 学生駐車場近くのグラウンド横の木が、3本ほどなぎ倒されている。 環境都市の近くでは、百葉箱がころがっている。 思ったより被害は出ているもんだ….

パイプ・リダイレクトの話しと、ファイルの課題

今日は、実験が日程を消化しているので、前半をプログラム応用の授業、 後半をレポート遅れの対処時間とする。

高久先生のOSの授業で、パイプ・リダイレクトの話しが済んでいる様なので、 今年は資料配布と簡単な説明。CGI でもパイプの概念が使われている事例を紹介。

ファイル関連の演習として、以下のテーマを示す。

  • ファイルから『名前と点数データ3個で1人分データ』を読み込み、 点数データの合計を求め、ファイルに結果を保存。
  • ファイルからfgets,fputs等を使い、1行データを読み込み、 英文字は小文字に直して出力。
  • ただし、ファイルのopen,closeは、fopenでもリダイレクトでも可とする。

演習で手が止まっている学生の話しを聞いていると、 ファイルという概念抜きで、 『名前と点数データの入力』でさえ理解できていない学生が多い。 『昨年度の授業で何やってたんや!』 と叫びたくなる。

HRで配った配付資料の間違いを学生が指摘してくれた。

プログラムコンテスト応募資料の提出

プログラムコンテストの本選に向け、パンフレット資料の締め切りが近付く。 例年はどの提出資料も『締め切り速達!』を連発しているが、 今回だけは、余裕をもって提出ができたかな….

学生さんに『提出資料をメールで…』と伝えておいた時に限って、 自宅サーバのルータ死亡。 運良く朝一番に学生さんがつかまって助かったぜ。

高水準入出力関数

C言語の入出力関数の説明として、1文字系、1行系の説明を行う。

  • getchar(),putchar(),fgetc(),fputchar()
  • gets(),puts(),fgets(),fputs()
  • stdin,stdout,stderr
  • 入出力バッファと高水準入出力関数
  • バッファオーバーフロー

fopen,fcloseの説明が夏休み前なので、復習の意味で説明。

/* fscanf,fprint説明 */
FILE* fp ;
fp = fopen( "abc.txt" , "rt" ) ;
if ( fp != NULL ) {
int x ;
while( fscanf( "%d" , &x ) == 1 )
printf( "%d" , x ) ;
fclose( fp ) ;
}

1文字入出力の説明。char型 'a' であることの明記と、 EOF(End Of File)の説明。EOFの入力方法の説明がまだ。

このプログラムの説明で、"This"と入力しても、"TThHiIsS"と 表示されない点を述べ、入出力のバッファリングが機能している点を明言。

/* getchar,putchar説明 */
int c ;
while( (c = getchar()) != EOF ) {
if ( 'a' <= c && c <= 'z' )
putchar( c - 'a' + 'A' ) ;
else
putchar( c ) ;
}

入力用と出力用の2系統のファイルポインタを使う例で、fgetsの説明。

/* fgets説明 */
FILE* fp_in ;
FILE* fp_out ;
fp_in = fopen( "in.txt" , "rt" ) ;
if ( fp_in != NULL ) {
if ( (fp_out = fopen( "out.txt" , "wt" )) != NULL ) {
char buff[ 100 ] ;
while( fgets( buff , 100 , fp_in ) != NULL )
fputs( buff , fp_out ) ;
fclose( fp_out ) ;
}
fclose( fp_in ) ;
}

安全な入力

行入力の説明で、getsは使うな!と明言したので、 その理由として、バッファオーバーランを説明し、その安全対策を説明する。

/* 危険なコード */
char s[100] ;
scanf( "%s" , s ) ;
/* 安全な入力 */
char s[ 100 ] ;
int  x ;
char buff[ 100 ] ;
while( fgets( buff , 100 , stdin ) != NULL ) {
if ( sscanf( buff , "%s %d" , s , &x ) == 2 ) {
:
}
}

標準入出力

前のコード中の、stdin の説明として、 標準入力(stdin)、標準出力(stdout)、標準エラー出力(stderr) を説明する。

リストによる集合演算

夏休み開け最初でかつ、テスト前最後の授業なので、 集合演算に関係するネタで復習を行いながら説明。

最初に、リスト構造の説明をするが、単純な復習では面白くないので、 他の教科書で多い typedef によるリスト宣言の説明を行う。

リストで集合演算

可変データ長であり、挿入削除が容易なので、リスト構造が集合情報 を扱うのに向いているといった説明の後、積集合のプログラムを示す。 テストなら和集合、差集合といったネタも豊富とだけ言っておく。

/* find,consは復習の時点で示しておいた */
struct List*cap( struct List*p , struct list*q )
{   struct List* ans = NULL ;
for( ; p != NULL ; p = p->next ) {
if ( find( q , p->data ) )
ans = cons( p->data , ans ) ;
}
return ans ;
}

構造体と配列で集合演算

リストを扱っていても、まだまだ構造体の理解も怪しい。 データ件数と配列による構造体で、集合を扱う事例を説明。 配列演算とリスト演算の対比を狙う。

struct Set {
int  size ;
int  array[ 10 ] ;
} ;
struct Set p = { 4 , { 1 , 2 , 3 , 4 } } ;
struct Set q = { 5 , { 2 , 4 , 6 , 8 , 10 } } ;
struct Set a ;
cap( &a , &p , &q ) ;
for( i = 0 ; i < a.size ; i++ )
printf( "%d\n" , a.array[ i ] ) ;
/* この処理に見合うcap() を作れ! */
------------------------------------
void cap( struct Set* ans , struct Set* p , struct Set* q )
{   int i , j ;
ans->size = 0 ;
for( i = 0 ; i < p->size ; i++ ) {
for( j = 0 ; j < q->size ; j++ ) {
if ( p->array[ i ] == q->array[ j ] )
break ;
if ( j < q->size ) {
ans->array[ ans->size ] = p->array[ i ] ;
ans->size++ ;
}
}
}

ビット演算を使った集合処理

テストの範囲外というネタで、ビット演算が集合処理に使えることを説明。 要素に含まれれば対応ビットが1という説明をする。

/* A9876543210 */
int p = 0x1E ; /* 00000011110, p={1,2,3,4} */
int q = 0x554 ;/* 10101010100, q={2,4,6,8,10} */
for( i = 0 ; i < 11 ; i++ ) {
if ( (p & q) & (1≪i) )
printf( "%d\n" , i ) ; /* 2,4が表示される */
}