คำสั่ง switch คำสั่ง if 16 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะ

Download Report

Transcript คำสั่ง switch คำสั่ง if 16 PHP ภาควิชาวิทยาการคอมพิวเตอร์ คณะ

CHAPTER 4
Control Statements
Agenda
•
•
•
•
•
•
•
•
PHP
โปรแกรมแบบโครงสร้าง
คาสง่ ั if
คาสง่ ั switch
คาสง่ ั while
คาสง่ ั do..while
คาสง่ ั for
คาสง่ ั break
คาสง่ ั continue
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
2
โปรแกรมแบบโครงสร้าง
ในการเขียนโปรแกรมแบบโครงสร้าง จะมีรป
ู แบบการ
แก้ปญ
ั หาหรือรูปแบบการเขียน โปรแกรมอยู่ 3
ล ักษณะ คือ
- การเขียนแบบลาด ับ (Sequential)
- การเขียนแบบเงือ
่ นไข (Selection)
- การเขียนแบบวนซา้ (Repetition)
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
3
โปรแกรมแบบโครงสร้าง
เงือ่ นไข
จริง
Sequential
PHP
Selection
เท็จ
จริง
เท็จ
Repetition
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
4
ประเภทของ Control Statements
•คาสง่ ั เลือกทา (Selection Statements)
• if … . . else
• switch
•คาสง่ ั วนทาซา้ /คาสง่ ั ลูป (Repetition Statement )
• while
• do .. while
• for
PHP
5
คาสง่ ั if
้ าหร ับการทดสอบเงือ
if เป็นคาสง่ ั ทีใ่ ชส
่ นไข
และเลือกปฏิบ ัติตามเงือ
่ นไข
- if statement
รูปแบบ
if (condition)
{ statement; …… }
ต ัวอย่าง
if ($height > 0 && $width > 0)
{ $area = $height*$width;
echo “Area of square = ” .$area;
}
PHP
เท็จ เงือ่ นไข
จริง
คาสั่งต่ าง ๆ เมื่อ
เงือ่ นไขเป็ นจริง
คาสั่ งถัดไป
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
6
คาสง่ ั if..else
- if…else statement
รูปแบบ if (condition)
{ statement; ……}
else
{ statement; ……}
เท็จ
เงือ่ นไข
คาสั่งต่ าง ๆ เมื่อ
เงือ่ นไขเป็ นเท็จ
ต ัวอย่าง
if ($height > 0 && $width > 0)
{ $area = $height*$width;
echo “Area of square = ” .$area;
}
else
{ echo “Please enter new value”;}
PHP
จริง
คาสั่งต่ าง ๆ เมื่อ
เงือ่ นไขเป็ นจริง
คาสั่งถัดไป
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
7
คาสง่ ั if..elseif
เท็จ
เท็จ
เท็จ
เงือ่ นไข 3
จริง
เงือ่ นไข 2
จริง
จริง
เงือ่ นไข 1
คาสั่งต่ าง ๆ เมื่อ
เงือ่ นไข 1 เป็ นจริง
คาสั่งต่ าง ๆ เมื่อ
เงือ่ นไข 2 เป็ นจริง
คาสั่งต่ าง ๆ เมื่อ
เงือ่ นไข 3 เป็ นจริง
คาสั่งถัดไป
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
8
คาสง่ ั if..elseif
- if…elseif statement (nested if statement)
รูปแบบ if (condition1)
{ statement; ……}
elseif (condition2)
{ statement; ……}
else
{ statement; ……}
ต ัวอย่าง
if ($score < 0)
echo “Enter new score\n”;
elseif ($score >= 80.0)
$grade = “A”;
elseif ($score >= 60.0)
$grade = “B”;
else
$grade = “C”;
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
9
การใช ้ { }
• หากเงือ
่ นไขเป็นจริงหรือเท็จแล้วต้องทาคาสง่ ั มากกว่า 1
คาสง่ ั จะต้องใชเ้ ครือ
่ งหมาย { } ซงึ่ แสดงขอบเขต (block)
ของคาสง่ ั ทีต
่ อ
้ งถูกกระทา
้ ากมีคาสง่ ั เพียงคาสง่ ั เดียวในเงือ
• ทงนี
ั้ ห
่ นไข ก็สามารถใช ้
่ เดียวก ัน
เครือ
่ งหมาย { } ได้เชน
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
10
คาสง่ ั switch
•
เป็นคาสง่ ั ทีม
่ ก
ี ารทางานคล้ายคาสง่ ั if แต่จะมีการกาหนดเป็น
ทางเลือก ซงึ่ อาจมาจากเงือ
่ นไข หรือ ค่าของต ัวแปรทีต
่ อ
้ งการ
ตรวจสอบ
ตัวแปร
case : ค่าที่ 1
case : ค่าที่ 2
case : ค่าที่ N
คาสั่งที่ต่างๆ เมื่อตัวแปร
มีค่าเท่ ากับค่าที่ 1
คาสั่งที่ต่างๆ เมื่อตัวแปร
มีค่าเท่ ากับค่าที่ 2
คาสั่งที่ต่างๆ เมื่อตัวแปร
มีค่าเท่ ากับค่าที่ N
คาสั่งถัดไป
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
11
คาสง่ ั switch
• การใช ้ switch จะตามด้วยต ัวแปรทีต
่ อ
้ งการตรวจสอบค่า ถ้าตรงก ับ
case ไหน จะทาตามคาสง่ ั ใน case นนไปจนกว่
ั้
าจะเจอคาสง่ ั break
• แต่ถา้ หากเปรียบเทียบแล้วไม่ตรงก ับ case ใด ๆ เลย จะทาในคาสง่ ั
default
รูปแบบ switch (variable)
{ case value1 : statement;
break;
case value2 : statement;
break;
case valueN : statement;
break;
default : statement;
}
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
12
ต ัวอย่าง
<html>
<body>
<font size=5 face="MS Sans Serif">
<?
$day = date("l");
switch ( $day) {
case "Monday" : print("ว ันนีว้ ันจ ันทร์");break;
case "Tuesday" : print(" ว ันนีว้ ันอ ังคาร ");break;
case "Wednesday" : print(“ว ันนีว้ ันพุธ");break;
case "Thursday" : print(" ว ันนีว้ ันพฤห ัส ทางานอีกว ันก็หยุดแล้ว");break;
case "Friday" : print(" ว ันนีว้ ันสุดท้ายของการทางาน");break;
default : print(“เฮ.. ว ันนีว้ ันหยุด นอนอยูบ
่ า้ น");
}
?>
</font>
</body>
</html>
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
13
ต ัวอย่าง: กรณีหลาย case ทางานอย่างเดียวก ัน
/* How many days in a month? */
switch ($month) {
case 2:
//Feb
$days = 28; break;
case 9:
// Sep
case 4:
// April
case 6:
// June
case 11:
// Nov
$days = 30; break;
default:
$days = 31;
// All of the rest
}
printf (“ There are %d days in that month.”, $days);
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
14
เปรียบเทียบคาสง่ ั switch ก ับ if
$year = 15;
switch ($year){
case 5 : $rate = 12;
break;
case 15 : $rate = 18;
break;
case 20 : $rate = 24;
break;
default : echo "Error!!";
}
คาสง่ ั switch
PHP
$year = 15;
if($year == 5) {
$rate = 12;
}elseif($year == 15) {
$rate = 18;
}elseif($year == 20) {
$rate = 24;
}else{
echo "Error!!";
}
คาสง่ ั if
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
15
คาสง่ ั while และ do.. while
•
่ ก ัน
while และ do .. while เป็นการทางานแบบ loop เชน
แต่มก
ี ารเปลีย
่ นตาแหน่งของการเช็คเงือ
่ นไข
– while จะเช็คก่อนทาใน loop ด ังนน
ั้ ถ้าเช็คครงแรกแล้
ั้
วเงือ
่ นไข
เป็นเท็จ จะไม่มก
ี ารเข้าทางานในลูปเลย
– do.. while ทาใน loop 1 ครงก่
ั้ อนแล้วค่อยไปเช็คเงือ
่ นไข
ด ังนน
ั้ ถึงการเช็คเงือ
่ นไขครงแรกเป
ั้
็ นเท็จ คาสง่ ั ทีอ
่ ยูภ
่ ายในลูปก็
จะได้ร ับการทางานอย่างน้อยทีส
่ ด
ุ 1 ครงเสมอ
ั้
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
16
คาสง่ ั ทาซา้ while เปรียบเทียบก ับ do..while
เท็จ
คาสง่ ั ที่ 1
เงือ
่ นไข
จริง
คาสง่ ั ที่ 1
จริง
เงือ
่ นไข
เท็จ
คาสง่ ั ที่ 2
คาสง่ ั ที่ 2
while
PHP
do..while
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
17
้ าสง่ ั while และ do..while
เมือ
่ ไหร่จะใชค
• เมือ
่ ต้องการให้เกิดการทางานซา้
• จะทางานเมือ
่ เงือ
่ นไขเป็นจริง
• ไม่รว
ู ้ า่ จะต้องทาซา้ กีค
่ รงั้ (แต่ถงึ รูจ
้ านวนครงที
ั้ จ
่ ะวนซา้ ก็
สามารถใช ้ while และ do..while ได้ เพียงแต่ไม่เป็นทีน
่ ย
ิ ม
เพราะจะใช ้ for แทน)
่ ผลให้เงือ
• คาสง่ ั ทีอ
่ ยูใ่ น loop ต้องสง
่ นไขทีเ่ ช็คมีโอกาสเป็น
่ นนจะเกิ
เท็จ (ออกจาก loop ได้) มิเชน
ั้
ดเหตุการณ์ loop ไม่รู ้
จบ
การใช ้ while จะต้องมี 3 สงิ่ คือ
1.
2.
3.
PHP
ค่าเริม
่ ต้นการเข้า loop (อาจร ับค่าหรือกาหนดค่า)
กาหนดเงือ
่ นไข (loop ทาเมือ
่ เงือ
่ นไขเป็นจริง)
มีการเปลีย
่ นแปลงค่าต ัวแปรก่อนวนกล ับไปตรวจสอบ
เงือ
่ นไข
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
18
คาสง่ ั while และ do..while
- while statement
รูปแบบ while (condition)
{ statement; …… }
- do…while statement
รูปแบบ do {
statement; …… }
while (condition);
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
19
ต ัวอย่าง while
<html>
<body>
<?
$size = 1;
while ($size<7)
{
print("<font size=$size face='arial' color=blue>HELLO<br>");
$size++;
}
?>
</body>
</html>
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
20
ต ัวอย่าง while
<html>
<body>
<font size=4 face='arial'>
<?
$str="A";
while ($str<"Z")
{
echo $str;
$str++;
}
?>
</font>
</body>
</html>
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
21
ต ัวอย่าง do while
<html>
<body>
<font size=4 face='arial'>
<?
$a=1;
do{
echo $a," ";
$a++;
}while ($a<=20);
?>
</font>
</body>
</html>
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
22
คาสง่ ั for
้ ก้ปญ
• เป็นคาสง่ ั วนซา้ ทีใ่ ชแ
ั หาโจทย์ล ักษณะ ทีม
่ ก
ี ารทางาน
เดิมซา้ ๆก ันหลาย ๆ ครงโดยที
ั้
ร่ จ
ู ้ านวนรอบทีแ
่ น่นอน
รูปแบบ for (initial value; condition; change value)
{ statement; …… }
• รูปแบบแบ่งออกเป็น 3 สว่ น คือ
- สว่ นกาหนดค่าต ัวน ับ เป็นการกาหนดค่าเริม
่ ต้นให้ก ับ
้ วบคุมการวน loop
ต ัวแปร เพือ
่ ใชค
ิ ว่าจะวนซา้ หรือไม่
- สว่ นทีต
่ รวจสอบเงือ
่ นไขเพือ
่ ต ัดสน
- สว่ นของการจ ัดการค่าต ัวน ับของการวนซา้ เป็นการ
เพิม
่ ค่าหรือการลดค่าให้ต ัวแปรทีค
่ วบคุม loop
โดยทงั้ 3 สว่ นนีเ้ ป็นนิพจน์
ต ัวอย่าง for
For i=1 to 3
พิมพ์คา่ i
for ( $i=1 ; $i <= 3 ; $i++) {
echo $i.“Hello”;
}
พิมพ์ Hello
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
24
้ าสง่ ั for
การใชค
่
1.การเพิม
่ ค่าในแต่ละรอบจะเป็นเท่าไรก็ได้ เชน
for(x = 0;x<=100;x+= 5)
printf(“%d\n”,x);
2.ในสว่ นของการเปลีย
่ นค่า นอกจากการเพิม
่ ค่า (increment) สามารถ
กาหนดให้มก
ี ารลดค่าของต ัวแปรทีใ่ ชใ้ นการวนรอบได้
for(x = 100;x>0;x--)
printf(“%d\n”,x);
3.ต ัวแปรทีใ่ ชใ้ นการวนรอบอาจกาหนดให้เป็นชนิด char ได้
for(ch = ‘a’;ch<=‘z’;ch++)
printf(“character = %c\n”,ch);
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
25
้ น (Nested for Statement)
คาสง่ ั for แบบซอ
• ในการใช ้ คาสง่ ั for โปรแกรมอาจมีการกาหนด คาสง่ ั
้ นเข้ามา
for อย่างน้อยอีกหนึง่ ชุดซอ
่ ารทางาน
• โปรแกรมจะเริม
่ ทางานจาก for ลูปนอก ไปสูก
ของ for ลูปใน แล้วโปรแกรมจะทางาน for ลูปในจน
เสร็จ จากนนโปรแกรมจึ
ั้
งกล ับไปทางาน for ลูปนอกอีก
่ นีไ้ ปเรือ
ครงั้ ซงึ่ โปรแกรมจะทางานเชน
่ ย ๆ จนกว่า
เงือ
่ นไขของ for ลูปนอก เป็น เท็จ (0)
้ น (nested
• คาสง่ ั ด ังกล่าว เรียกว่า คาสง่ ั for แบบซอ
for)
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
26
้ น for
ต ัวอย่าง for ซอ
for ( $out = 1; $out <= 3; $out++ )
{
echo “out $out”;
for ($in = 1; $in <= 5; $in++ )
echo “in $in <br>”;
echo “<br>”;
}
}
out 1
in 1
in 2
in 3
in 4
in 5
out 2
in 1
in 2
in 3
in 4
in 5
out 3
in 1
in 2
in 3
in 4
in 5
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
27
คาสง่ ั Break
้ ยุดการทางานของวนรอบ loop
คาสง่ ั break จะใชห
่ ถานะการณ์ทส
เมือ
่ เข้าสูส
ี่ ร้างโดยเงือ
่ นไขของ break
for ($i=1; $i<11; $i++)
{
if ($i == 6) break;
echo "Hello...ครัง้ ที่ $i <br>";
}
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
28
คาสง่ ั Continue
คาสง่ ั Continue จะทางานตรงข้ามก ับคาสง่ ั Break คาสง่ ั
Continue จะสง่ ั ให้โปรแกรมทางานต่อไป
: คาสง่ ั Continue ก ับ For คือจะเป็นการสง่ ั ให้กล ับไป
เพิม
่ ค่าให้ก ับต ัวแปรท ันที
: คาสง่ ั Continue ก ับ While คือจะเป็นการสง่ ั ให้กล ับไป
ทดสอบเงือ
่ นไขใหม่ท ันที
for ($i=1; $i<11; $i++)
{
if ($i==6) continue;
echo "Hello...ครงที
ั้ ่ $i <br>";
}
PHP
ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยเชียงใหม่
29