PHP: [8] การสร้างฟังก์ชั่นขึ้นใช้เอง (User-defined functions)

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
Introduction to C Introduction to C.
โครงสร้างภาษาซี เบื้องต้น
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
ฟังก์ชั่นในภาษาซี.
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงาน.
Introduction to C Programming
Chapter 7 ขอบเขตของตัวแปร Variable Scope.
สภาวะแวดล้อมในขณะโปรแกรมทำงาน
Control structure part II
Data Type part.III.
ฟังก์ชัน (Function).
Structure Programming
Function.
Week 6 ประกาศค่าตัวแปร.
บทที่ 3 พื้นฐานการเขียนโปรแกรม Visual Basic
Visual Basic 6 By Samaporn Yendee VB6.
PHP LANGUAGE.
โครงสร้างภาษาซี.
Properties ของคอนโทรล ที่ควรรู้จักในเบื้องต้น
ฟังก์ชั่น function.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
โปรแกรมย่อย : Pascal Procedure
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
บทที่ 13 Pre-processor directive & macro Kairoek choeychuen
C Programming Lecture no. 6: Function.
Functions & Sub Program ฟังก์ชันและโปรแกรมย่อย
คลาสและวัตถุ (4) (Class & Object)
บทที่ 4 Method (2).
ข้อมูลพื้นฐานและตัวดำเนินการ
บทที่ 5 ฟังก์ชันของ PHP การประกาศฟังก์ชัน { Statement; }
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงานลักษณะของฟังก์ชั่นมีความรอบรัดสั้นกว่าแบบวนลูป.
Lecture 7 ฟังก์ชัน To do: Hand back assignments
ตัวแปร (Variable) คือ ชื่อที่ตั้งขึ้นเพื่อเก็บข้อมูลในหน่วยความจำ สามารถเก็บข้อมูลชนิดใดก็ ได้ ลักษณะที่สำคัญ ค่าที่จัดเก็บ เมื่อปิดโปรแกรมข้อมูลจะหายไป.
ตัวแปรกับชนิดของข้อมูล
ตัวแปรในภาษา JavaScript
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ใบงานที่ 3 โครงสร้างของโปรแกรมภาษาซี
บทที่ 5 ฟังก์ชันกับอาร์เรย์ Function & Array
ประวัติความเป็นมาภาษาซี
1. 2  ในการใช้งานเว็บไซต์ โดยปกติเราจะไม่สามารถ ใช้งานตัวแปรที่มีลักษณะ Global ที่สามารถ นำไปใช้ได้กับเว็บเพจหน้าอื่นๆ ปกติในการใช้ งานค่าต่างๆ ของเว็บเพจ.
การสร้างและใช้งานฟังก์ชั่น
ตัวแปรกับชนิดของข้อมูล
Week 2 Variables.
เสรี ชิโนดม ฟังก์ชัน เสรี ชิโนดม
การประมวลผลสายอักขระ
Computer Programming for Engineers
วิทยา กรระสี (วท.บ. วิทยาการคอมพิวเตอร์)
ฟังก์ชัน.
Object-Oriented Programming
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
หลักการเขียนโปรแกรม ( )
PHP: [6] ฟังก์ชั่นเกี่ยวกับสตริง
บทที่ 9 พอยเตอร์. สื่อชุดนี้เป็นลิขสิทธิ์ของสำนักพิมพ์วังอักษรใช้เพื่อ การศึกษาเท่านั้น พอยเตอร์ (Pointer) พอยเตอร์คือต้นฉบับของชนิดข้อมูล เป็นชนิด ข้อมูลที่สร้างจากข้อมูลมาตรฐานชนิดหนึ่ง.
Introduction to PHP, MySQL – Special Problem (Database) Choopan Rattanapoka.
การเขียนโปรแกรมคอมพิวเตอร์ 1
สายอักขระ เขียนโปรแกรม Java เบื้องต้น.
อาจารย์ปิยศักดิ์ ถีอาสนา
1. Global variable คือ ตัวแปรที่กำหนดหรือประกาศไว้นอกฟังก์ชันใด ๆ ทุกฟังก์ชัน สามารถนำตัวแปรประเภท Global ไปใช้ได้ทุกฟังก์ชัน.
บทที่ 2 โครงสร้างของภาษา C.
Function ธนวัฒน์ แซ่ เอียบ. What is a function ฟังก์ชันในภาษา C เป็นโปรแกรมที่ถูกออกแบบมาเพื่อ ใช้แก้ปัญหางานใดงานหนึ่งโดยเฉพาะ ฟังก์ชันจะเปลี่ยน input.
บทที่ 5 Function. Function Function เป็นการแบ่งโค้ดโปรแกรมออกเป็นส่วนย่อยๆ เพื่อทำงานบางอย่าง - โค้ดโปรแกรมเรียงต่อกันยาว - สามารถเรียกใช้ Function ซ้ำได้
1 Functions กนกวรรธน์ เซี่ยงเจ็น สำนักวิชาเทคโนโลยีสารสนเทศ และการสื่อสาร มหาวิทยาลัยนเรศวร พะเยา.
Function. วัตถุประสงค์การเรียนรู้ ให้รู้จักว่าฟังก์ชันคืออะไร ให้รู้จักว่าเราสร้างฟังก์ชันเพื่อจุดประสงค์ใด หรือ เพื่อประโยชน์ใด ให้รู้จักประเภทของฟังก์ชัน.
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
Variable, Constant. Variable คือชื่อที่ตั้งขึ้นมาเพื่อจองพื้นที่ใน หน่วยความจำสำหรับ พักข้อมูล.
บทที่ 5 โปรแกรมย่อย.
บทที่ 7 การสร้างและการใช้งาน ฟังก์ชัน อาจารย์ชนิดา คำเพ็ง สาขาวิชาเทคโนโลยีสารสนเทศ คณะวิทยาศาสตร์ และเทคโนโลยี
ใบสำเนางานนำเสนอ:

