99%知らない!プログラミングの繰り返しで条件分岐が必要な理由

あなたは、繰り返す動作が好きですか?

そして繰り返しの動作を無限に続けることはできますか?

 

もし、人間が同じ動作を繰り返すと、間違えたり、飽きたり、文句を言ったりするでしょう。

しかし、コンピューターにやらせたらどうでしょうか?

 

プログラミングを学習していると必ず繰り返しと条件分岐という言葉が出てきます。

それぞれの言葉の意味自体は理解できていると思います。

 

繰り返しは、同じ処理を何度も行うことでしょ

条件分岐は、条件を満たす場合と満たさない場合とで処理を分けることだよね

 

では、繰り返しに使われる条件分岐とは?と問われるとどうでしょう?

 

無限ループを避けるために、条件式により繰り返しを終了する判断をおこなうよ

 

理解できているプログラマーにしてみたら、特別に取り上げるテーマではないかもしれません。

しかし、プログラミングをはじめたばかりの人や、理解が浅い人にとってはつまずくポイントでもあります。

 

まず今回は、プログラミングに必ず必要になる繰り返し処理による条件分岐をフローチャートを使って説明していきます。

 

その次に、プログラミング言語で繰り返し構文の書き方を確認していきます。

どの言語も書き方は似ているので他の言語を学んでいる方でも参考になります。

 

また、繰り返し構文は3つのタイプがあることを頭に入れておきましょう。

 

そして最後に、「コンピューター」という言葉の歴史からみる、繰り返し処理のメリットを紹介します。

 

この記事を読めば、

繰り返しによる無限ループを避けるための条件分岐についての理解が深まります。

 

 

繰り返しの中にも「条件分岐」が存在します!

これから自動で動く車型のロボットをプログラミングしようと思います。

 

状況設定
  • 50m先に階段がある
  • 直進して階段から落ちることなく右へ90度曲がるプログラムを組む

どのようなプログラムになるでしょうか?

 

処理をフローチャートにしてみる

プログラムを組むことに慣れていない人は、紙とペンを用意しましょう。

フローチャートで処理の流れを可視化することで頭の中が整理されます。

 

 

「フローチャート」の書き方についての記事はこちら!

 

 

今回はロボットが10mずつ進む設定になっています。

10m進むを4回繰り返すことにします。

 

どの処理が繰り返されているのかを見極める

10m進むを1回目、2回目と繰り返す処理に変えます。

 

今回は10m進む処理を4回繰り返す処理に着目します。

 

たとえば、1回目に10m進む処理を行ったあと、2回目は回数を表す変数iを2に変化させます。

そのためには、i+1→iという回数を更新する処理を加えます。

 

繰り返し回数を表す変数iの変化のようす
1回目:1→i 変数の初期化
2回目:i+1→i 1回目のiに1が代入されるため1+1→iは2となる
3回目:i+1→i 2回目のあとはiに2が代入されているため2+1→iは3となる

繰り返し処理には必ず終了を示す条件分岐を設定する

今回は、5回目の繰り返しに入る前にi<5の条件を設けています。

 

この条件式がfalseになれば、繰り返しを抜けることができます。

 

もし仮に50m先に階段がなく、道が続いていれば終了の条件はいらないのでしょうか?

プログラムには、開始があれば必ず終了があります。

 

そうでなければ、無限ループになってしまいます。

この状態のプログラムは強制的に終了しなければなりません。

 

今回のフローチャートをプログラミング言語で表現するには、どうすればいいの?

繰り返しで使う2つの構文

プログラムの流れを理解したところで、プログラミング言語を使って繰り返しの表現を覚えます。

 

以下で、フローチャートの形とfor文を対比しながら見ていきましょう。

 

繰り返しはまずfor文を覚えよう!

for文は、初期化、条件、更新の3つの式を1つにまとめてカッコで囲います。

 

条件を満たしている場合はtrueとして判断され、繰り返し実行されます。

 

初期化:条件式で使用する変数の初期値を代入します。

更新 :ループ毎に変化する変数を管理します。

 

変化する変数の書き方
i += 1: i = i + 1(インクリメンタル)と同じ意味で使用されます。
i -= 1: i = i - 1(デクリメンタル)と同じ意味

for文はwhile文でも書ける

今回のフローチャートの形と同じようにwhile文としてプログラムを書くこともできます。

 

今回の書き方の例ではJava言語ですが、その他の言語の書き方も似ています。

 

初期化; while (条件式) {  処理;  更新;

 

 

for文で書くと必要な条件式がカッコ内でまとまっていて、プログラムが見やすいね。
可読(かどく)性が良いともいうよ

繰り返しには3つのタイプがある

ほぼすべてのプログラミング言語に、3つのタイプの繰り返しの命令文が用意されています。

 

指定した回数だけ繰り返す

繰り返しを回数で管理します。 for文やwhile文で見たように

 

1.変数の初期化
2.繰り返す回数の条件式
3.繰り返す内容を処理
4.繰り返す回数の変数を更新

 

指定した回数の条件式の判断により、繰り返しを終了します。

 

条件で繰り返す

繰り返しの回数は決まっていない。

ある条件を満たした場合に繰り返し処理を止めたい。

 

言い方を変えると、ある条件が成立している(または成立していない)間は、繰り返す処理を行う。

 

繰り返している間は、条件を常に確認しながら処理を行っている。

条件で繰り返す処理には、細かく分けるとさらに2つのタイプに分けることができる。

 

前判定型の繰り返し
・繰り返し処理の前に条件を設定する
・条件を満たさなければ1回も繰り返されない
後判定型の繰り返し
・一度は繰り返しの処理を行い、引き続き繰り返すかの条件を設定する

集合で繰り返す

データを集合で扱い、集合の中にデータが存在する分だけ処理を繰り返す。

 

集合の中のデータを1つずつ順番に取り出して、変数の中に繰り返し格納するといった処理を行う。

Pythonで用いるfor文はこのタイプになります。

 

集合としているデータの数だけ処理を繰り返すため、繰り返しの回数を指定する必要がありません。

 

 

「コンピューター」の歴史は、計算の自動化にある

「コンピューター」という言葉は、もともと手で計算する人のことを指していました。

 

現在では、計算機といった電子機器やExcelといったソフトウェアが「コンピューター」としてその役割を担っています。

 

「コンピューター」は高速で、しかも正確に反復計算することが得意です。

プログラムによる繰り返し処理は、「コンピューター」において得意な動作です。

 

これが例えば、人間が繰り返しの作業を行うと、

 

人間に同じ作業を何度もやらせてみると
  • 間違う可能性がある
  • 飽きてしまう
  • そのうち文句を言う
  • 疲れてしまう
  • ちゃんと出来たかチェックする人も大変
「コンピューター」に得意なことをやらせると、
コンピューターに同じ作業をやらせる
  • 間違うことはない
  • 何千、何万回でも同じことを繰り返す
  • 文句一つも言わない
  • 高速で正しく処理する

以上のことから、プログラミングで繰り返しを覚えて「コンピューター」に得意なことをやらせよう!

という発想になるのである。

 

 

面倒なことや単調な動作の繰り返しは「コンピューター」にプロブラムを組んでやってもらうことが、人間にとっては便利で都合がいいよ

まとめ

無限ループを避け、繰り返し処理を確実に使えるようにするためには、

 

  1. フローチャートを描いて繰り返される部分を見極める
  2. 繰り返しには必ず終わりの条件を設ける(無限ループを避けるため)
  3. プログラムの可読性を上げるためにも、繰り返し構文はまずfor文を覚える
おすすめの記事