2.
ตัวแปรและคำสั่งพื้นฐาน
คุณจะได้เรียนรู้
- การตั้งตัวแปรแบบต่างๆและการเรียกใช้ตัวแปร
- คำสั่งพื้นฐานต่างๆเช่น
if-else / while / foreach
/ for
- การใช้เครื่องหมายสัญลักษณ์
เท่ากับ มากกว่า น้อยกว่า เงื่อนไข ฯลฯ
- การทำงานทางคณิตศาสตร์ขั้นพื้นฐาน
(บวก-ลบ-คูณ-หาร)
ถ้าจะถามว่าอะไรคือตัวแปร
มีไว้ทำไม ใช้อย่างไร ไม่ต้องถามผมหรอก เพราะกำลังจะทำให้ดูอยู่นี่แล้ว 1
ตัวอย่างการตั้งตัวแปรแบบที่
1 และการใช้คำสั่ง if-else
print
"content-type:text/html\n\n"; # บรรทัดนี้ต้องมีอยู่แล้ว ถ้าไม่รู้ว่ามีไว้ทำไมให้กลับไปอ่านบทที่
1
$guest_name
= "Suwat"; #
ตั้งตัวแปรชื่อ guest_name มีค่าของตัวแปรนี้เท่ากับ Suwat
if ($guest_name eq "Suwat") { # ใช้คำสั่ง if โดยบอกว่า ถ้า guest_name เท่ากับ Suwat (eq เท่ากับ
=)
print
"Hello Suwat, how are you ?";
# ให้พิมพ์ออกมาว่า Hello Suwat, how are you ?
} #
xxx
else { #
ถ้าเป็นอย่างอื่นให้พิมพ์ว่า Sorry I don't know you, may I have your name
?
print "Sorry I don't know you, may I have your name
?";
}
รู้หรือยังว่าตัวแปรมีไว้ทำไม
?
จากตัวอย่างข้างบนนี้เราได้ทำการตั้งตัวแปร และใช้คำสั่ง if-else บันทัดที่ตั้งตัวแปรคือ
$guest_name
= "Suwat";
ถ้าคุณตั้งแบบนี้ $guest_name
= 'Suwat'; ก็จะมีค่าเท่ากัน
แต่ถ้าเปลี่ยน จาก Suwat ให้เป็น suwat จะไม่เท่ากันแล้วเพราะ perl จะมองตัวอักษรเล็กใหญ่มีค่าไม่เท่ากัน
การตั้งตัวแปรก็ระวังด้วยนะครับถ้าเป็นตัวแปรที่มีค่า ของตัวแปรเป็นตัวอักษรต้องมีเครื่องหมาย
'' หรือ "" ครอบค่าของตัวแปรอยู่ ดังตัวอย่าง แต่ถ้าค่าของตัวแปรเป็นตัวเลขเมื่อไร
ไม่ต้องใช้เครื่องหมายครอบนะครับเช่น $guest_age
= 82;
เป็นต้น การตั้งตัวแปรข้างต้นสำหรับตัวแปรที่มีค่าของตัวแปรเพียงค่าเดียว
ถ้าตัวแปรมีค่าเท่ากันสามารถตั้งได้ดังนี้ $apple
= $orange = $durian = "fruit";
(ค่าของ 3 ตัวแปรนี้คือ fruit) หรือถ้ามีค่าของตัวแปรเป็นตัวเลขเช่น $a
= $b = $c = $d = 10;
ต่อไปนี้เป็นตัวอย่างย่อยๆ ก่อนการอธิบาย การใช้ if-else ต่อไป
print "Content-type:text/html\n";
print "<html><body>\n";
$name = "Suwat"; #ตั้งตัวแปรตัวอักษร
print "My name is "; #พิมพ์ออกที่
browser
print "$name"<br>; #พิมพ์ค่าตัวแปรออกที่ browser พร้อมกับใส่ <br> ขึ้นบันทัดใหม่
$myage = 15; #ตั้งตัวแปรตัวเลข
print "<br>My age is $myage"; #พิมพ์ออกที่ browser
print "</body></html>";
ต่อไปก็อธิบาย
คำสั่ง
if - else
$guest_name
= "Suwat";
if
($guest_name
eq "Suwat")
{
print
"Hello Suwat, how are you ?";
}
# xxx
else
{
print "Sorry I don't know you, may I have your name
?";
}
ดูอีกครั้งนะครับจะได้แน่น
ผมจับแยกสีไว้จะได้ดูง่ายๆ โครงสร้างของชุดคำสั่ง if-else จะเป็นสีน้ำเงิน
ที่ขีดเส้นใต้จะเป็นเงื่อนไข เช่นอะไรเท่ากับ(== หรือ eq)หรือไม่เท่ากับ(!=
หรือ ne)อะไร อะไรมากกว่า(> หรือ gt)หรือน้อยกว่า(< หรือ lt)อะไรเป็นต้น
ส่วนสุดท้ายที่เป็นตัวเอียงคืองานที่ต้องทำเมื่อเงื่อนไขเป็นจริงหรือไม่เป็นจริง
การใช้คำสั่ง if-else จะใช้แค่ if อย่างเดียวก็ได้ ถ้าเราไม่ต้องการให้เกิดงานอื่น
จากตัวอย่าง จะใช้ดังนี้
$guest_name
= "Suwat";
if
($guest_name
eq "Suwat")
{
print
"Hello Suwat, how are you ?";
}
หรือถ้าคุณต้องการให้มีหลายเงื่อนไขให้ใช้
elseif แทรกไปเช่น
$guest_name
= "Suwat";
if
($guest_name
eq "Suwat")
{
print
"Hello Suwat, how are you ?";
}
elseif
($guest_name
eq "Wan")
{
print
"Hello Wan,
how are you ?";
}
elseif
($guest_name
eq "Moo")
{
print
"Hello Moo,
how are you ?";
}
else
{
print "Sorry I don't know you, may I have your name
?";
}
ตัวอย่างการตั้งตัวแปรแบบที่
2 และการใช้คำสั่ง foreach
การตั้งตัวแปรแบบที่
2 นี้ใช้ในกรณีที่ 1 ตัวแปรมีหลายค่า ไม่ค่อยอยากบอกเท่าไรเลยว่าลักษณะแบบนี้
เขาเรียกว่า ตัวแปร array ส่วนแบบที่ผ่านมาเรียกว่า scalar มาดูตัวอย่างการตั้งตัวแปร
array
กันเลยนะครับ
@fruit
= ("apple","durian","pineapple");
ตัวแปรที่ชื่อ
fruit มีค่าอยู่ 3 ค่าคือ apple, durian, pineapple ชื่อของตัวแปรแบบนี้ต้องมี
@ นำหน้าด้วยนะครับ การนำค่าของตัวแปรแบบนี้มาใช้ต้องทำอย่างไรดี ดูเลยแล้วกันครับ
@fruit
= ("apple","durian","pineapple");
foreach
$a (@fruit){
print "$a<br>\n";
}
เอาละครับถึงเวลาแสดงฝีมือ
copy code ข้างบนนี้ไปสร้างเป็นไฟล์ใหม่ที่สามารถส่งผลออกมาที่
หน้าจอบราวเซอร์ได้ ลองทำดูนะครับ ผลที่เกิดจาก code นี้จะได้ค่าของตัวแปรออกมา
3 บันทัด ซึ่งเป็นผลจากการทำงานของคำสั่ง foreach ดูจากตัวอย่างคุณคงใช้งานได้นะครับ
ผมมีอีก 1 ตัวอย่างของตัวแปร Array ดังนี้ครับ
print
"content-type:text/html\n\n";
@arraycolor
= ( "red" , "blue" , "black" , "green"
);
print "@arraycolor\n"; # พิมพ์ออกหน้าจอทั้งหมด
print "<hr>";
print "$arraycolor[0]\n"; # พิมพ์ออกหน้าจอทีละตัวแปร
print "$arraycolor[1]\n";
print "$arraycolor[2]\n";
print "$arraycolor[3]\n";
ลองสร้างเป็นไฟล์แล้วดูผลนะครับ คุณคงได้ปิ้งไอเดียแน่ๆ
ตัวอย่างการตั้งตัวแปรแบบที่
3 ตัวแปรแบบจับคู่
print "content-type:text/html\n\n";
%distante = ( "Korat"
, 120 , "Ayuttaya" , 50 , "Chiengmai" , 334 );
print " From Bangkok to Korat is $distante{'Korat'}
kms.\n";
print " From Bangkok to Korat is $distante{'Ayuttaya'}
kms.\n";
print " From Bangkok to Korat is $distante{'Chiengmai'}
kms.\n";
ลองเรียกโปรแกรมนี้ดูแล้วจะอ๋อ code อยู่นี่ครับ
ตัวแปรระบบ
print "content-type:text/html\n\n";
$ip = $ENV{'REMOTE_ADDR'};
print "ENV{'REMOTE_ADDR = $ip<br><hr>";
foreach $key (keys(%ENV)) {
print "$key = $ENV{$key}<br>\n";
}
อย่างงนะครับ ถ้าเห็นผลจากโปรแกรมนี้ บางทีคุณจะรู้จักอะไรมากขึ้นจากโปรแกรมไม่กี่บันทัดนี้
การใช้คำสั่ง
while
print
"content-type:text/html\n\n";
$count
= 1;
while
($count
!= 7){
print "<br><font size=\"$count\" color=\"red\">Hello
My Perl</font>\n";
$count++;
}
ลองเรียกโปรแกรมนี้
แล้ว view source จากบราวเซอร์นะครับ เปรียบเทียบกับที่เห็นอยู่ด้านบนนี้
จะพบสิ่งเหลือเชื่อครับ อย่าลืมนับจำนวนบันทัดของ code
นี้ กับ code ที่ได้จากบราวเซอร์ด้วยนะครับ
การใช้คำสั่ง for
print
"content-type:text/html\n\n";
$My_name
= "Suwat";
for
($count=1;$count<=10;$count++){
print "$My_name<br>\n";
}
อีกแล้วครับท่าน
ทดลองโปรแกรมนี้เหมือนกับคำสั่ง for แล้วตรวจผลที่ได้ คุณจะพบสัจธรรม
การใช้เครื่องหมายสัญลักษณ์เงื่อนไข
จะเห็นว่าใน
code ต่างๆด้านบนจะมีการใช้สัญลักษณ์เช่น eq เป็นต้น เรามาดูสัญลักษณ์อื่นๆที่ใช้ในการเขียน
โปรแกรมภาษา Perl กัน ถ้าเจออีกจะได้ไม่งง $x และ $y ผมสมมุติให้เป็นตัวแปรนะครับ
เวลาที่ใช้งานจริงๆ ต้องนำไปใช้ให้เหมาะกับตัวแปรด้วยนะครับ เช่น
if ($x == &y) {
... ใช้ในกรณีที่ทั้ง $x และ $y เป็นตัวแปรที่มีค่าเป็นตัวเลข แต่ถ้าเป็นตัวอักษรต้องแทน
== ด้วย eq นะครับ แถมอีกนิด เงื่อนไขและ(and)ให้ใช้ &&
และเงื่อนไขหรือ(or)ให้ใช้ ||
| |
ถ้าเป็นตัวเลข |
ถ้าเป็นตัวอักษร |
| $x
เท่ากัน $y |
$x
== $y |
$x
eq $y |
| $x
ไม่เท่ากัน $y |
$x
!= $y |
$x
ne $y |
| $x
มากกว่า $y |
$x
> $y |
$x
gt $y |
| $x
มากกว่าหรือเท่ากัน $y |
$x
>= $y |
$x
ge $y |
| $x
น้อยกว่า $y |
$x
< $y |
$x
lt $y |
| $x
น้อยกว่าหรือเท่ากัน $y |
$x
<= $y |
$x
le $y |
การทำงานทางคณิตศาสตร์
(บวก-ลบ-คูณ-หาร)
$a
= 2;
$b = 4;
$num1 = $a + $b; # บวกครับ
$num1 = 2 + 32; # บวกครับ
$num2 = $a * $b; #คูณกันเห็นๆ
$num2 = $a * 6; #คูณกันเห็นๆ
$num3 = $b / $a; #อีนี่หารจะจ๊ะนาย
$num3 = 10 / 5; #อีนี่หารจะจ๊ะนาย
$num4 = $b - $a; #จะอะไรถ้าไม่ใช่ลบ
$num4 = 100 - $a; #จะอะไรถ้าไม่ใช่ลบ
$answer = $num1 + $num2 + $num3 + $num4;
print "<br>คำตอบคือ $answer";
by thaitop.com
|