คำสั่ง while

Download Report

Transcript คำสั่ง while

1
• เพื่อทราบหลักการทางานของภาษา PHP ในส่ วนของการ
ควบคุมโปรแกรม การตัดสินใจเลือกทา(Decision) การ
ทาซา้ (Repetition)
2
• บรรยายโดยผู้สอนและใช้ เอกสารประกอบการสอนของ
ผู้สอน
• สอนโดยใช้ ส่ือคอมพิวเตอร์ ผ่านเครื่ องฉาย
• อภิปรายในชั้นเรี ยนร่ วมกัน
่ เติมจากตาราและเอกสารทีเ่ กี่ยวข้ อง
• ให้ นิสิตค้ นคว้ าเพิม
• ทาแบบฝึ กหัดท้ ายบท
3
• ประเมินผลจากการตอบคาถามและอภิปรายในชั้นเรี ยน
• ทาแบบฝึ กหัดท้ ายบท
• ทารายงานส่ ง
4
• การตัดสินใจว่ าจะประมวลผลโค้ ดโปรแกรมส่ วนใดต่ อไป
โดยขึน้ อยู่กับเงื่อนไขที่กาหนดโครงสร้ างในภาษา PHP ที่ใช้
ตัดสินใจเลือกทาประกอบด้ วย
• คาสั่ง if , else และ elseif
• คาสั่ง switch
• ตัวดาเนินการ ? : (Conditional Operator)
5
• นิพจน์ เงื่อนไขไม่ จาเป็ นต้ องเป็ นนิพจน์ ชนิด Boolean แต่ อาจเป็ นนิพจน์
ชนิดใดก็ได้ ซึ่ง PHP จะแปลงไปเป็ นค่ าชนิด Booleanให้ เอง เพื่อตรวจสอบ
ว่ าเงื่อนไขเป็ น TRUE หรื อ FALSE ค่ าต่ างๆ ต่ อไปนีเ้ มื่อแปลงไปเป็ นชนิด
Boolean แล้ วจะมีค่า FALSE
•
•
•
•
•
•
ค่ าจานวนเต็ม 0
ค่ าทศนิยม 0.0
สตริงว่ าง ( “” ) และสตริง “0” (สตริงที่มีเลข 0 ตัวเดียว)
อาร์ เรย์ ท่ ไี ม่ มีสมาชิก
ออบเจ็คที่ไม่ มีตัวแปรสมาชิก
ค่ า NULL (ค่ าว่ าง) รวมทัง้ ตัวแปรที่ยังไม่ ได้ กาหนดค่ า
• รู ปแบบของคาสั่ง if คือ
If (expr)
statement
If ($a>$b)
Echo “a มากกว่า b”;
6
If($a>$b){
Echo “a มากกว่า b”;
$b=$a;
}
•หมายเหตุ
• เครื่ องหมายปี กกา { }ใช้ ในการรวบรวมประโยคคาสัง่ ตั ้งแต่ 1 ประโยคคาสัง่ ขึ ้น
ไป ให้ กลายเป็ น “กลุ่มประโยคคำสัง่ ” (Statement Group)
• การเว้ นช่องว่างหน้ าประโยคคาสัง่ ต่างๆ หลัง if ก็เพื่อให้ ดงู ่ายเท่านั ้น ซึง่ จะเว้ น
หรื อไม่เว้ น ก็ไม่มีผลต่อการทางานของ if แต่อย่างใด
7
• กรณีมี else ใช้ ร่วมกับคาสั่ง if เพื่อกาหนดส่ วนที่จะถูก
ประมวลผลหากเงื่อนไขของ if เป็ น FALSE
• รู ปแบบ ของ if ที่มีต่อ else
If(expr)
Statement1
Else
Statement2
8
<?
$username= "sanya";
if($username=="ADMIN")
echo "ยินดีต้อนรับเข้ าสู่ admin page";
else
echo "ยินดีต้อนรับเข้ าสู่ user page";
?>
9
• ประโยคคาสั่งภายใต้ ส่วนของ if และส่ วนของ else นัน
้ จะ
เป็ นประโยคคาสั่งใดๆ ก็ได้ รวมถึงอาจเป็ นประโยคคาสั่ง if
ก็ได้ เช่ นกัน ซึ่งเป็ นรูปแบบที่เรียกว่ า if ซ้ อน if (Nested if)
เช่ น
If(expr)
Statement1
ifelse
Statement2
10
<?
$a=10; $b=20;
if($a>$b) //ถ้ า $aมากกว่า $b
echo "\$a มีคา่ มากกว่า \$b"; // ให้ แสดงข้ อความนี ้ออกมา
else // ถ้ า $ a ไม่มากกว่า $b
{
if($a<$b) // ให้ ตรวจสอบต่อไปว่า $a น้ อยกว่า $b หรื อไม่
echo "\$a มีคา่ น้ อยกว่า \$b"; // ถ้ าใช่ ($a น้ อยกว่า $b จริง ) ให้ แสดง
ข้ อความนี ้ออกมา
else
echo "\$a มีคา่ เท่ากับ \$b"; //แต่ถ้าไม่ใช่ให้ แสดงข้ อความนี ้
}?>
11
• ใช้ ร่วมกับคาสั่ง if เพื่อกาหนดเงื่อนไขอื่นๆ เพิ่มเติม
นอกเหนือจากเงือนไขหลักของ if ซึ่งถ้ าเงื่อนไขของ if
เป็ น FALSE ก็จะมาตรวจสอบเงื่อนไขของ elseif ต่ อไป
• รู ปแบบของ if ที่มี elseif และ else
12
If(expr1)
Statement1
Elseif (expr2)
Statement2
…
Elseif(exprN)
Statement
else
Statement
13
<?
$score=69;
if($score>=80) // ถ้ าคะแนนมากกว่าหรื อเท่ากับ 80
$grade="A";
elseif ($score>=70 && $score<80) // ถ้ าคะแนนมากกว่าหรื อเท่ากับ 70 แต่น้อยกว่า 80
$grade="B";
elseif ($score>=60 && $score<70) // ถ้ าคะแนนมากกว่าหรื อเท่ากับ 60 แต่น้อยกว่า 70
$grade="C";
elseif ($score>=50 && $score<50) // ถ้ าคะแนนมากกว่าหรื อเท่ากับ 50 แต่น้อยกว่า60
$grade="D";
else //ถ้ าคะแนนไม่สอดคล้ องกับเงื่อนไขใดๆเลย
$grame="F";echo "คะแนน : $score ได้ เกรด $grade"
?>
14
• การนาค่ าของตัวแปรหรื อนิพจน์ หนึ่งมาเปรี ยบเทียบกับค่ าต่ างๆ มี
วิธีคล้ าย if-elseif แต่ การใช้ คาสั่ง switch จะเหมาะสมกว่ า
Switch(expr){
Case value1:
Statement1
Case value2:
Statement2
…
Case valueN:
StatementN
Default:
statement
}
15
<?
$i=1;
switch($i){ // พิจารณาค่าของ $i
case 0 : // กรณีค่าเท่ากับ 0
echo "\$i เท่ากับ 0"; // ให้ แสดงข้ อความนี ้
break; // แล้ วออกจาก switch
case 1: // กรณีค่าเท่ากับ 1
echo "\$i เท่ากับ 1";// ให้ แสดงข้ อความบน
break;// แล้ วออกจาก switch
case 2 :// กรณีค่าเท่ากับ
echo "\$i เท่ากับ 2";// ให้ แสดงข้ อความบน
break;// แล้ วออกจาก switch
}?>
คาสัง่ break ที่ปิดท้ ายแต่ละกรณีเป็ นสิ่งจาเป็ น หากต้ องการให้ ทา
เฉพาะประโยคคาสัง่ ในกรณีนนๆ
ั ้ แล้ วออกจาก switchไปเลย
16
• มีช่ อ
ื ว่ า Conditional Operator คือตัวดาเนินการที่ใช้
ตรวจสอบเงื่อนไขหนึ่งๆ แล้ วตัดสินใจว่ าจะให้ ผลลัพธ์ เป็ น
ค่ าใด รูปแบบการใช้ งานคือ (รูปแบบที่แสดงนีเ้ ป็ นเพียง
นิพจน์ ยังไม่ ใช่ ประโยคคาสั่งที่สมบูรณ์ )
Expr1 ? expr2 : expr3
<?
$logged_in = TRUE;
$user = "Admin";
$msg = $logged_in ? "ยินดีต้อนรับ $user" : "ยังไม่ได้ ล็อกอิน กรุณาล็อกอินก่อน" ;
echo $msg."<br><br>";
?>
17
• คือการประมวลผลโค้ ดโปรแกรมส่ วนใดส่ วนหนึ่งซา้ ๆ ไปเรื่ อยๆ ตาม
เงื่อนไขที่กาหนด ซึ่งมักเรี ยกว่ า การวนลูป (Looping) การทาซา้ หรื อ
การวนลูปนีม้ ีประโยชน์ ในงานหลายอย่ าง เช่ น การแสดงรายงาน
ข้ อมูลที่ดงึ มาจากฐานข้ อมูล หรื อแสดงรายการตัวเลือกในลิสต์ บอ็ กซ์
เป็ นต้ น
• โครงสร้ างที่ใช้ วนลูปในภาษา PHP ประกอบด้ วย
• คาสั่ง while หรื อเรี ยกว่ าลูปแบบ while
• คาสั่ง do…while หรื อเรี ยกว่ าลูปแบบ do…while
• คาสั่ง for หรื อเรี ยกว่ าลูปแบบ for
• คาสั่ง foreach หรื อเรี ยกว่ าลูปแบบ foreach
18
• คาสั่ง while จะประมวลผล statement ไปเรื่ อยๆ ตราบใดที่
นิพจน์ expr มีค่า TRUE (หรือประเมินผลได้ ค่า TRUE เช่ น
ค่ าจานวนเต็มใดๆ ที่ไม่ ใช่ 0 เป็ นต้ น)
While(expr)
Statement
19
<?
echo "โปรแกรมจะนับ 1 ถึง 5 <br>";
echo "เริ่ม <br>";
$num = 1;
while ($num<=5)
{
echo "$num<br>";
$num++;
}
echo "จบ";
?>
20
<?
$start=1;
$end=31;
echo 'วันที่ : <select name="day_of_month">'."\n" ;
$i=$start;
while($i<=$end)
{
echo "<option>$i</option>\n";
$i++; // เพิ่มค่าของ$i ขึ ้นอีก 1
}
echo "</select>";
?>
21
• คาสั่ง do…while จะทา statement ก่ อนแล้ วตรวจสอบ
เงื่อนไข (expr) ทีหลัง ถ้ าเงื่อนไขเป็ น TRUE จึงจะวน
กลับไปทา statement แล้ วตรวจสอบเงื่อนไขใหม่ อีกครั ง้ แต่
ถ้ าเป็ น FALSE ก็จะออกจากลูป
Do
Statement
While(expr);
22
<?
$i=5;
do{
$square=$i * $i;
echo "$i ยกกาลัง 2 เท่ากับ $square <br>";
$i+=5; // เพิ่มค่า $i ขึ ้น 5
}while($i<=40);
?>
23
• การทางานโดยรวมของคาสั่ง for จะเหมือนกับคาสั่ง while
แต่ คาสั่ง for เตรียมตาแหน่ งไว้ ให้ กาหนดนิพจน์ ท่ ตี ้ องการ
ทาเมื่อเข้ าสู่ลูป
For(expr1;expr2;expr3)
statement
24
<?
echo "โปรแกรมจะนับ 1 ถึง 5 <br>";
echo "เริ่ ม <br>";
for($num=1;$num<=5;$num++)
{
echo "$num<br>";
}
echo"จบ";
?>
25
<?
$start=1;
$end=31;
echo 'วันที่ : <select name="day_of_month">'."\n" ;
$i=$start;
for($num=1;$num<=5;$num++)
{
echo "<option>$num</option>\n";
}
echo "</select>";
$y=date("Y")+543;//แปลงเป็ น พ.ศ. ใน Date ต้องเป็ น Y
ใหญ่ จะได้ปีเต็ม 4 หลัก
$end=$y-18;
$start=$end-100;
echo 'ปี : <select name="day_of_year">'."\n" ;
$i=$start;
for($num=$start;$num<=$end;$num++)
{
echo "<option>$num</option>\n";
}
echo "</select>";
?>
26
• การควบคุมโปรแกรมแบ่ งออกเป็ น 2 รู ปแบบ คือ การตัดสินใจเลือกทา
และการทาซา้
• การตัดสินใจเลือกทา (Decision) คือการตัดสินใจว่ าจะทาส่ วนใดของ
โปรแกรมต่ อไป โดยขึน้ อยู่กับเงื่อนไขที่กาหนด การตัดสินใจเลือกทาใน
ภาษา PHP มีอยู่ 3 วิธี ได้ แก่ การใช้ คาสั่ง if (อาจใช้ elseหรื อ elseif ร่ วมกัน)
,การใช้ คาสั่ง switch และการใช้ ตัวดาเนินการ ?: (Conditional Operator)
• การทาซา้ (Repetition)หรื อเรี ยกง่ ายๆ ว่ าการวนลูป คือการทาส่ วนใดส่ วน
หนึ่งของโปรแกรมซา้ ๆกันไปมาเรื่ อยๆ ตามเงื่อนไขที่กาหนด คาสั่งควบคุม
การทาซา้ ที่อธิบายในบทนี ้ ประกอบด้ วย คาสั่ง while,คาสั่ง do…while และ
คาสั่ง for นอกจากนีย้ ังมีอีกคาสั่งหนึ่งคือ foreach ซึ่งจะอธิบายในบทที่ 8
(หัวข้ อ “การวนลูปเพื่อเข้ าถึงสมาชิกทัง้ หมดของอาร์ เรย์ ”)
27
28