ข้อมูลและตัวแปร

posted on 17 Oct 2006 23:00 by theera  in Visual-Basic

ข้อมูลและตัวแปร 

ชนิดของข้อมูล การใช้งานตัวแปร และค่าคงที่ ที่ใช้กับ Visual Basic ไม่ว่าโปรแกรมประยุกต์ใด ภาษาใด สิ่งที่ต้องรู้เป็นอันดับแรกๆ ก็คือ ตัวแปร ค่าคงที่และ ชนิดของข้อมูล ของภาษานั้น ๆ ซึ่งจะทำให้เห็นข้อจำกัดต่างๆ ในภาษานั้น ๆ ทำให้สามารถใช้งานได้อย่างถูกต้อง และมีประสิทธิภาพ เพราะตัวแปรและค่าคงที่ถือได้ว่าเป็นตัวแทนของข้อมูล ที่จะต้องนำไปใช้งาน ประมวลผล และแสดงสิ่งที่ได้จากการประมวลผล

ชนิดของข้อมูล

Visual Basic มีชนิดของข้อมูลหลายชนิด ไม่ว่าจะเป็นตัวเลขจำนวนเต็ม ตัวเลขที่มีทศนิยม ข้อความ ตัวเลขทางการเงิน ค่าทางตรรกะ เป็นต้น ข้อมูลแต่ละชนิด จะใช้พื้นที่ในการเก็บไม่เท่ากัน รวมถึงความเร็วในการประมวลผลก็แตกต่างกันด้วย สามารถแบ่งชนิดของข้อมูลที่ใช้กัน Visual Basic ได้ดังตารางต่อไปนี้

ชนิดข้อมูล

รายละเอียด 

หน่วยความจำ 

Boolean

เก็บค่าทางตรรกะที่ได้มี 2 ค่า คือ true (จริง), false (เท็จ)

2 Bytes

Byte

เก็บค่าเลขจำนวนเต็มตั้งแต่ 0-255

1 Byte

Currency


ใช้เก็บตัวเลขจำนวนจริง มีค่าระหว่าง - 922,337,203,685,477.5808 ถึง 922,337,203,685,477.5807

8 Bytes

Date

ใช้สำหรับเก็บวันที่และเวลา

8 Bytes

Double

ใช้เก็บตัวเลขจำนวนจริง แยกเป็น 2 กรณี คือ ค่าบวกอยู่ระหว่าง 4.94065645841247E-324 ถึง 1.79769313486232E308 ค่าลบอยู่ระหว่าง - 1.79769313486232E308 ถึง -4.94065645841247E-324

8 Bytes

Integer

เก็บค่าเลขจำนวนเต็มที่มีค่าระหว่าง -32768 ถึง 32767

2 Bytes

Long

ใช้เก็บเลขจำนวนเต็มที่มีค่าระหว่าง -2,147,483,648 ถึง 2,147,483,647

4 Bytes

Object

ใช้สำหรับแทนวัตถุที่ Visual Basic สนับสนุน

4 Bytes

Single

ใช้เก็บตัวเลขจำนวนจริง แยกเป็น 2 กรณี คือ ค่าบวกอยู่ระหว่าง 1.401298E-45 ถึง 3.402823E38 และค่าลบอยู่ระหว่าง -3.402823E38 ถึง -1.401298E45

4 Bytes

String

ใช้เก็บตัวอักษร ข้อความ และตัวเลข 1 ตัว/1 ไบต์

Variant

ข้อมูลพิเศษสามารถเก็บข้อมูลได้ทุกชนิด

16 Bytes

การประกาศค่าตัวแปร (Variable Declaration)

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

รูปแบบคำสั่งการประกาศตัวแปรของ Visual Basic

Dim varname As datatypes

Dim

คือ

คำสั่ง (statements) สำหรับประกาศตัวแปร 

varname

คือ

ชื่อของตัวแปรที่ต้องการประกาศ 

As

คือ

ส่วนที่บอกให้ Visual Basic ทราบว่าต้องการกำหนดชนิดของข้อมูล

datatypes

คือ

ชนิดของข้อมูลที่ Visual Basic สนับสนุน 

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

