2010年12月20日月曜日

12/20覚書

☆練習問題
作ってみたら2重括弧と最後の構文でつまづいてた。
個別ならある程度わかってきたけど組み立てるところで「???」ってなてます;;;

function saiten($namae,$kokugo,$sansuu,$rika,$syakai){
   
    //まず合計と平均を求めます
    $goukei = ($kokugo+$sansuu+$rika+$syakai);
    $heikin = ($goukei / 4);
   
    //平均点をもとに、出来具合を判定します
    if ($heikin >= 80){
        $hantei = "たいへんよくできました。";
    }
    elseif ($heikin >= 60 && $heikin < 80){
        $hantei = "もう少しがんばりましょう。";
    }
    elseif ($heikin > 60){
        $hantei = "補習を受けてください。";
    }
   
    //文系or理系の判定をします
    if (($kokugo + $syakai) > ($sansuu + $rika)){
        $type = "文系";
    }
    elseif (($kokugo + $syakai) < ($sansuu + $rika)){
        $type = "理系";
    }
    else{
        $type = "文理系";
    }
   
    //戻り値(最終的にやりたいこと)を記述します
    return print("{$name}さんの判定結果<br>合計点は{$goukei}点です<br>平均点は{$heikin}点です<br>{$hantei}<br>");
}


//「saiten」関数を使用する

saiten("桑山",85,35,50,75);

saiten("一戸",65,95,85,80);

saiten("田中マルクス闘莉王",30,40,25,35);

解説
    if ($heikin >= 80){
>=で80以上
($heikin >= 60 && $heikin < 80)
>= 60 && $heikin < 80
>=60以上 &&かつ <80未満
ていうか&&つかった問題やってなかったよなぁ…。

☆クラス
・考え方としては鯛焼きの鋳型と材料と出来上がった鯛焼き。

・名前:■■■
・住所:■■■
・性別:■■■
・何系: 文/理
■■■の部分を作っていく。

☆ここで資料の雛形べた打ち~
・関数のことをメソッドという。
・get宣言の最初の文字は大文字。クラス規約で適宜決まる。
・複数の変数を出すときには?
・priveteはこのクラスのみ適用。publicはクラス外でも適用。
function set~の前にもつけられる。verもある。
・$this->nameはクラス内の変数。$nameとは別。
->をアロー演算子と呼ぶようです。
・クラス宣言のコメントは/**ではじめることが多い。
・$human = new Human();の記述がobject型の宣言

☆練習問題 住所も実際に出してみよう
雛形にsetとgetを追加するだけだお。

#インスタンス化
$human = new Human();

#名前と住所のセット
$human->setName("いちのへあつし<br>");
$human->setAddress("江ノ島");

#名前と住所を返す
print $human->getName();
print $human->getAddress();

class Human{

    #名前の宣言
    private $name;
    #住所の宣言
    private $address;
   
    #名前をセットする
    function setName($name){
        $this->name = $name;
    }
   
    #名前を返す
    function getName(){
        return $this->name;
    }
   
    #住所をセットする
    function setAddress($address){
        $this->address = $address;
    }
   
    #住所を返す
    function getAddress(){
        return $this->address;
    }
}

☆練習問題3 Dogでクラスを定義。
コピペで。

#インスタンス化
$dog = new Dog();

#鳴き声のセット
$dog->setVoice("わんわん<br>");

#鳴き声を返す
print $dog->getVoice();

class Dog{

    #鳴き声の宣言
    private $voice;
   
    #鳴き声をセットする
    function setVoice($voice){
        $this->voice = $voice;
    }
   
    #鳴き声を返す
    function getVoice(){
        return $this->voice;
    }
}

タイプミス多し……気をつけねば;


☆練習問題 野菜の値段と割引
★と★で関係します。

#インスタンス化
$ninjin = new Yasai();

#価格のセット
$ninjin->setVeg(100);

#価格を返す
print "ninjinの値段:". $ninjin->getVeg();
print "<br>";

#割引を返す
★print "割引価格" .$ninjin->getYasaiwari(0.5);

class Yasai{

    #宣言
    private $ninjin;
   
    #価格をセットする
    function setVeg($veg){
        $this->veg = $veg;
    }
   
    #価格を返す
    function getVeg(){
        return $this->veg;
    }
       
    #割引を返す
★    function getYasaiwari($yasaiwari){
        return $this->veg * $yasaiwari;

※ここで整数を入れないのがポイント
    function getWaribikiPrice($waribiki) {
        return $this->price * $waribiki;

☆コンストラクタ new Human()の()のこと。
    function Human($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }

☆練習問題 鳴き声や名前、犬種
#インスタンス化
$dog = new Dog("わんわん<br>","モモ<br>","ビーグル<br>");

#鳴き声のセット
//$dog->setVoice("わんわん<br>");

#鳴き声を返す
print "鳴き声:". $dog->getVoice() ;
print "名前:". $dog->getDogname() ;
print "種類:". $dog->getDogtype() ;
class Dog{

    #鳴き声の宣言
    private $voice;
    private $dogname;
    private $dogtype;

   
    //コンストラクタ
    function Dog($voice, $dogname, $dogtype) {
        $this->voice = $voice;
        $this->dogname = $dogname;
        $this->dogtype = $dogtype;
    }
   
    #鳴き声をセットする
    function setVoice($voice){
        $this->voice = $voice;
    }
   
    #鳴き声を返す
    function getVoice(){
        return $this->voice;
    }

    #名前をセットする
    function setDogname($dogname){
        $this->dogname = $dogname;
    }
   
    #名前を返す
    function getDogname(){
        return $this->dogname;
    }
   
    #種類をセットする
    function setDogtype($dogtype){
        $this->dogtype = $dogtype;
    }
   
    #種類を返す
    function getDogtype(){
        return $this->dogtype;
    }
}