![見出し画像](https://assets.st-note.com/production/uploads/images/124344426/rectangle_large_type_2_8d59c59f160cf4483a2f5fa37c8eaa40.jpeg?width=800)
forループ文とwhileループ文
タイトル: "$iの冒険: 1から10までの世界"
物語:
ある日、"$i" という名前の小さな変数が、プログラミングの世界を旅することになりました。"$i" は最初、初期値 `1` から始まりました。彼は `while` ループを通じて、1から10までの数値を探索しました。
最初のステップで、"$i" は `1` という村を訪れました。そして、その数を `echo` して自分を表現しました。次に、彼は `$i++` によって自分を1だけ進め、新しい数に向かいました。
彼は無限ループに陥らないように注意深く、10まで辿り着くという目標を掲げました。しかし、ある時点で "$i" は `10` という大きな数字に遭遇しました。彼はその瞬間を大切にし、`break;` という力強い魔法の言葉を発動しました。
"$i" は無限ループから解放され、彼の冒険は幸せな結末を迎えました。10までの数値を探索し、その数々の冒険を通じて "$i" はプログラムの世界での経験を積み重ね、新しい課題に向けて進んでいくのでした。
制御構造
制御構造は、プログラムの実行フローを制御するための構造や命令のことです。プログラミング言語において、特定の条件に基づいて命令の実行を決定したり、ループを実行したり、あるいは他のプログラムのフローを制御するための仕組みを指します。条件文、ループ文、分岐文などがその例で、それらを組み合わせてプログラムの実行順序や条件に合わせた動作を実現します。制御構造はプログラムの論理的な流れを決める重要な要素です。
繰り返し処理 (ループ処理)
【繰り返し処理の流れ】
①変数の初期化
↓
*②ループの条件
↓
③繰り返す処理
↓
④変数の更新
↓
*②へ戻る
繰り返し処理の流れ
forループ文
for文は、反復処理を行うための制御構造です。特定の回数だけ処理を繰り返す際に便利です。
for (初期化; ループの条件; 変数の更新) {
// 実行したいコード
}
1から100までの数値を出力するときのように、繰り返しで1~100まで出力したい場合、
echo 1;
echo 2;
echo 3;
・・・echo 100;
となりますが、繰り返しで何かを行いたいときには繰り返し文を用います。
繰り返しの処理(ループ処理)を以下の図のようにたった数行で書くことが出来ます。
<?php
for ($i = 1; $i <= 100; $i++) {
初期化; ループの条件; 変数の更新(インクリメントしている);
echo $i;
繰り返す処理
echo '<br>';
改行するため
}
?>
※( ) 丸括弧内の最後の「;」セミコロンは、いりません。
※ for文は、「;」セミコロンで区切られた3つのステートメントで構成されています。
"`$i++` は、変数 `$i` を使用した後にその値を更新します。つまり、式の評価が終わった後に `$i` の値が増加します。
一方で、`++$i` は、変数 `$i` の値を先に増加させた後にその値を使用します。つまり、式の評価時に `$i` の値が増加します。"
whileループ文
while文は、条件が満たされている間にコードを実行する制御構造です。
while (ループの条件) {
// 条件が真の間、実行したいコード
}
<?php
$i = 1
初期化
while($i<=100){
ループの条件
echo $i;
繰り返す処理
$i++;
変数の更新(インクリメントしている)
echo '<br>';
改行するため
}
?>
上記のコードは$iがインクリメントされています。これにより、条件 $i <= 100 が eventually false になり、ループが終了します。
無限ループ
$i = 1; // 初期化
while ($i <= 100) {
echo $i;
}
出力:
$i の更新が行われていないため、$i の値は変わらずにひたすら1が続きます。
for文やwhile文は、条件が常に真(true)の場合には無限ループになります。無限ループはコンピューターに極端な負担を与えてしまうため、ループ処理を記述する際は条件式がどこかでfalseになるよう(無限ループを止めるには、$i の値の更新が必要 $i++; )に気をつけなければいけません。
$i = 1; // 初期化
while ($i <= 100) {
echo $i;
$i の値の更新が必要
$i++; //$i の更新
}
出力:
$i はループごとに1ずつ増加し、条件 $i <= 100 がいつか偽になるまでループが実行されます。
【for文とwhile文の繰り返し処理の特徴の違い】
for文:
for文は、通常、繰り返し回数が明確な場合に使用されます。
初期化:ループの最初に1回だけ実行され、通常、変数の初期化が行われます。
条件:各繰り返しの前に評価され、条件が真の場合にループが継続されます。
更新:各繰り返しの最後に実行され、通常、変数の更新が行われます。
while文:
while文は、条件が真である限り繰り返しを行います。
while文は、繰り返し回数がはっきりしていない場合や、条件が複雑な場合に使用されることがあります。
簡潔で明確な場合はfor文を使用し、繰り返しの条件が複雑であるか、繰り返し回数がはっきりしていない場合はwhile文を使用すると良いでしょう。
break文
break文は現在のループを強制的に中断する命令です。for, while, foreachなどの繰り返し文の中で利用できます。break文はif文などの条件文と組み合わせて利用するのが一般的です。
for ($i = 1; $i <= 10; $i++) {
if ($i > 5) {
break; // $iの値が6になった段階でfor文を終了
}
echo $i; // 出力
}
//結果:12345
//改行されていない
break; のみで記入
// ループを抜ける
continue文
continue文は現在の周だけをスキップし、ループそのものは継続して実行します。continue文はif文の条件文と組み合わせて利用するのが一般的です。これはfor、while、foreachなどの繰り返し文で利用できます。
for ($i = 1; $i <= 10; $i++) {
if($i%3==0){
continue;
//$iの値が3の倍数の時はcontinue文が実行されて、その周のループが終了します。
//そのため、3の倍数の場合はecho $i;が実行されず、表示されません。
}
echo $i; //出力
}
結果:12457810(3の倍数以外)
continue; のみで記入
// 一時的に処理をスキップ
ネスト(入れ子)
入れ子やネストとは、一つの繰り返し構造(ループ)の中に別の繰り返し構造(ループ)を含めることを指します。これを特に2つの繰り返し構造が入れ子になっている場合には「2重ループ」と呼びます。そのため、内側のループが外側のループの一回の実行ごとに複数回実行される構造が、入れ子やネスト、2重ループの典型的な例です。
for ($i = 1; $i <= 3; $i++) { // 外側のループ
for ($j = 1; $j <= 3; $j++) { // 内側のループ
echo "外側ループ: $i, 内側ループ: $j\n";
}
}
//出力:
// 外側ループ: 1, 内側ループ: 1
// 外側ループ: 1, 内側ループ: 2
// 外側ループ: 1, 内側ループ: 3
// 外側ループ: 2, 内側ループ: 1
// 外側ループ: 2, 内側ループ: 2
// 外側ループ: 2, 内側ループ: 3
// 外側ループ: 3, 内側ループ: 1
// 外側ループ: 3, 内側ループ: 2
// 外側ループ: 3, 内側ループ: 3
このコードでは、2つのループが使われています。外側のループは`$i`が1から3まで変化し、内側のループは`$j`が1から3まで変化します。
外側のループが1回目のとき、内側のループは1から3まで3回繰り返されます。外側のループが2回目のときも同様に内側のループが3回繰り返されます。そして外側のループが3回目のときも内側のループが3回繰り返されます。
合わせて、外側のループが3回、内側のループがそれぞれ3回繰り返されるので、全体として9回の出力が行われます。
この記事が気に入ったらサポートをしてみませんか?