メインコンテンツへスキップ
教材一覧に戻る
ITパスポート

アルゴリズムとプログラミング

最終確認日:

この章しょうで学まなぶこと

テクノロジ系けい 45 問もんのうち、この章しょうは 5〜8 問もんほどの出題しゅつだいがあります。「アプリがデータをどう整理せいりして保管ほかんしているの?」「1000 件けんの中なかから目的もくてきのデータを探さがすのに、どうすれば速はやいの?」「プログラミング言語げんごはなぜあんなに種類しゅるいがあるの?」「問題もんだい集しゅうに出でてくる擬似ぎじ言語げんごって何なに?」といった、コンピュータに手順てじゅんを教おしえて動うごかすための基礎きそを扱あつかう章しょうです。

特とくに擬似ぎじ言語げんご(iパス独自どくじの読解どっかい用ようコード)を追跡ついせきする問題もんだいが毎年まいとし必かならず出題しゅつだいされます。数式すうしきを計算けいさんする数学すうがくとは違ちがい、「順番じゅんばんどおりに実行じっこうして結果けっかを求もとめる」思考しこう訓練くんれんが必要ひつようです。慌あわてず、変数へんすうの値あたいを紙かみに書かきながら一いち歩ほずつトレースするのが鉄則てっそく。

学習がくしゅうゴール

この章しょうを読よみ終おえた時点じてんで、以下いかができるようになっていることを目指めざします。

  • 主要しゅようデータ構造でーたこうぞう(配列はいれつ・連結リストれんけつりすと・スタックすたっく・キューきゅー・木き・グラフぐらふ)をシナリオから判別はんべつできる
  • 探索たんさくアルゴリズム(線形探索せんけいたんさく・2 分探索2 ぶんたんさく)の計算量けいさんりょうを判別はんべつして、データ量りょうに応おうじて選択せんたくできる
  • 整列せいれつアルゴリズム(バブルソートばぶるそーと・選択ソートせんたくそーと・クイックソートくいっくそーと等)の計算けいさん量りょうを比較ひかくできる
  • 擬似ぎじ言語げんごを読よみ解といて、変数へんすう・制御構文せいぎょこうぶん(if・for・while)の動作どうさをトレースできる
  • プログラミング言語げんごの分類ぶんるい(コンパイラこんぱいら型・インタプリタいんたぷりた型・スクリプト言語すくりぷとげんご)を判別はんべつできる
  • HTML・XML・JSON・CSV の使つかい分わけを判別はんべつできる

試験しけんでは: データ構造こうぞうは「用途ようと → 最適さいてきな構造こうぞう」、アルゴリズムは「計算けいさん量りょうの比較ひかく」、擬似ぎじ言語げんごは「与あたえられた入力にゅうりょくで何なにを出力しゅつりょくするか」の 3 パターンが定番ていばんです。

1. データ構造こうぞう

データ構造こうぞうは「データを整理せいりして保管ほかんする形かたち」。同おなじ情報じょうほうでも整理せいりの仕方しかたで、追加ついか・検索けんさく・削除さくじょのしやすさが大おおきく変かわります。たとえばスーパーで買かい物ものリストを作つくるとき、順番じゅんばんに書かく(配列はいれつ)か、優先ゆうせん順位じゅんいの列れつ(キュー)か、積つみ上あげていく(スタック)かで、使つかい勝手がってが変かわるのと同おなじ。用途ようとに応おうじて最適さいてきな構造こうぞうを選えらぶのがプログラマーの腕うでの見みせどころで、試験しけんでも「この場面ばめんではどの構造こうぞうを使つかうか」が頻出ひんしゅつです。

1.1 配列はいれつ(Array)

配列はいれつは同おなじ型かたのデータを連続れんぞくした領域りょういきに並ならべたもの。一番いちばんシンプルで基本きほん的てきなデータ構造こうぞうで、「何なん番目ばんめ」(インデックス)を指定していすれば一瞬いっしゅんで取とり出だせるのが特徴とくちょう。ただし途中とちゅうに要素ようそを挿入そうにゅうしたり削除さくじょしたりすると、後続こうぞくの要素ようそを全部ぜんぶずらす必要ひつようがあるので遅おそくなります。

  • 同おなじ型かたのデータを連続れんぞく領域りょういきに並ならべる(メモリ上じょうで密みつに並ならぶ)
  • インデックス(添字そえじ、0 から始はじまる)で要素ようそにアクセス → O(1)
  • 要素ようその挿入そうにゅう・削除さくじょは後続こうぞくの要素ようそをずらす必要ひつようがあり遅おそい → O(n)
  • 用途ようと: 成績せいせき表ひょう、画像がぞうのピクセル配列はいれつ、時とき系列けいれつデータ

具体ぐたい例れい: 生徒せいと 30 人ひとの点数てんすうを配列はいれつscores[0]〜scores[29] で保管ほかん。3 番ばん目めの生徒せいとの点数てんすうは scores[2] で一瞬いっしゅんで取とれる。ただし「5 番ばん目めと 6 番ばん目めの間まに新あたらしい生徒せいとを挿入そうにゅう」すると、6 番ばん目め以降いこう 25 人ひと分ぶんを 1 つずつ後うしろにずらす必要ひつようがある。

