ホーム » 2012 (ページ 15)
年別アーカイブ: 2012
リストの生成
テストを返却した後、前回の授業の続き。 リストの生成と挿入削除について説明を行う。
// 前回の授業で説明した時のコード struct List { int data ; struct List* next ; } ; struct List* cons( int x , struct List* n ) { struct List* ans ; ans = (struct List*)malloc( sizeof( struct List ) ) ; if ( ans != NULL ) { ans->data = x ; ans->next = n ; } return ans ; }
リストの入力と追加
top = cons(1,cons(2,…)) といった方法では、動作確認の時にしか使えない。 実際にデータを入力しながら、リストに保存するプログラムを考える。 前述の cons() の補助関数を使えば、簡単に記載ができる。
struct List* top = NULL ; int x ; while( scanf( "%d" , &x ) == 1 ) { top = cons( x , top ) ; } // 11,22,33の順でデータを与えると、 // top[◯]→[33|◯]→[22|◯]→[11|×]
しかし、この方法では、データを11,22,33の順序で与えても、 生成されるリストは、逆順となってしまう。
そこで、リストの末尾を覚えるポインタを作っておいて、 下記のように記述すれば良い。
struct List* top = NULL ; struct List** tail = &top ; int x ; while( scanf( "%d" , &x ) == 1 ) { *tail = cons( x , NULL ) ; tail = &( (*tail)->next ) ; } // 11,22,33の順でデータを与えると、 // top[◯]→[11|◯]→[22|◯]→[33|×]
リストへの挿入・削除
リスト処理の良い点は、必要に応じてメモリを確保していくため、 配列の容量オーバーといった問題を気にしなくて良い所。 一方、配列で途中にデータを挿入する場合、 挿入場所を作るために後続のデータを1つ後ろにずらす処理が必要となる。 また、配列の途中のデータを抜く場合、 後続データを1つ前にずらす処理が必要となる。 でも、リスト構造であれば、ポインタの繋ぎ変えだけで済む。
// 挿入 // ポインタpには、挿入したい場所の直前のセルの場所。 void insert( struct List* p , int x ) { p->next = cons( x , p->next ) ; } // 削除 void delete( struct List* p ) { struct List* d = p->next ; p->next = p->next->next ; free( d ) ; }
@FukuiKousen管理を緊急連絡サーバに移動
今まで、福井高専の最新情報を自動的につぶやく @FukuiKousenは、 自宅サーバで動かしていた。 しかしながら、緊急時の学生さんへの連絡手段として、活用しようという流れの中で 公式としての運用を認めてもらった。
ということで、書き込みに使っているRSSフィード生成プログラムと、 Twitterへの書き込み機能を緊急連絡のサーバの中で動くように設定した。 また、このTweetは、同じくFacebookの福井高専のページに転載されるように しておいた。
これとは別に、@EchizenBotを動かしていたけど、 越前市でも公式の@city_echizenのアカウントを動かしているのを発見した。 ということで、@EchizenBotからは、越前市ページの情報収集機能は抜いておいた。
プログラム応用テスト返却
テストも終わって、ふつーにテストの返却。 採点ミスに伴う、点数修正の申告も1人だけであった。
答えの解説の中で、ポインタを理解させる出題でスタックの技法を 使っていたので、Stackも解説をしておいた。
テスト解説後に、次の授業の導入説明をするつもりであったが、時間切れ。
IT人材白書2012:人は足りていても、質は…
職場にてIT人材白書2012の冊子が、IPA(情報処理推進機構)から送られてきた。 オンライン版(IT人材白書2012)にも同様の物が公開されているけど、改めて見てみた。
細かい所は読めないけど、総括では「人的な不足はないけど、質的に人材不足」 といったような記述がある。 総括的な能力を持って開発ができる人が不足しているということみたい。
興味深かったのが、新卒採用の学生の質・水準に対する満足度。 30名以上の企業だと、50%を超えるのに対して 30名以下の企業(福井県内の情報系だとまあまあ多い…)だと、15%程度。 小さい企業だと、スキル不足ばっかりなのだろうか….
採点1科目終わった。平…(06/09)
- 06/09 採点1科目終わった。平均77か…ちょい難しかったのかな。2教科目始めたけど、クラクラするのでひとまず寝る。 #fnct
- 06/08 マイクロマウス車体のキット http://www.rt-shop.sakura.ne.jp/rt-shop/… #fnct
- 06/08 [テスト前] ぼそっ、再帰、再帰方程式、malloc…テスト範囲総括しただけじゃん。つぶやく意味ねーな。 #fnct
- 06/07 テスト前: 学生さんに「4年分遡ってテスト過去問解いてますが、難しすぎ…」って突っ込まれた… あと2問は今から作る予定だけど、がんばって過去問に無い問題を作るど!! #fnct
この記事は、 の @TohruSaitohに掲載した #fnct タグ付き記事を、まとめたものです。
twitter-botが治った…
自宅サーバにて動かしている、RSSフィードをTwitterにアップする、 @EchizenBot と @FukuiKousen のBOTが、1月ほど前から動かなくなっていた。 どうも、perl の XML::FeedPP が原因というところまでは判明していたけど、 急に動かなくなって原因を突き止められず、放置状態だった。
改めて、XML::FeedPP のREADMEを確認していると、 ” LWP::UserAgent is required to download it.”との記載を発見。 ということで、プログラムの先頭に “use LWP::UserAgent;”を追加する。
#!/usr/bin/perl
:
use LWP::UserAgent;
use XML::FeedPP;
:
治ったのはいいけれど、久々に動いたので、@EchizenBotでは、一度に50件ほどの大量Tweetとなってしまった… ちょっと顰蹙Tweet になってしまった。
2012年6月3日(第271回)
テスト期間中につき、収録でお送りしました。
ゲスト:電子情報工学科教員 川上先生
- 新任の川上先生のご紹介
- クラブ紹介 サッカー部
担当:長水先生、西(教員)