基本情報技術者試験のプログラミング対策!選ぶべき言語と対策法!

基本情報技術者試験はその業界の方でなくても知っている方が多く、人気かつ有名な国家資格になります。
人気なことからも

と意気込んで受験をするも、大抵の方は

と玉砕してしまうことが多いのが実情です。
プログラミングは20点を締めており、しかも必修なのでここではそれぞれの言語の特徴と、どれを選ぶのが良いのか、さらに効率の良い学習方法についてもあわせて解説していこうと思います。
本記事のまとめ!
- 合格を狙うだけなら表計算がおすすめ!
- 就職にも役立てたいならPythonがおすすめ!
- 表計算対策ならスタディング、それ以外の言語はBizLearnで解決!
基本情報のプログラミング言語一覧
基本情報技術者試験のソフトウェア開発で出題される各プログラミング言語について、概要を紹介します。
C言語
C言語はプログラミングの中でも特に知名度の高い言語のひとつで、人間にとっては記述内容が容易でいわゆる高級言語のひとつとされています。
50年近くもの歴史があり、古いプログラミング言語ではあるものの今でも人気な言語として上位を占めており、現在用いられているソフトでもこのC言語をベースに作られているものが多いです。
C言語の概要
C言語の大きな特徴としてはCPUやメモリと言ったハードウェアについて意識する必要があり、基本情報ではハードウェアやメモリも当然学習するので絡めたような問題も出てきます。

確かに、ハードウェアやCPUが得意!と言う方はC言語も向いているかもしれません。
しかしC言語は高級言語の中では機械に近い言語であり、構文自体も読みやすいとは言えません。その為、初心者が0から勉強したい!と言う場合はあまり向いている言語ではありませんね。

基本情報技術者試験のC言語対策に関しては以下をご覧ください。
C言語のサンプルコード
/********************/
/* 数字当てゲーム */
/********************/
#include <stdio.h>
#include <time.h>
#include <windows.h>
void main( )
{
int n1; // コンピュータが選んだ数字
int n2; // 入力数字
int i;
char c[128];
system("cls"); // 画面消去
srand(time(NULL)); // 乱数の準備
n1=rand( ); // 乱数発生
n1%=100; // 100で割った余り
printf("****************************************\n");
printf("* 今コンピュータが数字を1つ選びました *\n");
printf("* 選んだ数字を当ててください *\n");
printf("* 数字の範囲は 0 から 99 までです *\n");
printf("****************************************\n");
for( i=1; i<=10; i++ )
{
printf("\n数字: "); // 数字表示
fflush(stdout);
gets(c); n2=atoi(c); // Aの値を入力
if ( n1==n2 ) break; // 同じ数字
if ( n1< n2 )
printf(" 大きすぎます");
else
printf(" 小さすぎます");
}
if ( i<=10 ) printf("\n\n%d回目で当たり\n",i);
else printf("\n\n\aアウト!! 正解は %d でした\n",n1);
}
引用元:https://saeki-ce.xsrv.jp/C_src/suujiate01.html
Java
JavaはC言語以上に人気があり幅広い分野で用いられている言語になります。
アプリ開発を始め、大規模なシステム開発にも用いられており、さらにどんなコンピュータ上でも用いることができるので汎用性が高いとされています。
Javaの特徴
Javaの最も大きな特徴は、モノ同士の関係性を見出し、そこから組み立てていくと言ったオブジェクト指向の考え方がベースになってきます。

