【変数から段階的に学習 第3回】
変数から段階的に学習:第1回|第2回|第3回(今ここ)|[目次へ]
第1回・第2回の復習
第1回・第2回で、プログラムの動き方(実行の仕組み)を学びました。今回は、プログラムが扱うデータの持ち方の進化を見ていきます。
プログラムは「情報整理」の歴史
プログラミングを学んでいると
- 変数
- 配列
- クラス
- List
など、色々なものが出てきます。
一見すると「なぜこんなに増えていくの?」と思うかもしれません。
実はこれは情報を整理する方法の進化なのです。
例として生徒名簿を作ってみましょう。
1 変数で作る
基礎で習うのは変数です。
string student1Name = "山田";
string student2Name = "佐々木";表示してみます。
Console.WriteLine(student1Name);実行結果
山田できました。
しかし問題がある
生徒が増えるとこうなります。
student1Name
student2Name
student3Name
student4Nameさらに
student1Hobby
student2Hobby
student3Hobbyなどが増えていきます。
これは少し扱いづらいですね。
2 配列
そこで登場するのが配列です。
string[] studentsName = { "山田", "佐々木" };
string[] studentsHobby = { "ハイキング", "映画" };表示します。
Console.WriteLine(studentsName[0]);
Console.WriteLine(studentsHobby[0]);実行結果
山田
ハイキングすっきりしました。
しかし配列にも問題がある
例えばこうするとどうでしょう。
string[] studentsName = { "山田", "佐々木" };
string[] studentsHobby = { "映画", "ハイキング" };表示すると
山田
映画になってしまいます。
山田さんの趣味が変わってしまいました。
これは名前の配列と趣味の配列が別々に管理されているためです。
人間の整理方法
人間ならこうします。
山田
└ 趣味:ハイキング
佐々木
└ 趣味:映画つまり1人の情報をまとめるのです。
3 クラス
これを実現するのがクラスです。
class Student
{
public string Name;
public string Hobby;
}これは生徒の設計図です。
生徒を作る
Student student1 = new Student();
student1.Name = "山田";
student1.Hobby = "ハイキング";イメージ
student1
名前:山田
趣味:ハイキング表示する
Console.WriteLine(student1.Name);
Console.WriteLine(student1.Hobby);実行結果
山田
ハイキングしかしまだ問題がある
生徒が増えるとこうなります。
student1
student2
student3
student4また管理が大変です。
クラスは「型」の一種
ここで大切な考え方があります。
int や string は「型」です。クラスで作った Student も、同じように型の一種です。
| 型 | 並べたもの |
|---|---|
| int | int[](int の配列) |
| string | string[](string の配列) |
| Student | List<Student>(Student の並び) |
配列のときは string を並べました。今度は Student を並べるのです。
Student という型(設計図)
↓
student1, student2, student3... と1つずつ作る
↓
それらを「並べてまとめる」入れ物 = List<Student>4 List
そこで登場するのがListです。
List<Student> students = new List<Student>();生徒を追加します。
students.Add(student1);イメージ
students
[0] 山田
[1] 佐々木表示する
Console.WriteLine(students[0].Name);
Console.WriteLine(students[0].Hobby);プログラムの進化
ここまでの流れはこうです。
変数
↓
配列
↓
クラス
↓
Listすべて情報整理の方法です。
実際のシステムでは?
実際のシステムではさらに進みます。
変数
↓
配列
↓
クラス
↓
List
↓
データベース例えば
- 学校の名簿
- 銀行口座
- ネットショップ
などは、すべてこの仕組みの延長です。
プログラミングは難しい?
実はプログラミングは難しい計算の世界ではありません。
多くの場合は情報を整理する技術です。