กฎการตั้งชื่อตัวแปรและค่าคงที่

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

การตั้งชื่อวัตถุ

วัตถุ

คำนำหน้า (Prefix)

ตัวอย่าง

CheckBox

Chk

ChkStatus

ComboBox

Cbo

CboType

CommandButton

Cmd

CmdSave

Image

Img

ImgProduct

Label

Lbl

Lbladdress

ListBox

Lst

LstDay

OptionButton

Opt

OptSex

TextBox

Txt

TxtName

Timer

Tmr

TmrTime

ขอบเขตของตัวแปร (Scope of Variable)

ใน Visual Basic สามารถแบ่งขอบเขตตัวแปรได้ 2 ประเภท คือ

1. ตัวแปรแบบ Local
1. ตัวแปรแบบ Public

ตัวแปรแบบ Local

หมายถึง ตัวแปรที่ประกาศขึ้นมา ให้สามารถเรียกใช้งานได้ ในเฉพาะโพรซีเดอร์ที่ประกาศเท่านั้น มักใช้ประกาศตัวแปรที่ต้องการใช้ชั่วคราว หรือต้องการใช้ในโพรซีเดอร์นั้นๆ

ตัวอย่าง

Private Sub AddNum_Click( )
Dim x As Integer
Dim y As Integer
x = 5
y = 6
x = x + y
End Sub

Private Sub DelNum_Click( )
Dim x As Integer
Dim y As Integer
x = 3
y = 2


จากตัวอย่าง ตัวแปร x และ y ถูกประกาศใน Sub AddNum และ Sub DelNum ซึ่ง x และ y ใน AddNum จะเป็นคนละตัวกับ x และ y ใน DelNum

ตัวแปรแบบ Public
หมายถึง ตัวแปรที่ประกาศขึ้นในส่วนบนหลัง Option Explicit ทำให้สามารถเรียกใช้งานได้ทุกโพรซีเดอร์ในฟอร์มนั้น กรณีที่ประกาศตัวแปรแบบ Public ใน Module จะทำให้ตัวแปรนั้นสามารถเรียกใช้งานได้จากทุกฟอร์ม
ตัวอย่าง

Option Explicit
Dim x as Integer
Dim y as Integer
Private Sub AddNum_Click( )
x = 5
y = 6
x = x + y
End Sub

Private Sub DelNum_Click( )
x = x - y
End Sub

จากตัวอย่าง ตัวแปร x และ y ถูกประกาศในถัดจาก Option Explicit ก่อน Sub AddNum ทำให้ตัวแปร x และ y ใน Sub AddNum และ Sub DelNum เป็นตัวแปรตัวเดียวกัน

ตัวแปรอาร์เรย์ (Array)
ตัวแปรอาร์เรย์ เป็นกลุ่มของตัวแปรที่ประกาศขึ้นมา โดยใช้ชื่อของเดียวใช้ค่า Index ในการอ้างถึง ประโยชน์ของตัวแปรชนิดนี้คือ กรณีที่ต้องการมีการใช้ตัวแปรจำนวนมาก การประกาศตัวแปรสามารถประกาศเพียงชื่อเดียว ลดความซ้ำซ้อนของตัวแปร และทำให้ง่ายต่อการเรียกใช้ มีรูปแบบการประกาศดังนี้

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

ตัวอย่าง

ตัวแปรอาร์เรย์แบ่งออกได้ 2 ชนิด คือ
1. ตัวแปรอาร์เรย์แบบสแตติก (Static Arrays)
2. ตัวแปรอาร์เรย์แบบไดนามิก (Dynamic Arrays)

ตัวแปรอาร์เรย์แบบสแตติก (Static Arrays)
เป็นอาร์เรย์ที่มีการระบุจำนวนสมาชิกเมื่อมีการประกาศตัวแปร จะใช้อาร์เรย์ชนิดนี้ในกรณีที่ทราบจำนวนสมาชิกของอาร์เรย์ที่แน่นอน

ตัวอย่าง
Dim vprint (10) as String


