改訂3版 基本情報技術者試験 C言語の切り札 (情報処理技術者試験)




はじめに

「C言語の文法はわかるけど,試験問題が解けない!」
「学校でC言語を習ったけど,難しいから他の言語にしようかなぁ?」
「プログラムは組めるけど,人の書いたプログラムはちょっと…」
「プログラミングの問題は,どうやって勉強したらよいかわからない!」

僕のメールボックスには,このようなメールがよく届きます。基本情報技術者試験の午後の問題では,擬似言語を用いたアルゴリズムの問題と,ソフトウェア開発に関するプログラミングの問題を解かなくてはいけません。

上のような意見が多い理由は「言語問題の演習量が足りないから」だと,僕は思っています。基本情報技術者向けの参考書や問題集は数多く発売されていますが,午後の問題を扱っている本でも,言語問題を集中的に扱った本はあまり見かけません。

そこで,この本では「言語問題を集中的に解いてもらおう!」と思い,基本情報技術者試験で実際に出題されたC言語の問題を集めました。

さらに,1から文法を勉強したい人向けに「文法編」を,また,もう1つの言語問題である「擬似言語編」も付け加えました。「文法編」は基本情報技術者試験で出題される文法事項だけを取り上げた完全試験対策の内容です。しかも,プログラムを組まなくても処理の流れを理解できるように,噛み砕いて説明しています。「擬似言語編」ではC言語が理解できれば,特別な勉強をしなくても擬似言語で点数が取れることを確認してもらうために載せました。

「C言語の問題は難しい」という声はよく聞きますが,C言語をある程度使ったことがある人(学校の授業等で習ったことがある人,もしくは本書の文法編で基本的な内容を理解した人)であれば,問題をある程度こなせば,確実に点数が取れる程度の難易度です。確かに,ポインタや構造体などの文法事項で難しい内容もありますが,試験の問題では文法については細かく聞かれません。試験問題で問われるのは,アルゴリズムです。

基本情報技術者試験のプログラム問題は,言語によってルール(文法事項)は異なります

が,問題のプログラムからアルゴリズムがしっかり読み取ることができれば,言語の差はそれほどないレベルです。試験に合格するために必要なのは,アルゴリズムを読み取る力(理解する力)なのです。この本は,その力をつけるための本になっています。ぜひ,納得行くまでプログラムをトレースして,読み取る実力を付けてください。
なお,本書は2010年2月に発売された「改訂新版 基本情報技術者試験 C言語の切り札」の改訂版です。主に以下の内容を書き直しています。

・文法編
最近の問題傾向に合わせて解説を追加。

・問題編
過去問の総入れ替えを行い,最近の問題傾向に近い問題のみを掲載。

この本を手に取っていただいたみなさんが1人でも多く試験に合格することを願っています。

2016年12月 宮坂俊成

宮坂 俊成 (著)
出版社 ‏ : ‎ 技術評論社; 改訂3版 (2017/2/9)、出典:出版社HP

Contents

Part1 文法編
Lesson01 C言語の基本
1-1 C言語とは?
1-2 C言語の基本的な書式
1-3 画面に文字を表示する方法
Lesson02 変数と演算
2-1 変数とは?
2-2 変数の宣言方法
2-3 変数を使った簡単な計算方法
2-4 キーボードから文字を入力する方法
Lesson03 条件分岐
3-1 if文で処理を分ける
3-2 if~else文で処理を分ける
3-3 if~else if文で処理を分ける
3-4 論理演算子を用いてみよう
3-5 switch文で処理を分ける
Lesson04 繰り返し処理
4-1 for文による繰り返し
4-2 インクリメント・デクリメント演算子
4-3 for文の入れ子構造(ネスト)
4-4 while文による繰り返し
4-5 do while文による繰り返し
Lesson05 配列
5-1 配列とは
5-2 配列の初期化
5-3 2次元配列
5-4 2次元配列の初期化
Lesson06 文字と文字列
6-1 文字と文字列
6-2 文字と文字列の初期化
6-3 文字列の操作
Lesson07 関数
7-1 関数とは?
7-2 C言語の関数
7-3 変数とスコープ
Lesson08 ポインタ
8-1 メモリアドレスの考え方
8-2 ポインタとは?
8-3 ポインタと引数
8-4 配列とポインタ
8-5 const型修飾子
8-6 引数と配列
8-7 文字列とポインタ
8-8 文字列配列とポインタ
Lesson09 構造体
9-1 構造体の宣言方法
9-2 構造体メンバの初期化と代入
9-3 構造体とポインタ
Lesson10 ファイル入出力
10-1 ファイル入出力の概要
10-2 入出力の手順
10-3 試験で出題されたその他の関数
Lesson11 その他出題項目
11-1 define文
11-2 キャスト演算
11-3 ビット演算
11-4 条件演算子
11-5 文字に対する計算