例えば、車を作ろうと考えた時、いきなり車を作ろうとしても漠然としすぎていて手が動きませんが、最初に車体とタイヤ、ドアを作成しておき、それを組み合わせて一台の車を作ろうと考えると効率的な開発が実現できます。
これをオブジェクト指向と呼びます。
Javaの詳しい対策記事は以下にまとめています。
Javaのサンプルコード
/* 金種の枚数を計算する */
package samples.number;
public class KinshuSample {
public static final int[] YEN_TYPES = {
10000,5000,1000,500,100,50,10,5,1
};
public static int[] getYenCount(int yen, int[] yentype) {
int[] count = new int[yentype.length];
for (int i = 0; i < yentype.length; i++) { while (yen >= yentype[i]) {
yen -= yentype[i];
count[i]++;
}
}
return count;
}
public static void main(String[] args) {
int yen = 87654;
int[] count = getYenCount(yen, YEN_TYPES);
for (int i = 0; i < YEN_TYPES.length; i++) {
System.out.println(YEN_TYPES[i] + "円\t" + count[i] + "枚");
}
}
}
引用元:http://www7a.biglobe.ne.jp/~java-master/samples/number/KinshuSample.html
Python
令和2年度から、COBOLに変わって新しくPythonが出題範囲に追加されました。
多くのプログラミングスクールでも取り扱うことが増え、最近注目されているのがこのPythonになります。
Pythonの特徴
Pythonは比較的新しい言語になっており、少ないコード量で簡単にプログラミングが書ける、コードが読みやすいと言った特徴があります。
近年話題のAIにおいてもそうですが、Web開発や教育分野と言った実に幅広い分野で用いられており、この言語さえあれば何でも作れてしまうのではないかとさえ言われています。
初心者向けで学習しやすいと言った特徴もあり、C言語で挫折した経験がある筆者でもPythonではすんなりと動かすことができた経験があります。


身の回りのアプリでも、実はPythonで動いていた、なんてことは多いかもしれませんね!
Python関係の記事はこちら!
Pythonのサンプルコード
# kmp.py(文字列検索)
import time
def create_table(pattern):
table = [0 for _ in range(len(pattern))]
j = 0
for i in range(1, len(pattern)):
if pattern[i] == pattern[j]:
j += 1
table[i] = j
else:
table[i] = j
j = 0
return table
def kmp_search(string, pattern):
table = create_table(pattern)
i = j = 0
while i < len(string) and j < len(pattern):
if string[i] == pattern[j]:
i += 1
j += 1
elif j == 0:
i += 1
else:
j = table[j]
if j == len(pattern):
return i - j
else:
return None
with open("sample_string.txt", "r") as f:
string = f.read()
pattern = "hoge"
start = time.time()
index = kmp_search(string, pattern)
if index:
print("The pattern starts with at index {}.".format(index))
else:
print("No pattern matched.")
print("elapsed {} sec.".format(time.time() - start))
引用元:https://engineeringnote.hateblo.jp/entry/python/algorithm-and-data-structures/kmp_algorithm
アセンブラ
アセンブラはC言語よりさらに機械語に近いプログラミング言語とされており、CPUに対して直接命令する形式になります。
アセンブラの特徴
アセンブラの特徴としてはCPUに対して1対1のコードで命令する言語であり、どのような動作をさせ、メモリだったり、その他の周辺機器だったりがその都度どのような状態になるか全て把握していく必要があります。
より細かく正確に理解し定義する必要があるため比較的習熟には難しい言語とされています。その一方でより根底的に理解できるので、それ以降別のプログラミングを学習しようとした際にスムーズな理解がしやすくなると言った特徴もあります。

