งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)"— ใบสำเนางานนำเสนอ:

1 วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์) sobree@skt.ac.th
ฟังก์ชัน วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)

2 นิยาม ฟังก์ชันคือส่วนของโปรแกรมที่ทำงานเสร็จสิ้นภายในตัวเอง มีลักษณะเหมือนกับโปรแกรมย่อยสับรูทีน (subroutine) ภาษา PHP มีชนิดของฟังก์ชันที่เตรียมให้ใช้งาน 2 ชนิด คือ Library Function คือ ฟังก์ชันที่ภาษา PHP สร้างไว้เรียบร้อยแล้ว สามารถเรียกใช้ได้ทันที User-defined functions คือฟังก์ชันที่ผู้ใช้โปรแกรมเขียนขึ้นเอง ()

3 ฟังก์ชันที่ผู้ใช้โปรแกรมเขียนขึ้นเอง (User-defined functions)
การสร้างฟังก์ชันขึ้นใช้เอง มีรูปแบบดังนี้ function function_name ([parameterList]) { รายการชุดคำสั่ง   [return ค่าที่ต้องการส่งกลับ] }

4 การส่งค่ากลับของฟังก์ชัน
ฟังก์ชันจะให้ค่ากลับคืนหรือไม่ก็ได้ ถ้าต้องการให้ค่ากลับคืนจากการทำงานของฟังก์ชัน จะใช้คำสั่ง return การเรียกใช้ฟังก์ชัน ทำได้โดยการอ้างถึงชื่อของฟังก์ชันที่ต้องการโดยที่คำสั่งที่เรียกใช้นั้นจะอยู่ก่อนหรือหลังฟังก์ชันที่ถูกเรียกก็ได้

5 การส่งค่ากลับของฟังก์ชัน
ตัวอย่าง การคำนวนหาพื้นที่วงกลม <? function area_of_circle( $flt_radius ) { return( * ($flt_radius * $flt_radius)); } $flt_area_of_circle = area_of_circle(5); echo "The area is $flt_area_of_circle.<br>"; ?> The area is

6 <HTML> <HEAD> <TITLE>Figure 4-2</TITLE> </HEAD> <BODY> <? function printBold($inputText) { print("<B>" . $inputText . "</B>"); } print("This Line is not Bold<BR>\n"); printBold("This Line is Bold"); print("<BR>\n"); ?> </BODY> </HTML>

7 การผ่านค่าพารามิเตอร์ให้กับฟังก์ชัน
การผ่านค่าไปยังฟังก์ชันมี 2 วิธี 1. Call by values ตัวแปรรับค่ามาแล้วเกิดการเปลี่ยนแปลงค่าจะไม่มีการส่งกลับคืน 2. Call by reference การส่งข้อมูลในกรณีนี้ตัวแปรพารามีเตอร์ที่รับค่าจะต้องนำหน้าด้วยเครื่องหมาย “&” กรณีนี้จะทำให้ตัวแปรที่ทำหน้าที่ส่งค่าและตัวแปรที่ทำหน้าที่รับค่าอ้างอิงที่อยู่ของข้อมูลเดียวกัน เมื่อมีการเปลี่ยนแปลงค่าของตัวแปรพารามีเตอร์ในฟังก์ชันก็จะมีผลทำให้ค่าของตัวแปรอาร์กิวเมนต์ที่ส่งไปให้โปรแกรมเปลี่ยนไปด้วย

8 ตัวอย่าง Call by values
function one ( $parameter ) { $parameter++; } $a = 10 ; one( $a ) ; echo “ a = $a <BR>” ; ผลลัพธ์ของโปรแกรมคือ a = 10

9 ตัวอย่าง Call by reference
function one ( &$parameter ) { $parameter++; } $a = 10 ; one( $a ) ; echo “ a = $a <BR>” ; ผลลัพธ์ของโปรแกรมคือ a = 11

10 <HEAD> <TITLE>Figure 4-4</TITLE> </HEAD> <BODY> <? function stripCommas(&$inputString) { $inputString = ereg_replace(",", "", $inputString); } $myNumber = "10,000"; stripCommas($myNumber); print($myNumber); ?> </BODY> </HTML>

