PHP講座#11

今回の記事もPHP講座です!いつも通り手を動かしながら勉強していきましょう。

前回の復習

 前回は配列関連の関数について学びました。いろいろな関数が出てきましたが、配列の中身にある値が含まれているかを調べるものや、配列同士をくっつけるものなど沢山の関数が存在するので全部を覚えるのは大変です。最低限、sort関数とarray_merge関数の2つが抑えられていれば十分でしょう。

 また、二次元配列についても勉強していきました。普通の配列の作り方が理解できていれば、二次元配列はじっくり見てみると理解できるはずなので、二次元配列がよくわからなかった人は普通の配列をしっかり復習してみてくださいね。

前回の練習問題の解答

1問目

 sort関数を使うことで配列の中の値を昇順に並び替えることができます。(降順に並べ替えるときはrsort関数を使います)
 次の9個の要素をもつ配列を作り、昇順に並び替えてください。そして中央値を出力してください。

12, 41, 33, 85, 17, 41, 36, 91, 27



解答

<?php
$number = array(12, 41, 33, 85, 17, 41, 36, 91, 27);
sort($number);
?>

2問目

 2次元配列を作ってください。(特に指定はないですが、何も思いつかなければ、要素として出席番号と名前と部活の3つのデータを持つ学生を集めた名簿を作成してみてください)



解答

<?php
$member = [[1, "花子", "美術"], [2, "太郎", "野球"], [3, "毅", "テニス"], [4, "武", "吹奏楽"]];
?>

3問目

 次のソースコードに1行付け足して、2つの配列をarray_merge関数を用いて結合してください。

<?php
$ability =["fire", "aqua", "thunder", "storm"];
$power = ["time leap", "teleport", "invisible"];
?>



解答

<?php
$ability =["fire", "aqua", "thunder", "storm"];
$power = ["time leap", "teleport", "invisible"];
$talent = array_merge($ability, $power); 
?>

今回の学習内容

 今回からは繰り返し構文について学んでいきます。ここの学習内容は初学者が躓きやすいところなので、1つずつ丁寧に勉強していきましょう。

 最初に、繰り返し構文がどういうものなのかを現実のものに置き換えて説明していきます。

 繰り返し構文というのは、同じ処理を複数回繰り返したいときに用います。例えば、トイレの中に人が入っている場合を考えてみましょう。個室トイレを使いたいあなたは、中に人がいるかを鍵がかかっているかで判定します。判定した結果、中に人がいることがわかった(Trueだった)場合、ドアをノックするという行動(処理)を行います。これを3分おきに実行し、トイレの中が無人になったらこの動作(処理)を終了します。
 このように、ある条件が成り立っている間だけ繰り返し処理を行う構文を繰り返し構文といいます。

 実際にどうやってプログラム中に繰り返し構文を書くのかを見ていきましょう。
繰り返し処理を実装する際にはforやwhileやforeachなど様々なものがありますが、とりあえず今回の記事では、for文の書き方を勉強していきましょう。

 for文の基本形は以下のようになります。

for(初期化式; 条件式; 更新する式) {
 繰り返したい処理
}
 構文の括弧の中が複雑ですが、1つ1つ動きを追っていけば理解できます。プログラムが上から順に実行されてきて、for文に到達したところから説明していきます。
 for文に到達すると、最初に、初期化式が実行されます。その次に、条件式が成り立っているかをチェックします。この時、条件式が成り立っているならば、{ }の中の繰り返したい処理を実行し、成り立っていないならば、for文の処理を終了して、for文の下の処理に移ります。繰り返したい処理を実行し終えたら、更新する式を実行して条件式が成り立っているかをチェックして、繰り返し処理を実行するかをどうかを判定します。
 この一連の処理を条件式が成り立たなくなるまで繰り返し行うことで、何回も処理を行うことができます。
 試しにソースコードを見ていきましょう。

<?php
for($i = 1; $i <= 10; $i++) {
  echo $i."回目の処理です<br>";
}
?>

1回目の処理です
2回目の処理です
3回目の処理です
4回目の処理です
5回目の処理です
6回目の処理です
7回目の処理です
8回目の処理です
9回目の処理です
10回目の処理です

 このソースコードを先ほどと同じように1つずつ処理を追ってみましょう。
 最初に、初期化式である$i = 1;という式が実行されます。そのあと、条件式である$i <= 10;が実行されます。今回の場合、条件式は成り立っているので、{ }の中の処理に移ります。{ }の中の処理ではechoを用いてループ回数を表示する処理を書いています。{ }の中の処理を終えると、更新する式$i++;を実行します。この式では、変数$iに1を加える処理をしているので、現在$iには2が入っています。更新する式の次は、条件式に戻り、条件式が成り立っていれば同様の処理を繰り返し、条件式が成り立っていなければfor文を終了して、その下に処理があれば、for文の下に処理が移ります。
 このような順序でfor文を使った繰り返し構文は行われます。for文はたくさん書いて慣れてしまった方が、習得するまでの時間が短く、理解の助けにもなるので、初学者の人はたくさん書いてマスターしましょう!
 ちなみに、$iという変数を用いていますが、これはどんな名前の変数で置き換えてもらっても大丈夫です。慣例的に、iterator(繰り返すの意)の頭文字をとってiという名前で書かれることが多いので、$iで慣れてしまいましょう。

まとめ

 今回は、繰り返し構文の中のfor文について学びました。for文とif文が書けるようになれば理論上はどんな大きなプログラムでも書けることになるので、めちゃくちゃ大事な内容ですね。初めてプログラムを書く方はfor文の括弧の中が複雑だなと感じているかもしれませんが、これからの記事でもたくさん登場するので徐々に慣れていってもらえれば大丈夫です!(^^)/

練習問題

1問目

12, 14, 13, 65, 173, 21, 16, 11, 12, 14, 64, 90, 17, 4, 103, 192
 上記の値を持つ配列を作成し、sort関数を用いて並べ替えて、配列の各要素を出力するプログラムを書いてください。

2問目

 半径が1, 2, 3, 4のそれぞれの場合について、球の表面積を求めてください。ただし円周率は3.1415とする。

表面積の求め方
(表面積) = 4 * (半径) * (半径) * (円周率)

3問目

 100以下の自然数の和を求めてください。

4問目(ちょい難)

 100以下の素数の個数を求めてください。


最後まで見ていただきありがとうございます。また別の記事でお会いできることを祈っております。



www.iwachoco-blog.com
www.iwachoco-blog.com