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

13 September 2016

ในบทนี้ เราจะมาพูดเกี่ยวกับตัวแปรและประเภทข้อมูลในภาษา 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

TypeData structureSizeValue range
BooleanBooleanaaaaaaTrue or False
ByteByte1 byte0 to 255
CharChar2 bytes0 to 65535
DateDateTime8 bytes0:00:00 01/01/0001 to 23:59:59 12/31/9999
DecimalDecimal16 bytes+/-7.9...E+28
DoubleDouble8 bytes1.79...E+308 to -4.94...E-324
IntegerInt324 bytes -2,147,483,648 to 2,147,483,647
LongInt648 bytes-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
ObjectObject4 bytesAny data type
SByteSByte1 byte-128 to 127
ShortInt162 bytes-32,768 to 32,767
SingleSingle4 bytes3.4028235E+38 to -3.4028235E+38
StringString0 - 2 billion charsUnicode characters
UIntegerUInt324 bytes0 to 4,294,967,295
ULongUInt648 bytes0 to 18,446,744,073,709,551,615
UShortUInt162 bytes0 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 ในเบื้องต้น รวมถึงการประกาศและใช้งานตัวแปร อย่างไรก็ตามยังมีตัวแปรประเภทอื่นๆ อีกในภาษาซึ่งเราได้แยกออกไปพูดต่างหาก ซึ่งคุณจะได้เรียนในภายหลังของบทเรียนนี้

บทความนี้เป็นประโยชน์หรือไม่?Yes·No