11 ตัวอย่าง <? function minmax (&$a, &$b) { if ($a > $b) {
  <? function minmax (&$a, &$b)  {   if ($a > $b) {     $t=$a; $a=$b; $b=$t;   } } $x=10; $y=3; echo "x=",$x,",y=",$y,"<BR>\n"; minmax($x,$y); ?>

12 การสลับค่าของตัวแปรสองตัวด้วยฟังก์ชัน swap()
<? function swap(&$a, &$b) {   $t = $a;   $a = $b;   $b = $t; } $x=10; $y=3; echo "x=",$x,",y=",$y,"\n"; swap($x,$y); ?>

13 มีข้อสงเกตอยู่ว่า การใช้ call-by-reference ไม่จำเป็นต้องทำตอนนิยามฟังก์ชันเท่านั้น แต่อาจจะทำตอนผ่านตัวแปรเมื่อเรียกใช้งานจริง ตัวอย่างเช่น <? function swap($a, $b) {   $t = $a;   $a = $b;   $b = $t; } $x=10; $y=3; echo "x=",$x,",y=",$y,"\n"; swap(&$x, &$y); ?>

14 การกำหนดค่าเริ่มต้นให้กับตัวแปรพารามิเตอร์
เราสามารถกำหนดค่าเริ่มต้นให้กับตัวแปรทำให้มีประสิทธิภาพมากขึ้น ตัวอย่าง <? function font( $str_text, $str_color = 'blue', $int_size = 2 ) { echo "<font size=\"$int_size\" color=\"$str_color\">$str_text</a>"; } ?> <? font('This line is blue - size 2.'); ?> <br> <? font('This line is red - size 2.', 'red'); ?><br> <? font('This line is green - size 4', 'green', 4); ?><br> This line is blue – size 2. This line is blue – size 4.

15 <HTML> <HEAD> <TITLE>Arguments with Default Values</TITLE> </HEAD> <BODY> <? function printColored($Text, $Color="black") { print("<FONT COLOR=\"$Color\">$Text</FONT>"); } printColored("This is black text"); print("<BR>\n"); printColored("This is blue text", "blue"); ?> </BODY> </HTML>

16 ขอบเขตของตัวแปร มี 2 แบบ คือ
1. Global scope เมื่อกำหนดตัวแปรแบบนี้แล้วสามารถเรียกใช้ได้ทุกส่วนของโปรแกรมและค่าของตัวแปรนั้นยังอยู่จนกว่าโปรแกรมนั้นจะจบหรือหยุดทำงาน 1.1 โดยใช้คำสั่ง global 1.2 โดยผ่านตัวแปรอาร์เรย์ชื่อ $GLOBAL

17   <? $a = 10; $b = 20; function getMin ( ) {  global $a, $b;  if ($a < $b)   return $a;  else   return $b; } function getMin2 () {   if ($GLOBALS["a"] < $GLOBAL["b"])   return $GLOBALS["a"];   else   return $GLOBALS["b"]; echo getMin()."<BR>\n"; echo getMin2()."<BR>\n"; ?>

18 ฟังก์ชัน getMin() อีกรูปแบบหนึ่ง โดยไม่ใช้ตัวแปรแบบ global ภายในฟังก์ชัน และใช้วิธีผ่านค่าแทน
  <? $a = 10; $b = 20; function getMin ($a, $b) {   if ($a < $b)       return $a;   else       return $b; } echo getMin($a, $b)."<BR>\n"; ?>

19 การใช้ตัวแปรแบบ global ภายในฟังก์ชัน
2. Local Scope คือตัวแปรที่กำหนดขึ้นใช้ภายในฟังก์ชันนั้นๆเท่านั้น เมื่อออกจากส่วนของโปรแกรมนั้นไปแล้วตัวแปรนั้นจะหายไปและตัวแปรที่กำหนดในฟังก์ชันหนึ่งไม่สามารถเรียกใช้อีกจากฟังก์ชันหนึ่งได้

20 การกำหนดตัวแปรแบบ static ภายในฟังก์ชัน
ตัวแปรภายในฟังก์ชันจะสามารถเก็บค่าไว้ได้ตลอดเวลาโดยไม่สูญหายไป function MyFunc() {   static $num_func_calls = 0;   echo "my function\n";   return ++$num_func_calls; }

21 การใช้ฟังก์ชันเพื่อสร้างตัวเลขแบบสุ่ม
การใช้ฟังก์ชันเพื่อสร้างตัวเลขแบบสุ่ม หรือ random number generator จะคล้ายกับของภาษาซี ตัวอย่าง srand( date("s") ); for ($i=0; $i < 10; $i++) {   $x = rand() % 10;   echo $x,"  "; }

22 ฟังก์ชันเรียกใช้ฟังก์ชัน (Nesting Function Calls)
ตัวอย่าง <?php function increment_by_two( $int_parameter ) { $int_parameter += 2; return($int_parameter); } มีต่อ

23 function increment_by_three( $int_parameter ) {
// make a nested function call to increment_by_two(). return( increment_by_two($int_parameter) ); } $a = increment_by_three( 34 ); echo "a = $a<br>"; ?> ผลลัพธ์ของโปรแกรมคือ a = 37

24 การสร้างฟังก์ชันแบบเรียกตัวเอง (recursive function)
ฟังก์ชันที่มีคำสั่งภายในฟังก์ชันนั้นเรียกใช้ฟังก์ชันตัวเองแบบวนลูป ตัวอย่าง การหาค่าแฟกทอเรียล n! function factorial ($n) {   if ( ($n == 0) || ($n == 1) )    return 1;   else     return $n*factorial($n-1); }

25 <HTML> <HEAD> <TITLE>Figure 4-6</TITLE> </HEAD> <BODY> <? function checkInteger($Number) { if($Number > 1) /* integer minus one is still an integer */ return(checkInteger($Number-1)); } elseif($Number < 0)

26 { /* numbers are symmetrical, so */ /* check positive version */ return(checkInteger((-1)*$Number-1)); } else if(($Number > 0) AND ($Number < 1)) return("no"); /* zero and one are */ /* integers by definition */ return("yes");

27 print("Is 0 an integer? " . checkInteger(0) . "<BR>\n"); print("Is 7 an integer? " . checkInteger(7) . "<BR>\n"); print("And 3.5? " . checkInteger(3.5) . "<BR>\n"); print("What about -5? " . checkInteger(-5) . "<BR>\n"); print("And -9.2? " . checkInteger(-9.2) . "<BR>\n"); ?> </BODY> </HTML>

28 ตัวอย่างที่ 5-10 fibonacci.inc การหาค่า fibonacci number
<? function fibonacci( $var ) { // the fibonacci series is only defined for // positive values. if ($var < 0) { return( 0 ); } // the first two elements in the series are // defined as zero and one and don't need recursion. if ($var < 2) { return( $var );

29 // use recursion to find the previous two elements
// in the series. return( fibonacci($var-1) + fibonacci($var-2) ); } ?>

30 โปรแกรมที่เรียกใช้คือ
<? // include the fibonacci function in this script require (‘fibonacci.inc’) ; // call the fibonacci function with a parameter of four. $n = Fibonacci ( 4 ) ; // display the result of the fibonacci call. Echo “$n <BR>” ; ?>

31 การผ่านค่ากลับคืนมากกว่าหนึ่งจากฟังก์ชัน
โดยปรกติแล้วเราไม่สามารถผ่านค่ากลับคืนจากฟังก์ชันได้มากกว่าหนึ่ง แต่อย่างไรก็ตาม ยังมีวิธีการหนึ่งที่ช่วยแก้ปัญหาดังกล่าวได้ วิธีนี้คือ เก็บค่าต่างๆที่ต้องการจะใช้เป็นค่ากลับคืนไว้ใน array แล้วใช้ array นั้นเป็นค่ากลับคืน และผู้เรียกใช้ฟังก์ชันสามารถใช้ฟังก์ชัน list() อ่านค่าเหล่านั้นได้ ตัวอย่างเช่น function foobar() {    return array ("foo", "bar", 0xff); } list ($foo, $bar, $num) = foobar(); echo "$foo $bar $num <BR>\n"; ผลลัพธ์ของโปรแกรมคือ foo bar 255

32 <HTML> <HEAD> <TITLE>Figure 4-7: Dynamically Calling a Function</TITLE> </HEAD> <BODY> <? function write($text) { print($text); } function writeBold($text) print("<B>$text</B>");

33 $myFunction = "write"; $myFunction("Hello!"); print("<BR>\n"); $myFunction = "writeBold"; $myFunction("Goodbye!"); ?> </BODY> </HTML>

34 การใช้คำสั่ง include และ require
คำสั่งทั้งสองมีไว้เพื่อแทรกเนื้อหาจากไฟล์อื่นที่ต้องการ โดย คำสั่ง require จะอ่านเพียงครั้งเดียว คือไฟล์แรก และจะแทรกไฟล์นี้เท่านั้นไปตามจำนวนครั้งที่วนลูป ในขณะที่ include สามารถอ่านได้ไฟล์ต่างๆกันตามจำนวนครั้งที่ต้องการ

35 ตัวอย่าง <? $filename[]="file1.inc"; $filename[]="file2.inc"; for ($i = 0; $i < 2; $i++) { include $filename[$i]; } ?> ไฟล์ file1.inc Hello world 1<BR> ไฟล์ file2.inc Hello world 2<BR>

36 การอ่านตัวแปรจากภายนอกที่ได้จากการ Web browser โดยวิธี GET หรือ POST
การส่งและรับข้อมูลจะหว่าง Web browser กับ Script ที่เขียนขึ้นมา ตัวอย่าง การใช้ Post <form action="login.php3" method="post"> <table>  <tr><td>login:</td> <td><input type="text" name="login"></td> </tr><br> มีต่อ

37 <tr><td>password:</td>
<td><input type="text" name="password"></td> </tr><br> </table> <p><input type="submit"> </form>

38 ตัวอย่าง ไฟล์ login.php
<HTML> <HEAD><TITLE> Result </TITLE></HEAD> <BODY> <P> Your login = <? echo "$login" ?> <BR> Your password = <? echo "$password"; ?> </BODY> </HTML>

39 การตรวจชนิดของ web browser
 ตัวอย่าง   function getBrowserName() {   global $HTTP_USER_AGENT;   $browser=strtoupper($HTTP_USER_AGENT);   if (strstr($browser,"MSIE."))     return "MS Internet Explorer";   else if (strstr($browser,"MOZILLA"))     return "Netscape";   else     return "";  }


ดาวน์โหลด ppt วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)

งานนำเสนอที่คล้ายกัน


Ads by Google