บทที่ 3 ตัวแปรและชนิดของข้อมูล


การประกาศค่าตัวแปร (Variable Declaration)
ก่อนที่จะใช้งานตัวแปร หรือค่าคงที่ทุกครั้ง ควรประกาศตัวแปร (variable declaration) ก่อน เพื่อให้ Visual Basic รู้ว่า ตัวแปรที่ต้องการใช้งาน ใช้แทนข้อมูลชนิดใดถึงแม้ว่า Visual Basic อนุญาตให้ใช้งานตัวแปรได้ โดยไม่ต้องประกาศตัวแปร แต่ตัวแปรที่ได้จะใช้ทรัพยากรระบบ มากเกินความจำเป็น รวมถึงประมวลผลได้ช้า เพราะจะเป็นตัวแปรที่สามารถแทนข้อมูลได้ทุกชนิด ซึ่ง Visual Basic เรียกว่า ตัวแปรชนิด Variant ซึ่งควรหลีกเลี่ยงการใช้งานตัวแปรชนิดนี้

กฎการตั้งชื่อตัวแปรและค่าคงที่
1. ชื่อของตัวแปรต้องขึ้นต้นด้วยพยัญชนะเท่านั้น
2. ชื่อของตัวแปรต้องมีความยาวตัวอักษรไม่เกิน 255 ตัวอักษร
3. ชื่อของตัวแปร ต้องไม่ซ้ำกันคำสงวน (Keywords) คำสั่ง (Statements) ฟังก์ชัน (Functions) หรืออื่น ๆ ที่ Visual Basic กำหนดไว้
4. ชื่อของตัวแปรต้องไม่ตั้งซ้ำกันในโพรซีเดอร์ หรือในขอบเขตเดียวกัน
5. ชื่อของตัวแปรต้องไม่มีเครื่องหมายทางคณิตศาสตร์, ตัวดำเนินการ (Operators) หรือ เครื่องหมายพิเศษ เช่น % $ >
6. ชื่อของตัวแปรต้องไม่มีช่องว่างอยู่ในชื่อ

การประกาศตัวแปรสามารถทำได้ 2 แบบคือ
1.การประกาศตัวแปรแบบ Implicit Declaration หมายถึง การใช้งานตัวแปรได้ โดยไม่ต้องมีการประกาศตัวแปร ชนิดของข้อมูลที่ได้จะเป็นแบบ Variant
2.การประการตัวแปรแบบ Explicit Declaration หมายถึง การประกาศตัวแปรก่อนการใช้งานทุกครั้ง แล้วจึงสามารถนำตัวแปรนั้นๆ

รูปแบบคำสั่งการประกาศตัวแปรของ Visual Basic
Dim varname As datatypes
Dim                         คือ คำสั่ง (statements) สำหรับประกาศตัวแปร
varname                คือ ชื่อของตัวแปรที่ต้องการประกาศ
As                            คือ ส่วนที่บอกให้ทราบว่าต้องการกำหนดชนิดของข้อมูล
datatypes              คือ ชนิดของข้อมูลที่กำหนดให้กับตัวแปร
 กรณีที่ต้องการกำหนดให้มีการประกาศตัวแปรทุกครั้งก่อนที่จะมีการเรียกใช้ตัวแปร เพื่อหลีกเลี่ยงการใช้ตัวแปรชนิด Variant ให้พิมพ์คำสั่ง Option Explicit ไว้ข้างบนสุดก่อนพิมพ์คำสั่งอื่น ๆ

ขอบเขตของตัวแปร (Scope of Variable)
ขอบเขตของตัวแปร (Scope of Variable) การกำหนดการมองเห็น ของตัวแปร เป็นการระบุการเข้าถึงตัวแปร เช่น การกำหนดขอบเขตของตัวแปรเป็นแบบ Local จะเข้าถึงได้จะเฉพาะภายในโมดูล ใน Visual Basic แต่ถ้ากำหนดขอบเขตตัวแปรเป็นแบบ public หมายถึง ให้สามารถอ่านและเขียนได้จากทุกส่วนของโปรแกรม สามารถแบ่งขอบเขตตัวแปรได้ 2 ประเภท คือ
1. ขอบเขตตัวแปรแบบ Local
หมายถึง ขอบเขตของตัวแปรที่ประกาศขึ้นมา ให้สามารถเรียกใช้งานได้ ในเฉพาะโพรซีเดอร์ที่ประกาศเท่านั้น มักใช้ประกาศตัวแปรที่ต้องการใช้ชั่วคราว หรือต้องการใช้ในโพรซีเดอร์นั้นๆ การประกาศขอบเขตของตัวแปรชนิดนี้ใช้คีย์เวิร์ด Private หรือ Dim
เช่น Dim a as Integer
2. ขอบเขตตัวแปรแบบ Public
หมายถึง ขอบเขตของตัวแปรที่ประกาศขึ้นมา ให้สามารถอ่านและนำไปใช้จากทุกส่วนในโปรแกรม การประกาศขอบเขตของตัวแปรชนิดนี้ ใช้คีย์เวิร์ด Public