1.2 リスト(List)

リスト(連結れんけつリスト)は、各かく要素ようそが「次じの要素ようその場所ばしょを指さすポインタ」を持もつデータ構造こうぞう。配列はいれつとは逆ぎゃくに、挿入そうにゅう・削除さくじょが速はやく、検索けんさくが遅おそいという特性とくせいがあります。メモリ上じょうでバラバラな位置いちにあっても、ポインタでつなげて論理ろんり的てきな順序じゅんじょを保たもちます。

  • 各かく要素ようそが次じの要素ようそを指さすポインタを持もつ
  • 単たん方向ほうこうリスト — 次つぎだけ指さす(一方いっぽう通行つうこう)
  • 双方向そうほうこうリスト — 前後ぜんご両方りょうほうを指さす(逆ぎゃく走はし可能かのう)
  • 循環じゅんかんリスト — 末尾まつびが先頭せんとうを指さす(ぐるぐる回まわる)
  • 挿入そうにゅう・削除さくじょが速はやい(ポインタのつなぎ替がえだけ) → O(1)
  • 検索けんさくは遅おそい(先頭せんとうから順番じゅんばんに辿たどるしかない) → O(n)
  • 用途ようと: LRU キャッシュ、音楽おんがくプレイヤーの再生さいせいリスト、ブラウザの履歴りれき

引ひっかけ: 配列はいれつは検索けんさく速はやい・挿入そうにゅう遅おそい、リストは挿入そうにゅう速はやい・検索けんさく遅おそい。正せい反対はんたいの特性とくせいなので、用途ようとで使つかい分わける。頻繁ひんぱんに検索けんさくするなら配列はいれつ、頻繁ひんぱんに挿入そうにゅう・削除さくじょするならリスト。

1.3 スタック(Stack)

スタックは「積つみ重かさねた皿さら」のように、最後さいごに入いれたものが最初さいしょに出でるデータ構造こうぞう。略りゃくして LIFO(Last In, First Out、後入あといれ先出さきだし)と呼よびます。プログラムの関数かんすう呼よび出だし(どこから呼よばれたかを覚おぼえて戻もどる)や、エディタの Undo 機能きのう(直前ちょくぜんの操作そうさを取とり消けす)で使つかわれています。

  • LIFO(Last In, First Out)= 後入あといれ先出さきだし
  • 操作そうさ: push(積つむ)・pop(上じょうから取とり出だす)
  • イメージ: 洗あらった皿さらを積つみ重かさねる → 使つかう時ときは一いち番ばん上じょうから取とる
  • 用途ようと: 関数かんすう呼よび出だし管理かんり(コールスタック)、Undo 機能きのう、式しきの括弧かっこ評価ひょうか、DFS 探索たんさく

具体ぐたい例れい: エディタで「A を入力にゅうりょく → B を入力にゅうりょく → C を入力にゅうりょく → Undo」とすると、直前ちょくぜんに入力にゅうりょくした C が最初さいしょに取とり消けされる。これは入力にゅうりょく履歴りれきをスタックに push し、Undo で pop しているから。

1.4 キュー(Queue)

キューは「レジの行列ぎょうれつ」のように、最初さいしょに入はいったものが最初さいしょに出でるデータ構造こうぞう。略りゃくして FIFO(First In, First Out、先入さきいれ先出さきだし)。プリンタの印刷いんさつ待まち行列ぎょうれつ、メッセージキュー、タスクスケジューラなど、順番じゅんばん待まちが必要ひつような場面ばめんで広ひろく使つかわれます。

  • FIFO(First In, First Out)= 先入さきいれ先出さきだし
  • 操作そうさ: enqueue(末尾まつびに追加ついか)・dequeue(先頭せんとうから取とり出だし)
  • イメージ: レジの行列ぎょうれつ → 先さきに並ならんだ人ひとから会計かいけい
  • 用途ようと: 印刷いんさつ待まち行列ぎょうれつ、メッセージキュー、タスクスケジューラ、BFS 探索たんさく

スタック(LIFO)

後入あといれ先出さきだし

位置いち要素ようそ
頂上ちょうじょう ← popC(最後さいごに push)
B
底A(最初さいしょに push)

最後さいごに積つんだ C が最初さいしょに出でる

用途ようと: 関数かんすう呼よび出だし、Undo(やり直なおし)、数式すうしきの括弧かっこ解析かいせき

キュー(FIFO)

先入さきいれ先出さきだし

[dequeue ←] A → B → C [← enqueue]

最初さいしょに入いれた A が最初さいしょに出でる

用途ようと: 印刷いんさつ待まち行列ぎょうれつ、メッセージキュー、タスクスケジューラ

頻出ひんしゅつ引ひっかけ: スタック = 紙かみを縦たてに積つむ(LIFO)、キュー = レジの行列ぎょうれつ(FIFO)のイメージ。「お客きゃくさんが並ならんでいる順番じゅんばんに対応たいおうする」のがキュー、「重かさねた皿さらを上うえから取とる」のがスタック。pop / push / enqueue / dequeue の用語ようごも区別くべつ。

