リスト構造と繰り返し制御を3分で説明してみる。

http://d.hatena.ne.jp/clock9/20081203/1228270475の関連で、プログラム初心者に「繰り返し制御」を説明してみるテスト。

ちなみに、データ構造としては繰り返し制御の理解のためのリスト構造と、条件分岐制御の理解のためTrue/Falseを押さえれば、bitやらByteやら木やらは不要だと思います。文字と数値と日付の違いは、どのAPIを呼ぶかくらいしか違わないもんね。

リスト構造と繰り返し制御

リストとはデータの集まりのことで、例えば「0,1,2,3」もリストだし、「あ〜ちゃんかしゆか、のっち」もリストです。

LinkedListや配列、Mapやらハッシュテーブルやら言葉がいっぱい出てくるけど、これらはリストを読む方法が違う(「0番目」「1番目」と順番で呼ぶのが配列、「あれ」「これ」と名前で呼ぶのがハッシュテーブル)のと、内部管理方法が違うだけで、とりあえず区別する必要はありません。

で、このリストに対してなんかの処理をするのが繰り返し処理です。繰り返し処理はリストの内容に対する処理しかないと思っていれば十分です。

例えば、Perfumeのメンバーの誕生日を知りたい(表示したい)と思った場合。Perfumeのメンバーに対して、それぞれ誕生日を表示するようにしてみます。

Perfume.each do |member|
  puts member.birthday #「puts 何々」は、画面に表示させる命令
end

下のように3行で書いても、同じく動作します。

print Perfume.あ〜ちゃん.birthday
print Perfume.かしゆか.birthday
print Perfume.のっち.birthday

ただ、もしPerfumeの新しいメンバーとして「かっちゃん」が加入したっていうニュースが流れたら、1行追加しなきゃいけません。

print Perfume.あ〜ちゃん.birthday
print Perfume.かしゆか.birthday
print Perfume.のっち.birthday
print Perfume.かっちゃん.birthday

これは3行とか4行だから楽だけど、Perfumeのメンバーが100人くらいいて1か月に2〜3回変わるとしたら、繰り返し制御で処理を書いた方がよっぽど楽になるわけです。

言語によっては繰り返し制御の構文として「for文」「while文」「do〜until文」とかがあるけど、繰り返しの終了条件の書き方位しか違いはありません。

ここまで、何かご質問はありますか?(で、3分。)