【全商】情報処理検定プログラミング部門 流れ図問題の解くときのコツ教えます。

はじめに

今回は、情報処理検定のプログラミング部門のコツなどを書きます。

プログラミング部門を受けるときにいろいろな人に教えたり、過去問を解いて対策している中で、気づいたことがたくさんあるのでそれらを共有していきます。

今後プログラミング部門を受ける人はぜひ読んで実践していただけると嬉しいです。

 

 

プログラミング部門について

全商情報処理検定のプログラミング部門は

  • 問1~3問「用語系統の問題」
  • 第4~6問「流れ図についての問題」
  • 第7問「マクロorJavaの記述問題」

で構成されています。

※第67回から、内容が改定されて

  • 問1~3問「用語系統の問題」
  • 第4問「マクロについての選択問題」
  • 第5~7問「流れ図についての問題」

という風に変更されるので注意してください。

 

今回は、これらの中でも、第4~6問について詳しく書いていきます。

 

流れ図を解くときのコツとは

今回教えるコツとは、学校とかでは教えてもらえない(多分)裏技的なものなので解くときには参考にしてください。

 

 

1,最初に覚えておくべきもの

流れ図の問題を解くうえで、流れ図の形がそれぞれどんな意味を持っているのかを分かっていることは意外と重要で、選択肢を絞るときにキーとなることがあります。

下の図に全てまとめてみました。

f:id:Saku_39:20211230204534j:plain

この中でも、「処理」「入出力」「条件分岐」「ループ端」は覚えておくといいです。

(多分、流れ図を見れば「条件分岐」と「ループ端」はわかると思うから、「処理」と「入出力」さえわかってれば大丈夫だったりする。)

 

 

2,解くときのコツ➀ ~解答群を分ける~

ズバリ言います。問題を解くうえでの一番のコツ(Saku調べ)は、

解答群を区別することです!!!

 

と言っても、これだけではわからないと思うので、詳しく説明していきます。

 

プログラミング部門のトレース問題は、回答欄が5個に対して、解答群が10個で構成されています。その解答群を詳しく見てみると、似たような形で2つずつに分けることができるようになっていることがほとんどです。(ときたまそうなってない場合もあります。)

 

解答群の分け方

 

  1. 計算や代入の式と比較の式を分ける
  2. 文字や数字単体のものや、ループの条件式、表示のものを分ける                                                           (これをやるだけで、ある程度分けることができます。)
  3. 次に、使われている配列が同じやつで分ける。
  4. 式の形が似ているもので分ける。

こうすることで、ほぼ確実に2個ずつに分けることがで来ます。

この作業ができると格段に正解率が上がります。

 

 

3,解くときのコツ② ~当てはまるものを判別する~

先ほどのコツ➀で解答群を2つずつに分けることができました。

次に、どの回答欄にどの解答群が当てはまるのかの見分け方を教えます。

 

見分け方その1 ~流れ図記号を見る~

この、どれが当てはまるのかを考える作業で重要になっていくのが、最初のほうにやった流れ図記号の意味です。

 

  • 「処理」に当てはまるのは、計算や代入の式
  • 「入出力」に当てはまるのは、○○を入力 や ○○を表示
  • 「条件分岐」に当てはまるのは、条件式や変数のみのもの
  • 「ループ端」に当てはまるのは、条件式や○○から□□ずつ増やして~。のもの

 

これを考えるだけで大雑把な判別はできるので、ある程度どこに当てはまるのかは決められます。

 

見分け方その2 ~周辺の情報を見る~

その1でやった流れ図記号で見分けることができるのはほんの一部です。

ほとんどの見分け方はこっちのその2です。

 

  • 似たような形があればその近くの可能性が高い。(使ってる配列や変数など)
  • その前に定義されていない変数が使われることはない。(回答欄より前にその変数に何が入っているのかが書かれていないものは絶対解答にはなりません)
  • ループで使われてる変数を使う可能性が高い。(回答欄以外にループの変数を使ってなかったらそれを使ってる選択肢が答えになりやすいです)
  • 初期化処理(0や1を代入する物)は流れ図の最初や、ループの前に多い。
  • 入れ替えの作業で空欄があればすぐにわかる。(次のところで一緒に説明します)

 

これはあくまでも、2つずつに分けたものがどこに当てはまるのかを見つけるものです。

ここのステップは簡単なものであれば飛ばしてしまうこともできるので

自分に合った方法でやってください。

 

 

4,解くときのコツ③ ~2択を当てる~

ここが僕の教えるコツの最後になります。

これまでで、

 

・10個の選択肢を2個ずつに分ける

・2個ずつにしたものがどこに当てはまるのかを見つける

 

という作業をやってきました。

それでは最後に2つのうちのどちらが正解なのか、それの当て方をお教えしましょう。

 

 

この、2択を当てるステップ、極論を言えば、

適当な数値とかを入れてみてトレースするのが一番正確です!!!

 

ただ、こんなこと言っても意味ないので、僕の考えたテクニックをいくつか紹介します。

 

  • 配列の変数

問題で狙われるものの一つとして、使用している配列の添え字があっているのか

というのがあります。