1.5 木構造きこうぞう(Tree)

木き構造こうぞうは階層かいそう関係かんけいを表現ひょうげんするデータ構造こうぞう。フォルダ階層かいそう、組織そしき図ず、HTML/XML の構造こうぞうなど、身みの回まわりに溢あふれています。家系かけい図ずを上下じょうげ逆さかさにした形かたち(根ねが上うえ、葉はが下しも)で表現ひょうげんするのが慣習かんしゅうです。

  • ルート(根ね)・枝えだ・葉は・子こ・親おや・兄弟きょうだいなどの用語ようご
  • 二に分木ぶんぎ — 各かくノードが最大さいだい 2 つの子こを持もつ(左ひだりの子こ・右みぎの子こ)
  • 二に分ふん探索たんさく木き — 左ひだりの子こ < 親おや < 右みぎの子この性質せいしつを持もつ → 探索たんさくが高速こうそく
  • 平衡木へいこうぎ(AVL 木きなど)— 高たかさのバランスをとって最悪さいあく計算けいさん量りょうを保証ほしょう
  • 用途ようと: フォルダ階層かいそう、HTML/XML の DOM、データベースの B 木きインデックス

具体ぐたい例れい: PC のフォルダ階層かいそうは木き構造こうぞうそのもの。「デスクトップ > プロジェクト > 2026 > 資料しりょう.docx」という階層かいそうは、デスクトップを根ね(ルート)として下したに枝分えだわかれする木き。HTML の <html> > <body> > <div> も同おなじ構造こうぞう。

1.6 グラフ

グラフは「ノード(点てん)」と「エッジ(線せん)」で物事ものごとのつながりを表あらわすデータ構造こうぞう。SNS の友達ともだち関係かんけい、地図ちずの道路どうろ網もう、Web ページのリンク構造こうぞうなど、ネットワーク状じょうの関係かんけいを扱あつかうのに使つかいます。木き構造こうぞうと違ちがい、閉路へいろ(ループ)や複雑ふくざつな網状もうじょうも表現ひょうげんできます。

  • ノード(頂点ちょうてん)とエッジ(辺へん)で関係かんけいを表現ひょうげん
  • 有向ゆうこうグラフ — エッジに方向ほうこうがある(Twitter のフォロー等とう)
  • 無向むこうグラフ — 双方向そうほうこう(Facebook の友達ともだち、道路どうろの双方そうほう通行つうこう等とう)
  • 重みおもみ付つきグラフ — エッジにコスト(距離きょり・時間じかん)がある
  • 用途ようと: ネットワーク経路けいろ探索たんさく(カーナビ・地下鉄ちかてつ経路けいろ)、SNS の関係かんけい分析ぶんせき、レコメンド

具体ぐたい例れい: Google マップの「最短さいたん経路けいろ検索けんさく」はグラフ探索たんさくの典型てんけい。交差点こうさてんをノード、道路どうろをエッジ、距離きょりや所要しょよう時間じかんを重みおもみとして、目的もくてき地ちまでの最短さいたん経路けいろをダイクストラ法ほうなどで計算けいさんしています。

1.7 ハッシュテーブル

ハッシュテーブルは、キーから直接ちょくせつ場所ばしょを計算けいさんして高速こうそくに検索けんさくできるデータ構造こうぞう。辞書じしょ(dict)や連想れんそう配列はいれつ(Map)とも呼よばれます。平均へいきん O(1) で検索けんさく・挿入そうにゅうできる最強さいきょうクラスの速はやさが特徴とくちょうで、Python や JavaScript の dict / Object などの標準ひょうじゅんデータ型がたとして組くみ込こまれています。

  • キーをハッシュ関数はっしゅかんすうで数値すうちに変換へんかん → 配列はいれつのインデックスとして使つかう
  • 検索けんさく・挿入そうにゅう・削除さくじょすべて平均へいきん O(1)
  • 欠点けってん: 順序じゅんじょが保証ほしょうされない、ハッシュ衝突しょうとつの対策たいさくが必要ひつよう
  • 用途ようと: 辞書じしょ・連想れんそう配列はいれつ、データベース索引さくいん、キャッシュ(Memcached、Redis)

具体ぐたい例れい: 社員しゃいん番号ばんごう → 社員しゃいん情報じょうほうの検索けんさくで、配列はいれつや線形せんけい探索たんさくなら全員ぜんいんスキャンが必要ひつようだが、ハッシュテーブルなら社員しゃいん番号ばんごうをハッシュ関数かんすうで変換へんかんしてすぐにデータ位置いちがわかる。100 万まん人にん規模きぼでも一瞬いっしゅん。

2. アルゴリズム

アルゴリズムは「問題もんだいを解とく手順てじゅん」のこと。同おなじ問題もんだいを解とくにも複数ふくすうの手順てじゅんがあり、計算けいさん量りょう(処理しょり時間じかんの増加ぞうか率りつ)で比較ひかくします。データが 1 万まん件けんか 100 万まん件けんかで、最適さいてきな手順てじゅんは変かわってきます。試験しけんでは 「線形せんけい探索たんさく vs 二分にぶん探索たんさく」「バブルソート vs クイックソート」の計算けいさん量りょう比較ひかくが定番ていばんです。