PHP: [8] การสร้างฟังก์ชั่นขึ้นใช้เอง (User-defined functions)

ฟังก์ชั่น (Functions) ฟังก์ชั่น (Functions) หมายถึง กลุ่มของคำสั่งที่ถูกนำมารวบรวมไว้ด้วยกัน เพื่อให้สามารถเรียกใช้ได้อย่างสะดวกและเป็นระบบ ฟังก์ชั่นที่ผู้เขียนโปรแกรมสร้างขึ้นมาใช้เองเรียกว่า User-defined functions การส่งผ่านค่าให้กับฟังก์ชั่นมี 2 วิธี ส่งผ่านอาร์กิวเมนต์แบบ pass by value ส่งผ่านอาร์กิวเมนต์แบบ pass by reference

การประกาศฟังก์ชั่น (Functions) รูปแบบการประกาศฟังก์ชั่น อาร์กิวเมนต์ เป็นตัวแปรชนิดต่าง ๆ เราใช้อาร์กิวเมนต์ในการรับข้อมูลเข้ามาประมวล และส่งข้อมูลกลับออกไป (สำหรับอาร์กิวเมนต์ที่ถูกกำหนดให้ส่งผ่านแบบ by reference) function ชื่อฟังก์ชั่น ([อาร์กิวเมนต์1, อาร์กิวเมนต์2, ...]) { คำสั่ง; ……; }

