書籍概要

[改訂新版]基本情報技術者【科目B】アルゴリズム×擬似言語トレーニングブック

著者
発売日
更新日

概要

「最初は鬼のように難しい」でおなじみのアルゴリズムトレーニング本の改訂版!

本書は,基本情報技術者の科目Bで出題される全20問のうち,16問を占める「アルゴリズムと擬似言語」の問題を集中的にトレーニングするための書籍です。

科目B試験の試験時間は100分間であるため,1問あたり平均5分で解く必要があります。そのためには問題への慣れが不可欠であり,試験本番で力を発揮できるようになるための実践的なトレーニングは必須です。本書は,2023年に刊行された「アルゴリズムトレーニング本」の改訂版です。初版同様,過去問及びサンプル問題,さらにはそれらを題材としたオリジナル問題を多数用意し,実践的なトレーニングが積める内容となっています。また,IPAの公開問題についても本書のサポートページに解説PDFを用意し,みなさまの理解をサポートします。

こんな方におすすめ

  • 基本情報処理技術者試験を受験する方で,特に科目Bのアルゴリズム問題に自信のない方
  • 多くの問題を解きたいと思っている方

目次

  • 読者特典(ダウンロードコンテンツ)のご案内
  • 学習の手引き

第1章 変数とデータ構造

  • 1.1 アルゴリズムの要件と表現方法
  • 1.2 変数
  • 1.3 配列
  • 1.4 リスト
  • 1.5 スタックとキュー
  • 1.6 木構造

COLUMN

  • 円周率3.14を整数型の変数に入れたらどうなる?
  • データ構造とは何か?
  • 双方向リストの場合,ポインタ部は二つ必要!
  • リストを用いたスタックとキューの実現
  • 部分木をもつ節の削除

第2章 擬似言語プログラミング

  • 2.1 手続と関数
  • 2.2 基本制御構造と条件式
  • 2.3 選択処理(if文)
  • 2.4 繰返し処理(while文とdo-while文)
  • 2.5 繰返し処理(for文)
  • 2.6 オブジェクト指向とクラス

COLUMN

  • 複合条件の否定はド・モルガンの法則で考える
  • while文の条件式が常に真になる場合は注意!
  • 2分探索法の流れ図
  • クラスStackのインスタンスを二つ作る

第3章 基本例題

  • 3.1 成績評価を行う
  • 3.2 1からNまでの整数の総和を求める
  • 3.3 配列内に格納されているある数値を求める
  • 3.4 二つの配列を連結する
  • 3.5 配列の要素の並びを逆順にする
  • 3.6 配列の要素の値を別の配列の要素番号に使用する
  • 3.7 二つの正の整数の最大公約数を求める
  • 3.8 k番目のデータまでを並べ替える
  • 3.9 リスト要素を探索する
  • 3.10 二次元配列からデータを探索する
  • 3.11 プログラム実行途中の配列の内容を考える
  • 3.12 数字文字列を数値に変換する
  • 3.13 10進整数を8桁の2進数に変換する
  • 3.14 ビット演算の結果を表示する
  • 3.15 再帰関数の戻り値を求める

COLUMN

  • if文の構文を確認しておこう!
  • 変数の初期値に注意!
  • 変数aの初期値として-1を設定する方法もある?!
  • 二つの配列を一つにする処理
  • 問われている処理のみに着目する?!
  • 「配列の領域外を参照する」ってどういうこと?
  • 最大公約数の求め方
  • data[1]が最小の値でなかったら…?
  • 「node+1」で次の要素をアクセスできないの?
  • プログラムを「while(true)」の形式に書き換えてみよう!
  • 二次元配列mdataを別の方法で探索する?!
  • 基本問題としてよく出題される(?)バブルソート
  • 16進数の数字文字列を数値に変換する
  • 数字文字列を数値に変換する応用プログラムに挑戦!
  • 問題文にある条件「0<n<100を満たす整数」の意味
  • 配列binの要素数を固定にしない方法
  • maskの値を変えないで同じ処理を行う方法
  • シフト演算を確認しておこう!
  • 試験によく出る再帰関数
  • 二つの正の整数の最大公約数を再帰的に求める