2.1 探索たんさくアルゴリズム

探索たんさくは「データの中なかから目的もくてきの値あたいを見みつける」処理しょり。データがソート済ずみかどうかで、使つかえるアルゴリズムが大おおきく変かわります。ソートされていないデータには線形せんけい探索たんさくしか使つかえないが、ソート済ずみデータなら二に分ふん探索たんさくで圧倒的あっとうてきに速はやくなります。

アルゴリズム特徴とくちょう計算けいさん量りょうソート前提ぜんてい
線形探索せんけいたんさく先頭せんとうから順じゅんに比較ひかくO(n)不要ふよう
二分探索にぶんたんさくソート済ずみデータを半分はんぶんずつ絞しぼるO(log n)必要ひつよう
ハッシュ探索ハッシュたんさくハッシュ関数かんすうで直接ちょくせつアクセスO(1)不要ふよう

二に分ふん探索たんさくの動作どうさ(ソート済ずみ配列はいれつ[1,3,5,7,9,11,13,15]から 11 を探さがす)

Step範囲はんい中央ちゅうおう比較ひかく次つぎの範囲はんい
1[1,3,5,7,9,11,13,15]711 > 7右みぎ半分はんぶん[9,11,13,15]
2[9,11,13,15]11一致いっち ✓発見はっけん

2 ステップで発見はっけん(線形せんけい探索たんさくなら最大さいだい 6 ステップ)

n=8 で比較ひかく: 線形せんけい探索たんさく = 最大さいだい 8 回かい(O(n)) / 二分にぶん探索たんさく = 最大さいだい 3 回かい(O(log n)) n=10⁶ なら 100 万まん回かい vs 20 回かい — n が大おおきいほど差さが広ひろがる

頻出ひんしゅつ引ひっかけ: 二に分ふん探索たんさくは「ソート済ずみ」が前提ぜんてい。ソートされていない配列はいれつに二分にぶん探索たんさくは使つかえない。一方いっぽう、線形せんけい探索たんさくはソート不要ふよう。データ量りょうが大おおきい場合ばあい「事前じぜんソート + 二分にぶん探索たんさく」が「線形せんけい探索たんさく」より圧倒的あっとうてきに速はやくなる。

2.2 整列せいれつアルゴリズム

整列せいれつ(ソート)はデータを大小だいしょう順じゅんに並ならべ替かえる処理しょり。単純たんじゅんな手法しゅほう(バブル・選択せんたく・挿入そうにゅう)は実装じっそうが簡単かんたんだが遅おそい(O(n²))、高度こうどな手法しゅほう(クイック・マージ・ヒープ)は実装じっそうは複雑ふくざつだが速はやい(O(n log n))。データ量りょうが少すくなければ単純たんじゅんな手法しゅほうでも十分じゅうぶん、数すう万まん件けん以上いじょうなら高度こうどな手法しゅほうが必須ひっすです。

アルゴリズム特徴とくちょう計算けいさん量りょう
バブルソートばぶるそーと隣接りんせつを比較ひかく交換こうかん。シンプルO(n²)
選択ソートせんたくそーと最小値さいしょうちを先頭せんとうへ繰くり返かえしO(n²)
挿入ソートそうにゅうそーと整列せいれつ済ずみ部分ぶぶんに挿入そうにゅうO(n²)
クイックソートくいっくそーと基準きじゅん値ち(pivot)で分割ぶんかつ平均へいきん O(n log n)
マージソートまーじそーと分割ぶんかつ統治とうちで統合とうごうO(n log n)
ヒープソートひーぷそーとヒープひーぷ構造こうぞうを利用りようO(n log n)

覚おぼえ方かた: 単純たんじゅん系けい 3 兄弟きょうだい(バブル・選択せんたく・挿入そうにゅう)は O(n²)、高速こうそく系けい 3 兄弟きょうだい(クイック・マージ・ヒープ)は O(n log n)。計算けいさん量りょうの桁違けたちがいは、n=10,000 で単純たんじゅん系けい 1 億おく回かい vs 高速こうそく系けい 13 万まん回かいという圧倒的あっとうてきな差さになる。

2.3 再帰さいき

再帰さいきは関数かんすうが自分じぶん自身じしんを呼よび出だす仕組しくみ。複雑ふくざつな処理しょりを「自分じぶんと同おなじ問題もんだいの小ちいさい版ばん」に分解ぶんかいして解とくアプローチで、木き構造こうぞうの探索たんさくや分割ぶんかつ統治とうち法ほうなどで必須ひっすのテクニックです。プログラムが直感ちょっかん的てきに書かけるが、停止ていし条件じょうけんを間違まちがえると無限むげんループになるので注意ちゅうい。

例れい: 階かい乗じょうの計算けいさん

function 階乗(n):
    if n == 0: return 1
    return n × 階乗(n - 1)

2.4 計算けいさん量りょう(オーダー記法きほう)

