หน่วยการเรียนรู้ที่ 17 ชนิดของตัวแปร
ชนิดของตัวแปร
ตัวแปรแบบทั่วไปและตัวแปรแบบเฉพาะที่
1. ตัวแปรแบบทั่วไป (global variables)
เป็นตัวแปรที่ทุกส่วนของโปรแกรมสามารถเรียกใช้ได้ ในการเขียนโปรแกรมใหญ่ๆ โดยมากแล้วจะใช้ในการประกาศค่าคงที่ในโปรแกรม การประกาศตัวแปรประเภทนี้คล้ายกับตัวแปรในโปรแกรมต่างๆ
ตัวอย่างที่ 1
เป็นตัวอย่างการใช้ตัวแปรแบบทั่วไปร่วมกับโพรซีเยอร์ ในโปรแกรมจะสร้างโพรซีเยอร์ชื่อ EX ภายในโพรซีเยอร์จะใส่ค่า 5 ให้กับตัวแปร A
program ch_1;
var a : integer; { การประกาศตัวแปร a เป็นตัวแปรแบบทั่วไป }
procedure EX;
begin
a := 5; { ใส่ค่า 5 ให้กับตัวแปร a }
writeln(a); { พิมพ์ค่าในตัวแปร a }
end;
begin { โปรแกรมหลัก }
a := 3; { ใส่ค่า 3 ในตัวแปร a }
writeln(a); { พิมพ์ค่าในตัวแปร a }
EX; { มีการเรียกใช้โพรซีเยอร์ EX }
writeln(a);
end.
เมื่อทำการรันโปรแกรมจะได้ผลลัพธ์ดังต่อไปนี้
3 { โปรแกรมหลักพิมพ์ค่า a }
5 { เรียกใช้ EX พิมพ์ค่า a }
3 { โปรแกรมหลักพิมพ์ค่า a }
2. ตัวแปรเฉพาะที่ (local variables)
เป็นตัวแปรที่ใช้ภายในโปรแกรมย่อยเท่านั้น การประกาศตัวแปรประเภทนี้จะประกาศภายในโปรแกรมย่อยเท่านั้น ทำให้โปรแกรมย่อยต่างๆ ใช้ชื่อตัวแปรชื่อเดียวกันได้โดยไม่ทำให้ค่าตัวแปรเปลี่ยนไป เพราะแม้ว่าโปรแกรมย่อยต่างๆ ประกาศชื่อตัวแปรชื่อเดียวกันแต่เมื่อโปรแกรมทำงานชื่อตัวแปรของโปรแกรมย่อยต่างๆ จะถูกกำหนดเป็นตำแหน่งหน่วยความจำที่มีตำแหน่งต่างกัน พิจารณาได้ดังตัวอย่างต่อไปนี้
ตัวอย่างที่ 2
เป็นตัวอย่างการใช้โปรแกรมเฉพาะที่ โดยในโพรซีเยอร์ EX มีการประกาศตัวแปรแบบเฉพาะที่ชื่อ a ซึ่งเป็นตัวแปรชื่อเดียวกับตัวแปรแบบทั่วไป ที่ประกาศไว้แล้วในโปรแกรมหลัก
program ch_2;
var a : integer; { ประกาศตัวแปร a เป็นตัวแปรแบบทั่วไป }
procedure EX;
var a : integer; { ประกาศตัวแปร a เป็นตัวแปรแบบเฉพาะที่ }
begin
a := 5; { ใส่ค่า 5 ให้กับตัวแปร a }
writeln(a); { พิมพ์ค่าในตัวแปร a }
end;
begin
a := 3; { ใส่ค่า 3 ให้กับตัวแปร a ที่เป็นตัวแปรแบบทั่วไป }
writeln(a); { พิมพ์ค่าในตัวแปร a }
EX; { เรียกโพรซีเยอร์ EX }
writeln(a); { พิมพ์ค่าในตัวแปร a }
end.
เมื่อรันโปรแกรมจะได้ผลลัพธ์ดังต่อไปนี้
3 { โปรแกรมหลักพิมพ์ค่าตัวแปร a ที่เป็นตัวแปรแบบทั่วไป }
5 { โพรซีเยอร์ EX พิมพ์ค่าตัวแปร a ที่เป็นตัวแปรเฉพาะที่ }
3 { โปรแกรมหลักพิมพ์ค่าตัวแปร a ที่เป็นตัวแปรทั่วไป }