問題で問われるときは、添え字は変数になっているときが良くありますが、その場合はその変数が添え字として適切なのかを判断できればすぐに正解できます。

では、どうやって判断したらいいのか、

それは、

 

  • 他の配列でその添え字が縦横のどちらで使われているのか
  • その変数が変化する数字の範囲が配列の範囲を超えていないか

 

です。

 

まず1つ目の「他の配列でその添え字が縦横のどちらで使われているのか」

について。

 

これは、2次元配列での話になります。

2次元配列とは、 配列名(タテ、ヨコ) という形で書かれます。

そして、変数はほかの配列でも使われていることもあります。

もし、ある配列でタテの添字として使われている変数があれば、それが別の配列でヨコの添字として使われることはそうそうありません。

なので、変数の縦横がごっちゃになっている場合は、誤答の可能性が高いです。

 

次に2つ目の「その変数が変化する数字の範囲が配列の範囲を超えていないか」

についてです。

 

この、全商プログラミング検定の場合では、配列の大きさは全て決められています。

もし、配列の大きさが10なのに対して、添字が15になりうる場合には、配列の大きさをオーバーしてしまうため、間違っています。

配列の大きさを超える範囲になる変数が添え字として使われている選択肢はほぼ確実に誤答と言って大丈夫でしょう。

 

この、配列の添字に使われている変数は誤答選択肢としても作りやすいため、解答群に現れやすいです。

しっかり注意して、間違えないようにしましょう。

 

  • 並び替え処理

ソートの処理の最後にある並び替えの部分は下の流れ図の形になることが多いです。

これだけではよくわからないな~って人もいるのではないかと思いますが

実はこの形はしっかり理解すれば、ものすごく簡単に見えてきます。

 

例題

配列Listの内容を降順に並び替えなさい。

なお、0行目は並べ替えデータ退避用に使用する。

f:id:Saku_39:20220119182650j:plain

 

この流れ図の配列と流れを書いたのが下の図です。

f:id:Saku_39:20220119182622j:plain

アルゴリズムの流れを言語化すると

  1. 並べ替える配列の片方(以降 添え字➀ とする)のデータを退避に入れる
  2. 添え字➀ではないほうのデータを退避させた添え字➀の場所に代入する
  3. 退避させたデータを代入を終えた添え字②の位置に代入する

このようになっています。

流れ図的にみると、矢印の右側にあるものは全部異なっており、左側にあるものもすべて異なっています。

これがわかっていると、どっちが正しいのかすぐにわかると思います。

 

配列で並べ替えをしている。という時には、この形が無いか注意してみると点数はより稼げると思うので、ぜひ参考にして下さい。

(今回は、データの退避として、配列を用いましたが、そこが変数になってるものもあります。その場合も、まったく同じ手法で解くことができるので、ご心配なく)

 

  • 集計処理

データの集計が必要な処理の場合です。

 

例題

2つのコード(Tco、Sco)と金額が与えられている。

この金額データを2つのコードをもとに、配列Syuに集計しなさい。

なお、Tcoは配列の縦の数、Scoは配列の横の数にそれぞれ対応しており、

0行目にはタテの計、0列目にはヨコの計、(0, 0)にはすべての合計を求めなさい。

f:id:Saku_39:20220119190034j:plain

こちらも、よくあるタイプの集計の形です。

この配列Syuはこのような形になっており、一番左の列にはその行の合計、一番上の行にはその行の合計、左上にはすべての合計を集計する。という問題です。

f:id:Saku_39:20220119190037j:plain

この場合もアルゴリズムの流れは単純で

  1. それぞれの場所に集計
  2. 0列目に集計
  3. 0行目に集計
  4. 左上に集計

となっています。

つまり集計すべき場所に順番に足しているということですね。

ちなみに、僕の経験上、順番はそれぞれの場所、タテとヨコ、総合計となっていることが大半です。

これは、形が比較的長く、特徴的なので、わかりやすいと思います。

これをしっかり解くときには、配列の形を見て、どこにどの集計をするのかをしっかり理解しておくことが大切です。

それさえできれば、この形の問題は簡単に答えることができます。

 

今回は、大問5,6を想定したものとなりましたが、コツ②や③は大問4や大問7にも応用できますので、そちらでも使っていただいて、合格を目指してもらえたらなと思います。

 

 

まとめ

今回は、流れ図の問題の僕なりの解き方について解説してきました。

気づけば、あと1週間ちょっとで情報処理検定ですね。

全商情報処理検定は1つ1つをしっかり理解していけば確実に獲得できる検定だと思うので、適当にやらずになぜこうなるのかを1つ1つ考えながら解くようにしてください。(欲を言えば、回答欄周辺のトレースを軽くやるよりわかると思います)

 

まだまだ、ブログも不慣れなため、わかりにくい場所など多々あるかと思いますので、何かありましたら、TwitterのDMやリプで教えて下さい。

また、これに関わらず、質問や感想、意見など気軽に言っていただけると助かります。

 

これからも、全商を中心にいろいろな検定の解き方について解説していきたいと思っているので、もしよければまた見に来てください!!!

そして、情報処理検定を受験されるかた。頑張ってください!

応援しています!!!

 

では、、、