日商プログラミング検定 STANDARD VBA サンプル問題実技科目解いてみた
今回で一区切りですね。
問題は↓から確認できます。
選択式だった前回、
とは異なり、今回は実技ということで空所を全て自力で埋めなければなりません。難しそうですが、その分コードは簡単になっています。
問題1 2から100までの約数を求め、シート上に表示しなさい。
フローチャートは空欄が多くてコードを読んで考えた方が良さそうです。
【1】Nがいくつからいくつまでかを答える問題。「2から100まで」とあるのでここは「N=2 To 100」ですね。
【2】Mがいくつからいくつまでかを答える問題。【1】と同様に考えて「M=2 To 100」ですね。
【3】IF文の条件式について。約数の判定だから「NがMで割り切れるか」を答えればよくて、数式に直して「N mod M =0」ですね。
ここでもSelectは時間がかかるので他の書き方がいいでしょう。
またNの約数を調べるには√Nを切り上げた値まで割って調べたのにNを追加するのがいいと思います。
問題2 3辺a, b, c(c を斜辺とする)の直角三角形の成立条件は、a^2+b^2=c^2 である。各辺の長さは整数値と仮定し、さらに3~N(N=100)までの範囲の値をとるものとする。条件が成立する直角三角形の辺の組を求めよ(a, b の値を交換した直角三角形は同じとする)。
最初にツッコミを入れるとピタゴラス数を3重ループで求めるのはかなり効率が悪いです。それよりも自然数n,m(n>m)を用いてa=n^2-m^2 b=2nm c=n^2+m^2 から求めるのがいいでしょう。
【1】bをいくつから100まで繰り返すかという問題。条件に2にa≦bとあるので答えはaですね。
【2】cをいくつから100まで繰り返すかという問題【2】と同様に考えてb≦cという条件があるから答えはbですね。
【3】If文の条件式を答える問題。フローチャートからここがTrueのときは答えとしてa,b,cを表示することが分かりますし、本問で条件といえば真っ先に思いつく「a^2+b^2=c^2」が答えですね。
問題3 (問題文略) ヒストグラムを作成する問題。
問題文に「配列hに度数を格納」とあるのでこの処理を考えます。幅が10だから、点数を10で割った商が6ならh(6)を1つ増やす、ということを一般化して考えれば、【1】の答えの一例は「a(i) ¥ 10」、【2】の答えは「r」と分かります。ちなみに問題文に隠された【1】の答えは「int(a(i) / 10)」で、少し難しいです。答えが隠されていることは、問題文をコピーして貼り付けたことで見つけました。答えのテキストデータの部分を図形を載せて隠して作ったからこのようなことができると考えられます。
【3】各度数だけ「*」を入力することを考えます。上記の通り度数は配列hに格納されていて、iについてのFor文の中だから答えは「h(i)」と分かります。
これで全問解き終わりました。前半は基本的な知識の問題。後半は基本的なプログラムの問題ですが、最後の方は少し難しいと感じました。特に実技の問題3は思考過程を書くことが大変でした。
仕事でVBAを書いているレベルの人なら少し失点することもあるでしょうがまず合格できる難易度でしょう。近々受けようと思います。
以上、商プログラミング検定 STANDARD VBA サンプル問題解答でした。