LoginSignup
0
2

More than 5 years have passed since last update.

forとforeachとwhereのこと

Posted at

forとforeachとwhereのこと

最初にプログラムを作り始めたのは、9年前。
まず苦手だったのが、繰り返し処理だった。
そもそも日常生活には繰り返し処理というのがあまりない。
毎日ご飯を食べるのは、繰り返し処理のひとつだけど、タームが長く毎回違うことなので、繰り返し的な要素が少ない。
幼稚園なんかで「はーい集まって~、おやつあげるね~、はい、はい」って配るのは繰り返し処理だと思うけれど、日常的にはそういうことは少ない。大人数を集めるなんて機会はほとんどない。イベントの受付をする機会もまずないし。
そんなわけで、そもそも繰り返し処理という考え方になじまなかった。
それでも、そういうものだと思うと、foreachでめいめいに処理する、というのは、比較的すんなり入ってきた。

for

その次の壁がforだった。foreachでは「みんなひとつずつね」という処理で、みんなもひとつずつも匿名的ないい方で済むのだが、forだと全部をカウントする必要がある。
このforのカウントが0からスタートするのか1からスタートするのか、それはもうまったくそれぞれ別個なので、そのたびに考えなければならない。まあ使い慣れてくると、細かく指定できるようになるので、それはそれで役にたつと思うけれども。たとえば25からスタートして、43までとかをカウントするのには、たしかに便利ではある。
でも、スタートもわからないし、エンドもわかりにくい。<を使うか<=を使うかでエンドが変わるわけで。<ならend-1、<=ならendでよい。見た目的には、-1しなくてよい<=endのほうがずっと好みだけれど、forの例文で<=を使うことはまれのようでぜんぜん少ない。
数学は数IIIまでとっていたので、まあそれほど苦手ではないと思うけれど、それにしても-1はないほうがわかりやすいと思う。
増えるのもむずかしい。++って田んぼみたいで。1ずつ増えるときには使うけど、2ずつ増えるときには使えないのかどうなのか。そのあたりもよくわからない。結局2ずつ増えるときにはどうしたらよいかまだ知らない。

where

そうこうしていると、.Whereがいいと聞いた。
Whereはifなので、「どこ」を連想しているうちには、ぜんぜんちんぷんかんぷんだった。
でも、たぶん100回くらい見ているうちに、使い慣れてきた。今日なんて、すらっと.Where( => )とか書いていて、おお自分すごい、みたいな気持ちになった。たぶんWhereで「どこ」を連想するのではなくて、Whereは関係代名詞的な条件だよと連想するようになったので、使えるようになったのだと思う。
これで、foreachとforとwhereを使えるようになった。

0
2
7

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2