プログラミングの繰り返しの書き方使い方を図解し解説【初心者】

プログラミング基本構文

プログラミングの繰り返しの書き方使い方を図解し解説【初心者】

2020年8月4日

 

プログラミングに出てくる「繰り返し」の理解に苦しんでいます。

「for」や「while」などわかりやすく教えて欲しいな。

具体例とかもあるといい。

 

本記事の内容

  • 繰り返し処理とは
  • 繰り返しの基本構文3つ(書き方や使い方)
  • 無限ループ
  • 繰り返し処理を中断する方法

 

プログラムでは、同じような処理を繰り返すことが多くあります。

その際に使われるのが「繰り返し」処理で「ループ」とも言います。

 

「繰り返し処理」で使われる3つの構文を理解できれば、煩わしい処理でも簡単に実装できます。

この記事では、「繰り返し処理」について具体例や図解しながらわかりやすく解説していきます。

 

「変数」「配列」「if文」などの基礎知識は下記で詳しく解説しています。

 

1.繰り返し処理とは|ループ

1.繰り返し処理とは|ループ

 

まず最初に「繰り返し」を学習するにあたって「繰り返し」の前提知識を解説していきます。

 

「繰り返し」とは、プログラムで同じような処理を繰り返す時に使う制御文のことで「ループ」とも呼ばれます。

 

簡単な例をいえば、次のような処理をしたいときです。

ある月における日々の売上金額を足して合計する

 

どんな記述になってどのようなメリットがあるのか解説していきます。

 

コード量が少なくて済む

コード量が少なくて済む

 

「日々の売上金額を足す」という同じ処理が30回(月間30日分)行われますから、プログラムでは普通「繰り返し」を行って処理させます。

 

以下に「繰り返し」処理での総売上を算出するロジックです。

for ( 繰り返し条件 ){

総売上 += X日の売上金額

}

 

数行ほどのコードで、しかも使う変数も少ないです。

 

しかし、各日の変数(x日の売上金額)をそれぞれ用意するとなると...

総売上金額 = 1日の売上金額+2日の売上金額+...+30日の売上金額

 

という長々としたコードとなってしまい、バグの原因やメンテナンスも大変なのです。

 

次節、「繰り返し」の基本的な構文3つを解説していきます。

 

2.繰り返しの基本構文3つ

2.繰り返しの基本構文3つ

 

ここでは、以下3つの「繰り返し」について解説していきます。

  1. for文
  2. while文
  3. do〜while文

 

順番に解説していきます。

 

1.for文|繰り返す回数が最初からわかっている場合

1.for文|繰り返す回数が最初からわかっている場合

 

「for文」の繰り返し処理は以下の構造で記述します。

for (ループカウンタの初期値; 繰り返し条件 ;ループカウンタの増減値) {

処理

}

 

for文の繰り返し処理は、ループカウンタの仕組みを使って行われるのが特徴です

 

for文の図解

 

マー坊

ループカウンタとは、処理されるたびに数値が1,2,3,4...と増えていく「カウンタ」のようなものとイメージしてください。

 

ではfor文の簡単な具体例とその解説をご紹介します。

 

for文の使い方と解説

以下は、カウンタ値を出力したプログラムです。

 php
for($i=0; $i<3; $i++){//①ループカウンタ
    echo $i."\n"; //②ループカウンタ値を表示する
}

 

上記プログラムを解説します。

ループカウンタの仕様(初期値; 繰り返し条件; カウンタ増減値)をもとに...

①ループカウンタ($i)が繰り返し条件($i<3)に合致するか判定します。

②カウンタ値($i)を表示します。

③①に戻りループカウンタ($i)を1加算し、

・繰り返し条件($i<3)に合致すれば②へ...

・繰り返し条件($i<3)に合致しなければ繰り返し処理を終了する。

 

forの()内に書かれるループカウンタの仕様に基づいて繰り返し処理が行われます。

 

実行結果

0

1

2

 

マー坊

「for文」は、繰り返す回数があらかじめわかっている時に使われる繰り返し処理

だということを押さえておきましょう。

 

以上、「for文」による繰り返しを解説してきました。

では、次節、while文の「繰り返し」を解説していきます。

 

2.while文|繰り返す回数がわかっていない場合

2.while文|繰り返す回数がわかっていない場合

 

「while文」の繰り返し処理は以下の構造で記述します。

while (繰り返し条件) {

処理

}

 

whileの()内に書かれる「繰り返し条件」とは、繰り返し処理を継続するための条件のこと。

条件が満たされる限り、繰り返し処理が続けられます

 

while文図解

 

ではwhile文の簡単な具体例とその解説をご紹介します。

 

while文の使い方と解説①

以下は、前述したfor文と同じカウンタ値を出力したプログラムです。

 php
$count = 0;//①カウンタ初期化
while($count < 3){//②条件を満たす間は繰り返し
    echo $count."\n";//③カウンタを表示する
    $count++;//④カウンタを1加算する
}

 

上記プログラムを解説します。

①カウンタ値($count)をゼロ初期化する。

②whileの条件判定:カウンタ値($count)が3未満の場合は処理実行する。

