担当科目3科目の試験日でした。
2科目は筆記試験。1科目はプログラムを書く実技試験でした。
筆記試験については、採点ツールを自作しているのでそれに合わせた問題にしています。
自分でいうのも何ですが、このツールのおかげで採点が苦にならなくなりました。
で、実技試験の演習室に行ってみると学生さんが「PCがつきません」と。
えっ!?
恐らく、先日のブルスク祭りの影響ではないかと思われます。
業者さんによる調査が明日以降になるため、とりあえず、何かしら試験をしないといけない。。。
10分くらいで試験問題を作成しました。
試験問題といっても、演習課題として作ったコードにいくつか穴を開けてそこを解答してもらう問題にしました。
解答欄の周囲を見れば想像がつくはず、という問題にしたつもりです。
さて。。。どうなりますやら。
こういうのってできる先生はプランBとか用意するんですかね。。。
ちなみに、10分で作った問題は以下です。Rubyを知らなくてもプログラムできる人なら正解できるかな。。。と思います。(学生は学習済みですが)デフォルト引数とかはRuby特有の書き方があるかもですが。
以下の(1)〜(15)にあてはまる言葉を答えなさい。(各2点) require 'sqlite3' require 'date' class BookInfo attr_accessor :title, :author, :pages, :publish_date def initialize(title, author, pages, publish_date) (1) = title @author = author @pages = pages @publish_date = (2) end def to_s "#{@title},#{@author},#{@pages},#{@publish_date}" end def toFormattedString(sep="\n") "書籍名:#{@title}#{(3)}著者名:#{@author}#{(3)}ページ数:#{@pages.to_s}#{(3)}発刊日:#{@publish_date.to_s}#{(3)}" end end class BookInfoManger def initialize((4) = 'book_info.sqlite3') @db_fname = db_fname @db = SQLite3::Database.new(@db_fname) sql = (5)SQL CREATE TABLE IF NOT EXISTS BOOK_INFO ( TITLE (6)(50), AUTHOR (6)(50), PAGES INT, PUBLISH_DATE DATE ) SQL @db.execute sql @db.results_as_hash = true end def addBookInfo book_info = BookInfo.new('', '', 0, Date.new) print '書籍名:' book_info.title = (7) print '著者名:' book_info.author = (7) print 'ページ数:' book_info.pages = gets.chomp.to_i print '発刊年:' year = gets.chomp.to_i print '発刊月:' month = gets.chomp.to_i print '発刊日:' day = gets.chomp.to_i book_info.publish_date = Date.new( (8), (9), (10) ) sql = <<~SQL INSERT INTO (11) VALUES ( #{book_info.title}, '#{book_info.author}', #{book_info.pages}, '#{book_info.publish_date}' ) SQL @db.execute (12) end def listAllBookInfos @db.execute('SELECT * FROM BOOK_INFO') do |(13)| puts BookInfo.new(row['TITLE'], row['AUTHOR'] , row['PAGES'] , row['PUBLISH_DATE']).toFormattedString end end def deleteBookInfos listAllBookInfos print '削除する書籍名を入力してください(キャンセルする場合はエンターのみ)' title = gets.chomp if title != "" sql = "DELETE FROM BOOK_INFO WHERE TITLE='#{title}'" @db.execute (14) end end def run while true print '1. 蔵書データの登録 2. 蔵書データの表示 3. 蔵書データの削除 9. 終了 番号を選んでください(1,2,3,9):' num = gets.chomp case num when '1' (15) when '2'
ちなみに、今、採点を終えまして、正解率が以下のようになっています。ちなみにこのテストは30点満点です。ちなみに学生はPythonを導入言語として学びます。Rubyはこの科目で差分だけ学習する感じです(Pythonに変えるべきなんでしょうけど、日本人として福岡人としてRubyを推したい気持ちでやっています、学生は迷惑かもですが、でも学生からはRailsが知れてよかったという感想をもらうのでそれほど迷惑ではないのかな?と思っていますが)。(4)は特殊な書き方なので低くてもしかたがないかな。。。と。(13)もブロック引数でRuby特有ですね。(6)はSQLなのでこれは書けて欲しかったなあ。
以上です。