第4章 応用例題

  • 4.1 ゲームの得点を計算する
  • 4.2 n×nの奇数魔方陣を作成する
  • 4.3 1月1日からの経過日数を求める
  • 4.4 自然数nまでの素数を求める
  • 4.5 ハフマン符号化を使ってデータを圧縮する
  • 4.6 整列済の二つの配列を併合する
  • 4.7 文字列を圧縮する
  • 4.8 ハッシュ法でデータを登録する
  • 4.9 配列上にヒープを作成する
  • 4.10 スタックを再帰的な手続で操作する
  • 4.11 再帰的な手続を用いてn桁の2進数を全て出力する
  • 4.12 2分探索木からデータを探索する
  • 4.13 逆ポーランド表記法で表された式を計算する
  • 4.14 リストを自己再編成探索する
  • 4.15 隣接行列で表されたグラフを探索する
  • 4.16 シフト演算と加算の繰返しで2進数の乗算を行う
  • 4.17 base64を用いてバイナリデータをテキストに変換する
  • 4.18 モンテカルロ法を用いて円周率の近似値を求める
  • 4.19 近似解を2分法で求める手順を考える
  • 4.20 行列の乗算で2年後の格付推移行列を求める
  • 4.21 最小二乗法を用いて回帰式を求める
  • 4.22 プログラムの検証と改良
  • 4.23 プログラムのテストケース
  • 4.24 デシジョンツリーを用いた意思決定
  • 4.25 ゲーム木の探索

COLUMN

  • 関数numを使うと効率が悪い?
  • 魔方陣の縦・横・対角線に並んだ数の合計値
  • ハフマン符号の問題では圧縮率が問われる?
  • 番兵を用いた併合(マージ)
  • プログラムの解読法
  • チェーン方式の処理は「リスト処理」!
  • ヒープの性質を使った整列法がヒープソートだ!
  • 条件式が真のときの処理を記述しなくていいの?
  • 手続testからbinaryNumber(2)として呼び出したらどうなる?
  • 関数lookupを再帰版に書き換えてみる
  • 通常の式を逆ポーランド表記にしてみる
  • リストの自己再編成は二つの操作から成る!
  • 2分木を幅優先探索してみる
  • 処理手順(2)の処理をプログラムで書いてみよう!
  • (x, y)が四分円内にあるか否かを距離で判定する?
  • 推移行列を用いて雨の2日後が晴れである確率を求めてみる
  • 最小二乗法って難しい?!
  • 時間効率性からみた最適化
  • 判定条件網羅(分岐網羅)
  • 期待値原理を用いた意思決定
  • ゲーム木のミニマックス探索
  • 原始モンテカルロ法

第5章 サンプル問題

  • 5.1 サンプル問題1
  • 5.2 サンプル問題2

COLUMN

  • 新たな要素をリストの先頭に追加するプログラム
  • ビットの並びを逆にするもう一つの方法
  • 深さ優先探索(先行順,中間順,後行順)
  • 不具合のある2分探索プログラム

サポート

ダウンロード

(2024年8月23日更新)

読者特典のご案内

本書をお買い上げいただいた読者様へのサービスとして,紙面構成の都合上,書籍に掲載することができなかった「基本情報技術者試験 科目B 公開問題」の解答・解説PDFをダウンロードいただけます。

ダウンロードファイルは,ZIP形式の圧縮ファイルで,2回分(令和5年度,令和6年度公開分)の解答・解説ファイルが1つにまとめられています。展開(解凍)してご利用ください。

読者特典をご利用いただくために

本書のダウンロード付録は,PDF形式のファイルで配付しております。ダウンロードにあたって,入手に必要なPCやWebブラウザ,また通信費についてはお客様のご負担となります。

PDF形式の電子書籍を読むには,「Adobe Acrobat Reader」などのPDFを開くことができるアプリが必要です。アプリをお持ちでない場合は,下記のリンクから,ダウンロードサイト(パソコン)/AppleStore(iPhone/iPad)/Playストア(Android)が開くので,各自でインストールしてご利用ください。なお,iPhone/iPadでは,標準で入っている「iBooks」でも閲覧可能です。

Adobe Acrobat Readerを入手する
https://get.adobe.com/jp/reader/

その他注意事項

PDFファイルについて,一般的な環境においては特に問題のないことを確認しておりますが,万一障害が発生し,その結果いかなる損害が生じたとしても,小社および著者は責任を負いかねます。必ずご自身の判断と責任においてご利用ください。

PDFファイルは,著作権法上の保護を受けています。収録されているファイルの一部,あるいは全部について,いかなる方法においても無断で複写,複製,再配布することは禁じられています。

以上のことをご確認,ご了承の上,データをご利用願います。

読者特典のダウンロード

本書の下記の場所に記載されている文字をパスワードとして入力し,[ダウンロード]ボタンをクリックしてください。

FE_B_argotraining.zip(2MB)

正誤表

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

(2024年9月6日最終更新)

P.100 〔プログラム〕の8行目

data[j - 1] ← data[j]
data[j - 1] ← tmp

P.103 〔“データの要素数”を5に置き換えたプログラム〕の6行目

data[j - 1] ← data[j]
data[j - 1] ← tmp

商品一覧