ตัวอย่าง : ฟังก์ชั่นที่รับอาร์กิวเมนต์ <html> <head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function carea($dia, $mode) { if ($mode == 0) { $area = (22/28) * $dia * $dia; //สูตรการคำนวณหาพื้นที่ของรูปวงกลม return $area; } elseif ($mode == 1) { $area = $dia * $dia; //สูตรการคำนวณหาพื้นที่ของรูปสี่เหลี่ยมจัตุรัส } //จบ elseif } //จบฟังก์ชั่น ex12_01.php

ตัวอย่าง : ฟังก์ชั่นที่รับอาร์กิวเมนต์ $diameter = 7; echo "วงกลมเส้นผ่านศูนย์กลางยาว $diameter หน่วย มีพื้นที่ = " . carea($diameter, 0) . " ตารางหน่วย<br />\n"; echo "สี่เหลี่ยมจัตุรัสยาวด้านละ $diameter หน่วย มีพื้นที่ = " . carea($diameter, 1) . " ตารางหน่วย<br />\n"; ?> </body> </html> ต่อ $mode = 0 แสดงว่าให้คำนวณหาพื้นที่ วงกลม $mode = 1 แสดงว่าให้คำนวณหาพื้นที่ สี่เหลี่ยมจตุรัส

ตัวอย่าง : ฟังก์ชั่นที่ไม่รับอาร์กิวเมนต์ <html><head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function growname() { $myname = "SOM"; $newname = ""; for ($i=0; $i<strlen($myname); $i++) { $newname .= substr($myname, $i, 1); //$newname = $newname . substr($myname,$i,1); echo $newname . "<br />\n"; } //จบ for } //จบฟังก์ชั่น growname(); ?> </body></html> ex12_02.php

ตัวอย่าง : ฟังก์ชั่นที่รับอาร์กิวเมนต์ <html> <head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function growname($myname) { $newname = ""; for ($i=0; $i<strlen($myname); $i++) { $newname .= substr($myname, $i, 1); echo $newname . "<br />\n"; } //จบ for } //จบฟังก์ชั่น growname("SOM"); growname("Song"); ?> </body></html> ex12_03.php

การกำหนดค่า default ของอาร์กิวเมนต์ หากมีการเรียกใช้ฟังก์ชั่นโดยไม่กำหนดค่าให้กับ อาร์กิวเมนต์ PHP จะนำค่า default มากำหนดให้กับอาร์กิวเมนต์นั้น การกำหนดค่า default ให้กับอาร์กิวเมนต์จะต้องทำในส่วนของการประกาศฟังก์ชั่น

ตัวอย่าง : <html><head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php // อาร์กิวเมนต์ $myname มีค่าดีฟอลต์คือ "Test" ดังนั้นถ้าเราเรียกใช้ฟังก์ชั่นนี้ //โดยไม่ส่งค่าอาร์กิวเมนต์มา ค่า "Test" ก็จะถูกนำมาประมวลผล function growname($myname = "Test") { $newname = ""; for ($i=0; $i<strlen($myname); $i++) { $newname .= substr($myname, $i, 1); echo $newname . "<br />\n"; } growname("SOM"); growname(); ?> </body></html> ex12_04.php

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

ตัวอย่าง : <html><head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function carea($dia) { //สูตรการคำนวณหาพื้นที่ของรูปวงกลม $area = (22/28) * $dia * $dia; return $area; } $diameter = 7; $newval = carea($diameter); //สร้างตัวแปรขึ้นมารับค่าจากฟังก์ชั่น echo "วงกลมเส้นผ่านศูนย์กลางยาว $diameter หน่วย "; echo "มีพื้นที่ = $newval ตารางหน่วย<br />\n"; ?> </body></html> ex12_05.php

ขอบเขตของตัวแปร (Variable scope) ตัวแปรที่ประกาศไว้ในฟังก์ชั่นใด จะเป็นที่รู้จักและเรียกใช้ได้เฉพาะในฟังก์ชั่นนั้น ถึงแม้ว่าจะมีการประกาศตัวแปรชื่อเดียวกันไว้ทั้งในและนอกฟังก์ชั่น ก็ถือว่าเป็นตัวแปรคนละตัวและมีตำแหน่งในหน่วยความจำคนละที่กัน

ตัวอย่าง : <html><head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php //สร้างตัวแปร $myvar เป็นตัวแปรชนิดสตริงไว้นอกฟังก์ชั่น $myvar = "TAMSAILOM"; function testvar() { //สร้างตัวแปร $myvar เป็นตัวแปรชนิดจำนวนทศนิยมไว้ในฟังก์ชั่น $myvar = 1500.25; return $myvar; } echo "ตัวแปร \$myvar มีค่า $myvar<br />\n"; echo "ตัวแปร \$myvar ในฟังก์ชั่นมีค่า " . testvar() . "<br />\n"; echo "ตัวแปร \$myvar หลังจากเรียกฟังก์ชั่นมีค่า $myvar<br />\n"; ?> </body></html> ex12_06.php

ขอบเขตของตัวแปร (Variable scope) การใช้คำสั่ง global รูปแบบ global var_name1, var_name2, var_name3, ...;

ตัวอย่าง : <html><head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php $myvar = 500; function TestVar() { //ประกาศให้ PHP รู้ว่าต้องการอ้างถึงตัวแปร $myvar ที่อยู่นอกฟังก์ชั่น global $myvar; $myvar++; } echo "ค่าของ \$myvar ก่อนเรียกฟังก์ชั่น : $myvar<br />\n"; TestVar(); echo "ค่าของ \$myvar หลังจากเรียกฟังก์ชั่น : $myvar<br />\n"; ?> </body></html> ex12_07.php

ธรรมชาติของตัวแปรในฟังก์ชั่น ของ PHP โดยปกติ ตัวแปรที่ประกาศไว้ในฟังก์ชั่นจะถูกทำลายไปหลังจากการทำงานของฟังก์ชั่นนั้น ๆ สิ้นสุดลง และจะถูกสร้างขึ้นมาใหม่เมื่อเรียกฟังก์ชั่นนั้นอีกครั้ง

ตัวอย่าง : <html><head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function testloop() { $var = 150; $str = "A"; echo "ค่าของ \$var คือ $var, "; echo "ค่าของ \$str คือ $str<hr />\n"; $var -= 10; //ลดค่าของ $var ทีละ 10 $str++; //เพิ่มค่าของ $str ทีละ 1 } //เรียกใช้ฟังก์ชั่น testloop() จำนวน 4 ครั้ง for ($i=0; $i<4; $i++) { testloop(); ?> </body></html> ex12_08.php

ตัวแปรแบบ static ถ้าหากต้องการให้ฟังก์ชั่นรักษาค่าของตัวแปรไว้หลังจากที่จบการทำงานแล้ว จะต้องกำหนดให้ตัวแปรนั้น ๆ เป็นตัวแปรแบบ static โดยประกาศด้วยคำว่า static ไว้หน้าตัวแปร

ตัวอย่าง : <html><head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php function testloop() { static $var = 150; static $str = "A"; echo "ค่าของ \$var คือ $var, "; echo "ค่าของ \$str คือ $str<hr />\n"; $var -= 10; //ลดค่าของตัวแปร $var ทีละ 10 $str++; //เพิ่มค่าของตัวแปร $str ทีละ 1 } //เรียกใช้ฟังก์ชั่น testloop() จำนวน 4 ครั้ง for ($i=0; $i<4; $i++) { testloop(); ?> </body></html> ex12_09.php

รูปแบบการส่งอาร์กิวเมนต์ การส่งอาร์กิวเมนต์มีอยู่ด้วยกัน 2 แบบ คือ ส่งผ่านด้วยค่าของตัวแปร (pass by value) ส่งผ่านด้วยการอ้างอิงตำแหน่งในหน่วยความจำ (pass by reference)

รูปแบบการส่งอาร์กิวเมนต์: ส่งผ่านด้วยค่าของตัวแปร รูปแบบการส่งอาร์กิวเมนต์: ส่งผ่านด้วยค่าของตัวแปร การส่งผ่านวิธีนี้ PHP จะ Copy ค่าจากตัวแปรนอกฟังก์ชั่นส่งค่าไปให้กับตัวแปรภายในฟังก์ชั่น การเปลี่ยนแปลงค่าของตัวแปรภายในฟังก์ชั่นจะไม่มีผลกระทบกับตัวแปรที่อยู่ภายนอก โดยปกติการส่งอาร์กิวเมนต์ให้กับฟังก์ชั่นจะใช้วิธีแบบนี้

ตัวอย่าง : <html><head> ex12_10.php <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php $var = 150; $str = "A"; function sendVal($newvar, $newstr) { $newvar += 100; ++$newstr; echo "ค่าของ \$newvar คือ " . $newvar . "<br />\n"; echo "ค่าของ \$newstr คือ " . $newstr . "<hr />\n"; } ?> ค่าของ $var (ก่อนเรียกฟังก์ชั่น) คือ <?php echo $var ; ?> <br /> ค่าของ $str (ก่อนเรียกฟังก์ชั่น) คือ <?php echo $str ; ?> <hr /> <?php sendVal($var, $str) ; //เรียกฟังก์ชั่น ?> ค่าของ $var (หลังจากเรียกฟังก์ชั่น) คือ <?php echo $var ; ?> <br /> ค่าของ $str (หลังจากเรียกฟังก์ชั่น) คือ <?php echo $str ; ?> <hr /> </body></html> ex12_10.php

รูปแบบการส่งอาร์กิวเมนต์: ส่งผ่านด้วยการอ้างอิงตำแหน่งในหน่วยความจำ รูปแบบการส่งอาร์กิวเมนต์: ส่งผ่านด้วยการอ้างอิงตำแหน่งในหน่วยความจำ เป็นการส่งค่าโดยการอ้างอิงตำแหน่งในหน่วยความจำ ซึ่งจะทำให้การเปลี่ยนแปลงค่าของตัวแปรในฟังก์ชั่น มีผลกับค่าตัวแปรภายนอกฟังก์ชั่นด้วย การส่งค่าแบบนี้ให้กำหนดเครื่องหมาย & ไว้หน้า ตัวแปร

ตัวอย่าง : <html><head> <title>การสร้างฟังก์ชั่นไว้ใช้งาน</title> </head> <body> <?php $var = 150; $str = "A"; function sendVal($newvar, $newstr) { $newvar += 100; ++$newstr; echo "ค่าของ \$newvar คือ " . $newvar . "<br />\n"; echo "ค่าของ \$newstr คือ " . $newstr . "<hr />\n"; } ?> ค่าของ $var (ก่อนเรียกฟังก์ชั่น) คือ <?php echo $var; ?> <br /> ค่าของ $str (ก่อนเรียกฟังก์ชั่น) คือ <?php echo $str; ?> <hr /> <?php sendVal(&$var, &$str); //เรียกฟังก์ชั่น ?> ค่าของ $var (หลังจากเรียกฟังก์ชั่น) คือ <?php echo $var; ?> <br /> ค่าของ $str (หลังจากเรียกฟังก์ชั่น) คือ <?php echo $str; ?> <hr /> </body></html> ex12_11.php

การแทรกไฟล์อื่นเข้าไฟล์หลัก ในบางกรณีเราสามารถแยกไฟล์ html หรือไฟล์ php หรือไฟล์ที่เก็บฟังก์ชันที่เราสร้างขึ้น ที่ใช้บ่อย ๆ ไปเก็บไว้อีกไฟล์หนึ่ง แล้วค่อยแทรกเข้ามาในไฟล์หลักเมื่อต้องการใช้งาน ซึ่งเราสามารถทำได้โดยใช้ฟังก์ชันเหล่านี้ include include_once require require_once

include("/filepath/filename") เป็นการแทรกโดยถ้าไม่มีไฟล์ที่ระบุจะมีการแจ้งเตือน แต่จะไม่หยุดการทำงาน รูปแบบ include("/filepath/filename")

require("/filepath/filename") เป็นการแทรกโดยถ้าไม่มีไฟล์ที่ระบุจะมีการแจ้งเตือน และหยุดการทำงานโดยทันที รูปแบบ require("/filepath/filename")

include_once("/filepath/filename") เป็นการแทรกโดยอนุญาตให้แทรกได้เพียงแค่ครั้งเดียวเท่านั้น รูปแบบ include_once("/filepath/filename")

require_once("/filepath/filename") เป็นการแทรกโดยอนุญาตให้แทรกได้เพียงแค่ครั้งเดียวเช่นกัน รูปแบบ require_once("/filepath/filename")

ตัวอย่าง : <?php echo "Hello World!!!!<br />"; ?> <?php ex12_12.php <?php include("ex12_12.php"); //require("ex12_12.php"); //include_once("ex12_12.php"); //require_once("ex12_12.php"); ?> ex12_13.php