จากตัวอย่างเป็นการประกาศตัวแปรอาร์เรย์ชื่อ vprint ให้มีจำนวนสมาชิกทั้งสิ้น 10 และ เป็นข้อมูลชนิดตัวอักษร ในการอ้างถึงตัวแปรให้ทำการระบุ Index หรือลำดับที่ของสมาชิก โดยสมาชิกตัวแรกให้ระบุ Index เป็น 0 เช่น เมื่อต้องการอ้างถึงสมาชิกตัวแรกสุดให้ระบุเป็น vprint(0)สมาชิกตัวที่ 7 ให้ระบุเป็น vprint(6) สมาชิกตัวสุดท้ายระบุเป็น vprint(9)

ตัวแปรอาร์เรย์แบบไดนามิก (Dynamic Arrays)

เป็นอาร์เรย์ที่ไม่มีการระบุจำนวนสมาชิกเมื่อมีการประกาศตัวแปร เนื่องจากไม่ทราบจำนวนสมาชิกที่แน่นอน

ตัวอย่าง
Dim ccode( ) as String

จากตัวอย่างเป็นการประกาศตัวแปรอาร์เรย์ชื่อ ccode โดยไม่ระบุจำนวนสมาชิก และเป็นข้อมูลชนิดตัวอักษร เมื่อต้องการใช้งานตัวแปรจะต้องระบุจำนวนสมาชิกให้กับตัวแปรอาร์เรย์ โดยใช้คำสั่งดังนี้

Redim ccode(5)

จากตัวอย่างเป็นการกำหนดให้ตัวแปรอาร์เรย์ ccode ที่ได้ประกาศไว้แล้วให้มีจำนวนสมาชิก 5

ข้อดีของตัวแปรอาร์เรย์แบบไดนามิกคือ จำนวนสมาชิกของอาร์เรย์จะถูกกำหนดให้มีความเหมาะสมต่อการใช้งานเนื่อง เนื่องจากสามารถระบุจำนวนสมาชิกได้ภายหลัง แต่ตัวแปรอาร์เรย์แบบสแตติกจะต้องระบุจำนวนสมาชิกทันทีที่มีการประกาศตัวแปร การสร้างชนิดของตัวแปรขึ้นใช้เอง (User-defined data type)

กรณีที่ต้องการเก็บข้อมูลเป็นชุดแต่ประกอบด้วยข้อมูลหลาย ๆ ชนิด สามารถทำได้โดยการสร้างชนิดข้อมูลพิเศษขึ้นมา โดยนำชนิดของข้อมูลพื้นฐานดังกล่าวทั้งหมดมาสร้างตามที่ต้องการโดยมีรูปแบบดังนี้


[Public I Private] Type Varname
elementname [([subscripts])] As type
[elementname [([subscripts])] As type]

End Type

Public(Optional)

คือ ส่วนที่กำหนดให้ค่าคงที่สามารถใช้ได้ทั้งโปรเจ็กต์ ทุกโมดูล

Private(Optional)

คือ ส่วนที่กำหนดให้ค่าคงที่สามารถใช้ได้เฉพาะโมดูลที่ประกาศเท่านั้น

Varname

คือ ชื่อของชนิดข้อมูลที่กำหนดขึ้นมาใหม่

elementname

คือ ชื่อของตัวแปร ซึ่งเป็นส่วนหนึ่งของชนิดข้อมูลที่สร้างขึ้นมา

Subscripts

คือ จำนวนสมาชิกกรณีที่ต้องการให้เป็นตัวแปรอาร์เรย

Type

คือ ชนิดของข้อมูลพื้นฐานแต่ละตัว

ตัวอย่าง
Type Customer
CustName As String
Address As String
Age As Integer
End Type


จากตัวอย่างเป็นการสร้างชนิดข้อมูลขึ้นมาใหม่ โดยให้ชื่อว่า Customer โดยมีตัวแปรย่อย Name Address และ Age เมื่อต้องการใช้งานชนิดข้อมูลดังกล่าวต้องทำการประกาศตัวแปรดังนี้
Dim newcust As Customer
เมื่อต้องการเก็บค่าหรือนำค่าไปใช้ให้ใช้คำสั่งดังนี้