アセンブラのサンプルコード
**
** 64ビットの減算を行う
**
** 64ビット長のデータ MR0 と MR1 の減算を行い,
** 結果を MR1 に格納する.MR0 の内容は保存される
** 実際には,32ビットの引き算を繰り返すことで,64ビットの差を得る
** プログラム
.section .text
.even
.equ X_CLR, 0x0004 /* Z フラグの場所の16進数表現 */
.equ B64_CNT, 8 /* 64ビットは8バイト */
.equ ADD_CNT, 2-1 /* ループ回数は1回 */
moveq.l #ADD_CNT, %d0 /* ループ回数の設定 */
lea MR0+B64_CNT, %a0
lea MR1+B64_CNT, %a1
move.w #X_CLR, %ccr /* Xフラグをクリア,Zフラグをセット */
ADD_LOOP:
subx.l -(%a0), -(%a1)
dbra %d0, ADD_LOOP
** 実行の終わり
.dc.w 0x4848 /* BSVC の break 相当 */
stop #0
** データ領域
.section .bss
.even
MR0: .ds.l 2 /* 64ビットは2ロングワード */
MR1: .ds.l 2 /* 64ビットは2ロングワード */
.end
引用元:https://www.kkaneko.jp/cc/as/sample/samples.html
表計算
表計算ソフトと言うと某MicroSoft社のexcelを思い浮かべる方が多いと思います。
基本情報で問われる表計算もほぼそれと変わらないので一通りエクセルに触ったことがある方なら理解はスムーズかなと思います。
表計算の特徴
基本情報技術者試験で問われる表計算に関しては、演算子の理解や相対参照、絶対参照と言った言葉が出てくるためこれらをしっかりと押さえて置かないとスムーズに問題は解けません。
しかし、問われること自体はある程度決まっておりそれらをしっかり押さえて置けば対策がしやすく暗記も通用してしまうのがこの科目になります。
筆者の周りでも特にプログラミングが苦手な方は表計算で対策して突破している方が多くいらっしゃいました。

表計算対策に関する記事は以下をご覧ください。
何を選ぶのがおすすめ?
一通り基本情報技術者試験で問われるプログラミングに関して紹介させていただきましたが、中でもどれがおすすめなの?と思う方も多いと思います。
そこで次に、筆者が基本情報技術者試験の午後でおすすめできるプログラミング言語を紹介させていただきます。
合格を狙うだけなら表計算
まず、プログラミング言語に対して苦手意識が強い方はおすすめできる言語として表計算を挙げます。
具体的な理由としては3点あります。
問われる内容がある程度決まっている
1点目は問われる内容がある程度決まっている点にあります。
表計算で聞かれるポイントとしては基本中の基本である演算子をはじめとし、関数、参照、マクロ等になります。
過去問数年分を解いてみると「あ、今回もこのパターンか」となるくらいに傾向も似ているので対策が立てやすいですね!

仕事で慣れている場合が多い
表計算はエクセルとほぼ同じ動作をするため、仕事でエクセルを触った経験がある方だとスムーズに対応できます。
特に会社でバリバリマクロを組んでいる、統計やグラフを取るのが得意!と言う方は触ってみると、基本情報の方が圧倒的にシンプルで分かりやすく優しい問題という事が分かります。
学習環境が構築しやすい
仕事上あまりエクセルを使ったことがない・・・と感じた方もご安心ください。
表計算はほぼ同じ動きをexcel上で実行できるので、エクセルさえあれば今からでも練習はいくらでもできます。
他のC言語だったりPythonだったりはコンパイラをインストールし、ライブラリも用意して・・・と初心者にとっては壁が高く学習環境を構築できずに挫折してしまう方も後を絶ちません。
一方でエクセルは万が一なくても直ぐに購入してインストールもできるので簡単に利用できます。

就職に結び付けたいならPython
基本情報技術者を取得した後に就職でアピールしたい!得た技術を仕事に活かしたい!と言う方は、少し敷居が高くなる可能性はありますが、Pythonをおすすめします。
初心者向けで習得が容易
Pythonは複数あるプログラミング言語の中では非常にシンプルな構文で学習障壁が低く、初心者向けと言われています。
人気言語なだけあり実装環境の構築からライブラリ、使用方法の解説などもネット上に大量に転がっているので無料で情報を仕入れられる点も大きいです。
非常に人気のあるプログラミング言語
先ほど、PythonはWebアプリから大型システム、AIなど多岐に渡って利用されていると書きましたが、実際どれくらいのシェアがあるのでしょうか。
引用元:http://pypl.github.io/PYPL.html
上図はgoogle上での検索結果をもとにプログラミングの人気を決定する「PYPL PopularitY of Programming Language」を参照にしたデータですが、最近では1位に輝いていますね。
就職時にも情報系だと基本情報で何の言語を選んだか聞かれることもあり、Pythonと答えられると良い印象を得られることが多いです。

