C言語の資格として、最も広く知られているのがサーティファイの提供する「プログラミング能力認定試験」です。
1~3級があり、C言語の基礎知識から実際の仕事に使えるレベルのコーディングまでの能力を測定することができます。
この記事では「プログラミング能力認定試験2級」に合格するための勉強法やおすすめの参考文献をご紹介したいと思います。
※筆者は2022年1月度に開催された「プログラミング能力認定試験2級」で合格しています。
筆者の経験・スキルレベル・学習期間
まず前提となる、僕の経歴・スキルレベル・学習期間について記載しておきます。
経歴
・高校、大学で情報系の勉強はしていない
・職業訓練でWeb制作(3ヶ月)
・組み込み系企業でC言語を使用(約4年半)
スキルレベル
・設計経験なし
・簡単なコーディング、テスト経験あり
・ポインタや構造体の理解は曖昧
学習期間
約1ヶ月半
はじめて上記試験の過去問を受けたときには、合格ラインである60%に届かないほどの知識レベルでした。
学習のポイントについて
過去問をひたすら解こう!
僕が最も効率のいいと考える勉強法は、「とにかく過去問を解く」ことです。
サーティファイの問題集はこちら。
過去問を解いていると気がつくのですが、似たような設問が例年繰り返し出題されていることがわかります。
特に
- C言語の基本仕様(演算子の優先順位など)
- ポインタと構造体の操作方法
- ビット演算子
の項目は、何度も似たような形式で出題されています。
効率的に出題範囲を学習するためには、まずは過去問を解くことが必要不可欠だと思います。
わからないポイントは「参考文献」と「学習サイト」で勉強しよう
過去問の解答を見て理解できるのであれば問題ありませんが、
- C言語の基礎知識がない
- コーディング経験がない
といった場合には、参考文献や学習サイトで体系的に勉強すると良いでしょう。
以下に僕自身が使用したものをまとめておきます。
おすすめの本
おすすめ⓵「プログラミングC言語」
この本は、C言語の創始者であるカーニハンとリッチー(K&R)が書いたものになります。
C言語について体系的にまとめられていますが、初歩的な知識については省かれている印象です。
僕自身は企業研修でこちらの本を使っていましたが、出題される設問に答えられないこともありました。
ただしC言語の創始者が記載した本のため、Cの本質的な要素が詰まっています。
おすすめ⓶「苦しんで覚えるC言語」
題名を見ると、「苦しんで覚えるなんて大変そう。。」と感じてしまうかもしれませんが、非常によくまとまった書籍となっています。
最近のC言語本を見ると
- <stdio.h>はおまじないです
- int mainはとにかく書いておく
といった、「なぜその記述が必要なのか?」を省いた説明が目につきます。
しかし本来プログラミングとは、
- 目的を明確にする
- 何を使えばいいかを吟味する
- 適切なものを使用して、一つのプログラムを完成させる
というプロセスを経て、プログラムを完成させるまでの道筋を立てることを指します。
その過程で「なぜこの記述が必要なのかわからない」ということは、大工さんが家を建てるために、「この材料は必要らしいから使っておく」と言っているのと同じなのです。
プログラミングの勉強で大切なことは、
- なぜそのコードが必要なのか
- 記述したコードはどのように動くのか
を「学んで理解する」ことです。
その点、本書は初心者にも優しい言い回しで説明されているため、基礎固めには最適です。
おすすめのサイト
このサイトの運営目的は、「プログラミング未経験者がエンジニアになるための入門サイト」になります。
なぜ、オススメなのかというと
- 対話形式のため理解しやすい
- 図があるため理解しやすい
- 著者がエンジニア出身であり、信憑性が高い
- 一つ一つの意味を、明確に説明している
- 練習問題があるため、理解度を測定できる
からです。
また,「Python」、「C++」、「組み込み系のものづくり」といったテーマの記事もあり、これらと併用することで
- プログラミングとは何か
- 他言語との共通点、違い
- 機械はどのように動いているのか
を理解しやすくなります。
記事はどんどん追加されていますので、将来的なさらなる学習にも強い味方となってくれるでしょう。
こちらは上で説明した「苦しんで覚えるC言語」のWeb版です。
書籍の大まかな内容がWebで無料公開されています。
本の購入に悩まれた方は、まずはこちらのサイトで学習してみると良いと思います。
試験問題の詳細
補足情報として、2022年1月度の試験問題について記載しておきます。
1.正誤問題:C言語の特徴
2.文法問題:sizeof演算子および文字列関数
3.トレース問題:ビット演算子
4.文法問題:main関数
5.文法問題:ファイルアクセス
6.トレース問題:ポインタによる配列の参照
7.プログラム問題:与えられた文字列を基数変換した文字列として返す
8.プログラム問題:レコード構成の妥当性チェックとデータレコード数の情報を返却する
最後に
この記事では、「プログラミング能力認定試験2級」に合格するための
- 勉強法
- オススメの参考文献
- オススメサイト
をご紹介してきました。
C言語はプログラミング言語の中では、最も難しい言語だとも言われます。
その大きな理由は、コンピュータの根幹となる「メモリ操作」がプログラマーの裁量で行えるからです。
ただ実際には、
- JAVA
- Python
- Javascript
といったどのようなプログラミング言語も、最終的には0と1の羅列に変換された上でメモリに格納されています。
つまり、コンピュータの動作原理はコンピュータが生まれた当初から変わっていないのです。
C言語を学ぶことで、コンピュータの原理を理解できるようになります。
その結果、他の言語の習得やトラブル対処をより簡単に行えるようになるでしょう。時代の流れにもついていきやすくなります。
世の中の潮流に流されることなく、基本原理を大切にして地盤を固めていくこと。
これは、すべてのエンジニアに必要なスキルなのだと思います。
ぜひ、本試験を通してC言語の基礎を身につけてみてはいかがでしょうか。
http://runaway-ses.site/c-programming-recommendation