PROCEDURE <<โปรแกรมย่อย>> SCC : Suthida Chaichomchuen std@kmitnb.ac.th
PROCEDURE หมายถึง โปรแกรมย่อย ซึ่งส่วนอื่น ๆ ของโปรแกรมสามารถเรียกใช้งานได้
ประโยชน์ ใช้แทนคำสั่งที่ใช้ซ้ำกันหลายครั้งในโปรแกรม ช่วยให้โปรแกรมมีขนาดกะทัดรัด และอ่านเข้าใจง่าย ช่วยในการค้นหาส่วนที่ผิดพลาดได้ง่าย สามารถนำไปใช้ในโปรแกรมอื่น ๆ ได้ ทำให้ประหยัดเลาในการเขียนโปรแกรม
ตำแหน่งของ PROCEDURE วางไว้ในส่วนของการประกาศใช้ข้อมูล (ส่วนที่ 2) ของโปรแกรม
ตำแหน่งในโปรแกรม PROCEDURE PROGRAM ชื่อโปรแกรม; USES LABEL CONST TYPE VAR PROCEDURE BEGIN ชุดคำสั่ง END.
โครงสร้างของ PROCEDURE PROCDURE ชี่อโปรแกรมย่อย; LABEL CONST TYPE VAR BEGIN ชุดคำสั่ง; END;
สิ่งที่แตกต่างจากโปรแกรม ไม่มี USES ต้องกำหนดชื่อ โปรแกรมย่อย ทุกครั้ง จบ PROCEDURE ด้วยคำสั่ง END;
ตัวอย่างการประกาศ PROCEDURE PROCEDURE Line; BEGIN writeln(‘--------------------’); END; สร้างโปรแกรมย่อยชื่อ Line ซึ่งใช้แสดงเส้น -------------------- ออกทางจอภาพ
การเรียกใช้ PROCEDURE PROGRAM DispLine; USES WinCrt; PROCEDURE Line; BEGIN writeln(‘--------------------’); END; Line; END.
ส่วนหัวของ PROCEDURE มี 2 แบบคือ PROCEDURE ชื่อ; พารามิเตอร์ คือ ชื่อของตัวแปรชนิดต่าง ๆ เรียกว่า Formal parameter
Formal Parameter มี 4 ประเภทคือ Value parameter Variable parameter Procedure parameter Function parameter
Value Parameter เป็นพารามิเตอร์ซึ่งมีหน้าที่รับค่าเข้ามาใน procedure มีการประกาศดังนี้ ชื่อพารามิเตอร์ : ชนิดของข้อมูล; เช่น total:integer; price,number:real;
Variable Parameter เป็นพารามิเตอร์ซึ่งมีหน้าที่รับค่าเข้ามาใน procedure และสามารถส่งค่าออกจาก procedure ไปยังโปรแกรมหลักได้ด้วย มีการประกาศใช้ดังนี้ VAR ชื่อพารามิเตอร์ : ชนิดของข้อมูล; เช่น VAR total:integer; VAR price,number:real;
การใช้งาน Value parameter PROGRAM DispLine; USES WinCrt; PROCEDURE Line(n:integer); VAR i:integer; BEGIN FOR i:=0 TO n DO writeln(‘--------------------’); END; Line(10); END.
การใช้งาน Variable parameter PROGRAM ChangeValue; USES WinCrt; VAR n:integer; PROCEDURE Double(VAR n:integer); BEGIN n:=2*n; END; n:=10; writeln(‘N1=‘,n); Double(n); writeln(‘N2=‘,n); END.
ประเภทของชื่อพารามิเตอร์ มี 2 แบบคือ Global Identifier ชื่อที่ถูกกำหนดในส่วนของโปรแกรมหลัก สามารถเรียกใช้ได้ทุกส่วนของโปรแกรม Local Identifier ชื่อที่ถูกกำหนดในส่วนของโปรแกรมย่อย สามารถเรียกใช้ได้เฉพาะโปรแกรมย่อยนั้น ๆ
ชื่อพารามิเตอร์ ชื่อของพารามิเตอร์ที่กำหนดอยู่ใน procedure (Local identifier) และชื่อของพารามิเตอร์ที่กำหนดอยู่ในโปรแกรมหลัก (Global identifier) สามารถใช้ชื่อเดียวกัน และชนิดเดียวกันได้ การเปลี่ยนแปลงของค่าพารามิเตอร์จะไม่มีผลต่อกัน
ชื่อพารามิเตอร์ ชื่อของพารามิเตอร์ที่กำหนดอยู่ในโปรแกรมหลัก (Global identifier) สามารถเปลี่ยนแปลงของค่าได้ หากถูกเรียกใช้ในโปรแกรมย่อย