計算けいさん量りょうは「入力にゅうりょくサイズ n が大おおきくなったとき、処理しょり時間じかんがどう増ふえるか」を表あらわす尺度しゃくど。O 記法きほう(ビッグオー記法きほう)で表あらわします。コンピュータの性能せいのうが上あがっても、計算けいさん量りょうが悪わるいアルゴリズムは大だい規模きぼデータで実用じつよう不能ふのうになります。データ量りょうに応おうじて適切てきせつなアルゴリズムを選えらぶための指標しひょうです。

記法きほう名称めいしょう例れい特徴とくちょう
O(1)定数ていすう時間じかん配列はいれつのインデックスアクセス、ハッシュ探索たんさく最速さいそく。データ量りょうに依存いぞんしない
O(log n)対たい数すう時間じかん二分にぶん探索たんさく、平衡木へいこうぎの探索たんさく非常ひじょうに速はやい
O(n)線形せんけい時間じかん線形せんけい探索たんさく、配列はいれつの最大値さいだいち検索けんさくデータ量りょうに比例ひれい
O(n log n)準じゅん線形せんけい時間じかんクイックソート、マージソートソートの実用じつよう限界げんかい
O(n²)二に乗じょう時間じかんバブルソート、選択せんたくソート、二に重じゅうループ大だい規模きぼデータで遅おそい
O(2^n)指数しすう時間じかん部分ぶぶん集合しゅうごうの列挙れっきょ、総そう当あたり探索たんさく実用じつよう困難こんなん

具体ぐたい例れい(n=1,000 のとき): O(1) = 1 操作そうさ / O(log n) ≈ 10 / O(n) = 1,000 / O(n log n) ≈ 10,000 / O(n²) = 1,000,000 / O(2^n) = 事実じじつ上じょう無限むげん。桁違けたちがいの差さが出でるので、計算けいさん量りょうの低ひくいアルゴリズムを選えらぶことが重要じゅうよう。

3. プログラム言語ぷろぐらむげんご

プログラミング言語げんごは人間にんげんがコンピュータに命令めいれいするための言語げんご。用途ようとによって得意とくい分野ぶんやが異ことなるため複数ふくすうの言語げんごが存在そんざいし、現代げんだいのエンジニアは2〜3 言語げんごを状況じょうきょうで使つかい分わけるのが普通ふつうです。試験しけんでは「この用途ようとに最適さいてきな言語げんごは?」「コンパイラ型がたとインタプリタ型がたの違ちがい」などが頻出ひんしゅつします。

3.1 言語げんごの分類ぶんるい

プログラミング言語げんごはいくつかの軸じくで分類ぶんるいできます。機械きかい語ごへの距離きょりで「低てい水準すいじゅん・高水準こうすいじゅん」、実行じっこう方式ほうしきで「コンパイラ型がた・インタプリタ型がた」、使つかい方かたで「スクリプト言語げんご」など、複数ふくすうの分類ぶんるいが重かさなります。同おなじ Python でも「高水準こうすいじゅん + インタプリタ型がた + スクリプト言語げんご」のように 3 つすべてに該当がいとうします。

分類ぶんるい特徴とくちょう代表だいひょう例れい
低水準言語ていすいじゅんげんご機械きかい語ごに近ちかい。ハードウェアを直接ちょくせつ制御せいぎょ機械きかい語ご、アセンブリ言語げんご
高水準言語こうすいじゅんげんご人間にんげんに近ちかい。書かきやすいC、Java、Python
コンパイラこんぱいら型実行じっこう前まえに機械きかい語ごへ一括いっかつ変換へんかん(コンパイル)。実行じっこう時じは速はやいC、C++、Java
インタプリタいんたぷりた型逐次ちくじ解釈かいしゃくしながら実行じっこう。開発かいはつが速はやいが実行じっこうは遅おそめPython、JavaScript、Ruby
スクリプト言語すくりぷとげんご簡易かんい記述きじゅつ・実行じっこう時じ解釈かいしゃくPython、JavaScript、PHP

引ひっかけ: Java はコンパイラ型がただがバイトコードにコンパイルされて、JVM 上うえで実行じっこうされるため厳密げんみつには「コンパイラ + インタプリタ」のハイブリッド。試験しけんで「Java はコンパイラ型がた」と問とわれたら正解せいかい、「インタプリタ型がた」とだけ問とわれたら誤あやまり。

3.2 代表だいひょう的てきプログラム言語げんご

各かく言語げんごには得意とくいな分野ぶんやがあり、そのため複数ふくすうの言語げんごが共存きょうぞんしています。AI/機械きかい学習がくしゅうなら Python、Web フロントエンドなら JavaScript、大だい規模きぼ業務ぎょうむシステムなら Java、のように用途ようとで選えらびます。試験しけんでは言語げんご → 用途ようとの対応たいおうが頻出ひんしゅつです。

