このブログは資格勉強をテーマにお役立ち情報を紹介しています。
プログラミングが難しすぎる。
疑似言語とは?どんな勉強を行えばよい?
このような疑問にお答えすべく、プログラミングの勉強法についてまとめました。
科目Bはアルゴリズムとプログラミングだけで配点の8割を占めますので、しっかりと対策を行いましょう。
- この記事で分かること
-
- 疑似言語について
- 初心者に難しい理由
- プログラミングの出題範囲
- 初心者のおすすめの勉強方法
プログラミングは疑似言語で出題
基本情報技術者試験のプログラミングは疑似言語(世の中に存在しない仮想言語)で出題されます。疑似言語の構文やルールをしっかりと覚えておきましょう。
2023年3月までは、個別プログラム言語(C、Java、Python、アセンブラ言語、表計算ソフト)から1つを選択して問題を解く形式でした。しかし、2023年4月以降は、普遍的・本質的なプログラミング的思考力を問う擬似言語による出題に統一されました。
疑似言語とは
疑似言語ってなに?
疑似言語とは、プログラミング言語と似たような構文を持ち、プログラムの記述や解読を容易にするために作られた言語のことです。
2023年5月時点でIPA公式サイト(情報処理推進機構)で紹介されている疑似言語の記述ルールは下記となります↓
※IPA公式サイト(基本情報技術者試験の試験で使用される言語から抜粋 2023年5月)
基本情報技術者試験における疑似言語は「PythonやC言語やVBA」の表記に似ており、まさに疑似の共通言語と言えます。
※疑似言語については、IPA公式サイトにある「試験で使用する情報技術に関する用語・プログラム言語など」で紹介されていますので、最新情報を確認しておきましょう。
》疑似言語について(IPA公式サイトの試験で使用される言語)
プログラミングが初心者にとって難しい理由
- 抽象的な問題文
- 複雑で細かい手順
- 知識と経験の不足
抽象的な問題文
プログラミングの問題文は抽象的で、実際のプログラムの記述方法についての具体的な指示がない場合があります。このため、プログラミングに慣れていない人は問題をどのように解くのか迷ってしまい、難しく感じてしまいます。
複雑で細かい手順
プログラミングには、インプットと途中経過とアウトプットがあり、初期値やifループなどの条件により複雑なルートをたどります。それぞれのルートを正確に把握して計算しないといけないので、初心者にとっては、これらを理解することが困難であり難しく感じられます。
知識と経験の不足
初心者はプログラミング言語の文法や構文、関数の使い方などに関する知識が不足している場合が多く、問題を理解し、解答することが困難になります。またプログラミング経験者であっても、疑似言語の記述方法を把握していないと、解けない問題もあるので注意が必要です。
ifとかelseとかwhileとか…
ややこしい
プログラミングの問題の出題範囲について
- プログラミング作法とコーディング
- プログラミング構造
- データ型と変数
- 演算
- 制御構造
- 手続、関数
- オブジェクト指向
- Webプログラミング
プログラミングの問題は、上記8つの基礎的なものから、いくつか組み合わせて問題が出題されます。
1. プログラミング作法とコーディング
プログラミング作法とコーディングのルールを知っているかの問題です。よくあるのは、プログラムにバグがあり、その修正方法を問われる問題です。
用語例:字下げ(インデンテーション)、ネストの深さ、命名規則、使用禁止命令、プログラムの機能適合性・性能効率性・使用性・保守性の向上
- 字下げとは、プログラミングを見やすく改行したりすることです。字下げによって、ブロックの開始と終了を明確に区別できるため、コードの誤りを防ぐことができます。
- ネスト深さとは、プログラミングの深さのことです。例えばWhile文のなかにさらにWhile文をいれると、ネストが深くなると表現します。ネストが深くなると本人以外が分かりづらくなるので嫌われます。したがって、ネストの深さを適切に行い、必要最小限のネストにとどめることが望ましいです。
- 命名規則とは、変数や関数、クラスなどの名前をつける際に使用されるルールのことです。命名規則を守ることで、プログラムの可読性が向上し、コードの理解やメンテナンスが容易になります。命名規則には、例えば、キャメルケースやスネークケースなどがあります。
- 使用禁止命令とは、セキュリティ上の問題や、プログラムの品質を損なう恐れのある命令のことです。例えば、グローバル変数やgoto文などが挙げられます。使用禁止命令を避けることで、プログラムの安全性や品質を向上させることができます。
- プログラムの機能適合性・性能効率性・使用性・保守性の向上とは、プログラムを安全かつ安定に動かすために必要な技術のことをいいます。
2. プログラミング構造
プログラミングの信頼性、保守性の観点から基本的なプログラム構造を理解する問題です。
用語例:モジュール分割、独立性、メインルーチン、サブルーチン
プログラミングにおいて、大規模なプログラムを作成する場合には、プログラムを複数のモジュールに分割することが一般的です。この際に、各モジュールはそれぞれ独立しており、他のモジュールとの結合部分は明確に定義されます。各モジュールは、メインルーチンとサブルーチンに分かれます。
メインルーチンは、プログラム全体を制御するための部分であり、プログラムの開始から終了までを一連の手順として実行します。一方、サブルーチンは、メインルーチンから呼び出される独立した部品であり、特定の処理を実行するために用いられます。
モジュール分割により、プログラムの可読性が向上し、保守性や再利用性も高まります。また、各モジュールが独立しているため、単体テストが容易に行えます。
3. データ型と変数
プログラミング言語で使用される代表的なデータ型と変数の概念を理解しているかの問題です。プログラミングは数値や文字やリストごとに定義の仕方が違います。このような、細かいルールを理解しておく必要があります。
用語例:整数型、実数型、論理型、文字型、文字列型、抽象データ型、構造型、代入
- 整数型 (Integer):整数の値を扱うための型。通常、コンピュータのハードウェアに直接対応しているため、高速に処理できる。例えば、int型やlong型がある。
- 実数型 (Floating point):小数点以下の値を持つ数値を扱うための型。浮動小数点数とも呼ばれる。計算機によっては精度が異なるため、注意が必要。例えば、float型やdouble型がある。
- 論理型 (Boolean):真偽値を表すための型。真 (true) もしくは偽 (false) のどちらかの値を持つ。条件分岐やループの制御などに使用される。例えば、bool型がある。
- 文字型 (Character):1つの文字を表すための型。Unicode文字を表現するために、通常は2バイト (16ビット) の符号なし整数型で実装される。例えば、char型がある。
- 文字列型 (String):文字の連続した列を表すための型。一部のプログラミング言語では、文字列を文字型の配列として表現する。例えば、string型がある。
- 抽象データ型 (Abstract data type):複数の値とそれらに対する操作をまとめたものを表すための型。例えば、リストやセット、マップなどがある。
- 構造型 (Structure):複数のデータ型を組み合わせて新しいデータ型を作成するための型。例えば、構造体 (struct) やクラス (class) がある。
- 代入 (Assignment):変数に値を格納するための演算。代入演算子 (=) を使用して、左辺に変数名、右辺に値を指定することで、変数に値を割り当てる。例えば、x = 1; とすることで、xという変数に1を代入できる。
4. 演算
プログラミングにおける代表的な演算が問われる問題です。基本的には四則(足し算/引き算/掛け算/割り算)に加えて、論理計算(andやnotやorなど)やビット計算など、初心者が慣れ親しんでいないものも出題されます。
用語例:算術演算、比較演算、論理演算、ビット演算
- 算術演算は、基本的な四則演算(足し算、引き算、掛け算、割り算)や、剰余(あまり)を求める演算を行うことができます。プログラム内で変数や定数に数値を代入し、それらを用いて計算することができます。
- 比較演算は、複数の値を比較するために使用されます。比較演算子には、等しいかどうかを判定する「==」、等しくないかどうかを判定する「≠」、大きいかどうかを判定する「>」や「>=」、小さいかどうかを判定する「<」や「<=」などがあります。比較演算は、条件分岐やループの条件式などで使用されます。
- 論理演算は、複数の条件式を組み合わせるために使用されます。論理演算子には、「AND(かつ)」、 「OR(または)」、 「NOT(否定)」があります。論理演算は、条件分岐やループの条件式などで使用されます。
- ビット演算は、2進数で表された数値の各ビットに対して行う演算です。主なビット演算には、ビット単位の論理積、ビット単位の論理和、ビット単位の排他的論理和、ビット単位の反転、左シフト演算、右シフト演算があります。ビット演算は、通信プロトコルや暗号化などの分野で使用されます。
5. 制御構造
プログラミングの基本的な制御構造を理解しているか問われる問題です。選択処理(if/elseなど)や繰り返し処理(whileやforなど)の問題がおおいです。
用語例:選択処理、繰り返し処理
選択処理とは、プログラムの実行中にある条件が満たされた場合に、処理を分岐させるための制御文のことです。選択処理には、if文があり、0より大きいときは「正」、0以下のときは「負」と出力するといった選択処理ができます。
繰り返し処理とは、ある処理を繰り返し実行するための制御文のことです。具体的には、for文、while文などがあります。例えば、あるリスト内の全ての要素を順番に出力する処理があった場合、繰り返し処理を用いてリスト内の要素を一つずつ出力することができます。繰り返し処理は、同じ処理を複数回実行する必要がある場合や、データの集計や処理を行う場合に有用です。
6. 手続、関数
プログラミングにおける手続や関数を理解しているか問われる問題です。同じ処理を何度も繰り返す必要がある場合や、複数の場所で同じ処理が必要な場合に手続や関数が使われます。手続きを定義することで、同じ処理を複数の場所でコピー&ペーストする必要がなくなり、プログラムの保守性や可読性が向上します。
用語例:引数、戻り値、局所変数
- 引数とは、メソッドに渡される値のことです。言い方を変えると、数値などを代入する値のことです。
(メソッドとはプログラミングをどのように動かすかの処理のことをいいます) - 戻り値とは、メソッドが実行を終了した際に返される値のことです。言い方を変えると、計算後の答えの値のことです。プログラミングでは、戻り値を使って、再計算したり代入したりするので、戻り値を定義しておくことは大事です。
- 局所変数とは、メソッド内で定義され、そのメソッド内でのみ有効な変数のことです。言い方を変えると、プログラミングの一部でのみ、有効となる変数のことです。局所変数は、メソッド内で定義され、そのメソッド内でのみ使用することができます。局所変数は、メソッド内で生成され、メソッドの実行が終了すると自動的に破棄されます。局所変数は、メソッド内で宣言されるため、その変数には同じ名前の変数が他のメソッドやクラス内で定義されていても影響を受けません。
7. オブジェクト指向
クラスやメソッドを使用したオブジェクト指向の考え方が問われる問題です。専門用語が多くややこしいので例で説明します。
■例「個人データのプログラム」
・オブジェクト:(人間そのもの)
・クラス:(人間の設計図)
・メンバ変数:(個人情報など)
・メソッド:(どう動くか)
・属性:(身長、体重、性格、行動)
例で言うと、オブジェクト(人間そのもの)はクラス(人間の設計図)をもとに作られており、クラスにはメンバ変数(個人情報など)とメソッド(どう動くか)が紐づいており、そのメンバ変数やメソッドのなかには属性(身長、体重、性格、行動)でさらに細かく定義されています。
これにより、人間には、Aさん(180cm、75kg、のんびり、走る)、Bさん(160cm、60kg、気が強い、歩く)といった、オブジェクトに定めたフォーマット(属性)で個人を識別することができます。
この考え方をオブジェクト指向と呼び、オブジェクト指向をうまく活用すると、プログラムの構造を分かりやすく、保守性や再利用性を高めることができます。
用語例:コンストラクタ、メンバ変数、オーバーライド、オーバーロード
- コンストラクタは、クラスなどを初期化するプログラムのことをいいます。オブジェクトを生成するときに呼び出される特殊なメソッドです。一般的に、コンストラクタはクラス名と同じ名前で定義され、戻り値を持ちません。
- メンバ変数は、クラスの中で定義された変数で、クラスのインスタンスが持つデータです。メンバ変数は、クラス内のどのメソッドからでもアクセスできます。また、メンバ変数には初期値を設定することができます。
- オーバーライドとは、サブクラスでメソッドを再定義することをいいます。
- オーバーロードとは、同じメソッド名を持ち、引数の数や型が異なる複数のメソッドを定義することです。オーバーロードをすることで、引数の数や型が異なる複数のメソッドを同じ名前で定義することができます。オーバーロードするためには、引数の数や型が異なる複数のメソッドを定義する必要があります。オーバーロードは、プログラムの可読性を向上させるために使用されます。
8. Webプログラミング
Webプログラミングについて問われる問題です。
Web開発は、Web上に表示されるリッチクライアント(JavaScriptやHTML/CCS)と、Web上に表示されないサーバーサイドプログラミング(Python、java、PHP、Ruby)に分けられます。
AmazonのWebサイトを例にすると、商品購入のWeb画面がリッチクライアント、発注してから発送までが自動で行われるシステムがサーバーサイドプログラミングとなります。
用語例:サーバーサイドプログラミング、リッチクライアント、Ajax、Apache
- サーバーサイドプログラミングとは、Webアプリケーションなどのサーバー側で動作するプログラムの開発を指します。サーバーサイドでは、データベース操作やセッション管理、認証処理などを行い、クライアントからのリクエストに対して適切なレスポンスを返します。代表的なサーバーサイド言語には、PHP、Python、Ruby、Javaなどがあります。
- リッチクライアントとは、Webブラウザ上で動作するクライアント側のアプリケーションのことを指します。リッチクライアントでは、JavaScriptなどのクライアントサイド言語を使用して、ユーザーと直接対話するようなインタラクティブなUIを実現することができます。代表的なリッチクライアントのフレームワークには、React、Angular、Vue.jsなどがあります。
- Ajaxは、Asynchronous JavaScript and XMLの略称で、非同期通信によってWebページを更新する技術のことを指します。Ajaxを使用することで、ページ全体の再読み込みを行わずに、必要な部分だけを更新することができます。これにより、ページのレスポンス時間を短縮し、ユーザーにスムーズな操作体験を提供することができます。
- Apacheは、世界で最も普及しているWebサーバーソフトウェアの一つで、Apacheソフトウェア財団によって開発・配布されています。Apacheは、サーバー側でHTTPリクエストを受け取り、レスポンスを返す役割を担います。Apacheには、多くの拡張モジュールが用意されており、様々な機能を追加することができます。また、Apacheはオープンソースソフトウェアであり、誰でも自由に使用・改変・配布することができます。
※プログラミングの出題範囲については、IPA公式サイトの最新シラバスにて確認することができます。最新状況は確認しておきましょう。
》最新シラバス(IPA公式サイト)
初心者におすすめの勉強法
基本情報技術者試験のプログラミングとアルゴリズムは、同じ勉強方法で行うことができます。
- 基礎ルールを覚える
- 自分で簡単なプログラミングを作る
- 過去問を解く
1. 基礎ルールを覚える
プログラミングの勉強は、まず疑似言語の基礎ルールを覚えるところからはじめましょう。
基礎ルールとはWhileループやif/elif/elseなどのことです。
プログラミングはこのような基礎ルールを複雑に組み合わせています。つまり、基礎をしっかり覚えておけば、それを紐解いていけば問題を解くことができます。
基礎ルールの勉強は参考書がおすすめです。
その理由は基本情報技術者試験のプログラミングに必要な基礎知識を網羅的に学習できるからです。もし勉強に抜け漏れがあると、プログラミングは過去問と同じ問題は出ないので、点数が大幅に下がるリスクが生じてしまいます。参考書で網羅的に基礎から勉強することが合格への近道となります。
・基礎からきっちり学べる
・最新シラバス対応(疑似言語)
・最新試験の疑似言語に対応している
・易しい表現で書かれている
・レビューや口コミ評価も高い
もし参考書よりも動画&テキストで学習したい方は「資格の大原」がおすすめです。科目Bに特化した講座が比較的安い値段で購入できます。
資格の大原は、手厚いサポートと、通学orWeb講義が選べるのと、科目Aの免除制度があることが良いです。
- 通学コース(科目A免除2回):80,800円
- Webコース(科目A免除2回):62,000円
- 科目Bのみ:16,700円
コースによりますが、テキスト、演習ドリル、まとめノート、過去問集と、かなり教材が充実しています。困ったときは教師に質問でき、手厚い保証が心強いです。
科目A試験免除制度は、修了試験を2回チャレンジできます。修了試験に合格すると、試験本番で科目Aを受験しなくてよくなるため、科目Bに集中して学習できるメリットとなります。
また、科目Bだけのコースもあり、値段を抑えることもできます。
無料で資料請求ができますので、気になった方は資料請求から始めましょう。
》資格の大原(資料請求)
資格の大原は、しっかりとしたサポートを受けたいひとにおすすめです。科目A免除試験も2回受けられるので安心です。
2. 自分で簡単なプログラミングを作る
実際に自分で簡単なプログラミングをすると、理解度がかなり高まります。
基本情報技術者試験を受験するということは、将来はITエンジニアとして活躍したいと考えていると思います。試験勉強から少し外れてしまいますが、早めにプログラミングを経験しておくことは今後にも役立ちます。
プログラミングはPythonが構文が分かりやすいのでおすすめです。
Pythonの勉強はスクールに通うのが一番ですが、もし独学する場合はUdemyがよいです。
Udemy動画で、Pythonのインストールや初期設定などの環境設定、基礎構文、応用例まで、すべてを学習することができます。さらに、現役エンジニアの方が講師なので、現場で通用する構文についても解説してくれるのでとても役立ちます。
Pythonは人気のあるプログラミング言語です。資格勉強だけでなく就職後も役立ちます。
Pythonの基礎を学んだら、実際に基本情報技術者試験のプログラミングの問題に似たものを自分でプログラミングして動作確認してみましょう。
3. 過去問を解く
過去問道場サイトで、プログラミングの過去問をできるだけ多く解きましょう。
》過去問道場サイト
プログラミングの問題は、出題方法は無限にあるので、できるだけ多くの問題にふれて解き方を理解しておくことが重要です。
しかし、2023年4月から試験形式が大きく変わったため、まだ過去問は少ないです。過去問道場サイトでは、新試験形式のサンプル問題を解説付きで解くことができるので、必ず解いておきましょう。
プログラミングはすぐには上達しないです。コツコツと積み重ねましょう。
プログラミングを最速マスターしてITエンジニアとして活躍しよう
基本情報技術者試験に合格したら、基礎的なIT知識を所有している証明となります。
IT初心者や未経験者の方はプログラミングも並行して本格的に学習していきましょう。
特に、就職支援、フリーランス支援(副業)が確約されるという大きいメリットのある「TechAcademy」がおすすめです。
就職まで約束してくれるので、安心して新しい人生を切り開けます。
なぜ、独学でなく、プログラミングスクールがおすすめなのかについても下記の記事にまとめていますのでご覧ください。
》プログラミングを最短でマスターして稼ぐ方法
以上となります。少しでも資格勉強の助けになれば幸いです。
ここまで読んで頂きありがとうございました。
》基本情報技術者試験の合格に向けた完全マップ
コメント