vb6 5 ข้อมูลและตัวแปร
DESCRIPTION
Vb6 5 ข้อมูลและตัวแปรTRANSCRIPT
บทท 5ขอมลและตวแปร
ใบบทนจะเปนการอธบายเกยวกบชนดของขอมล การใชงานตวแปร และคาคงท ทใชกบ 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 คา
8 Bytes
ลบอยระหวาง - 1.79769313486232E308 ถง -4.94065645841247E-324
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
2
Dim varname As datatypesDim คอ คำาสง (statements) สำาหรบประกาศตวแปรvarname คอ ชอของตวแปรทตองการประกาศAs คอ สวนทบอกให Visual Basic ทราบวาตองการ
กำาหนดชนดของขอมลdatatypes คอ ชนดของขอมลท Visual Basic สนบสนน
ตวอยาง
รปท 5-1 การประกาศตวแปร
กรณทตองการกำาหนดใหมการประกาศตวแปรทกครงกอนทจะมการเรยกใชตวแปร เพอหลกเลยงการใชตวแปรชนด Variant ใหพมพคำาสง Option Explicit ไวขางบนสดกอนพมพคำาสงอน ๆ
กฎการตงชอตวแปรและคาคงท1. ขนตนดวยพยญชนะเทานน2. ความยาวของชอทตงสงสดไมเกน 255 ตวอกษร3. ชอทตง ตองไมซำากนคำาสงวน (Keywords) คำาสง (Statements) ฟงกชน (Functions) หรออน ๆ ท Visual Basic กำาหนดไว4. หามตงชอซำากนในโพรซเดอรเดยวกน หรอในขอบเขตเดยวกน
3
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
4
2. ตวแปรแบบ 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 จะทำาใหตวแปรนนสามารถเรยกใชงานไดจากทกฟอรม
5
ตวอยาง 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 DatatypeDim คอ คำาสง (statements) สำาหรบประกาศ
ตวแปรvarname คอ ชอของตวแปรอารเรยทตองการประกาศamount คอ จำานวนสมาชกของอารเรยAs คอ สวนทบอกให Visual Basic ทราบวา
ตองการกำาหนดชนดของขอมลdatatypes คอ ชนดของขอมลท Visual Basic สนบสนน
6
ตวอยาง
รปท 5-2 การประกาศอารเรย ตวแปรอารเรยแบงออกได 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
7
จากตวอยางเปนการประกาศตวแปรอารเรยชอ 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
คอ ชอของตวแปร ซงเปนสวนหนงของชนดขอมลทสรางขนมา
Subscript คอ จำานวนสมาชกกรณทตองการใหเปนตวแป
8
s รอารเรย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 = "123 ถ.ศรสมงค ต.เมองใต อ.เมอง จ.ศรสะเกษ newcust.Age = 45
การประกาศคาคงท (Constant)คาคงท (Constant) หมายถงขอมลทมคาคงทไมมการเปลยนแปลง ในการประกาศคาคงทตองใชคำาสง Const เพอสรางคาคงท มรปแบบดงน
[Public I Private] Const constname [As type] = expression Public(Optional)
คอ สวนทกำาหนดใหคาคงทสามารถใชไดทงโปรเจกต ทกโมดล
Private(Optional)
คอ สวนทกำาหนดใหคาคงทสามารถใชไดเฉพาะโมดลทประกาศเทานน
Const คอ คำาสงสรางคาคงทConstname
คอ ชอคาคงท
Type คอ การกำาหนดชนดของคาคงท
9
(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
10
9 การคณ * A * B การหาร / A / B การหารเอาแตจำานวนเตม \ A \ B
การหารเอาแตเศษ Mod A Mod B
การยกกำาลง ^ A ^ B การเปลยนเครองหมาย - -A
ตวดำาเนนการทางดานตรรกะ (Logical Operator)
คอเครองหมายสำาหรบตรวจสอบเงอนไขระหวางกลมนพจน โดยจะใหผลลพธเปนจรง (True) และเปนเทจ (False) หรอสรางเงอนไขขนมาเพอทดสอบกรณตาง ๆ ดงตาราง
ตวดำาเนนการ
ตวอยาง
ผลลพธ
AndA
And B
เปนจรงเมอทง 2 นพจนมคาเปนจรง
Or A Or B
เปนเทจเมอทง 2 นพจนมคาเปนเทจ
Xor A Xor B
เปนจรงเมอทง 2 นพจนมคาตางกน
EqvA
Eqv B
เปนจรงเมองทง 2 นพจนมคาเหมอนกน
ImpA
Imp B
เปนเทจเมอนพจนหนาเปนจรง นพจนหลงเปนเทจ
11
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
12