newcust.CustName = "ขวัญจิตร สุวรรณวงศ์"
newcust.Address = "45 ถ.ทิพย์ช้าง ต.หัวเวียง อ.เมือง จ.ลำปาง
newcust.Age = 15

การประกาศค่าคงที่ (Constant)

ค่าคงที่ (Constant) หมายถึงข้อมูลที่มีค่าคงที่ไม่มีการเปลี่ยนแปลง ในการประกาศค่าคงที่ต้องใช้คำสั่ง Const เพื่อสร้างค่าคงที่ มีรูปแบบดังนี้


[Public I Private] Const constname [As type] = expression

Public(Optional)

คือ ส่วนที่กำหนดให้ค่าคงที่สามารถใช้ได้ทั้งโปรเจ็ก ทุกโมดูล

Private(Optional)

คือ ส่วนที่กำหนดให้ค่าคงที่สามารถใช้ได้เฉพาะโมดูลที่ประกาศเท่านั้น

Const

คือ คำสั่งสร้างค่าคงที่

Constname

คือ ชื่อค่าคงที่

Type (Optional)

คือ การกำหนดชนิดของค่าคงที่

Expression

คือ ค่าที่ต้องการกำหนด

ตัวอย่าง
Option Explicit
Const PI As Double = 3.141578