ชนิดของข้อมูล (Data type)
ประเภทข้อมูล
ขนาด
การเก็บข้อมูลหรือช่วงข้อมูล
Boolean
2 ไบต์
ชนิดข้อมูลที่มีเพียงสองค่าคือ True (-1) หรือ False (0) ตัวแปรบูลีนจะถูกเก็บเป็น 16 บิต (2 ไบต์)
Byte
1 ไบต์
เก็บค่าในช่วง 0 ถึง 255
Integer
2 ไบต์
ชนิดข้อมูลที่เก็บตัวแปรจำนวนเต็ม ช่วง -32,768 ถึง 32,767
Long
4 ไบต์
–2,147,483,648 ถึง 2,147,483,647
Currency
8 ไบต์
ชนิดข้อมูลจำนวนทศนิยม (4 ตำแหน่ง)ที่มีช่วงของ
 -922,337,203,685,477.5808 ถึง 922,337,203,685,477.5807 การใช้ชนิดข้อมูลนี้สำหรับการคำนวณที่เกี่ยวข้องกับการเงิน
Decimal
8 ไบต์
ค่าที่ไม่มีทศนิยม +/- 9,228,162,514,264,337,593,543,950,335
ค่าที่มีทศนิยม +/- 7.92281625142643 37593543950335 และมีทศนิยม 28 ตำแหน่ง
Double
8 ไบต์
ค่าลบ –1.79769313486232E308 ถึง -4.94065645841247E-324 ค่าบวก 4.94065645841247E-324 ถึง 1.79769313486232E308
Single
4 ไบต์
ค่าลบ –3.402823E38 ถึง –1.401298E-45
ค่าบวก 1.401298E-45 ถึง 3.402823E38
String
 1 ไบต์
 ชนิดของข้อมูลที่ประกอบด้วยลำดับของอักขระที่ต่อเนื่องกัน ข้อมูลชนิด String สามารถประกอบด้วย ตัวอักษรตัวเลข, ช่องว่างและเครื่องหมายวรรคตอน ชนิดข้อมูลสตริงสามารถจัดเก็บสายความยาวคงที่มีความยาวตั้งแต่ 0 ถึงประมาณ 63k 
Date
8 ไบต์
เก็บค่าระหว่าง 1 มกราคม ค.ศ. 100 ถึง 31 ธันวาคม ค.ศ. 9999 และเวลาใดๆ
Variant
16 ไบต์
เป็นชนิดของข้อมูลที่สามารถใช้แทนชนิดของข้อมูลอื่น ๆ ทั้งข้อมูลชนิดตัวเลข String Boolean และอื่น ๆ
อ๊อบเจค

ชนิดข้อมูลที่แสดงถึงการอ้างอิงวัตถุใด ๆ Object ตัวแปรจะถูกเก็บเป็น 32 บิต (4 ไบต์) ที่อยู่ที่อ้างถึงวัตถุ

ตัวดำเนินการ (Operation)
ตัวดำเนินการ(Operator) หมายถึง เครื่องหมายที่ใช้เชื่อมต่อกันระหว่างนิพจน์  หรือตัวแปรอย่างน้อย 2 ตัวขึ้นไป โดยที่ข้อมูลที่ถูกกระทำหรือตัวที่ถูกกระทำเราเรียกว่า โอปะแรนต์(Operand) แบ่งได้ 4 ประเภทดังนี้
1. Arithmetical Operators หมายถึงเครื่องหมายคำนวนทางคณิตศาสตร์
Operators
Description
Example
Result
+
บวก
2+2
4
-
ลบ
5-3
2
*
คูณ
2*3
6
/
หาร
20/10
2
\
หารเอาผลลัพธ์เป็นจำนวนเต็ม (ปัดเศษทิ้ง)
25/6
4
Mod
หารและส่งคืนค่า เศษแบบปัดเป็นจำนวนเต็ม
20 Mod 3
2
^
ยกกำลัง
4^2
16
2. ตัวดำเนินการเชิงข้อความ(String operator) เป็นการเชื่อมประโยคข้อความเข้าด้วยกัน
Operators
Description
Example
Result
&
ใช้รวมตัวอักษร
"สวัสดี"&"ครับ"
"สวัสดีครับ"
+
ใช้รวมตัวอักษร
"สวัสดี"+"ครับ"
"สวัสดีครับ"
3. Comparison operation ใช้เพื่อการเปรียบเทียบข้อมูล
Operators
Description
Example
Result
> 
มากกว่า
10>8
จริง (True)
< 
น้อยกว่า
10<8
เท็จ (False)
>=
มากกว่าหรือเท่ากับ
20>=10
จริง (True)
<=
น้อยกว่าหรือเท่ากับ
10<=20
จริง (True)
<> 
ไม่เท่ากับ
5<>4
จริง (True)
=
เท่ากับ
5=7
เท็จ (False)

4.Logical operator ตัวดำเนินการเชิงตรรก(Logical operator) เป็นเครื่องหมายที่ใช้เปรียบเทียบข้อมูล โดยค่าที่ได้จะเป็นค่าบูลีนคือ ค่าาจริง(True) และเท็จ(False)
Operators
Description
AND
หมายถึง และจะเป็นจริงเมื่อค่าที่ใช้เปรียบเทียบทั้ง 2 ค่า เป็นจริงทั้งคู่
OR
หมายถึง หรือจะเป็นจริงเมื่อค่าที่ใช้เปรียบเทียบทั้ง 2 ค่า เป็นจริงทั้งคู่  หรือเป็นจริงเพียบค่าใดค่าหนึ่ง
NOT
หมายถึง ปฏิเสธเป็นการแปลงค่าตรงกันข้าม จากจริงจะเป็นเท็จ และจากเท็จจะเป็นจริง