言語げんご主おもな用途ようと特徴とくちょう
PythonAI・機械きかい学習がくしゅう・データ分析ぶんせき科学かがく計算けいさんライブラリが豊富ほうふ
JavaScriptWeb フロントエンド・Node.jsブラウザで直接ちょくせつ動うごく主要しゅよう言語げんご
Java業務ぎょうむシステム・AndroidJVM でプラットフォーム非ひ依存いぞん
C / C++OS・組込くみこみ・高速こうそく処理しょりハードウェアに近ちかく高速こうそく
RubyWeb 開発かいはつ(Ruby on Rails)記述きじゅつが簡潔かんけつ
Go / Rustサーバ・システム近年きんねん人気にんき、高速こうそく・並列へいれつ処理しょり
Swift / KotliniOS / Android各かくプラットフォームの主流しゅりゅう
SQLデータベース操作そうさ宣言せんげん型がた、専用せんよう領域りょういき
R統計とうけい解析かいせき学術がくじゅつ・研究けんきゅう向むけ

3.3 プログラムの基本きほん構造こうぞう

どんなプログラム言語げんごでも、3 つの基本きほん構造こうぞうの組み合わせくみあわせで処理しょりを記述きじゅつできます。これは 1966 年ねんにベーム・ヤコピーニによって数学すうがく的てきに証明しょうめいされた事実じじつで、構造こうぞう化かプログラミングの基礎きそとなっています。

  • 順次じゅんじ(Sequence)— 上うえから順じゅんに実行じっこう
  • 分岐ぶんき(Selection)— 条件じょうけんで処理しょりを選択せんたく(if / switch / case)
  • 反復はんぷく(Iteration)— 繰くり返かえし実行じっこう(for / while / do-while)

具体ぐたい例れい: 「テストの点数てんすうによって評価ひょうかを付つける」プログラムは順次じゅんじ + 分岐ぶんきで書かける。「全ぜん生徒せいとの点数てんすうを集計しゅうけいする」は順次じゅんじ + 反復はんぷくで書かける。「生徒せいとごとに点数てんすうを見みて評価ひょうかを付つけ、集計しゅうけい」は順次じゅんじ + 分岐ぶんき + 反復はんぷくの組み合わせくみあわせ。

3.4 変数へんすうとデータ型がた

変数へんすうは値あたいを入いれる名前なまえ付つきの箱はこ、データ型がたは箱はこに入いれられる値あたいの種類しゅるいを決きめるルール。整数せいすうと文字もじ列れつを混まぜて計算けいさんできないのは、データ型がたが異ことなるから。現代げんだいの言語げんごでは型かたを自動じどう判定はんていするものもある(Python・JavaScript)が、明示めいじ的てきに型かたを書かく言語げんご(Java・C++・TypeScript)の方ほうがバグが減へる傾向けいこうにあります。

  • 変数へんすう — 値あたいを格納かくのうする「箱はこ」。名前なまえを付つけて中身なかみを読よみ書かき
  • 定数ていすう — 変更へんこうしない値あたい(宣言せんげん後ごに書かき換かえ不可ふか)
  • 基本きほんデータ型がた:
    • 整数せいすう型がた(int) — 1, 100, -5 など
    • 実数じっすう型がた(float / double) — 3.14, 2.71 など
    • 文字もじ型がた(char) — 'A', 'あ' など
    • 論理ろんり型がた(boolean) — true / false
    • 文字もじ列れつ型がた(string) — "Hello" など
  • 複合ふくごうデータ型がた:
    • 配列はいれつ — インデックスでアクセス
    • 連想れんそう配列はいれつ(辞書じしょ・Map) — キー→値あたいのペア

4. 擬似ぎじ言語げんご

IT パスポート試験しけんでは、特定とくていの言語げんごに依存いぞんしない「擬似ぎじコード」でアルゴリズムが問とわれます。Python や Java を知しらなくても読よめるように、共通きょうつうの記法きほうで書かかれた"疑似ぎじ言語げんご"を読よみ解とく能力のうりょくが必要ひつようです。毎年まいとし必かならず出題しゅつだいされる領域りょういきで、変数へんすうの動うごきを紙かみに書かいてトレースするのが合格ごうかくの鉄則てっそくです。

4.1 基本きほん構文こうぶん

擬似ぎじ言語げんごの構文こうぶんは代入だいにゅう・分岐ぶんき・反復はんぷくの 3 要素ようそが中心ちゅうしん。日本語にほんご交まじりで書かかれることも多おおく、自然しぜん言語げんごに近ちかい記述きじゅつでアルゴリズムの本質ほんしつを問いといます。

構文こうぶん意味いみ備考びこう
変数 ← 式代入だいにゅう(右辺うへんを左辺さへんに入いれる)= ではなく ← を使つかう
if (条件) 〜 endif分岐ぶんきelse / elseif もある
while (条件) 〜 endwhile前ぜん判定はんてい反復はんぷく(条件じょうけんチェック → 実行じっこう)最初さいしょから条件じょうけん偽にせなら一いち度ども実行じっこうされない
do 〜 while (条件)後ご判定はんてい反復はんぷく(実行じっこう → 条件じょうけんチェック)少すくなくとも 1 回かいは実行じっこうされる
for 〜 endfor計数けいすう反復はんぷく(指定してい回数かいすう繰くり返かえし)i=1,2,...,n のような
// コメント注釈ちゅうしゃくプログラムの動作どうさに影響えいきょうなし

