วันอังคารที่ 22 เมษายน พ.ศ. 2557

ฟังก์ชั่น

ฟังก์ชั่น (Function) คือ กลุ่มของคำสั่งที่สามารถใช้เพื่อทำงานเฉพาะอย่าง

ประโยชน์ของฟังก์ชั่น

1. ง่ายต่อการตรวจสอบ การอ่าน และแก้ไขข้อบกพร่อง

ตัวอย่างคำสั่ง
    โปรแกรมที่ไม่ได้ใช้ฟังก์ชั่น
background(255, 255, 255, 255);
size(500, 500);
stroke(229, 95, 16);
line(50, 50, 300, 50);
line(50, 250, 300, 250);
line(50, 50, 50, 250);
line(300, 50, 300, 250);
fill(255, 0, 0);
ellipse(100, 100, 20, 20);  
ellipse(150, 180, 20, 20); 
ellipse(200, 200, 20, 20);
fill(16, 229, 49);
ellipse(100, 180, 30, 30);
ellipse(200, 80, 30, 30);
ellipse(250, 200, 30, 30);

รูปตัวอย่าง



    โปรแกรมที่มีการใช้ฟังก์ชั่น
void draw_square(){
  stroke(229,95,16);
  line(50,50,300,50);
  line(50,250,300,250);
  line(50,50,50,250);
  line(300,50,300,250);
} 

void draw_circle(){
  fill(255,0,0); 
  ellipse(100,100,20,20);  
  ellipse(150,180,20,20); 
  ellipse(200,200,20,20);
  fill(16,229,49);
  ellipse(100,180,30,30);
  ellipse(200,80,30,30);
  ellipse(250,200,30,30);
}

void setup(){
  background(255,255,255,255);
  size(500,500);
  draw_square();  
  draw_circle();     
}

รูปตัวอย่าง

     ดังตัวอย่าง โปรแกรมที่ไม่ได้ใช้ฟังก์ชั่น จะมีคำสั่งติดกันลงมาเรื่อยๆ ทำให้ไม่สามารถรู้ได้ว่าโค้ดบรรทัดไหนเริ่มทำงานส่วนไหน อย่างไร และอ่านได้ลำบาก ส่วนโปรแกรมที่มีการใช้ฟังก์ชั่นทำงานนั้น จะมีการตั้งชื่อฟังชั่นเพื่อบอกว่าฟังก์ชั่นไหนทำงานอย่างไร เช่น void draw_square() จากชื่อจะทำให้รู้ว่าน่าจะเป็นการวาดรูปสี่เหลี่ยม และเมื่อเราต้องการที่จะทำการแก้ไขคำสั่งในภายหลังเราก็สามารถกลับมาแก้ไขได้ตรงจุดนั้นได้โดยไม่ต้องนั่งไล่หาที่ละคำสั่ง

2. สามารถเรียกใช้ซ้ำได้หลายครั้ง

ตัวอย่างคำสั่ง
void draw_circle() {
  take_colorRed();
  ellipse(100, 100, 20, 20); 
  take_colorGreen();
  ellipse(150, 180, 20, 20); 
  take_colorRed();
  ellipse(200, 200, 20, 20);
  take_colorGreen();
  ellipse(100, 180, 30, 30);
  ellipse(200, 80, 30, 30);
  take_colorGreen();
  ellipse(250, 200, 30, 30);
}

void take_colorRed() {
  fill(255, 0, 0);
}
void take_colorGreen() {
  fill(16, 229, 49);
}

     จากตัวอย่าง ในฟังก์ชั่น void draw_circle() จะเป็นการวาดวงกลม และได้มีการเรียกใช้ฟังก์ชั่น take_colorRed(); และ take_colorGreen(); ซึ่งสองฟังก์ชั่นนี้เป็นการทำให้วงกลมที่สร้างมีสีแดงและเขียวดังรูป


3. มีการส่งค่าเพื่อใช้ในฟังก์ชั่น

ตัวอย่างคำสั่ง
void draw_table(int width, int height){  
  line(50,50,50+width,50);
  line(60,50,60,50+height);
  line(width+40,50,width+40,50+height);
}

void setup() {
  background(255, 255, 255, 255);
  size(500, 500);
  draw_table(400,50);  
}

    ดังตัวอย่าง เป็นการส่งค่าเพื่อไปใช้ในฟังก์ชั่น เช่นฟังก์ชั่น draw_table(400,50); ฟังก์ชั่นนี้จะเป็นการวาดรูปโต๊ะและมีการส่งค่าไปสองค่า คือ ความกว้างของโต๊ะ (width) และความสูงของโต๊ะ(height) เมื่อมีการเรียกใช้จะทำการวาดเส้นสามเส้นดังรูป


   เมื่อมีการเปลี่ยนค่าที่ส่งเป็ draw_table(200,100); จะได้ดังรูป



ตัวอย่างคำสั่ง
void draw_table(int x, int y, int width, int height){  
  line(x,y,x+width,y);
  line(x+10,y,x+10,y+height);
  line(width+x-10,y,width+x-10,y+height);
}

void setup() {
  background(255, 255, 255, 255);
  size(500, 500);
  draw_table(100,50,200,100);  
}

     จากตัวอย่าง เป็นโปรแกรมที่วาดรูปโต๊ะ และเมื่อเรียกใช้ฟังก์ชั่น draw_table(100,50,200,100);  เป็นกันส่งค่า x,y,width,height จะทำให้รูปโต๊ะเปลี่ยนที่ไปยังตำแหน่ง x y ที่กำหนดมาจะได้ดังรูป



     เมื่อเปลี่ยนค่าที่ส่งเป็น draw_table(200,100,200,100); จะได้ดังรูป



ไม่มีความคิดเห็น:

แสดงความคิดเห็น