【応用情報/5-6日目】初めての記述式問題で気づいた、午後試験に必要な勉強法
今日もお疲れ様です。いよいよ主要都市部では3回目の緊急事態宣言が発出されることになってしまいました。1年越しのGWのお出かけ、楽しみにしていましたので残念です。とはいえ暗い気持ちのままだらだらと過ごすわけにもいきません!せっかく家にいる時間が増えたのですからがっつり勉強しましょう。ということで応用情報技術者試験に向けた勉強にがつがつ取り組み、この土日で2章まで終わらせましたので備忘録ということも含めてまとめてみます。
2章:アルゴリズムとプログラミング
2章の中身には、木構造やキュー・スタックなど、基礎理論よりも少しプログラミングらしい内容が盛りだくさんです。全体を通して用語の暗記力が求められる部分が多いですが、木構造については仕組みを理解していないと解けない領域ですね。
さすが応用情報というだけあって、用語の解説も深みが増しています。似たような言語も多いので、この辺りは何度も読み返しながら覚えていくのがいいかもしれませんね。
基本情報のテキストを読んでよかったと思うところ
逆ポーランド表記の解説
応用情報技術者試験 合格教本の解説を見ると、「逆ポーランド表記で表された式は、スタックを用いて…」という記載があります。数式を例に開設されているのですが、おそらく初見がこれだったらよく理解できなかったかと思います。
例えば
2 3 + 8 *という式があった場合、基本情報技術者のテキストに書かれていた記載で考えると分かりやすいと思います。要は
「スタックである」
「演算子を読み込んだら2個取り出して計算する」
「そしてスタックにPUSHする」」
ということですよね。2個取り出して計算するという解説が、今思うと分かりやすくていいですね
整列アルゴリズム 比較回数nの解説
整列アルゴリズムの節では、整列法とその特徴を解説しています。この説では各整列法の計算量Oや比較回数nという考え方が出てきますね。
応用情報の合格教本によると、単純挿入法の全比較回数は
最悪:n(n-1)/2
最良:n-1
と脇の方にちょこんと書いてあるだけです。これは初見だったら「覚えるしかないのか!」ってなっていたと思います。
慌てて基本情報のテキストを開きました。基本情報には、このn(n-1)/2の導き出し方が解説されています。
データがN個あります。このN個のデータに対して、(N-1)回の比較を行います。
データがFIXされたら、次は(N-1)個のデータに対して、(N-2)回の比較を行います。・・・
これを繰り返した時の合計回数は、
(N-1) + (N-2) + ・・・ + 1
となりますね。この式を分かりやすくするために、数学的にひと工夫します。
逆から書いた式を加算すると、
①上の式:(N-1) + (N-2) + ・・・ + 1
②逆の式:1 + 2 + ・・・ + (N-1)
①+②:N + N + ・・・ + N
全てNになります。これはNが(N-1)個あるので、
N(N-1) ですね。
最後に、全体として式を2倍しているので、全体を2で割って、
N(N-1)/2 が導き出されます。
オブジェクト指向言語の解説
応用情報の勉強を始める前から、少しずつプログラミングに取り組んでいました。なので、オブジェクトという言葉自体を見たことはあったのですが、イマイチ理解しきれていなかったんですね。
応用情報のテキストにもオブジェクト指向言語とは!が書かれているのですが、開けてビックリ、解説は4行だけでした。
さすが、実務経験がある方を前提に書かれているだけあって、あっさりしています。普段仕事でプログラミングをされている人は、この辺はスルーなのかもしれませんね。
素人の僕からしたら理解しづらい概念でしたが、こちらも基本情報のテキストに分かりやすいイメージ解説がありました。オブジェクトとは、データとメソッドを一体化したもので、たこ焼きに例えて考えてみます。
たこ焼きは、たこ焼き器という鋳型にタネを流し込んで作られます。ただ、鋳型が同じでも全く同じたこ焼きが出来るわけではなく、それぞれ個性がありますよね。鋳型によって大きさはある程度同じだったとしても、少しずつ個性が違うものが出来上がる。このイメージです。
オブジェクトは、焼けてるたこ焼きを"漠然と"指すもので、この鋳型にあたるものがクラス、鋳型をもとに作られた、個性を持ったたこ焼きを指すものがインスタンスです。
まとめ
章末問題で初めての記述問題
応用情報のテキストを進めて、やっと2章の章末問題に入りました。ここで久しぶりに記述問題に遭遇。面喰いました。
Q.衝突(collision)を、キーとハッシュ関数の語句を用いて35字以内で記述しなさい。
今までは選択式でしたからあいまいな記憶でも対応出来ていましたが、記述式となると本当に理解しているかどうかが問われますね。
記述問題の対策として大事だと思うこと
単に暗記力が求められる領域だったとしても、ある程度深く理解しておく必要がありそうです。ではどうやって深く理解するかということですが、僕個人としては、それが生まれた目的や身近で使われているものを例として考えてみることが大事だと思います。文字で覚えるのではなく、動画やビジョンで覚えていった方がいいような気がしますね。
例えば基本挿入法等であれば、手元にトランプがあれば自分でも実践できますし、「どういうときに比較回数が最悪になるか」を理解するには自分で手を動かしてみるのが一番だと思います。
前回はこちら
次回はこちら