③カウンタ値($count)を表示する。

④カウンタ値を1加算する。

⑤②に戻り

・繰り返し条件($count < 3)を満たす間は③④を繰り返す。

・繰り返し条件($count < 3)を満たさなければ繰り返し処理終了する。

 

④でカウンタ($count)が3となれば、②に戻ったときに条件を満たさなくなるので「繰り返し」処理は終了です。

 

実行結果

0

1

2

 

繰り返しの終了条件が決まっているなら、for文と同じ動きをしているよね...

 

前述したfor文と異なるところは、カウンタ値($count)をあらかじめ用意し、カウント(加算)するロジックが必要なことです。

ですから、コードの記述量からいえば、for文の方が少なく綺麗になります。

 

マー坊

また、while文の特徴は、繰り返す回数がわかっていない繰り返し処理に対し効果を発揮します。

次節で解説します。

 

繰り返す回数がわかっていない場合の繰り返し処理ができる

while文は、繰り返す回数がわかっていない場合の繰り返し処理が可能です。

 

もう一度「while文」の繰り返し処理の構造を記述し解説します。

while (繰り返し条件) {

処理

}

 

whileの()内に書かれる「条件」は、繰り返し処理を継続するための条件のことでしたよね。

この条件が満たされる限り、繰り返し処理が続けられます

 

これを別の言い方でいうと、true(真)の間は処理を続けるということなのです

trueの逆はfalse(偽)で、falseになれば処理は終了します。

 

以上を前提とし、具体的に「繰り返す回数がわかっていない」場合のwhile文を解説します。

 

while文の使い方と解説②|繰り返す回数がわかっていない場合

以下のコードをみてみましょう。

このプログラムは6月の日付を1日から順番に表示しています。

 php
$julyDay = 1;//①日にちの変数定義
while(checkdate(6, $julyDay, 2020)){//②繰り返し条件
    echo $julyDay."\n";//③日付表示
    $julyDay++;//④日付を加算
}

 

見て欲しいのが、while文の()内の繰り返し条件です。

checkdate()関数を使って、指定された月の日付が妥当かどうかをチェックしtrueかfalseを返すものです。

 

この場合は6月の日付をチェックしています。

$julyDayが1〜30の間であればcheckdate関数はtrueを返します。

ですが、$julyDayが31となった場合にはcheckdate関数はfalseを返します。

となると、whileの()内がfalseとなって処理が終了するのです。

 

マー坊

while文は、繰り返し回数がわかっていない場合に効果を発揮し「true」の間だけ処理が行われます。

 

3.do〜while文|一度だけ処理が行われる

3.do〜while文|一度だけ処理が行われる

 

「do〜while文」の繰り返し処理は以下の構造で記述します。

do {

処理

} while (繰り返し条件)

 

結論をいうと、do{}がwhileよりも前につくことで、1回だけは確実に処理が行われるということです

2回目以降はwhile()の中の繰り返し条件を満たす(trueの)間は処理が繰り返されます。

 

do-while図解

 

ではdo〜while文の簡単な具体例とその解説をご紹介します。

 

do〜while文の使い方と解説

以下は、前述したwhile文と同じカウンタ値を出力したプログラムです。

 php
$count = 0;//①カウンタ初期化
do{
    echo $count."\n";  //②カウンタを表示する
    $count =++;  //③カウンタを1加算する
}while($count < 3)  //④条件を満たす(trueの)間はdo{}内の処理を繰り返す

 

上記プログラムを解説します。

①カウンタ値($count)をゼロ初期化する。

②カウンタ値($count)を表示する。

③カウンタ値を1加算する。

④whileの条件判定:

・カウンタ値($count)が3未満の場合は②③を実行する。

・カウンタ値($count)が3以上の場合は繰り返し処理を終了する。

 

実行結果

0

1

2

 

while文と同じ結果が得られましたよね。

これではおもしろくないので、while文との違いをこれから解説します。

 

whileとdo〜whileの違い

以下2つのプログラムとその実行結果を見て欲しいです。

プログラムは、初期値が-2のカウンタを減算しその値を表示するものです。

 

まず、while文のプログラムと実行結果は以下のとおり

 PHP:while文
$count = -2;//①カウンタ初期化
while($count > 0){
    echo $count."\n";//②カウンタを表示する
    $count-=2;//③カウンタを2減算する
}

 

実行結果

なし

 

次に、do〜while文のプログラムと実行結果は以下のとおり

 PHP:do〜while文
$count = -2;//①カウンタ初期化
do{
    echo $count."\n";//②カウンタを表示する
    $count-=2;//③カウンタを2減算する
}while($count > 0);//②条件を満たす(trueの)間はdo{}内の処理を繰り返す

 

実行結果

-2

 

カウンタの初期値が-2に対し、while文では最初に条件を判定します。

そのため、カウンタ値が正の数ではない(-2)ので処理は行われません。

 

しかし、do〜whileでは、条件判定が処理の後に行われるため、初期値の-2が必ず表示されています

 

マー坊

while文とdo〜while文の違いは「繰り返し条件の判定が先か後か」というところです。

