[基本情報技術者試験]午後問題・Pythonの対策法

2020年1月29日

基本情報技術者 Python

基本情報技術者試験では午後問題で毎回プログラミングの問題が出題されます。

そして令和2年からはAIブームも後押してか、相性が良く今現場でも人気なプログラミング言語であるPythonが追加されることとなりました。

カズ
カズ
でもPythonって試験で出されたことがなくて過去問が整っていないから対策が難しそう
ラク
ラク
そもそもAIってよくわかんねぇ

と言ったように学習障壁も高いかなと思います。

そこで今回は基本情報技術者試験に向けてPythonで挑みたい方向けに対策の記事を書いていこうと思います。

Pythonの特徴

Pythonの特徴としては少ない文量でコードを書くことができるといった特徴を有しており、コードが読みやすくWeb開発から教育の分野、さらには今どきはやりのAIに関しても使うことができるといった強みがあります。

歴史的には1991年から存在しており、C言語やJavaと比較しても新しい言語と言うことがわかります。

具体的に電卓を作るサンプルコードを見てみましょう。

import tkinter as tk
# ボタンの配置を定義
BUTTONS = [
  ['7', '8', '9', '/'],
  ['4', '5', '6', '*'],
  ['1', '2', '3', '-'],
  ['0', '.', '=', '+']
]

# ボタンイベントの作成関数
def make_click(ch):
    def click(e):
        print(ch)
        if ch == '=': calc(0); return
        else: disp.insert(tk.END, ch)
    return click

# 計算式を計算
def calc(e):
    label["text"] = '= ' + str(eval(disp.get()))

# ウィンドウを作成
win = tk.Tk()
win.title("自作の電卓")
win.geometry("400x400")
# ディスプレイ部分
disp = tk.Entry(win, font=('', 20), justify="center")
disp.pack(fill='x')
disp.bind('', calc)
label = tk.Label(win, font=('', 20), anchor="center")
label.pack(fill='x')
# 電卓のボタンを一括作成
fr = tk.Frame(win)
fr.pack()
for y, cols in enumerate(BUTTONS):
    for x, n in enumerate(cols):
        btn = tk.Button(fr, text=n,
            font=('', 20), width=6, height=3)
        btn.grid(row=y+1, column=x+1)
        btn.bind('<1>', make_click(n))

# ウィンドウを動かす
win.mainloop()

参照:https://news.mynavi.jp/article/zeropython-47/

カズ
カズ
確かに他の言語と比較しても短めだね!
スポンサーリンク

Pythonにおける問題の解き方

Pythonは初心者でも取っかかりやすく、取得後も実務に行かせやすいためおすすめの言語と言えます。

ここでは具体的な解き方や対策方法も見ていきましょう。

最初に問題文をさっと眺める

まずは問題の全体を一巡して現在の知識で解釈できるかどうかを判断しましょう。

基本情報技術者試験の午後は150分と言った限られた時間の中でこのプログラミング問題(ソフトウェア開発)及びアルゴリズムに加えセキュリティと選択問題2問を解く必要があり昌宇。

そのため時間配分も重要で、短時間で解けるのか、それとも高得点を取れそうではあるものの時間がかかるかどうかなどの判断を迅速に行う必要があります。

カズ
カズ
大まかな処理の流れがつかめるかどうかをしっかり判断しよう!

コードを深く読んで処理の流れを追う

問題文をざっと読み大まかな流れをつかみ、具体的な処理を理解したら実際に与えられたコードを読んでいきましょう。

数値が変わる場合、その処理ごとにどのような値が入っているかをメモしていくことも良い方法ですね。

特に関数内部でどのような処理が行われているか、その関数の役割は何か、ライブラリでどのような処理が与えられているかなどは確認すべき重要ポイントになります。

穴埋め問題ではしっかりと選択肢を絞り込むことが大事

プログラミング問題では毎回どの言語でも穴埋め問題が出題されており、Pythonでも例外なく出題されると断言できます。

キュー
キュー
回によっては全問穴埋め問題の解きもあるで

