ตัวแปรและประเภทข้อมูล
ในบทนี้ เราจะมาพูดเกี่ยวกับตัวแปรและประเภทข้อมูลในภาษา Visual Basic
ตัวแปร เป็นสิ่งสำคัญในการเขียนโปรแกรมทุกภาษา มันใช้ในการเก็บข้อมูลไว้ในหน่วยความจำ เพื่อที่จะนำมาใช้ได้ในภายหลังในโปรแกรม นอกจากนี้เรายังใช้ตัวแปรในการจัดการกับข้อมูลประเภทต่างๆ
ในภาษา Visual Basic จะมีตัวแปรอยู่สองประเภท คือ valued type เป็นประเภทของตัวแปรที่เก็บค่าข้อมูลของตัวมันเอง และ reference type เป็นประเภทของตัวแปรที่อ้างถึงข้อมูลอื่น อย่างไรก็ตามในบทนี้เราจะพูดถึงประเภท valued type
การประกาศและใช้งานตัวแปร
ในภาษา Visual Basic คุณจะต้องประกาศตัวแปรก่อนที่จะนำไปใช้งาน นี่เป็นรูปแบบของการประกาศตัวแปรในภาษา Visual Basic
Dim variableName As dataType
Dim variableName As dataType = value
ในการประกาศตัวแปรภาษา Visual Basic จะใช้คำสั่ง Dim
ตามด้วยชื่อของตัวแปร variableName
และคำสั่ง As
และตามด้วยประเภทของตัวแปร dataType
คุณสามารถกำหนดค่าให้กับตัวแปรได้ทันทีในตอนที่ประกาศมัน โดยใช้เครื่องหมายกำหนดค่า และตามด้วย literal ของประเภทข้อมูลนั้นๆ มาดูตัวอย่างการประกาศตัวแปรในภาษา Visual Basic
Dim a As Integer = 5
Dim b As Integer = 10
Dim c As Integer
c = a + b
Dim name As String = "Mateo"
Dim isProgramer As Boolean = True
ในตัวอย่าง เราได้ประกาศ 3 ตัวแปรประเภท Integer และสำหรับตัวแปร a
และ b
เราได้กำหนดค่าเริ่มต้นให้กับมัน และสำหรับตัวแปร c
จากผลรวมของตัวแปร a และ b คุณจะสังเกตุได้ว่าเราสามารถใช้ตัวแปรจากชื่อของมันโดยตรง หลังจากที่มันถูกประกาศแล้ว
ต่อมาเราประกาศตัวแปรที่ชื่อว่า name
และมีประเภทเป็น String และตัวแปร isProgramer
ซึ่งมีประเภทเป็นแบบ Boolean และได้กำหนดค่าให้กับตัวแปรทั้งสอง คุณจะเห็นว่าวิธีการกำหนดค่าจะแตกต่างกัน นั่นเป็นเพราะว่าประเภทของข้อมูลต่างกัน ซึ่งนั่นเป็นเรื่องของประเภทข้อมูลที่เราจะพูดต่อไป
ประเภทข้อมูลในภาษา Visual Basic
ในการเขียนโปรแกรมนั้น เราจำเป็นต้องจัดการข้อมูลที่ต่างประเภทกัน ดังนั้นในภาษา Visual Basic จึงมีตัวแปรประเภทต่างๆ ให้เราสามารถใช้งานได้ตามวัตถุประสงค์ของการเขียนโปรแกรม ข้างล่างนี้เป็นตารางแสดงประเภทข้อมูลในภาษา Visual Basic
Type | Data structure | Size | Value range |
---|---|---|---|
Boolean | Boolean | aaaaaa | True or False |
Byte | Byte | 1 byte | 0 to 255 |
Char | Char | 2 bytes | 0 to 65535 |
Date | DateTime | 8 bytes | 0:00:00 01/01/0001 to 23:59:59 12/31/9999 |
Decimal | Decimal | 16 bytes | +/-7.9...E+28 |
Double | Double | 8 bytes | 1.79...E+308 to -4.94...E-324 |
Integer | Int32 | 4 bytes | -2,147,483,648 to 2,147,483,647 |
Long | Int64 | 8 bytes | -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
Object | Object | 4 bytes | Any data type |
SByte | SByte | 1 byte | -128 to 127 |
Short | Int16 | 2 bytes | -32,768 to 32,767 |
Single | Single | 4 bytes | 3.4028235E+38 to -3.4028235E+38 |
String | String | 0 - 2 billion chars | Unicode characters |
UInteger | UInt32 | 4 bytes | 0 to 4,294,967,295 |
ULong | UInt64 | 8 bytes | 0 to 18,446,744,073,709,551,615 |
UShort | UInt16 | 2 bytes | 0 to 65,535 |
จากตารางข้างบน เราสามารจำแนกข้อมูลได้ออกเป็น 4 กลุ่มใหญ่ๆ ดังนี้
Boolean
Boolean เป็นตัวแปรสำหรับเก็บค่าความจริง โดยค่าของ Boolean สามารถเป็นได้แค่สองค่าคือ True
และ False
ค่าของตัวแปรประเภทนี้ถูกใช้ในการสร้าง expression สำหรับการสร้างเงื่อนไขให้ทำงานร่วมกับคำสั่งควบคุมการทำงานอื่นๆ เช่น คำสั่ง If While For เป็นต้น
Module BooleanExample
Sub Main()
Dim isBanker As Boolean = True
Dim isSmart As Boolean = False
If isBanker Then
Console.WriteLine("Mateo is a banker.")
End If
Console.WriteLine("Is Mateo smart?: {0}", isSmart)
isSmart = True
Console.WriteLine("Is Mateo smart?: {0}", isSmart)
End Sub
End Module
ในตัวอย่างเป็นการประกาศและใช้งานตัวแปรประเภท Boolean เราได้ประกาศตัวแปรสองตัวและกำหนดค่าให้กับมัน เราได้ใช้คำสั่ง If ในการตรวจสอบถ้าหากตัวแปร isBanker
เป็นจริงเราแสดงค่าว่า "Mateo is a banker." ถัดมาเราแสดงค่าของตัวแปร isSmart
ออกทางหน้าจอ
Mateo is a banker.
Is Mateo smart?: False
Is Mateo smart?: True
และนี่เป็นผลลัพธ์ของโปรแกรม
Integers (เลขจำนวนเต็ม)
ตัวแปรประเภท Integers ให้สำหรับเก็บค่าตัวเลขที่เป็นจำนวนเต็ม โดยตัวแปรประเภทนี้มีหลายขนาด และหลายรูปแบบการใช้งาน ขึ้นกับขนาดข้อมูลที่ใช้ในการจัดเก็บ มาดูตัวอย่าง
Module IntegerExample
Sub Main()
Dim a As SByte = -15
Dim b As Short = 255
Dim c As Integer = 2147483647
Console.WriteLine("a (SByte) = {0}", a)
Console.WriteLine("b (Short) = {0}", b)
Console.WriteLine("c (Integer) = {0}", c)
End Sub
End Module
ในตัวอย่าง เป็นการประกาศตัวแปรสำหรับเก็บจำนวนเต็มในภาษา Visual Basic ซึ่งตัวแปรนั้นจะมีขนาดและขอบเขตของข้อมูลที่แตกต่างกัน คุณควรจะเลือกใช้ให้พอดีกับข้อมูลที่ต้องการเก็บ ยกตัวอย่างเช่น คุณต้องการตัวมาในการเก็บค่าของวันที่ คุณสามารถใช้ตัวแปรประเภท Byte หรือ SByte ซึ่งเพียงพอในการเก็บข้อมูลเพียงแค่เลข 1 - 31
ในการใช้ตัวแปรนั้นคุณต้องระวังการเก็บค่าเกินขนาดของมัน ซึ่งจะทำให้เกิดความผิดพลาดขึ้น ซึ่งเรียกว่า stack overflow ยกตัวอย่างเชนตัวแปรประเภท Integer ค่าที่เก็บได้สูงสุดคือ 2,147,483,647 ถ้าคุณเก็บค่ามากกว่านั้นโปรแกรมของคุณจะแสดงข้อความผิดพลาด ข้างล่างนี้เป็นตัวอย่างของการเก็บค่าที่ไม่ถูกต้อง
Dim x As Byte = -1 ' Rang of Byte is 0 - 255
Dim y As Integer = 2147483647
Dim z As Integer = y + 1 ' Value exceed maximum value of Integer
Floating point numbers (เลขจำนวนจริง)
นอกจากตัวเลขจำนวนเต็มแล้ว ยังมีตัวเลขอีกแบบหนึ่งที่เราคุ้นเคยกันดี นั่นคือตัวเลขจำนวนจริงหรือ Floating point numbers ซึ่งตัวแปรประเภทนี้สามารถเก็บตัวเลขค่าจริงใดๆ ที่มีทศนิยมได้ ซึ่งข้อมูลก็จะมีหลายขนาดเช่นเดียวกันกับข้อมูลแบบตัวเลขจำนวนเต็ม มาดูตัวอย่าง
Module FloatingExample
Sub Main()
Const PI As Double = 3.14F
Dim radius As Double = 5.0F
Dim area As Decimal = PI * radius * radius
Console.WriteLine("Circle radius = {0}", radius)
Console.WriteLine("Circle's area = {0}", area)
End Sub
End Module
ในตัวอย่าง เราได้ประกาศตัวแปรสำหรับเก็บค่าที่มีทศนิยม เป็นโปรแกรมในการหาพื้นที่ของวงกลม เรามีตัวแปร radius
ซึ่งมีชนิดเป็น Double เก็บค่ารัศมีของวงกลม และมีตัวแปร PI
ซึ่งเป็นค่าคงที่เก็บค่าของค่า PI และตัวแปร area
มีประเภทเป็น Decimal เก็บค่าผลลัพธ์พื้นที่ของวงกลมที่ได้จากการคำนวณ
Circle radius = 5
Circle's area = 78.5000026226044
และนี่เป็นผลลัพธ์เมื่อรันโปรแกรมดังกล่าว
String and chars
String ใช้สำหรับเก็บตัวอักษรหรือข้อความใดๆ ในรูปแบบ Unicode ที่มีความยาวตั้งแต่ 0 - 2 พันล้านตัวอักษร ส่วนตัวแปรประเภท char จะเก็บข้อมูลได้เพียงค่าเดียว กล่าวอีกนัยหนึ่ง string เกิดจากการเชื่อมต่อกันของ char หลายๆ ตัว หรือเป็นอาเรย์ของ char
Module StringCharExample
Sub Main()
Dim myString As String = "Hello"
Dim ch As Char = "M"c
Dim greet As String = myString & " " & ch & "arcus"
Console.WriteLine(greet)
End Sub
End Module
ในตัวอย่าง เราได้ประกาศตัวแปร string ซึ่งสามารเก็บข้อมูลได้หลายตัว และ char จะเก็บได้เพียงตัวเดียวเท่านั้น ซึ่งค่าของมันจะถูกครอบด้วยเครื่องหมาย double quote สำหรับตัวแปรประเภท char จะมีตัวอักษร c
ต่อทายด้วยเสมอ
ต่อมาตัวแปร greet
เรากำหนดค่าโดยการนำ string มาต่อกันด้วย concatenation operator &
มันสามารถใช้ได้กับข้อมูลทุกประเภท ซึ่งจะได้ผลลัพธ์สุดท้ายเป็น string
Objects
Object (ออบเจ็ค) เป็นข้อมูลประเภทหนึ่งในภาษา Visual Basic ที่สามารถเก็บข้อมูลได้ทุกรูปแบบ ซึ่งข้อมูลประเภทต่างๆ นั้นได้ถ่ายทอดมาจากข้อมูลประเภทนี้
Module ObjectExample
Sub Main()
Dim name As Object = "Mateo"
Dim year As Object = 1988
Dim age As Object = 2016 - CType(year, Integer)
Console.WriteLine("His name is {0}", name)
Console.WriteLine("He was born in {0}", year)
Console.WriteLine("He is {0} year old", age)
End Sub
End Module
ในตัวอย่างเป็นการใช้งานตัวแปรประเภท object มันสามารถเก็บข้อมูลได้ทุกรูปแบบ และสามารถแปลงค่าและกระทำการทางคณิตศาสตร์ได้
การตั้งชื่อของตัวแปร
ในการเขียนโปรแกรมในภาษา Visual Basic ชื่อตัวแปรนั้นเป็นแบบ case-insensitive นั่นหมายความว่าตัวแปร number Number และ NUMBER เป็นตัวแปรเดียวกัน และนี่เป็นกฏการตั้งชื่อตัวแปร ที่จะนำไปใช้ทั้งการตั้งชื่อ Module คลาส ฟังก์ชัน และอื่นๆ ที่สร้างจากผู้ใช้
- ชื่อของตัวแปรสามารถประกอบไปด้วย ตัวอักษร ตัวเลข และเครื่องหมาย _ (underscore) เท่านั้น และไม่สามารถขึ้นต้นด้วยตัวเลขได้
- ชื่อของตัวแปรต้องไม่ตรงกับคำสงวน (keyword) ในภาษา Visual Basic
- ถึงแม้จะสามารถใช้ภาษาใน Unicode ใดๆ ตั้งชื่อตัวแปรได้ แต่คุณควรจะใช้ภาษาอังกฤษ
' Valid variable name
Dim name As String
Dim LASTNAME As String
Dim _addr2 As String
' Not valid variable name
Dim 12variable As Integer
Dim Sub As() Boolean
นี่เป็นตัวอย่างของการประกาศตัวแปรที่ถูกต้องและไม่ถูกต้อง แบบตัวแปรแรกนั้นถูกต้องตามกฏของการตั้งชื่อตัวแปร ส่วนตัวแปร 12variable
นั้นไม่ถูกต้องเพราะขึ้นต้นด้วยตัวเลย และคำว่า Sub
นั้นเป็น keyword ของภาษา Visual Basic ซึ่งไม่สามารถนำมาตั้งชื่อตัวแปรได้
ในบทนี้ คุณได้เรียนรู้เกี่ยวกับตัวแปรในภาษา Visual Basic ในเบื้องต้น รวมถึงการประกาศและใช้งานตัวแปร อย่างไรก็ตามยังมีตัวแปรประเภทอื่นๆ อีกในภาษาซึ่งเราได้แยกออกไปพูดต่างหาก ซึ่งคุณจะได้เรียนในภายหลังของบทเรียนนี้