必ず1回は処理実行させたい場合は、do〜while文を使いましょう。

 

3.無限ループに注意

3.無限ループに注意

 

while文などの繰り返し処理は、「繰り返し条件」が成立(true)している間は繰り返し処理を行います。

 

なので、「繰り返し条件」が不成立(false)となるようなロジックをきちんと書いておかなければなりません。

でないと、いつまでも処理が終わらない「無限ループ」となり、プログラムに負荷を掛けてしまいます。

 

無限ループの例

例えば以下の無限ループとなるプログラムを見てみましょう。

結論として、0,1,2,3,4.....と無限にカウンタが表示され続けてしまいます。

 

 PHP
$count = 0;//①カウンタ初期化
while($count < 3){//②条件を満たす間は繰り返し
    echo $count."\n";//③カウンタを表示する
}

無限ループ

 

実行結果

0

1

2

...

 

「無限ループ」を避けるためには、以下のようにwhileの条件を不成立(false)にさせるロジックが必要です。

 PHP
$count = 0;//①カウンタ初期化
while($count < 3){//②条件を満たす間は繰り返し
    echo $count."\n";//③カウンタを表示する
    $count++;//④カウンタを1加算する
}

 

無限ループ回避

 

上記は、処理のたびに$countを加算していき「$count < 3」が不成立(false)となれば繰り返し処理は終了します。

 

マー坊

繰り返し処理を終了させるためのロジックがないと、無限ループになりますよ!

 

4.繰り返し処理を中断する方法

4.繰り返し処理を中断する方法

 

繰り返し処理を中断したいは「break文」や「continue文」を使います。

  1. break文|繰り返し処理を終了する
  2. continue文|次の繰り返し条件の判定へジャンプ

 

どのように使うのかをそれぞれ解説します。

 

1.break文|繰り返し処理を終了する

1.break文|繰り返し処理を終了する

 

「break文」は繰り返し処理を中断(終了)したい時に使います。

それではbreak文を使ったプログラムを見てみましょう。

 

break文の具体例

ここで紹介するプログラムは、カウンタをゼロから順に表示させていくものです。

「カウンタが3より大きくなったら」繰り返し(while)処理を終わらせています。

 

 PHP
$count = 0;//①カウンタ初期化
while($count < 5){//②条件を満たす間は繰り返し if($count>3){//カウンタが3より大きい時に実施する。
    break;//while文を強制終了する。
}
echo $count."\n";//③カウンタを表示する
$count++;//変数countに1を足す
}

 

break

 

実行結果

0

1

2

3

 

「4」は表示されていません。

これはカウンタが4の場合はif文に入ってbreak文により、繰り返し処理が終了しています。

 

マー坊

「break文」を使うことで繰り返し処理を中断(終了)させることができます。

 

2.continue文|次の繰り返し条件の判定へ処理をジャンプ

2.continue文|次の繰り返し条件の判定へ処理をジャンプ

 

「continue文」はその回の繰り返し処理を中断し、次回の繰り返し条件判定まで処理をジャンプさせることができます。

マー坊

break文と違い、繰り返し処理自体は終わりませんよ。

 

それでは、continue文を使ったプログラムを見てみましょう。

 

continue文の具体例

ここで紹介するプログラムも、カウンタをゼロから順に表示させていくものです。

「カウンタが3になったら」その回の繰り返し(while)処理を終わらせ、次回繰り返し条件の判定を行います。

 

 PHP
for($count=0; $count < 5 ;$count++){
    if($count==3){//カウンタが3の時に実施する。
        continue;//次回の繰り返し条件判定へ。
    }
    echo $count."\n";//カウンタを表示する
}

 

continue

 

実行結果

0

1

2

4

 

「3」が表示されていません。

これはカウンタが3の場合は、if文に入ってcontinue文によりfor文の繰り返し条件判定へ処理がジャンプしています。

 

マー坊

「continue文」を使うことで、その回の繰り返し処理を中断し、次回の繰り返し条件を判定させることができます。

 

まとめ

最後に要点をまとめます。

「繰り返し」とは、プログラムで同じような処理を繰り返す時に使う制御文のことで「ループ」とも呼ばれます。

 

繰り返しの基本構文は以下3つ

for

繰り返す回数がわかっている場合の繰り返し処理ができます 。

for(ループカウンタ初期値; 繰り返し処理の終了条件; ループカウンタの増減){

処理

}

 

while

繰り返す回数がわかっていない場合の繰り返し処理ができます。

while(繰り返しの条件){

処理

}

 

do〜while

最初に繰り返し条件判定があるwhile文に対し、do〜while文は処理が行われた後に条件判定があります。

なので、1回は必ず処理実行します。

do{

処理

}

while(繰り返しの条件)

 

「繰り返し」の制御文は、同じ処理を繰り返すことができるすごく便利な構文です。

実際の開発現場でも多く使われます。

ですから、当記事で「繰り返し」の仕組みをきちんと理解しておきましょうね。

 

 

この記事はいかがでしたでしょうか✨?

-プログラミング基本構文

© 2020 お仕事講座-マー坊ブログ