アルゴリズム入門2:データ構造
上から下へ、全 52 枚そのまま並べています。
発表モードで開くアルゴリズム入門2:データ構造
目次
前回の復習
前回学んだこと
アルゴリズム入門1のポイントを振り返りましょう。
今日のテーマ:データの「入れ物」
アルゴリズムが「手順」なら、データ構造は「データの整理のしかた」。どんな入れ物を選ぶかで、処理の効率が大きく変わります。
- データ構造 = データを効率的に保管・取り出す仕組み
- 同じデータでも入れ物が違えば、得意な操作が違う
- まずは「データの種類」を知ってから、「入れ物」の話へ進みます
変数とデータ型
変数とは
プログラミングで最初に出会う、もっとも基本的な概念です。
変数を日常で例えると
「ラベル付きの箱」をイメージしましょう。ラベルが変数名、中身がデータです。
3つの基本データ型
変数に入れるデータには「型(タイプ)」があります。まずはこの3つを覚えましょう。
数値 vs 文字列 ― 見た目は似てるけど違う
「100」と 100 は別物です。型が違うと計算結果も変わります。
データ型の使い分け
どんなときにどの型を使うか、イメージをつかみましょう。
データ型クイズ
データ型クイズ:答え
変数 + データ型 → データ構造へ
変数は「1つのデータ」を入れる箱でした。でも、たくさんのデータをまとめて扱いたいときは?そこで登場するのが「データ構造」です。
- 変数 = 1つのデータを入れる箱
- データ型 = 箱の中身の種類(数値・文字列・真偽値)
- データ構造 = 複数の箱をまとめて整理する方法
- ここから先は「データの並べ方」を学んでいきます
型変換 ― 型を変えるには?
型が違うとエラーになることがあります。そのときは「型変換」で型を揃えましょう。
型エラーはこうして起きる
配列(Array)
配列とは
もっとも基本的なデータ構造。データを番号付きで一列に並べて保管します。
配列を靴箱でイメージしよう
学校の靴箱と同じ仕組みです。番号が分かれば、すぐに自分の靴が取り出せます。
配列の基本操作
配列でよく使う操作と、その特徴を確認しましょう。
配列の途中に挿入すると?
配列の身近な例
配列は日常のあちこちに隠れています。
配列 × ループ ― 全部を順番に処理する
配列とループを組み合わせると、全要素をまとめて処理できます。これがプログラミングの真骨頂!
- 配列の要素を1つずつ取り出して処理するのが「ループ」
- for文を使うと配列の長さに関わらず全部処理できる
- 手動で1つずつ書く必要がない
ループなし vs ループあり
配列クイズ
配列クイズ:答え
スタック(Stack)
スタックとは
名前の通り「積み重ねる」データ構造。お皿を積むイメージです。
スタックの身近な例
「最後に入れたものから取り出す」場面は、意外とたくさんあります。
push と pop の流れ
スタックの操作はとてもシンプル。pushで上に積み、popで上から取るだけです。
スタックの push / pop フロー
pushは上に積む、popは上から取る。スタックの操作はこの2つだけです。
スタックが使われている場面
スタックはプログラムの中で大活躍しています。身近な機能の裏側で動いています。
スタッククイズ
スタッククイズ:答え
キュー(Queue)
キューとは
「行列」を英語にすると Queue。まさにそのまま行列の仕組みです。
キューの身近な例
先着順で処理するものは、すべてキューです。
enqueue と dequeue の流れ
キューの操作を順番に追ってみましょう。後ろに並んで、前から出ていきます。
スタック vs キュー
どちらもデータを出し入れする構造ですが、「どちら側から出すか」が正反対です。
キューが使われている場面
コンピュータの裏側でも、キューはたくさん使われています。
キュークイズ
キュークイズ:答え
まとめ & 演習
3つのデータ構造を比較
配列・スタック・キュー、それぞれの特徴を一覧で整理しましょう。
操作の速さくらべ
それぞれのデータ構造が「得意な操作」と「苦手な操作」を比べてみましょう。数字は速さのイメージ(高いほど速い)。
どのデータ構造を使う?
場面に応じてデータ構造を選ぶ判断フローです。
演習:どのデータ構造?
次の場面ではどのデータ構造がぴったりか、考えてみましょう。
演習の答え合わせ
それぞれの場面にぴったりなデータ構造はこちらです。
- 問題1:配列(Array) ― 番号でアクセスするなら配列が最適
- 問題2:スタック(Stack) ― 「最後に見たページ」から戻るのはLIFO
- 問題3:キュー(Queue) ― 先着順で処理するのはFIFO
- データの「使い方」に合わせて構造を選ぶことが大切
演習2:コードを読んでみよう
次のコードを見て、何をしているか考えてみましょう。
演習2:答え合わせ
それぞれの出力を確認しましょう。なぜそうなるかを説明できればOKです。
今日のまとめ
今日学んだ3つのデータ構造を振り返りましょう。
- 配列 = 番号付きロッカー。インデックスで高速アクセスできる
- スタック = お皿の山。LIFO方式で、pushとpopで操作する
- キュー = レジの行列。FIFO方式で、enqueueとdequeueで操作する
- 場面に応じて使い分けることで、効率的なプログラムが書ける
- 次回はさらに高度なデータ構造(リスト・ツリー・ハッシュ)を学びます
良いプログラマはコードを書く。偉大なプログラマはデータ構造を選ぶ。