引ひっかけ: while(前ぜん判定はんてい)と do-while(後ご判定はんてい)は初期しょき条件じょうけんが偽にせの時ときの動作どうさが違ちがう。while は一いち度ども実行じっこうされない可能かのう性せいがある、do-while は最低さいてい 1 回かいは実行じっこうされる。試験しけんで「少すくなくとも 1 回かい実行じっこうされる反復はんぷく構文こうぶん」と問とわれたら do-while。

4.2 関数かんすうの呼よび出だし

関数かんすうは「入力にゅうりょく → 処理しょり → 出力しゅつりょく」の一連いちれんの手続てつづきを名前なまえ付つきでパッケージ化かしたもの。同おなじ処理しょりを何なん度ども使つかい回まわせるようにするため、現代げんだいプログラミングでは必須ひっすの考かんがえ方かた。引数ひきすうを渡わたして呼よび出だし、戻もどり値ちを受うけ取とります。

function 加算(a, b):
    return a + b

// 呼び出し
結果 ← 加算(3, 5)  // 結果 = 8

4.3 アルゴリズム読解どっかいのコツ

  1. まず変数へんすうの初期しょき値ちを確認かくにん
  2. ループの回数かいすうと条件じょうけんを追おう
  3. ループ内ないで変数へんすうがどう変化へんかするかを追跡ついせき
  4. ループ終了しゅうりょう後ごの変数へんすうの最終さいしゅう値ちを求もとめる

具体ぐたい的てきな値あたい(例れい: 配列はいれつ[3, 1, 4, 1, 5])を入いれて机上きじょう実行じっこう(トレース)するのが確実かくじつ。

5. マークアップ言語まーくあっぷげんご・データ記述きじゅつ

マークアップ言語げんごは「文章ぶんしょうに意味いみを付つける」ための言語げんご。HTML で <h1> とタグを付つけると「これは大だい見出しみだし」と意味いみが明示めいじされます。プログラム言語げんごとの違ちがいは、計算けいさんやロジックを書かかない点てん。データの構造こうぞうを記述きじゅつするのが主おもな用途ようとです。試験しけんでは HTML・XML・JSON・CSV の使つかい分わけが頻出ひんしゅつします。

5.1 マークアップ言語げんご

言語げんご用途ようと特徴とくちょう
HTMLWeb ページの構造こうぞう記述きじゅつブラウザが解釈かいしゃくして表示ひょうじ
CSSWeb の見みた目めを装飾そうしょく正確せいかくにはマークアップではないが関連かんれん技術ぎじゅつ
XML汎用はんようデータ記述きじゅつ厳密げんみつな構造こうぞう、業務ぎょうむシステムで採用さいよう
Markdown軽量けいりょうマークアップ(GitHub・ドキュメント用よう)可読性かとくせいが高たかい
SGMLHTML・XML の共通祖先きょうつうそせん(1986 年ねん ISO 標準ひょうじゅん)現代げんだいでは直接ちょくせつ使つかわない

5.2 データ形式けいしき

プログラム間かんでデータを受うけ渡わたすためのフォーマット。Web API(Web サービス間かんの通信つうしん)では JSON が事実じじつ上じょうの標準ひょうじゅん。設定せっていファイルには YAML、表ひょう計算けいさんとの連携れんけいには CSV、業務ぎょうむシステム間かんでは XML が使つかわれます。

形式けいしき特徴とくちょう用途ようと
JSON(JavaScript Object Notation)軽量けいりょうで Web API の標準ひょうじゅんREST API、NoSQL、アプリ設定せってい
XMLタグ構造こうぞうで複雑ふくざつなデータを表現ひょうげん可能かのうSOAP API、業務ぎょうむシステム連携れんけい
YAML設定せっていファイルで人間にんげん可読性かとくせい重視じゅうしDocker Compose、Kubernetes、CI/CD 設定せってい
CSVカンマ区切くぎり。表おもて計算けいさんで扱あつかいやすいExcel 連携れんけい、ログ、データエクスポート

頻出ひんしゅつ: Web API = JSON、表ひょう計算けいさん連携れんけい = CSV、設定せっていファイル = YAML、業務ぎょうむシステム連携れんけい = XML の対応たいおうを覚おぼえる。特とくに JSON の軽量けいりょうさと XML の厳密げんみつさの比較ひかくが頻出ひんしゅつ。

5.3 JSON の例

{
  "name": "山田太郎",
  "age": 30,
  "hobbies": ["読書", "プログラミング"]
}

5.4 HTML の基本きほん構造こうぞう

<!DOCTYPE html>
<html>
  <head>
    <title>ページタイトル</title>
  </head>
  <body>
    <h1>見出し</h1>
    <p>段落テキスト</p>
  </body>
</html>

📋 章しょう末まつまとめ