そんな時、どのような数式や値が入るか判断できる力が大事です。特に、「ここには数値しか入らないだろう」、「ここは条件式が入るな」と言った判断がとっさにできるくらいまでは鍛えておきたいですね!

カズ
カズ
それができるだけで1/3くらいまで確率を上げられるよ

状況によってはあまり時間が残っておらず、運に頼らないといけない場合もありますが、このように絞り込みができれば少しでも拾える確率は上がります。

基本情報技術者試験で問われるPythonの特徴

次に、具体的に基本情報技術者試験でどのような内容を問われるのか見ていきましょう!

ラク
ラク
でも、過去問がないから分析のしようが無いんじゃないか?

過去問はまだ充実していませんが、シラバスを読んでいただければある程度問われることはわかります。

(4) Python の知識と技術
小目標

  • Python のプログラムの作成方法の基本を修得し,適用する。
  • オブジェクトの生成方法,操作方法を修得し,適用する。
  • 問題解決のために適した代表的な標準ライブラリ又は外部ライブラリを用いて,効率良くプログラミングを行う方法を修得し,適用する。
  • 数値計算,テキスト処理,データ処理などを行うプログラムの作成方法を修得し,適用する。
  • インタプリタであることの長所と短所を理解して利用する方法を修得し,適用する。

また、テーマとしては今までのJavaやC言語同様、文字列検索だったり演算処理だったり、ゲーム等が出題されるのではないかと言った予想がされています。

さらに踏み込んでみてみましょう。

詳しく紹介しているサイトへも合わせてリンクを張っておきます。

演算子

最初に覚えておくべき内容として演算子があります。

例えばとある値を足したり引いたり、比較したり代入したりといった物です。

特にPythonではインクリメントやデクリメントと言ったC言語でおなじみの演算子が使えない点を押さえておきましょう。

カズ
カズ
基礎中の基礎だから早い段階で覚えちゃおう♪

リストの処理

リスト(配列)を使うことで、複数の値を一つの箱で管理することができます。

リスト内の値の削除や追加、移動なども問われる可能性は十分にあるので把握しておきましょう。

リスト自体の考え方は多くの言語に共通しているので汎用性も高いです。

条件分岐

特定の値がx以上ならとある処理をする、以下なら何も処理をしないといったように条件分岐させる処理をif文と呼びます。

Pythonでは

  • if文
  • if else文
  • if elif文

と呼ばれる3パターンが良く用いられるのでこちらも覚えておきましょう。

ループ処理

ループ処理ではforループと呼ばれる指定回数ループする処理は絶対に押さえておきましょう。

ラク
ラク
これも他の言語でも良く使うから知ってる人は多い気がするぜ!

加えてPythonの場合、range・xrangeと呼ばれる独特の処理もあります。こちらも合わせて覚えてしまいましょう。

関数

関数と聞くと、y=ax+bのような式をはじめとして数学の関数を思い浮かべる方が多いかなと思います。

Pythonでの関数も似たところがありますが、大まかにいうとある特定の処理を一つのまとまりとして定義したものとなっています。

例えばある数字を受け取ったらそれを処理して返すといった物も関数ですし、任意のタイミングで特定の文字を出すといった物も関数です。

関数についても前提知識として知っておきたいですね!

ラク
ラク
引数や戻り値もしっかりと押さえておこう!

クラスとオブジェクト

PythonもJava同様、オブジェクト指向の言語になります。

カズ
カズ
オブジェクト指向?

オブジェクト指向は非常に便利な考え方で、既存のモノに対して少しだけ変更して新しい定義(クラス)を作ることが可能となり開発速度が速くなります。

継承やオーバーライドと言った言葉も合わせて覚えておきましょう

ライブラリ

Pythonではライブラリと呼ばれる便利な機能も備わっています。

これらを利用することで標準で使える関数も増え、より柔軟な処理を実現可能とします。

カズ
カズ
ん~~・・・wordpressでいうプラグインみたいな?
キュー
キュー
ざっくりとしすぎやけど初心者のうちはそういった理解で良さそうやな