Private Sub cmdCalc_Click( )
Dim radius As Double
Dim area As Double
Radius = CDb(InputBox("กรุณาใส่ค่ารัศมี" , "ใส่ค่า")
Area = PI * (radius) ^2
MsgBox "พื้นที่วงกลม = " & Area & " ตารางหน่วย "
End Sub

ตัวดำเนินการใน Visual Basic (Operators)
ตัวดำเนินการ คือ เครื่องหมายสำหรับกระทำกับข้อมูลอย่างน้อยที่สุด 2 ชุดมากระทำอย่างใดอย่างหนึ่ง เช่น บวก ลบ เชื่อมต่อ เปรียบเทียบ ทดสอบค่า เป็นต้น ซึ่งสามารถแบ่งได้ 4 ประเภท ดังนี้

ตัวดำเนินการด้านคณิตศาสตร์ (Arithmetic Operators)
คือเครื่องหมายทางคณิตศาสตร์ใช้สำหรับการคำนวณตัวเลข ดังตาราง

ชื่อตัวดำเนินการ

ลักษณะตัวดำเนินการ

ตัวอย่าง

การบวก

+

A + B

การลบ

-

A - B

การคูณ

*

A * B

การหาร

/

A / B

การหารเอาแต่จำนวนเต็ม

\

A \ B

การหารเอาแต่เศษ

Mod

A Mod B

การยกกำลัง

^

A ^ B

ตัวดำเนินการทางด้านตรรกะ (Logical Operator)

คือเครื่องหมายสำหรับตรวจสอบเงื่อนไขระหว่างกลุ่มนิพจน์ โดยจะให้ผลลัพธ์เป็นจริง (True) และเป็นเท็จ (False) หรือสร้างเงื่อนไขขึ้นมาเพื่อทดสอบกรณีต่าง ๆ ดังตาราง

ตัวดำเนินการ

ตัวอย่าง

ผลลัพธ์ 

And

A And B

เป็นจริงเมื่อทั้ง 2 นิพจน์มีค่าเป็นจริง

Or

A Or B

เป็นเท็จเมื่อทั้ง 2 นิพจน์มีค่าเป็นเท็จ

Xor

A Xor B

เป็นจริงเมื่อทั้ง 2 นิพจน์มีค่าต่างกัน

Eqv

A Eqv B

เป็นจริงเมื่องทั้ง 2 นิพจน์มีค่าเหมือนกัน

Imp

A Imp B

เป็นเท็จเมื่อนิพจน์หน้าเป็นจริง นิพจน์หลังเป็นเท็จ

Not

Not A

ให้ค่าตรงข้ามกับค่าของนิพจน์


ัวดำเนินการทางด้านการเปรียบเทียบ (Comparison Operators)
เครื่องหมายที่ใช้สำหรับเปรียบเทียบนิพจน์ 2 นิพจน์ เพื่อทดสอบ หรือสร้างเงื่อนไข โดยจะให้ผลลัพธ์เป็นจริง (True) และเป็นเท็จ (False) มักจะใช้คู่กับตัวดำเนินการทางด้านตรรกะ เพื่อตรวจสอบเงื่อนไขต่าง ๆ เสมอ ดังตาราง

ตัวดำเนินการ

ชื่อตัวดำเนินการ

<

น้อยกว่า

>

มากกว่า

<=

น้อยกว่าหรือเท่ากับ

>=

มากกว่าหรือเท่ากับ

=

เท่ากับ

<>

ไม่เท่ากับ


ตัวดำเนินการทางด้านการเชื่อมข้อความ (Concentration Operators)
เครื่องหมายที่ใช้สำหรับเชื่อมข้อความตั้งแต่ 2 ข้อความเข้าด้วยกัน แต่ยังมีกรณียกเว้นที่จะเป็นการบวกกันของนิพจน์ 2 นิพจน์ ซึ่งขึ้นอยู่กับชนิดของนิพจน์ที่จะมากระทำกัน ดังตาราง

ตัวดำเนินการ

กรณี

ตัวอย่าง

ผลลัพธ์

+

String + String

"Visual"+"Basic 6.0"

"Visual Basic 6.0"

&

String & String

"Visual"&"Basic 6.0"

"Visual Basic 6.0"

+

String(numeric)+numeric

"20"+6

26

&

String(numeric)&numeric

"20"+6

206

Comment

smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry ???????????????   ??????????????????
smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry ???????????????

Tweet

#1 By (125.26.124.178) on 2008-02-03 21:54

#2 By (125.26.124.178) on 2008-02-03 21:55

#3 By (125.26.124.178) on 2008-02-03 21:55

angry smile tongue question

#4 By (203.172.199.250) on 2008-02-05 14:06

แท๊งคิ้ว
เหมือนกะสแกนมาขาดไปนิดนึงนะ

#5 By ball (124.121.0.163) on 2008-05-28 13:21

แท๊งคิ้ว
เหมือนกะสแกนมาขาดไปนิดนึงนะ

#6 By ball (124.121.0.163) on 2008-05-28 13:21

ไม่มีรูปหรองับบquestion

#7 By (124.157.237.103) on 2008-07-02 11:32

เกเเหดเหไกหกเหกเหกเฟหกเ

#8 By (122.154.36.125) on 2008-08-14 10:03

ปืนฉีดน้ำ ขันน้ำ

#9 By (118.175.70.6) on 2009-04-07 10:59

มันขาดไปอะครับ

#10 By Tee (58.147.102.98) on 2009-08-24 13:38

big smile open-mounthed smile confused smile sad smile angry smile tongue question embarrassed surprised smile wink double wink cry คาหรัม

#11 By เมี๋ยวแมว (58.147.102.98) on 2009-08-25 11:25

ขอบคุณมากค่ะ

ตอนนี้กำลังสอบช่วยได้เยอะเลยขอบคุณมากๆๆนะ

question confused smile

#12 By (61.19.195.50) on 2010-02-16 13:57

ช่วยได้เยอะเลยค่ะ question big smile

#13 By (61.19.66.74) on 2010-07-02 09:25

big smile

#14 By 123 (61.19.213.77) on 2010-07-08 09:45

#15 By (202.143.166.178) on 2010-08-07 11:18

ช่วยได้มากเลย surprised smile

#16 By กิ๊ฟ (202.143.165.42) on 2010-11-08 15:35

ขอบคุณมากๆเลยคับ ช่วยได้เยอะเลยbig smile

#17 By kuruma kung (223.204.156.155) on 2011-01-16 18:04

ขอบคุณมากๆเลยนะคะกำลังจะทำใบงานส่งอาจารย์พอดี หามาแบบตรงหัวข้อของอาจารย์เป้ะๆเลยค่ะ
เด็กGiftedราชโบริกานุเคราะห์2/3

#18 By Mook_2/3 (49.228.174.20) on 2011-06-05 18:21

ขอบคุณครับ กำลังหาพอดี

#19 By dash (223.207.127.83) on 2011-10-31 10:41