昨日、試験が開催されたようです。受験した学生さんが報告してくれました。「先生、COBOLって何?」確かに。。。授業でさらっと話しただけ。もちろんプログラミングする機会はありません。(選択問題ですから知らなくても実害はないのですけどね)
ちょっと気になり問題が公開されているとのことでしたのでさーっと見てみました。
Link: 情報処理試験(問題・解答)
午前の問題は。。。授業を受けていれば問題ないでしょう。ただストラテジ系は多少自分で訓練が必要かと思います。問題は午後かな?選択問題の6番。ソフトウェア品質工学に関する問題です。これは担当科目でやっておかなければならない内容です。こういう形式の授業はしていませんでした。品質管理の回がありますので今年から対応したいと思います。
あとはJavaの問11。解いていませんがC言語の問題の方がシンプルですね。。。言語間による差はないのかな?一番目につくのはEnum型。こういう使い方は、私もやったことがありません。ソースを見れば動作は想像がつきますけどね。。。コマをひっくり返すのに再帰も出てきます。かっこいいけど、ちょっと怖い。ただ、設問自体は簡単で、こういう言語仕様をあまり知らなくても解けそうな感じはします。
せっかくなので、例題を真似してEnum型を使ってみました。知らなかった学生さんはついでに遊んでみましょう。
class Jouhou { static enum Direction { N(-1, 0), NE(-1, 1), E(0, 1), SE(1, 1), S( 1, 0), SW(1, -1), W(0, -1), NW(-1, -1); final int r, c; Direction(int r, int c){ this.r = r; this.c = c; } } public static void main(String [] args){ for (Direction d : Jouhou.Direction.values()){ System.out.println(d); } } }
実行結果は以下のようになります。2つ以上のパラメータを渡したEnum型を作るのにこのテクニックは便利ですね。values()は列挙子(NやNEなど)の配列を返してくれるメソッドです。列挙子の配列から拡張for文により順番に取り出して表示しています。取り出した列挙子をprintlnするとtoString()メソッドが呼ばれ列挙子の名前(NやNEなど)が表示できるようです。
N
NE
E
SE
S
SW
W
NW
では、ついでにtoSring()メソッドをオーバーライドしてみます。
class Jouhou { static enum Direction { N(-1, 0), NE(-1, 1), E(0, 1), SE(1, 1), S( 1, 0), SW(1, -1), W(0, -1), NW(-1, -1); final int r, c; Direction(int r, int c){ this.r = r; this.c = c; } public String toString(){ return "("+r+","+c+")"; } } public static void main(String [] args){ for (Direction d : Jouhou.Direction.values()){ System.out.println(d); } } }
たしかに以下のような感じになりました。いつか使おうか。。。?
(-1,0)
(-1,1)
(0,1)
(1,1)
(1,0)
(1,-1)
(0,-1)
(-1,-1)