書籍概要

情報処理技術者試験

基本情報技術者【科目B】ゼロからわかるアルゴリズムと擬似言語

著者
発売日
更新日

概要

フルカラーで理解しやすい紙面! 初学者に最適な「科目B」対策本

2023年4月から始まる新形式「科目B」の出題の4分の3を占める「アルゴリズムとプログラミング(擬似言語)」の対策書です。

プログラム言語の学習経験がないゼロベースからの受験者を想定し,知識ゼロのスタートからゆっくり・じっくり,「アルゴリズムの動き」と「それを表現する擬似言語プログラム」を対にして解説していきます。

最終的な到達目標は,「試験本番で短時間(1問5~10分)に解けるスキルを身につける」こと。そのためには,プログラムを完成させること,トレースすること,修正やテストを行うことなど,多くの出題バリエーションに対応できることが求められます。

定番のアルゴリズム例と実際の試験問題を例に,ステップアップ方式で学習を進めていくことで,試験に必要となる基礎力と実践的な応用力の両方をスムーズに向上させることができます。

フルカラーの紙面で理解しやすいように配色を工夫。豊富な図解とイラストを添えることで,アルゴリズムや擬似言語問題が苦手な受験者も楽々学べます。

プログラム言語を扱った業務経験や学習経験がないゼロベースからの受験者や,アルゴリズム/擬似言語問題が苦手で超入門レベルから再学習したい受験者におすすめします!

こんな方におすすめ

  • 科目Bの「アルゴリズムとプログラミング(疑似言語)」問題の対策本を探している受験者
  • プログラム言語を扱った業務経験や学習経験がないゼロベースからの受験者
  • アルゴリズム/疑似言語問題が苦手で,超入門レベルから再学習したい受験者

サンプル

samplesamplesamplesamplesample

目次

第1章 アルゴリズム・はじめの一歩

1-1 コンピュータとプログラムの関係

1-2 アルゴリズムとは手順のこと

  • 例題 送料を含んだ請求金額の算出

1-3 流れ図の記述形式と使い方

  • 例題 会員向け割引金額の算出

第1章 確認問題

  • 問1 選択処理の条件(問題文から条件を考える)
  • 問2 繰返し回数を数える(変数のトレース)

第2章 擬似言語のルールを知ろう

2-1 擬似言語ってどんなもの?

2-2 擬似言語の文法① -宣言部-

2-3 擬似言語の文法② -処理部-

  • 第2章確認問題
  • 問1 変数への値の代入
  • 問2 選択処理の条件記述
  • 問3 比較演算子による条件の組合せ

第3章 擬似言語プログラムのポイント

3-1 複雑な条件式の考え方 -if文-

3-2 多重の繰返し処理 -for文-

  • 例題 九九表を出力するアルゴリズム

3-3 配列を操作するアルゴリズム

  • 例題 文字探索のアルゴリズム
  • 例題 文字列探索のアルゴリズム

第3章 確認問題

  • 問1 二つの文字型配列の比較
  • 問2 if -elseif文の読取り

第4章 試験問題に慣れていこう

4-1 試験問題の分類と「トレース問題」の対策法

  • 例題 行列データの変換

4-2 「空欄穴埋め問題」の対策法

  • 例題 配列要素の入換え

4-3 「チェックポイント問題」の対策法

  • 例題 最大公約数と最小公倍数を求める

4-4 「計算式を考える問題」の対策法

  • 例題 平方根を求める数式

4-5 「誤り訂正・改善問題」の対策法

  • 例題 配列要素のブロックコピー

第4章 確認問題

  • 問1 二つのプログラムの照合
  • 問2 チェックキャラクターを算出する計算式

第5章 仕様があいまいな擬似言語文法

5-1 可変長(動的)配列の役割と使い方

  • 例題 可変長(動的)配列の操作

5-2 「関数・手続」呼出しのバリエーションとルール

  • 例題 関数の呼出し

5-3 「大域」の意味と使い方 -ローカル変数とグローバル変数-

  • 例題 配列要素のブロックコピー(改変)

5-4 「未定義、未定義の値」って何のこと?

  • 例題 “未定義の値”の扱い

第5章 確認問題

  • 問 配列要素のランク付け(可変長配列の動作)

第6章 オブジェクト指向プログラミング

6-1 オブジェクト指向問題の考え方・解き方

  • 例題 メソッドの使い方

6-2 オブジェクトを生成する

  • 例題 優先度付きキューの操作
  • 例題 単方向リストへの要素追加

第6章 確認問題

  • 問 単方向リストからの要素削除

第7章 データ構造の種類とアルゴリズム

7-1 データ構造の基本と配列の操作

  • 例題 二次元配列に格納されている図形の回転

7-2 キューとスタックの使い方

  • 例題 キューとスタックの操作

7-3 木構造とその応用

  • 例題 ヒープのアルゴリズム
  • 例題 二分木の走査

7-4 リスト構造とそのバリエーション

  • 例題 双方向リストへの要素追加

第7章 確認問題

  • 問 文字型配列とチェックキャラクターの計算

第8章 探索と整列のアルゴリズム

8-1 探索のアルゴリズム

  • 例題 ボイヤ・ムーア法による探索

8-2 整列のアルゴリズム

  • 例題 クイックソートのアルゴリズム

第8章 確認問題

  • 問 二分探索プログラムの不具合

第9章 数理と情報に関するアルゴリズム

9-1 論理演算・シフト演算とビット操作

  • 例題 ビット列の取出しと配列への格納
  • 例題 ビットの並びを逆転する