ただ、ライブラリに関してはシラバスを見る限りでは仕様書が掲載されると書かれているため、特に覚える必要はありません

ラク
ラク
まぁたぶん種類も膨大だろうし覚えろとか言われても難しいだろうけど

基本情報技術者試験のPython問題を解けるようになるために

上記でPythonに関する問題の対策しておくべきポイントや本番での解き方を紹介しました。

しかし特に押さえておくべきポイントは断片化しておりもう少し体系的にまとめて学びたいところです。

そこで、実際の試験に向けておすすめのテキストやスクールを少し紹介させて頂こうと思います。

基本情報特化のテキスト

巷にはPythonのテキストはあふれかえっておりどれを手にとって良いかわかりません、しかも丁寧にまとめてあるものの

カズ
カズ
分厚すぎて読了するのが難しそう( ;∀;)
ラク
ラク
試験のためにこれだけ読まないといけないのか!?

と言った具合に分厚くボリューミーな物ばかりです。

基本情報技術者試験に特化したPythonのテキストを用意する必要があるのでそちらを紹介させていただきます。

徹底攻略 基本情報技術者の午後対策 Python編

created by Rinker
¥1 (2024/03/28 13:50:14時点 Amazon調べ-詳細)

今回紹介するのはわくわくスタディワールドから出版されている徹底攻略 基本情報技術者の午後対策 Python編になります。

こちらの出版社は情報セキュリティマネジメント試験が実施された時も先立ってテキストを発行しており、1発目で傾向がつかめない試験だったにもかかわらず過去の他の試験の傾向を分析し対応できていたという点からも評価された出版社になります。

出題傾向がわからないからこそ、予想問題の価値も高く、しっかりと対策しておきたいですね!

ラク
ラク
過去問が充実していないうちは予想問題が重宝するぜ!

Pythonを学べるスクール

次に、Pythonを学べるスクールも利用していきましょう。

資格の大原

本気になったら大原

次に紹介するのは資格の大原と呼ばれる資格専門のスクールになります。

カズ
カズ
解答速報とかも毎回出してるし、大手だから知ってる人も多そう!

こちらのスクールではPythonをはじめとして各プログラミングの講座を開いており単独で対応することが可能です。

午前午後の一貫した講義を受けると10万円ちかくかかるスクールも多い中、このようにピンポイントで受講できるのは嬉しいですね。

また、それこそ値段はかかるものの午前免除の受けられるコースもあるので一度資料請求をして内容を確認しておくこともおすすめです。

ラク
ラク
時々割引クーポンがもらえたりもするぜ!

さらに掘り下げた記事もあるので、興味がある方は合わせてご覧ください。

侍エンジニア塾

こちらの侍エンジニア塾は資格に特化したスクールではありませんが、将来資格取得後にPythonを武器に就職したい、昇給したいという場合は考慮しても良いスクールだと感じています。

内容としてはマンツーマンでレッスンを行い、実際にモノを作成しながらプログラミングを学んでいくといった形式で就職の手引きなども行っているので非常に心強いです。

資格取得→エージェント登録→転職成功よりもスムーズに流れるので、最終目的が資格取得ではなく、その先の転職などである場合は是非利用してみてください

実際にこのスクールは筆者も利用した経験があり、その時の感想もまとめているので、ご覧いただければと思います。

Pythonを学べるサイト

Pythonは機械学習と相性が良く、何を押さえて置けばよいかあらかじめ知っておくことで学習がスムーズになります。

以下のサイト・統計ラボ様では初心者向けにPythonに関する情報を取り扱っているので、あわせてご覧いただければと思います!

カズ
カズ
手探りで学ぶより短時間で済むよ!

基本情報技術者試験のPython対策方法まとめ

今回は、基本情報技術者試験で問われるPythonに関して特徴や対策方法を紹介させていただきました。

近年人気が増えており需要が高まったことから試験にも取り入れられるようになったといった背景があり、取得後は大きなメリットになること間違いないので、是非マスターしてみてください。

他の言語に関しても特徴や対策方法を見てみたいという場合、以下の記事もご覧になってみてください。

スポンサーリンク