
あなたは、繰り返す動作が好きですか?
そして繰り返しの動作を無限に続けることはできますか?
もし、人間が同じ動作を繰り返すと、間違えたり、飽きたり、文句を言ったりするでしょう。
しかし、コンピューターにやらせたらどうでしょうか?
プログラミングを学習していると必ず繰り返しと条件分岐という言葉が出てきます。
それぞれの言葉の意味自体は理解できていると思います。
では、繰り返しに使われる条件分岐とは?と問われるとどうでしょう?
理解できているプログラマーにしてみたら、特別に取り上げるテーマではないかもしれません。
しかし、プログラミングをはじめたばかりの人や、理解が浅い人にとってはつまずくポイントでもあります。
まず今回は、プログラミングに必ず必要になる繰り返し処理による条件分岐をフローチャートを使って説明していきます。
その次に、プログラミング言語で繰り返し構文の書き方を確認していきます。
どの言語も書き方は似ているので他の言語を学んでいる方でも参考になります。
また、繰り返し構文は3つのタイプがあることを頭に入れておきましょう。
そして最後に、「コンピューター」という言葉の歴史からみる、繰り返し処理のメリットを紹介します。
この記事を読めば、
繰り返しによる無限ループを避けるための条件分岐についての理解が深まります。
目次
繰り返しの中にも「条件分岐」が存在します!
これから自動で動く車型のロボットをプログラミングしようと思います。
- 50m先に階段がある
- 直進して階段から落ちることなく右へ90度曲がるプログラムを組む
どのようなプログラムになるでしょうか?
処理をフローチャートにしてみる
プログラムを組むことに慣れていない人は、紙とペンを用意しましょう。
フローチャートで処理の流れを可視化することで頭の中が整理されます。
「フローチャート」の書き方についての記事はこちら!
今回はロボットが10mずつ進む設定になっています。
10m進むを4回繰り返すことにします。
どの処理が繰り返されているのかを見極める
今回は10m進む処理を4回繰り返す処理に着目します。
たとえば、1回目に10m進む処理を行ったあと、2回目は回数を表す変数iを2に変化させます。
そのためには、i+1→iという回数を更新する処理を加えます。
繰り返し処理には必ず終了を示す条件分岐を設定する
今回は、5回目の繰り返しに入る前にi<5の条件を設けています。
この条件式がfalseになれば、繰り返しを抜けることができます。
もし仮に50m先に階段がなく、道が続いていれば終了の条件はいらないのでしょうか?
プログラムには、開始があれば必ず終了があります。
そうでなければ、無限ループになってしまいます。
この状態のプログラムは強制的に終了しなければなりません。
繰り返しで使う2つの構文
プログラムの流れを理解したところで、プログラミング言語を使って繰り返しの表現を覚えます。
以下で、フローチャートの形とfor文を対比しながら見ていきましょう。
繰り返しはまずfor文を覚えよう!
for文は、初期化、条件、更新の3つの式を1つにまとめてカッコで囲います。
条件を満たしている場合はtrueとして判断され、繰り返し実行されます。
初期化:条件式で使用する変数の初期値を代入します。
更新 :ループ毎に変化する変数を管理します。
for文はwhile文でも書ける
今回のフローチャートの形と同じようにwhile文としてプログラムを書くこともできます。
今回の書き方の例ではJava言語ですが、その他の言語の書き方も似ています。
初期化; while (条件式) { 処理; 更新; }
可読(かどく)性が良いともいうよ
繰り返しには3つのタイプがある
ほぼすべてのプログラミング言語に、3つのタイプの繰り返しの命令文が用意されています。
指定した回数だけ繰り返す
繰り返しを回数で管理します。 for文やwhile文で見たように
指定した回数の条件式の判断により、繰り返しを終了します。
条件で繰り返す
繰り返しの回数は決まっていない。
ある条件を満たした場合に繰り返し処理を止めたい。
言い方を変えると、ある条件が成立している(または成立していない)間は、繰り返す処理を行う。
繰り返している間は、条件を常に確認しながら処理を行っている。
条件で繰り返す処理には、細かく分けるとさらに2つのタイプに分けることができる。
集合で繰り返す
データを集合で扱い、集合の中にデータが存在する分だけ処理を繰り返す。
集合の中のデータを1つずつ順番に取り出して、変数の中に繰り返し格納するといった処理を行う。
Pythonで用いるfor文はこのタイプになります。
集合としているデータの数だけ処理を繰り返すため、繰り返しの回数を指定する必要がありません。
「コンピューター」の歴史は、計算の自動化にある
「コンピューター」という言葉は、もともと手で計算する人のことを指していました。
現在では、計算機といった電子機器やExcelといったソフトウェアが「コンピューター」としてその役割を担っています。
「コンピューター」は高速で、しかも正確に反復計算することが得意です。
プログラムによる繰り返し処理は、「コンピューター」において得意な動作です。
これが例えば、人間が繰り返しの作業を行うと、
- 間違う可能性がある
- 飽きてしまう
- そのうち文句を言う
- 疲れてしまう
- ちゃんと出来たかチェックする人も大変
- 間違うことはない
- 何千、何万回でも同じことを繰り返す
- 文句一つも言わない
- 高速で正しく処理する
以上のことから、プログラミングで繰り返しを覚えて「コンピューター」に得意なことをやらせよう!
という発想になるのである。
まとめ
無限ループを避け、繰り返し処理を確実に使えるようにするためには、
- フローチャートを描いて繰り返される部分を見極める
- 繰り返しには必ず終わりの条件を設ける(無限ループを避けるため)
- プログラムの可読性を上げるためにも、繰り返し構文はまずfor文を覚える