関数

この研修では、htdocs/LetsEngineer/curriculum/2-10フォルダに課題を作成してください。

関数


関数とはあるデータを受け取り、定められた独自の処理を実行し、その結果を返す命令のことです。
関数を使うメリットはよく使う処理をまとめることにより、コード量の削減ができることと保守や改修が容易になることです

突然ですが、以下の問題を解いてみてください。

それぞれの下の三角形の面積を求めなさい。
1) 底面10cm 高さ5cm
2) 底面15cm 高さ8cm
3) 底面8cm   高さ6cm

// 1)
// 底面
$base1 = 10;
// 高さ
$height1 = 5;
// 面積 
$area1 = $base1 * $height1 / 2;

// 2)
$base2 = 15;
$height2 = 8;
$area2 = $base2 * $height2 / 2;

// 3)
$base3 = 8;
$height3 = 6;
$area3 = $base3 * $height3 / 2;

上記のようにすれば、面積を求めることができますね。
しかしプログラミングの世界では上記のような書き方は好ましくありません。
同じ処理を使い回したいときは関数を使います。関数を使って先ほどの問題を解いてみると以下です。

function getTriangleArea($base, $height) {
    $area = $base * $height / 2;
    print "三角形の面積は".$area."だよ。";
}

// 1)
getTriangleArea(10,5);
// 2)
getTriangleArea(15,8);
// 3)
getTriangleArea(8,6);

このようにコード量を減らすことができ、見た目もシンプルになりました。
ここから関数の使い方についてみていきましょう。

関数の文法


function 関数名(引数) {
// 処理
}

関数名は自由に決めることができますが、何をする関数なのかわかりやすい名前にしましょう。

引数


引数とは関数に渡す値のこと。
下のgetTriangleAreaという関数を使うには$base(底面)と$height(高さ)を渡して上げる必要があります。
関数内で受け取った引数(底面と高さ)を利用して面積を求めています。

function getTriangleArea($base, $height) {
    $area = $base * $height / 2;
    print "三角形の面積は".$area."だよ。"; 
}

 

関数を使用するときは下のように

関数名(引数);

とすることで呼び出すことができます。

getTriangleArea(10,5);

getTriangleAreaという関数に10(底面)と5(高さ)を渡していますね。
引数を必要としない関数もありますが、その場合でも「()」は必要なのでつけ忘れることの内容に注意しましょう。

補足〜ローカル変数〜


関数の基本は分かったかと思います。
ここでは関数を使う際によく間違える ローカル変数 に関して補足説明を行います。

例えば、引数として名前を受け取り、出力する関数を作成します。

まずはダメな例

<?php

function sayHi($name = "goto") {
    // 関数の中で定義する変数 => ローカル変数
    $myname = "php";
    return "Hi! ".$name." from ".$myname;
}

echo $myname;

関数の外で、$myname;を出力してみましょう。

echo $myname;とした場合、どうでしょうか?
何も出力されていません。

ちゃんと出力するなら

<?php

function sayHi($name = "goto") {
    // 関数の中で定義する変数 => ローカル変数
    $myname = "php";
    return "Hi! ".$name." from ".$myname;
}

echo sayHi();

引数に何も渡さなければ、初期値のgotoになるので、出力は Hi! Goto from php となります。
これでよくなりましたね!

関数の中で定義した変数を ローカル変数 と呼び、その関数の中でしか有効になりません 。

また、別の例があります。
関数の外で、$myname = "ruby";とした場合、関数内の$mynameはどうなるでしょうか?

<?php
$myname = "ruby";

function sayHi($name = "goto") {
    // 関数の中で定義する変数 => ローカル変数
    $myname = "php";
    return "Hi! ".$name." from ".$myname;
}

echo sayHi();
echo $myname;


関数の中ではしっかり上書きされて、 Hi! Goto from php と出力されました。
ただし、最後のecho $myname;の結果はrubyです。

関数の外では、関数内での値の変更は無視されてしまいます。
このような仕組みを 変数のスコープ といいます。

初心者のうちは使う機会があまりありませんが、エラーの原因となりがちなので、覚えておいてください。
PHPの公式ドキュメントでも専用のページがあるため、気になる人は読んでみましょう。
PHP公式ドキュメント-変数のスコープ-

課題


  • 直方体の体積を求める関数を作成してください。
  • その関数を使用し、縦=5cm、横=10cm、高さ=8cmの直方体の体積を求めてください。

IT用語 SESに向けて準備しよう


3章では一つ一つの項目で数個のIT用語について調べていただきます。
どの用語もSESでよく耳にする言葉なのできちんと調べていきましょう!

下記の用語について、調べてみましょう。
※IT用語についてはチェックテストの範囲外です。

1. ハッシュ化
2. 総合テスト
3. デバッグ

用語の意味を調べて同じく2-10フォルダ内に記載してください。
Hello Worldでやった時のように用語については記載するようにしてください。

カテゴリー

アーカイブ

Close Bitnami banner
Bitnami