基本情報のプログラミングを対策するために
これらのプログラミング問題はいくら初心者向けの言語を選んでも独学で対策するのは難しいとされています。
特に今から学習環境を構築して・・・と言うのは非常に手間がかかってしまい遠回りになってしまいます。
直ぐに結果を出すためにも、試験に特化した対策と言うものが必要であり、そのための方法についてもまとめます。
基本情報のプログラミング特化のテキストを用いる
例えばC言語やJavaと言ったプログラミング言語を学習できるテキストはたくさん存在していますが、いずれもエンジニア向けで半年~数年かけて学習していくことを前提とした分厚さになっています。
基本情報の為だけにそれだけの時間を費やせる余裕のある受験者はいないと思うので、ここはストレートに基本情報のプログラミングに特化したテキストを選びましょう。
ここでは先ほど紹介した表計算とPythonのテキストを紹介します。
こちらは関数や参照に関して図や実際の表を多用しながら紹介しています。
更に苦手意識を持つ方が多いマクロについても疑似言語の読み方から問題の解き方まで、練習問題を織り交ぜてアウトプットをできるように考慮されながら編集されています。
Pythonに関しては令和2年度から開始の為過去問はありませんが、基本情報技術者試験の対策テキストとして評判の良いわくわくスタディワールドから出版されたテキストがおすすめです。
解説付き予想問題で演習量を重ねていきましょう。

スクールを利用する
もっと無難な方法としてはスクールを利用すると言う方法もあります。
BizLearnの場合、プログラミング言語に特化した講義もあり、安心して対策できます。

プログラミングの中でも表計算に絞って受験する場合、スタディングもおすすめです。
こちらのスクールは受講料が3万円台と非常に安く、スマホ一台でどこでも動画を見たり問題を解いたりできるので、隙間時間を使って効率よく学習できます。
実際に講義内容をレビューした記事もあるので、あわせてご覧ください!
もちろんこれ以外にも、基本情報対策における午前免除や完全初学者向けの講座はいくつかあるので、気になる方は是非ご覧ください。
また、資格ではなくプログラミングスクールに通うのも一つの手です。
こちらの場合多少時間はかかりますが、根本的な理解が進みます。
結果として仕事でもつかえる実力が付くので大きな武器となることは間違いないでしょう。
プログラミングスクールに関しては、選び方を含めTECH-METHOD様が解説されているので、あわせてご覧ください!
基本情報技術者試験のプログラミング対策まとめ
本記事のまとめ!
- 合格を狙うだけなら表計算がおすすめ!
- 就職にも役立てたいならPythonがおすすめ!
- 表計算対策ならスタディング、それ以外の言語はBizLearnで解決!
今回は基本情報技術者試験のプログラミング問題に関して、それぞれの特徴と選ぶべき言語、さらには対策方法を紹介させていただきました。
どれも全くの0知識からの学習は難しいですが、しっかりとテキストやスクールで知識を補う事で決して対策は不可能ではありません。
言語は全体の20点を占めておりここでとれるかどうかが合格への分かれ道になることは間違いありません。
資格取得後のスキルとしても活きてくる部分なので、早め早めに対応して将来活かせるようにしておきましょう!


福井県産。北海道に行ったり新潟に行ったりと、雪国を旅してます。
経理4年/インフラエンジニア7年(内4年は兼務)/ライター5年(副業)
簿記2級/FP2級/応用情報技術者/情報処理安全確保支援士/中小企業診断修得者 など
ディスカッション
コメント一覧
まだ、コメントがありません