作成日 2013/11/9 最終更新日 2013/11/17
数値計算するときのポイント
情報処理技術者試験では、数値計算させる問題が結構出題されます。その際のポイントをまとめました。
1キロバイトは1024バイトに決まっているだろう。とお叱りを受けそうです。
まあ、確かにそうなんですよ。
でも、これは試験だから、正解にたどり着ければ良いんです。
なので、1キロバイトを1000バイトとしても良い場合もあります。
※同様にメガ、ギガも同じです。
■理由1:
情報処理技術者試験は、数値計算能力を問うような試験ではないと考えています。理解しているかどうかを問う試験という感じです。
なので、1キロバイトを1000バイトとした方が計算が楽だと思った場合は、そうして良いでしょう(※1、2)。
■理由2:
情報処理技術者試験の午前試験は記述式ではなく、選択問題です。
選択肢にある数値に開きがある場合、計算結果の精度が多少悪くても、選ぶことが可能です。
例えば、選択肢が、
ア:1 イ:10 ウ:25 エ:200
となっていた場合、計算結果を求める際は、2桁で計算して良いでしょう。
2桁で計算するということは、1024は1000で計算するという意味です。
※注:3桁目を四捨五入する。12345⇒12000、98765⇒99000です。
-----
※1:実際の実務(会議中などで、電卓がなく、概算したい場合)でも、こう考えることは多いです。
もちろん、最終的には1024で計算するのですが。
※2:「理解しているかどうかを問う試験」だから、計算は楽にできるようにするために、別の値を使うというのは他の試験でもあります。
高校の物理の問題で、π2 を9.8として計算して良いという指定が、ある場合がありました(ちなみに、π2 は9.869・・・です)。
π2 を9.8とさせるのは、重力加速度が9.80[m/s2 ]だからです。
単位の変換と言うのは、例えば、
[バイト/秒]を[キロバイト/分]
にすることです。
まあ、皆さん、出来ると思うのですが、以下のように単位から定数を切り出す(あるいは取り込む)方法で確実に(機械的に)出来ると思います(ミスを減らせるメリットがある)。
通常は、こんなやり方はしなくても大丈夫だと思いますが、疲れているとき、混乱したとき、既に解いた問題をチェックする際に活用できると思います。
◆[分]を[秒]に変換
5[分] ⇒ 5 [60 秒]
⇒ 5 * 60 [秒]
⇒ 300[秒]
◆[秒]を[分]に変換
300[秒] ⇒ 300 / 60 * 60 [秒]
⇒ 300 / 60 [60 秒]
⇒ 5[分]
◆[バイト/分]を[バイト/秒]に変換
300[バイト/分] ⇒ 300 [バイト/60 秒]
⇒ 300 / 60 [バイト/秒]
⇒ 5[バイト/秒]
◆[バイト/秒]を[バイト/分]に変換
5[バイト/秒] ⇒ 5 * 60 / 60 [バイト/秒]
⇒ 5 * 60 [バイト/60 秒]
⇒ 300[バイト/分]
注意:ダメな場合あり。少なくとも再帰関数で最終的にどうなるかを求める問題(例:基本情報H23特別 問6)では、この方法は使えません。
可能な限り、ぎりぎりまでは文字式(xなどの変数を使った式のこと)で計算し、最後に数値を代入して求めた方が良い場合があります。
理由ですが、約分(分数で計算する)できる場合があるからです。
ただし、計算しないままなので、デメリットとして、途中の式が長くなることがあげられます(時間がかかるし、ミスしやすくなる)。
状況に応じて、行いましょう(※1)。
-----
※1:実際のプログラミングでは、最後の状態までは文字式で計算し(計算するのは設計工程です)、計算をプログラムに行わせる感じが多いです。
こうしないと、不要な計算をしてしまう危険があるためです。
不要な計算は誤差の元ですよ。
(特に、工学系、金融系のプログラムの場合は注意がいる)
再帰関数になる場合は、都度計算になるわけですが、その前に本当に再帰関数にしないとダメなのかを検討します。
再帰関数は、数学的には(設計時は)、
漸化式 になっています。
これを解くことが出来ないかを検討し、出来ない場合に再帰関数を使用することとなります。
分数を約分し、約分できなくなったところで、小数の計算をした方が、ミスも少なく、速く計算できます。
分数で計算する際は、帯分数ではなく、仮分数を使いましょう。
え?
数学(これは算数だけど)が苦手すぎて、分数の計算が出来ないって?
う〜ん。
どうしようか・・・。
今一度、復習してみたらどうでしょうか?
昔はダメだったけど、今やったらできたら、ラッキーだし。
ダメだった場合、これは試験なので捨てるのもアリだけど。試験の難易度が上がると思う。
暗記しないといけない量って、基本情報技術者試験でもかなりの量だから。
このページの利用によって発生した、いかなる損害について、このホームページの作成者は責任を負いません。
このページの間違いや嘘を見つけた方、このページに書いて欲しい情報がある方は
メール をお願いします。
Microsoft 、Windows 、Visual Basic および Excel は米国Microsoft
Corporationの米国およびその他の国における登録商標または商標です。
ここではExcel® をエクセル、Visual Basic® for Applications をVBAと表記する場合があります。
Mac 、Mac OS
、Mac OS
X は米国Apple
Computer,Inc.の登録商標または商標です。
その他、社名および商品名、システム名称などは、一般に各社の商標または登録商標です。
このホームページの作成者はこれらの会社とはいっさい関係がありません。