記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
プログラミング問題が本当に苦手…
2025年度から追加される「情報」では、大問の1つとしてプログラミング問題が設置されることが予想されます。
しかし、2023年2月に実施された東進ハイスクールによる「体験模試」ではプログラミングの正答率はわずか3割程度にとどまったということも報告されています。
ここからもわかるように、多くの生徒がプログラミング問題を苦手としているのです。
高得点を狙うために必要な力を備えていますか?
と問われて、自信を持って「Yes」と答えられるでしょうか。
多くの生徒が苦手とするプログラミング問題について、対策法を編み出すために、
筆者は「情報関係基礎」の過去問を約20年分にわたり解きました。
その結果、プログラミング問題の傾向を徹底的に分析し、高得点を獲得するためのポイントを掴みました。
この記事では、私が培ったノウハウを余すことなくお伝えします。
まだどの学習塾でも公開されていないノウハウです。
プログラミング問題を解くために必要な力が知りたい
という人はぜひ最後まで読んでみてください!
受験生の皆さんはもちろん、保護者の方や指導者の方にも必読の内容です。高校生活の集大成である大学入試に向け、ぜひこの記事で準備を整えましょう。
- 教育業界・学習塾で10年以上勤務。教員免許状所持
- 500人以上の生徒に学習・進路指導:合格率 94.7%
- プロ家庭教師・小学校学習支援サポーター、校内予備校の教室長
- AIツールやオンラインでの豊富な指導経験を持つ
- 不登校傾向のある生徒やギフテッドの特徴を持つ生徒も指導中
目次
ずは情報関係基礎について詳しく紹介していきます。
情報関係処理は大学入学共通テストの「数学IIB」の時間に実施されている科目で、
専門学科で取り扱われる「情報」に関する科目の試験科目として設置されています。
▶︎こちらの記事でも詳しく紹介しています。
【情報Iの対策】情報関係基礎を活用する人が共通テストを制す理由情報関係基礎では毎年プログラミング問題が出題されています。
そのため、「情報関係基礎」の過去問を解答することで、共通テスト「情報」で出題されるであろうプログラミング問題で高得点を獲得するためにどのような点に気をつければ良いか、どのような力をつければ良いかという点を把握するヒントにすることができます。
ここからは情報関係基礎のプログラミング問題で出題傾向が高かった単元を紹介しながら、高得点を獲得するために鍛えたい力について詳しく紹介します。
二次元配列とは、配列の中に別の配列を要素として持つ配列のことです。つまり、行と列の二次元の格子状の構造を持つデータを表現するために使われます。
例えば、以下のような5×5の行列を考えてみましょう。
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
この行列を二次元配列で表現すると、以下のようになります。
matrix [][]= {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
}
二次元配列を使うことで、多次元のデータを簡潔かつ効率的に表現できます。
また、二次元配列は、グリッド状のデータを扱う場合や、行列計算などの数学的な処理を行う場合、それに位置関係を表す際に便利で試験でも活用されています。
例えば、以下は二次元配列を使った簡単なプログラム例です。このプログラムは、5×5の行列のすべての要素に1を加えた行列を出力します。
Matrix [][]= {
{1, 2, 3, 4, 5},
{6, 7, 8, 9, 10},
{11, 12, 13, 14, 15},
{16, 17, 18, 19, 20},
{21, 22, 23, 24, 25}
}
i を Matrixの要素の数 -1 まで1ずつ増やしながら繰り返す:
| j を Matrix[i]の要素の数 -1 まで1ずつ増やしながら繰り返す:
| | Matrix[i][j] = Matrix[i][j] + 1
└ └ 表示する(Matrix[i][j] , " ")
このプログラムは、二重の繰り返し文(後述)を使って、各要素に1を加え、行列の要素を出力しています。
以上のように、二次元配列は多次元のデータを簡潔かつ効率的に表現できるため、プログラミング問題でよく出題されています。
続いては二重ループです。
二重ループとは、ループの中に別のループを入れ子状に記述することで、複数の処理を繰り返し実行することができる制御構造です。
「繰り返し」の中に「繰り返し」構文があるということです
例えば、以下のような二次元配列の要素を全て出力するプログラムを考えてみましょう。
Array[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
この場合、単純なループを使って要素を順番に出力するには以下のように書きます。
Array[][] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}
i を Arrayの要素の数 -1 まで1ずつ増やしながら繰り返す:
| j を Array[i]の要素の数 -1 まで1ずつ増やしながら繰り返す:
└ └ 表示する(Array[i][j])
このように、外側のループで行を、内側のループで列を指定することで、配列の全ての要素を出力することができます。
二重ループのメリットは、例えば以下のような場合に使えます。
- 行列の要素を計算するプログラム
- 複数のファイルからデータを読み込んで集計するプログラム
- 二次元座標系上での探索など
二重ループを使うことで、複雑なデータ処理を簡単に実現することができます。
そのため二次元配列と同時に問題に組み込まれていることが多いです
ある一つの事象のときだけ成立するのではなく、どのような場合、どのような数字でも成立するようにコードを整えるのがプログラミング問題の特徴です。
「情報関係基礎」では問1で具体的な例を解かせ、問2から問1の結果を元に誘導し、抽象化してプログラミングコードに変換する流れがとられています。
たとえば
【問題】
あるレストランの注文システムにおいて、顧客がメニューから料理を選択して注文をすると、オーダーリストに注文が追加されます。オーダーリストは注文された順番に料理名と価格が表示されます。以下は3つの注文がある場合のオーダーリストの例です。
- スパゲティ 800円
- ピザ 1,200円
- サラダ 600円
問1.Aさんはスパゲティを、Bさんはサラダを注文した。この時、2人のお会計は●●円である。●●に入る数字を解答しなさい。
問2. AさんとBさんのお会計を算出するプログラミングコードを実装したい。以下のコードを完成させなさい。
(コードはここでは省略)
問3. AさんとBさんが食事中に友人のCさんが合流し、一緒に食事をした。このように人数が増えても良いようにコードを改修した。以下のコードを完成させなさい。(コードはここでは省略)
というように、問1では問題文章を正確に読めば解ける問題、問2以降で抽象化してプログラミングコードに変換するような問題展開がされています。
「情報」で高得点を取るためにも同様に、設問で表示されている具体例から抽象化できるように訓練しましょう。
出題傾向が高い単元でも紹介しましたが、プログラミング問題では配列が多用されます。
配列では添字という、配列の中の何番目の変数を指すのかを表す数字を使います。
情報関係基礎では添字を抽象化して答えさせる問題が多数出題されています。
たとえば
【問題】
#添字は1から始まるものとする
Menu = [ “スパゲティ”, “ピザ”, “サラダ”]
k = 【外部から入力】
表示する( “ご希望のメニューは、” , Menu[ ア ] , “ですね?”)
このとき、外部から入力された数字に対応するメニューを表示したいため、配列Menuの何番目の変数に格納されているメニュー名を指すために変数 k は使われています。
このように、添字が何を指すのかを正しく把握できるようになるとプログラミング問題で高得点に近付くでしょう。
トレース表とは、プログラムの実行過程を記録し、変数の値や処理の流れなどを確認するための表のことです。具体的には、以下のように記録します。
以下のプログラムを例に考えます。
x = 5;
y = 7;
sum = 0;
i を x - 1 まで1ずつ増やしながら繰り返す:
| j を x - 1 まで1ずつ増やしながら繰り返す:
└ └ sum = sum + i + j
表示する("合計は、", sum, "です")
このプログラムは、xとyの値を足し合わせたものをsumに格納し、最後にその値を出力するものです。
このプログラムをトレース表で記録すると、以下のようになります。
行 | x | y | sum | i | j | 処理 |
---|---|---|---|---|---|---|
1 | 5 | 変数xに5を代入 | ||||
2 | 5 | 7 | 変数yに7を代入 | |||
3 | 5 | 7 | 0 | 変数sumに0を代入 | ||
5 | 5 | 7 | 0 | 外側のforループ開始 | ||
6 | 5 | 7 | 0 | 0 | 内側のforループ開始 | |
7 | 5 | 7 | 0 | 0 | 0 | sumに0+0を代入 |
7 | 5 | 7 | 0 | 0 | 1 | sumに0+1を代入 |
7 | 5 | 7 | 0 | 0 | 2 | sumに0+2を代入 |
… | … | … | … | … | … | … |
7 | 5 | 7 | 0 | 0 | 6 | sumに0+6を代入 |
6 | 5 | 7 | 0 | 1 | 内側のforループ終了 | |
5 | 5 | 7 | 0 | 1 | 外側のforループ2回目 | |
… | … | … | … | … | … | … |
5 | 5 | 7 | 0 | 4 | 外側のforループ5回目 | |
5 | 5 | 7 | 0 | 4 | 外側のforループ終了 | |
9 | 5 | 7 | 70 | “Sum is 70″を出力 | ||
12 | 繰り返し処理を抜ける |
このように、トレース表を用いることで繰り返し処理の際に変数の中の値がどのように変化していくのかを視覚的に追うことができます。
またプログラミングコードに変換する際にも役立ちます。ただし、試験時間中に作成するにはある程度のスピードが必要となりますので、訓練するようにしておきましょう。
「情報」で高得点を獲得するためにプログラミング問題に強くなることは必須です。
そのためにも
- 二次元配列
- 二重ループ
- 具体的な例から一般化(抽象化)してプログラミングコードで表現する力
- 添字が何を表すのかを把握する力
- トレース表を作成する力
を身につけるようにしましょう!
これらの力を身につけるだけで間違いなく大きな差になりますよ!
そしてまずはプログラミング問題を解くために必要な基本事項を正しく理解し、基礎問題で定着を図りましょう。
【情報I】プログラミング問題に強くなる10個の基礎(苦手な人必見)【高校情報Ⅰ】プログラミングが苦手な人必見!疑似言語コードの読み解きを1ヶ月でマスターする基礎問題集
【情報1】1ヶ月完成!プログラミング基礎問題集30題最後まで読んでいただきありがとうございました。
この記事が少しでも参考になれば幸いです。
それではまたここで会いましょう!
にほんブログ村ブログ村に参加中です。上のバナーをクリックいただくだけで当ブログにポイントが入ります。いつも応援クリックありがとうございます。
Twitter やってます。
新着記事のお知らせをしていますのでぜひフォローしてください!人気の記事
この記事を読んだ人はこちらの記事も読んでいます。
▶︎「【塾長分析】大学入学共通テスト2025「情報」まとめ【難易度・対策】」
共通テスト「情報」対策に必要なことは?塾講師が解説!勉強法と参考書▶︎「【最新】(情報1)共通テスト試作問題 難易度と3つの対策」
【最新】(情報1)共通テスト試作問題 難易度と3つの対策スポンサーリンク