最さい重要じゅうようポイント 10 連発れんぱつ

  1. スタック(LIFO)とキュー(FIFO) — 取とり出だす順序じゅんじょが逆ぎゃく
  2. 二に分ふん探索たんさくは O(log n) — ソート済ずみデータが前提ぜんてい
  3. バブルソートは O(n²)、クイックソートは平均へいきん O(n log n)
  4. 再帰さいき — 自分じぶん自身じしんを呼よぶ構造こうぞう
  5. オーダー記法きほう — 処理しょり時間じかんの増加ぞうか率りつ
  6. コンパイラ vs インタプリタ — 一括いっかつ変換へんかん vs 逐次ちくじ解釈かいしゃく
  7. スクリプト言語げんご — Python・JavaScript・PHP
  8. 擬似ぎじ言語げんごの読解どっかい — 変数へんすうをトレースして追おう
  9. HTML・CSS・JavaScript — Web 三種さんしゅの神器じんぎ
  10. JSON は Web API の標準ひょうじゅん

出題しゅつだい傾向けいこうのコツ

  • 擬似ぎじ言語げんご問題もんだいは机上きじょう実行じっこう(トレース)で解とく
  • ソート・探索たんさくの計算けいさん量りょうは覚おぼえる必須ひっす項目こうもく
  • データ構造こうぞうは「何なにを先さきに取とり出だすか」を問とう形かたちで出でる
この教材きょうざいは役やくに立たちましたか?

この章しょうの練れん習しゅう

ほかの分ぶん野やの練れん習しゅうもチェック

一いち問もん一いっ答とう

情報セキュリティ 一問一答

IT パスポート試験で最重要の情報セキュリティ分野から 20 問を厳選。CIA 3 要素から攻撃手法、暗号・認証、対策技術まで体系的に確認できます。

一いち問もん一いっ答とう

コンピュータシステム 一問一答

IT パスポート試験のテクノロジ系頻出テーマから 20 問を厳選。CPU/メモリから仮想化・クラウド・RAID・稼働率計算まで、ハードウェアとシステム構成の基礎を体系的に確認。

一いち問もん一いっ答とう

データベース 一問一答

IT パスポート試験のデータベース分野から 20 問を厳選。主キー/外部キー/正規化/SQL(SELECT・WHERE・JOIN)/ACID/索引まで体系的に確認。

一いち問もん一いっ答とう

ネットワーク 一問一答

IT パスポート試験のネットワーク分野から 20 問を厳選。LAN/WAN・Wi-Fi セキュリティ・TCP/IP・IP アドレス・DNS・HTTP/HTTPS・IoT 通信まで体系的に確認。

一いち問もん一いっ答とう

企業と法務 一問一答

IT パスポート試験のストラテジ系の基礎「企業と法務」から 20 問を厳選。経営組織・OR/IE・会計財務・知的財産権・労働関連法規まで体系的に確認。

一いち問もん一いっ答とう

経営戦略 一問一答

IT パスポート試験の頻出分野「経営戦略」から 20 問を厳選。経営分析フレームワーク・マーケティング・経営管理システム・技術戦略・ビジネスインダストリまで体系的に確認。

一いち問もん一いっ答とう

システム戦略と企画 一問一答

IT パスポート試験のストラテジ系「システム戦略と企画」から 20 問を厳選。情報システム戦略・業務プロセス改革・クラウドサービス・システム企画調達まで体系的に確認。

一いち問もん一いっ答とう

開発技術 一問一答

IT パスポート試験のマネジメント系「開発技術」から 20 問を厳選。開発プロセス・設計・テスト手法・アジャイル/スクラム・構成管理・UX デザインまで体系的に確認。

一いち問もん一いっ答とう

プロジェクトマネジメント 一問一答

IT パスポート試験のマネジメント系「プロジェクトマネジメント」から 20 問を厳選。PMBOK の 10 知識エリア・WBS・スケジュール管理・コスト見積り・リスク管理まで体系的に確認。

一いち問もん一いっ答とう

サービスマネジメントとシステム監査 一問一答

IT パスポート試験のマネジメント系「サービスマネジメントとシステム監査」から 20 問を厳選。ITIL・SLA/SLM・主要プロセス・サービスデスク・J-SOX・COSO まで体系的に確認。

一いち問もん一いっ答とう

基礎理論 一問一答

IT パスポート試験のテクノロジ系「基礎理論」から 20 問を厳選。2 進数変換・AND/OR/XOR・確率計算・文字コード・誤差・機械学習 3 分類まで確認。

一いち問もん一いっ答とう

ソフトウェア 一問一答

IT パスポート試験のテクノロジ系「ソフトウェア」から 20 問を厳選。OS 機能・プロセス/スレッド・圧縮形式・表計算関数・OSS ライセンスまで確認。

一いち問もん一いっ答とう

情報デザインとメディア 一問一答

IT パスポート試験のテクノロジ系「情報デザインとメディア」から 20 問を厳選。LATCH・UX・アクセシビリティ・RGB/CMYK・JPEG/PNG・MPEG・VR/AR まで確認。

問もん題だい集しゅう

IT パスポート 本試験形式 100 問

IT パスポート試験の全 14 章から出題する本試験準拠の総合問題集 100 問。ストラテジ 32 / マネジメント 18 / テクノロジ 50 の分野別配分・120 分で、実試験と同じスケールの実戦演習が可能。