| การเขียนโปรแกรม ถ้าเป็นโปรแกรมใหญ่ๆ เราก็ต้องมีการแบ่งการทำงานออกเป็นส่วนๆ เพื่อลดความซับซ้อน และเพื่อความสะดวก ในการแก้ไขโปรแกรม ยกตัวอย่าง |
| // MAIN.CPP#include <stdio.h> #include <conio.h> void function1( ) //<---- function1 ชนิด void ไม่ต้อง return ค่ากลับ { //<----- เริ่มต้นขอบเขตการทำงานของ function1 printf( "Print from function1\n" ); //<--- ให้พิมพ์ข้อความบอกว่า พิมพ์มาจาก function1} //<--- สิ้นสุดขอบเขตการทำงานของ function1 int function2( ) //<---- function1 ชนิด int ต้อง return ค่ากลับ { //<----- เริ่มต้นขอบเขตการทำงานของ function2 printf( "Print from function2\n" ); //<--- ให้พิมพ์ข้อความบอกว่า พิมพ์มาจาก function2 return 0; //<--- ต้องส่งค่ากลับเพราะไม่ใช่ function แบบ void} //<--- สิ้นสุดขอบเขตการทำงานของ function2 int main( ) { //<----- เริ่มต้นขอบเขตการทำงานของ main printf( "Sawasdee\n" ); //<--- ให้พิมพ์ข้อความ Sawasdee return 0; //<---- ให้ค่าส่งกลับ 0} //<--- สิ้นสุดขอบเขตการทำงานของ main |
| SawasdeePrint form function1 Print form function2 |
| . . . . . . . จากตัวอย่าง การเขียนก็จะเห็นว่ามี 3 function ด้วยกันคือ function1, function2 และ mainมาดูการทำงานกัน function main จะพิมพ์ข้อความ Sawasdee ออกมาก่อน จากนั้นจะไปเรียกการทำงานของ function1 ให้พิมพ์ข้อความ print from function1 และก็ไปเรียก function2 ให้พิมพ์ข้อความ printf from function2 จบการทำงาน ไม่เข้าใจกลับไปดูได้ ง่ายๆ function เขียนยังงัย ตัวอย่างต่อไปเป็นการเพิ่มตัวแปรเข้าไป ให้สังเกตให้ดีดี นะครับ |
| // MAIN.CPP#include <stdio.h> #include <conio.h> void function1( ) //<---- function1 ชนิด void ไม่ต้อง return ค่ากลับ { //<----- เริ่มต้นขอบเขตการทำงานของ function1 int i = 10;} //<--- สิ้นสุดขอบเขตการทำงานของ function1 int function2( ) //<---- function1 ชนิด int ต้อง return ค่ากลับ { //<----- เริ่มต้นขอบเขตการทำงานของ function2 int i = 20; return 0; //<--- ต้องส่งค่ากลับเพราะไม่ใช่ function แบบ void} //<--- สิ้นสุดขอบเขตการทำงานของ function2 int main( ) { //<----- เริ่มต้นขอบเขตการทำงานของ main printf( "Sawasdee\n" ); //<--- ให้พิมพ์ข้อความ Sawasdee return 0; //<---- ให้ค่าส่งกลับ 0} //<--- สิ้นสุดขอบเขตการทำงานของ main |
| SawasdeeValue in i = 10 Value in i = 20 |
| . . . . . . . .สังเกตุให้ดีี ตัวแปร i ที่อยู่ใน function1 และ function2 ชื่อตัวแปรเหมือนกันแต่ขอบเขตการใช้งาน อยู่คนที่ขอบเขต เพราะฉนั้น สิ่งที่อยู่ในขอบเขตของ function1 ก็ไม่เกี่ยวกับ function2 และสิ่งที่อยู่ใน function2 ก็ไม่เกี่ยวกับ function1 ไม่เข้าใจ กลับไปดูใหม่ได้นะครับ พูดถึงขอบเขตแล้ว ตัวแปรที่อยู่ในเครื่องหมายปีกกา เราเรียกว่า ตัวแปร Local คือตัวแปรที่มีขอบเขตการทำงานเฉพาะในปีกกาเปิด และสิ้นสุดที่ปีกกาปิดเท่านั้น มาดูตัวอย่างต่อนี้ |
| // MAIN.CPP#include <stdio.h> #include <conio.h> void function1( ) //<---- function1 ชนิด void ไม่ต้อง return ค่ากลับ { //<----- เริ่มต้นขอบเขตการทำงานของ function1 int i = 10; //<------ ตัวแปร local} //<--- สิ้นสุดขอบเขตการทำงานของ function1 int main( ) { printf( "Sawasdee\n" ); return 0;} |
| SawasdeeValue in i = 10 Value in k = 20 Value in i = 10 |
| . . . . . . . .จากตัวอย่าง ตัวแปร i และ ตัวแปร k จะมีขอบเขตการทำงานเฉพาะภายในปีกกาเท่านั้น และการใช้ตัวแปรก็จำกัดเฉพาะเขตของมัน ในขอบเขตของตัวแปร k เราสามารถใช้ตัวแปร i ได้ เพราะยังไม่สิ้นสุดขอบเขตการทำงาน แต่เราไม่สามารถใช้ตัวแปร k ถ้าสิ้นสุดขอบเขตการทำงานของตัวแปร k และ ตัวแปรทั้งหมดนี้ก็ยังคงเป็นตัวแปร local อยู่ไม่ต้องสงสัย แต่เป็นตัวแปร local ในขอบเขตปีกกาเท่านั้น มาดูตัวอย่างต่อไป |
| // MAIN.CPP#include <stdio.h> #include <conio.h> int gvalue = 100; //<------- ตัวแปร Global void function1( ) { int i = 10; //<------ ตัวแปร local} int main( ) { printf( "Sawasdee\n" ); return 0;} |
| SawasdeeValue in i = 10 Value in k = 20 Value in i = 10 Value in gvalue = 100 Value in gvalue = 100 Value in gvalue = 100 |
| . . . . . . . .จะเห็นว่ามีการกำหนดตัวแปรข้างนอกเครื่องหมายปีกกา นั่นคือ ตัวแปร Global ชื่อ gvalue เป็นตัวแปนที่สามารถใช้ได้ทั่วไปภายใน แฟ้มนี้ ดูจากการใช้งาน เราสามารถพิมพ์ค่าที่อยู่ในตัวแปร gvalue ออกมาได้ทุกส่วนของโปรแกรม นั่นเป็นคุณสมบัติของตัวแปร Global ก็ตัวแปรที่สามารถเรียกใช้งานได้ทั่วไปนะเอง ศึกษาดูนะครับว่า ตัวแปร local และ global คืออะไร |
สรุป ได้อะไรบ้าง
| void function1( ) //<---- function1 ชนิด void ไม่ต้อง return ค่ากลับint function2( ) //<---- function1 ชนิด int ต้อง return ค่ากลับ int i = 10; //<------ ตัวแปร local int k = 20; //<----- ตัวแปร local ภายในขอบเขตการทำงานซ้อนนี้เท่านั้น int gvalue = 100; //<------- ตัวแปร Global |