Week 2: データ構造の基礎¶
1. 変数とデータ型¶
1.1 変数の概念¶
変数は、プログラム内でデータを格納し、操作するための名前付きの記憶領域です。
例(Python):
1.2 基本的なデータ型¶
-
整数型(Integer): 全ての整数 例: -3, 0, 42
-
浮動小数点型(Float): 小数を含む数値 例: 3.14, -0.001, 2.0
-
文字列型(String): テキストデータ 例: "Hello, World!", 'Python'
-
ブール型(Boolean): 真偽値 例: True, False
-
None型(Python特有): 値が存在しないことを示す 例: None
基本的なデータ型の表¶
| データ型 | 例 | メモリサイズ | 説明 |
|---|---|---|---|
| 整数型(Integer) | -3, 0, 42 | 通常4バイト | 全ての整数 |
| 浮動小数点型(Float) | 3.14, -0.001, 2.0 | 通常8バイト | 小数を含む数値 |
| 文字列型(String) | "Hello, World!", 'Python' | 可変(1文字あたり1〜4バイト) | テキストデータ |
| ブール型(Boolean) | True, False | 1バイト | 真偽値 |
| None型(Python特有) | None | 0バイト | 値が存在しないことを示す |
補足説明¶
- 整数型:コンピュータのアーキテクチャによっては8バイトの場合もあります。
- 浮動小数点型:精度の違いにより、4バイト(単精度)の場合もあります。
- 文字列型:使用される文字エンコーディング(UTF-8, UTF-16など)によってサイズが変わります。
- ブール型:言語や実装によっては1ビットで表現される場合もありますが、多くの場合1バイト使用します。
- None型:Pythonの特殊な型で、他の言語ではnullやNULLとして知られることもあります。
1.3 型変換¶
データ型間の変換を行う操作。
例(Python):
2. 配列とリスト¶
2.1 配列¶
固定長の同じデータ型の要素の集合。
特徴:
- サイズが固定
- 連続したメモリ領域に格納
- インデックスによる高速アクセス
例(C言語):
2.2 リスト¶
可変長の要素の集合。多くの高級言語で使用される。
特徴:
- サイズが可変
- 異なるデータ型の要素を格納可能(言語による)
- 動的なメモリ割り当て
例(Python):
2.3 配列とリストの操作¶
- 要素の追加、削除
- 要素へのアクセス
- 要素の検索
- リストのソート
例(Python):
3. スタックとキュー¶
3.1 スタック¶
後入れ先出し(LIFO: Last In, First Out)のデータ構造。
主な操作:
- push: 要素を追加
- pop: 最後に追加された要素を取り出す
例(Python でのスタックの実装):
3.2 キュー¶
先入れ先出し(FIFO: First In, First Out)のデータ構造。
主な操作:
- enqueue: 要素を追加
- dequeue: 最初に追加された要素を取り出す
例(Python でのキューの実装):
4. 実践演習¶
4.1 リスト操作の演習¶
タスク: 以下の操作を行うPythonプログラムを作成してください。
- 空のリストを作成
- リストに数字を5つ追加
- リストの3番目の要素を出力
- リストを逆順にソート
- リストの最初の要素を削除
- 現在のリストを出力
4.2 スタックを使用した演習¶
タスク: スタックを使用して、括弧のバランスをチェックするプログラムを作成してください。 入力文字列に含まれる括弧 '(', ')', '{', '}', '[', ']' のバランスが取れているかを確認します。
例:
- "((()))" → バランスが取れている
- "({[]})" → バランスが取れている
- "({[}])" → バランスが取れていない
4.3 キューを使用した演習¶
タスク: キューを使用して、印刷ジョブのシミュレーターを作成してください。
- ユーザーから印刷ジョブ(文書名)を入力として受け取る
- ジョブをキューに追加
- 定期的に(例: 3秒ごとに)キューから1つのジョブを取り出し、「印刷中」と表示
- キューが空になるまで続ける
5. まとめと次週への橋渡し¶
Week 2では、プログラミングの基礎となる重要なデータ構造について学びました。変数とデータ型の概念、配列とリスト、スタックとキューの特性と使用方法を理解することで、より効率的なプログラムを設計し実装する基礎が身につきました。
次週(Week 3)では、これらのデータ構造を活用した基本的なアルゴリズムについて学びます。探索アルゴリズム(線形探索、二分探索)やソートアルゴリズム(バブルソート、選択ソート、挿入ソート)、そして再帰の概念を学ぶことで、より複雑な問題解決に取り組む準備を整えます。
準備として、今週学んだデータ構造を使ったプログラムを自分で書いてみると良いでしょう。特に、リスト操作やスタック、キューの基本的な実装を復習しておくことをお勧めします。