9-2 再帰処理を利用したアルゴリズム

  • 例題 階乗を求めるプログラム

9-3 最短経路問題のアルゴリズム

  • 例題 最短経路を求めるプログラム

9-4 逆ポーランド記法のアルゴリズム

  • 例題 逆ポーランド記法

第9章 確認問題

  • 問 Unicode → UTF-8の符号変換

サポート

正誤表

本書の以下の部分に誤りがありました。ここに訂正するとともに,ご迷惑をおかけしたことを深くお詫び申し上げます。

(2024年10月30日最終更新)

【第2刷 訂正情報】

P.205「②-2 先頭に挿入するとき」の《ポインタの変更後》の図

p205_zu1_before.png

p205_zu1_after.png

(以下2024年4月2日更新)

P.143 上図「配列:rank」の右端

[6]
[5]

【第1刷 訂正情報】(第2刷では修正済み)

P.55「代入文の記述例④」中

/* 累計金額に合計金額を加算する */
/* 累計額に合計額を加算する */

「金」が2箇所不要です。

P.57「選択処理①の例」中(2箇所)とその1行下(1箇所)

合計金額
合計額

「金」が不要です。

P.58「選択処理②の例」中(4箇所)とその1行下(1箇所)

合計金額
合計額

「金」が不要です。

P.59「選択処理③の例」中(5箇所)とその1~2行下(2箇所),図表2-3-4の左側の解説中(5箇所)

合計金額
合計額

「金」が不要です。

P.88「2文字目で不一致になったとき」の図

p.88_wrong.png

p.88_right.png

P.215「●二分探索のアルゴリズム」の囲みの(4)

(4)上記を繰り返して要素が一つだけになったとき、「中央値=検索値」なら値が見つかったことになり、そうでなければ値が見つからなかったことになる。
(4)上記を繰り返し、「中央値=検索値」になる(検索値が見つかった)か、検索範囲の要素が一つだけになったとき(検索値が見つからなかった)に終了。

P.215「〔二分探索の具体例〕」の2行目 

変数S(=18)
探索値sar(=18)

P.216 ②,④,⑥の冒頭

探索値S
探索値sar

P.216 ⑦の説明中

array[8]=Sで確定します。
array[8]=sarで確定します。

P.234(イ)(ウ)(エ)の図中(3箇所)

array
data

P.244 上図の下部の解説

p.244-1_wrong.png

p.244-1_right.png

P.244「●求められている動作からプログラムの論理を考える」の4行目

変数rに最上位ビット(左端)から格納していけば、
変数rに最位ビット(端)から格納していけば、

P.244 下図の番号

p.244-2_wrong.png

p.244-2_right.png

(以下2023年12月14日更新)

P.209 8~9行目

(3) (1)と(2)の合計を10 で割った余りを、10 から引いた数字をチェックキャラクターとする。
(3) (1)と(2)の合計を10 で割った余りを、10 から引いた数字をチェックキャラクターとする。なお、10から引いた数字が10のときは0とする。

P.210 〔プログラム〕下から5~6行目

number ← 10 − (sum mod 10)
ch ← numberを文字に変換
number ← 10 − (sum mod 10)
if (number = 10)
  number ← 0
endif
ch ← numberを文字に変換

(以下2023年11月1日更新)

P.52 「配列要素に値を設定する」の解説7行目

といったもケースが
といったケースが

「も」が不要です。

(以下2023年10月12日更新)

P.52 中程の図。配列seisekiの要素番号[8]の値

85
86

P.95 「●配列boxarrayの初期化(4行目)」の説明2~3行目と「●if文を使った多分岐の選択処理」の見出しのカッコ内

6行目〜13行目
5行目〜11行目

P.220 「①文字照合に失敗した場合の移動量の算出」の説明4行目

移動量:“A”→4、“C”→4、“B”→1“、M”→2
移動量:“A”→1、“C”→2、“B”→4“、M”→4

(以下2023年9月28日更新)

P.34 3〜4行目

…進む処理を示しているのでるので迷うことは…
…進む処理を示しているので迷うことは…

「るので」が不要です。

(以下2023年8月29日更新)

P.81 一番下の行

変数atariの値
変数ataiの値

「r」が不要です。

(以下2023年5月23日更新)

P.21 上から6行目

変数をyを100とし、
変数yを100とし、

「を」が不要です。

P.44 下から7行目

上記の情報入力~結果算出までの…
上記の情報入力~結果出力までの…

P.50 「変数を宣言する」の解説4行目

(前ページ《プログラム名の記述例①》)
p.48《プログラム名の記述例①》)

P.58 「2通りの処理に分ける」の解説1行目

処理を2通りに分けるバターンです。
処理を2通りに分けるターンです。

P.81 「●処理のポイント」の2~3行目

1行目から2列目~9列目の…
1行目から1列目~9列目の…

(以下2023年5月15日更新)

P.211 下側の図

上段
偶数番目
奇数番目
下段
奇数番目
偶数番目

P.226 図表8-2-6 右端のボックス[9]の下

基準値=8

この記述は不要なので削除

P.246 図表9-2-2 薄緑色で囲った部分

F(4)=4+F(4-1)
F(4)=4×F(4-1)
F(3)=3+F(3-1)
F(3)=3×F(3-1)
F(2)=2+F(2-1)
F(2)=2×F(2-1)
F(1)=1+F(1-1)
F(1)=1×F(1-1)

商品一覧