Part2 問題編
C言語
Practice01 フラクタル図形を描画するプログラム
(平成28年度春期問9)
Practice02 換字表を用いて暗号文にするプログラム
(平成27年度春期問9)
Practice03 ケーブルテレビ局サービスの利用料金を求めるプログラム
(平成25年度春期問9)
Practice04 二つの英単語を辞書順で比較するプログラム
(平成25年度秋期問9)
Practice05 単語が行末で切れないように出力するプログラム
(平成26年度春期問9)
Practice06 入退室状況を印字するプログラム
(平成27年度秋期問9)
Practice07 複数システムの開発作業順序を求めて出力するプログラム
(平成28年度秋期問9)
Practice08 2つの整数の割り算の結果の出力を行うプログラム
(平成23年度秋期問9)
Practice09 利用者ID一覧の差分を印字するプログラム
(平成26年度秋期問9)
Practice10 希望の座席種別と座席数の空き座席を調べるプログラム
(平成23年度特別問9)
Practice11 社員の予定を考慮して会議開催候補時間帯を調べるプログラム
(平成24年度春期問9)
Practice12 くじ番号と当選番号を比較して当たりを確認するプログラム
(平成24年度秋期問9)
擬似言語
Practice13 簡易メモ帳のメモの編集を行うプログラム
(平成28年度春期問8)
Practice14 クイックソートを応用したk番目に小さい値を選択するプログラム
(平成27年度春期問8)
Practice15 BM法を用いて文字列検索を行うプログラム
(平成27年度秋期問8)
Practice16 指定された編集パターンに従って数値を編集するプログラム
(平成28年度秋期問8)

宮坂 俊成 (著)
出版社 ‏ : ‎ 技術評論社; 改訂3版 (2017/2/9)、出典:出版社HP

本書の読者対象と使い方

本書は,基本情報技術者試験の午後問題のC言語,擬似言語対策をメインとして,

・文法編
・問題編(C言語)
・問題編(擬似言語)

を用意してあります。対象とする読者層としては,

・C言語を1から勉強しながら,試験対策を行うつもりの人
・学校等でC言語を習ったことがあるが,実際にプログラミングをしたことがない人
・C言語はある程度使いこなせるが,過去問題を解くとよくわからない人
・C言語はある程度使いこなせて,プログラムの問題で点数を稼ぎたい人
・擬似言語対策とプログラムの問題の対策を効率的に行いたい人

を想定しています。本書の文法編では,試験に出るレベルの文法事項に的を絞って説明しています。文法事項の詳細な説明は,あえて省略してある部分もありますので,インターネットや他の本を参考にしてください。

問題編で取り上げている問題は,すべて基本情報技術者試験の過去問題です。問題は,1問1問が独立していて,1問あたり25分から30分程度の時間で解くことを想定しています。Practice1から順に解いていくことによって,実力が付くように問題を並べてあります。必ず,プログラムをしっかり読み取りながら,問題を解くようにしましょう。また,各問題には,難易度(A,B,C:Aが易しく,Cが難しい)を付けてありますので,参考にしてくださ
い。

本書は各自の学習の進み具合によって,次のような利用方法を想定しています。
・まだ,勉強を始めたばかりの人,試験まで十分時間がある人
まずは文法編で文法事項を確認してから,問題編に入りましょう。
問題編では,自分が納得できる解答が出るまでは,1日でも1週間でも考えてください。
プログラムを1行ずつ追っていき,処理の流れを考えることが実力アップへの近道です。
変数の値の変化など,自分でメモを取りながら考えると良いですよ。

・C言語の文法を理解している人,試験まであまり時間が残されていない人
文法編は読み飛ばしても構いません。
問題編の問題を解くときには,時間を決めて,実際の試験のつもりで解いてください。
解いた後は,答え合わせをして解説をしっかり読みましょう。

問題の解説は,勉強を始めたばかりの人やプログラミングが苦手な人でも解説を読めばわかるようにかなり細かく説明しています。そのため,プログラミングをある程度理解している方にはくどい説明になっている部分もあると思います。そのような方は,問題を解いた後,解説を飛ばして,解答を先にチェックしてください。そして,再び戻って解説を読んで考えてみてください。本書を読み終えるころには,試験を突破するための十分な力が身につくはずです。

なお,解説の便宜上,すべての問題のプログラムには行番号を付けてあります。

宮坂 俊成 (著)
出版社 ‏ : ‎ 技術評論社; 改訂3版 (2017/2/9)、出典:出版社HP