资源描述
,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,第,3,章 變數、資料型別與運算子,1,第,3,章,變數、資料,型別與運算子,3-1,變數與資料型別的基礎,3-2,變數的命名與宣告,3-3,資料型別,3-4,運算式與運算子,3-5,資料型別的轉換,2,3-1,變數與資料型別的基礎,-,圖例,在程式語言的變數(,Variables,)可以視為是一個擁有名稱的盒子,能夠暫時儲存程式執行時所需的資料,如下圖所示:,3,3-1,變數與資料型別的基礎,-,說明,兩個盒子名稱分別是變數名稱,name,和,height,,在盒子中儲存的資料,VB,程式,和,100,稱為字面值(,Literals,)或稱為常數值(,Constants,),也就是數值、字元或字串等常數值,如下所示:,100,15.3,Visual Basic,程式,現在回到盒子本身,盒子形狀和尺寸決定儲存資料,對比程式語言來說,形狀和尺寸就是變數的資料型別(,Data Types,)。,4,3-2 變數的命名與宣告,3-2-1 Visual Basic,的命名規則,3-2-2,變數的宣告,3-2-3,指定敘述,ViLLE 1.1,指定敘述與輸出變數值,3-2-4 Option,指令敘述,3-2-5,符號常數的使用,3-2-6,列舉資料型別,Enumeration,5,3-2,變數的命名與宣告,對於高階程式語言來說,程式是由資料(,Data,)和指令(,Instructions,)組成,如下所示:,資料部分:變數(,Variables,)和資料型別(,Data Types,)。,指令部分:運算子、第,5,和,6,章的流程控制(,Control Structures,)和第,7,章的副程序(,Subroutines,)。,在程式碼除了程式語言的關鍵字(,Keywords,,或稱保留字)外,大部分都屬於程式設計者自訂的元素名稱,稱為識別字(,Identifier,),例如:變數、程序、函數和物件名稱等。,6,3-2-1 Visual Basic,的命名規則,-,命名規則,識別字不可使用,Visual Basic,關鍵字或系統的物件名稱。,名稱必須是英文字母或底線,_,開頭,如果以底線開頭,至少需要一個其他英文字母或數字。,名稱長度不可超過,16383,個字元,不區分英文字母大小寫,,abc,和,ABC,代表同一個名稱。,名稱中間不能有句點,.,、運算子(例如:,+-*/,等)或空白,只能是英文字母、數字和底線。,在宣告的有效範圍內必須唯一,有效範圍請參閱第,7,章的程序和函數。,7,3-2-1 Visual Basic,的命名規則,-,命名範例,一些合法的,Visual Basic,元素名稱的範例,如下所示:,def,no_123,size1,_123,_abc,Car,count,height,s1,s2,一些不合法名稱,因為只有底線和以數字開頭,如下所示:,_,123abc,8,大家有疑问的,可以询问和交流,可以互相讨论下,但要小声点,9,大家有疑问的,可以询问和交流,可以互相讨论下,但要小声点,10,3-2-1 Visual Basic,的命名規則,-,匈牙利命名法,匈牙利命名法是將變數的前,3,個字元視為資料型別,依不同資料型別加上字首字串,如下表所示:,11,3-2-1 Visual Basic,的命名規則,-CamelCasing,命名法,CamelCasing,命名法是第,1,個英文字小寫之後為大寫,變數、程序,/,函數的命名可以使用不同英文字母大小寫的組合,如下表所示:,12,3-2-2,變數的宣告,-,說明,程式語言的變數是儲存程式執行中的一些暫存資料,程式設計者只需使用變數名稱就可以存取記憶體位址的資料。,簡單的說,它就是使用有意義的名稱來代表數字的位址。,13,3-2-2,變數的宣告,-,屬性,程式的變數擁有一些屬性,可以用來描述變數的組成元素,如下表所示:,14,3-2-2,變數的宣告,-,變數的宣告,Visual Basic,變數是使用,Dim,關鍵字進行宣告,如下所示:,Dim,volumn,宣告變數,volumn,預設的資料型別是,Object,,可以儲存各種資料型別的值。,如果宣告的變數有指定資料型別,我們需要使用,As,關鍵字來宣告變數的資料型別,如下所示:,Dim,height,width As Integer,如果同一列的,2,個變數屬於不同資料型別,也可以分別宣告其資料型別,如下所示:,Dim,name,As String,depth As Integer,15,3-2-2,變數的宣告,-,變數的初值,如果需要,我們在宣告變數時可以同時指定初值,如下所示:,Dim name As String,depth=100,Dim title As String=Visual Basic,程式設計,上述程式碼宣告字串變數,name,和,title,,並且指定字串變數,title,的初值。,變數,depth,沒有指定型別;但指定初值,100,,,2008,之後版本會自動以初值指定資料型別為整數。,16,3-2-2,變數的宣告,-Visual Basic,專案,Visual Basic,專案:,Ch3-2-2,在主控台應用程式宣告,6,個變數,分別指定變數初值後顯示變數值,如下圖所示:,17,3-2-3,指定敘述,-,說明,在,Visual Basic,程式宣告變數後,就可以使用指定敘述來指定變數值,也就是,=,等號運算子,如下所示:,Dim depth,height,width As Integer,Dim name As String,height=35,width=57,name=,陳會安,上述程式碼在宣告整數和字串型別的變數後,使用指定敘述來指定變數值。,18,3-2-3,指定敘述,-,圖例,在指定敘述,“=”,等號左邊的變數稱為左值(,Lvalue,),指的是變數的位址(,Address,)屬性,如果變數在等號的右邊稱為右值(,Rvalue,),這是變數的值(,Value,)屬性。,目前變數的記憶體圖例,如下圖所示:,19,3-2-3,指定敘述,-Visual Basic,專案,Visual Basic,專案:,Ch3-2-3,在主控台應用程式宣告數個變數後,使用指定敘述來指定變數值,如下圖所示:,20,ViLLE,1,.,1,指定敘述與輸出變數值,請啟動,ViLLE,,在,【,一,.,變數與運算子,】,目錄下,選,【1.,指定敘述與輸出變數值,】,,按,【Run】,鈕模擬執行此範例程式,,,如下圖所示:,21,3-2-4 Option,指令敘述,-1,Option Explicit:設定程式變數是否一定需要事先宣告,Off表示不用宣告;強迫宣告需設為On,此為VBE的預設值,如下所示:,Option Explict On,Option Strict:指定程式是否使用嚴格的型別檢查,例如:當執行型別轉換進行嚴格檢查,預設值Off表示不嚴格檢查。如果需要嚴格檢查,請設為On,如下所示:,Option Strict Off,22,3-2-4 Option,指令敘述,-2,Option Compare:指定字串比較方式是使用二進位或文字比較,可以是Binary(預設值)或Text,如下所示:,Option Compare Binary,Option Infer:如果指定Option Explict Off設定程式變數不需事先宣告時,我們可以再指定Option Infer為On(預設值),讓Visual Basic編譯器依變數第1次指定的值來自動決定最佳的資料型別;值如果為Off,此時的資料型別為Object,如下所示:,Option Explict Off,Option Infer On,23,3-2-4 Option,指令敘述,-,Visual Basic專案,Visual Basic,專案:,Ch3-2-4,在主控台應用程式將,VBE,專案的,Option Explicit,設為,Off,,和,Option Infer,為,On,後,就可以不宣告變數,隨時在程式碼中使用變數,讓,Visual Basic,編譯器自動決定最佳的資料型別,如下圖所示:,24,3-2-5,符號常數的使用,-,說明,符號常數(,Symbolic Constants,或,Named Constants,)是在程式碼使用名稱來取代固定數字或字串,與其將符號常數視為變數,不如說它是名稱轉換,將一些數值的值使用有意義名稱來取代。,Visual Basic,語言本身就擁有一些內建符號常數,例如:,vbTab,、,vbNewLine,等,不過使用者可以自行使用,Const,關鍵字建立符號常數,請注意!符號常數在宣告時需要指定其值,如下所示:,Const MAX_WIDTH=150,Const PI=3.1415926,25,3-2-5,符號常數的使用,-Visual Basic,專案,Visual Basic,專案:,Ch3-2-5,在主控台應用程式宣告符號常數,並且在運算式使用符號常數來計算圓面積,如下圖所示:,26,3-2-6,列舉資料型別,Enumeration-,說明,如同符號常數使用名稱取代固定數值,列舉常數(,Enumerations,)是使用一組名稱來取代一組整數資料型別的數值。它是使用,Enum/End Enum,程式敘述來進行宣告,如下所示:,Enum Color As Integer,White=1,Red,Blue=5,Green,Black=Green,End Enum,27,3-2-6,列舉資料型別,Enumeration-Visual Basic,專案,Visual Basic,專案:,Ch3-2-6,在主控台應用程式宣告列舉常數,Color,,然後顯示各列舉常數成員的對應值,如下圖所示:,28,3-3,資料型別,3-3-1 Visual Basic,的基本資料型別,3-3-2,整數資料型別,3-3-3,浮點數資料型別,3-3-4,布林資料型別,3-3-5,字串資料型別,3-3-6,字元資料型別,3-3-7,日期,/,時間資料型別,29,3-3,資料型別,Visual Basic,語言的資料型別是指變數的記憶體位址儲存的資料種類,,Visual Basic,資料型別可以分為數值型別(,Value Types,)和參考型別(,Reference Types,)兩種資料型別,如下所示:,數值型別:變數值儲存的是字面值,它是記憶體儲存的內容。,Visual Basic,語言提供,Byte,、,Short,、,Integer,、,Long,、,Single,、,Double,、,Char,和,Boolean,等基本資料型別。,參考型別:變數值並不是記憶體內容,而是記憶體位址。例如:,Module,、,Class,、,String,和,Array,陣列等,在第,8,章說明陣列,Array,;附錄,A,說明,Class,。,30,3-3-1 Visual Basic,的基本資料型別,-,說明,在宣告,Visual Basic,變數時不一定需要指定資料型別,如果沒有指定資料型別,預設資料型別是,Object,。,Object,是所有,Visual Basic,資料型別的基礎資料型別,換句話說,這個變數可以儲存各種不同資料型別的資料。,31,3-3-1 Visual Basic,的基本資料型別,-,種類,1,32,3-3-1 Visual Basic,的基本資料型別,-,種類,2,33,3-3-2,整數資料型別,-,說明,整數資料型別(,Integral Types,)是指變數儲存的資料是整數沒有小數點。依整數資料長度的不同(即佔用的記憶體位元數),可以分為,Byte,、,SByte,、,Char,、,Short,、,UShort,、,Integer,、,UInteger,、,Long,和,Ulong,等整數資料型別。,Byte,、,Ushort,、,Uinteger,和,Ulong,型別是正整數,其他可以是正整數或負整數,程式設計者能夠依照整數範圍決定宣告的變數型別。,34,3-3-2,整數資料型別,-,十、八和十六進位,在程式碼如果直接使用整數字面值(,Integral Literals,),包含,0,、正整數和負整數都可以使用十進位、八進位和十六進位來表示,其預設型別是,Integer,,如果太長是,Long,型別。,整數字面值以“,&O”,開頭且每個位數的值為,07,整數時,表示是八進位;“,&H”,開頭的數值,位數值為,09,或,AF,是十六進位。,35,3-3-2,整數資料型別,-,範例,如果想指定整數字面值的資料型別,可以在整數字面值後加上型別字元(,Type Characters,),,19S,是,Short,、,19I,是,Integer,,,19L,是,Long,,,19US,是,UShort,、,19UI,是,UInteger,和,19UL,是,ULong,。,一些整數字面值的範例,如下表所示:,36,3-3-3,浮點數資料型別,-,說明,浮點數資料型別(,Floating Point Types,)是指數值是整數再加上小數,例如:,3.1415,、,102.567,等,依長度不同(即佔用的記憶體位元數)分為:,Single,、,Double,和,Decimal,三種浮點數的資料型別。,37,3-3-3,浮點數資料型別,-,浮點數值,程式設計者可依浮點數值範圍來決定宣告的變數型別。如果在程式碼直接使用浮點數字面值(,Floation-Point Literals,),預設是,Double,型別,可以使用,“E”,符號代表,10,為底的指數。,如果浮點數字面值需要指定資料型別,型別字元,F,是,Single,資料型別,,Double,資料型別請使用,R,,,Decimal,使用,D,。一些浮點數字面值的範例,如下表所示:,38,3-3-4,布林資料型別,布林資料型別(,Boolean Type,)只有兩個值,True,和,False,,對應真或偽狀態。,39,3-3-5,字串資料型別,字串資料型別(,String Type,)的資料是字串,字串是,0,或多個依序的,Char,資料型別的字元,以雙引號括起的文字內容,即字串字面值(,String Literals,),如下所示:,Dim str1 As String=“Visual Basic,程式設計”,Dim str2 As String=“Hello World!”,Dim str3 As String=_,”localhostdownloadjoe”,40,3-3-6,字元資料型別,字元資料型別(,Char Type,)是單一,Unicode,字元,如果是數值,可以儲存無符號(,Unsigned,),16,位元整數。,在,Visual Basic,程式使用字元字面值(,Character Literals,)是以雙引號括起的單一字元,如下所示:,Dim a As Char=AC,41,3-3-7,日期,/,時間資料型別,日期,/,時間資料型別(,Date Type,)可以儲存日期,/,時間資料,日期,/,時間字面值(,Date Literals,)的日期時間資料需要使用,#,括起,如下所示:,Dim tday As Date=#12/30/2010 12:00:00 AM#,上述日期,/,時間值的年份有,4,位數,時間部分可以是,12,或,24,小時制,如果沒有,AM,或,PM,是,24,小時制,忽略分或秒的預設值為,0,。,42,3-3,資料型別,-Visual Basic,專案,Visual Basic,專案:,Ch3-3,在主控台應用程式宣告各種資料型別的變數後,測試各種資料型別的字面值,如下圖所示:,43,3-4,運算式與運算子,3-4-1,運算式的基礎,3-4-2,運算子的優先順序,3-4-3,算術運算子,ViLLE 1.3,數學公式建立運算式,3-4-4,字串連接與,Like,運算子,3-4-5,指定運算子,44,3-4-1,運算式的基礎,運算式是由運算元和運算子組成,在指定敘述的運算式一定在等號右邊,如下所示:,C1=A+B 1,C2=(A=B),C3=A&B,C4=(A 1),上述運算式的變數,A,、,B,和數值,1,是運算元,,+,、,-,、,=,和,為運算子,變數,C1C4,是左值,也就是運算式將計算結果存入變數,C1C4,。,45,3-4-2,運算子的優先順序,-,說明,Visual Basic,提供多種運算子,如果在同一個運算式使用多種運算子,為了讓運算式能夠得到相同結果,運算式是使用運算子預設的優先順序進行運算。,Visual Basic,運算式預設依其出現順序,由左到右依序的執行運算。,46,3-4-2,運算子的優先順序,-,規則,“()”,括號內比括號外先執行,括號是為了推翻現有優先順序,在括號內是依照正常優先順序。,當運算式擁有多種運算子時,算術運算子最先,接著關係運算子,最後是邏輯運算子,如下:,算術運算子,關係運算子,邏輯運算子,關係運算子擁有相同的優先順序。,算術運算子加和減法優先順序相同,乘和除法擁有相同的優先順序,不過乘除高於加減,如下:,指數,(-),負號,*/,乘除,整數除法,Mod +-,加減,&,邏輯運算子的優先順序,如下所示:,Not And,AndAlso Or,OrElse Xor,47,3-4-3,算術運算子,-,說明,算術運算子,+-,也可以是單運算元(,Unary,)運算子的正負號。各種算術運算子的說明,如下表所示:,48,3-4-3,算術運算子,-,數學運算式,如果使用變數,可以建立更複雜的數學運算式,如下所示:,f=X2-2*X+3,f=(X+Y)2+5,已知數學公式,例如:華氏(,Fahrenheit,)和攝氏(,Celsius,)溫度的轉換,攝氏轉華氏的公式如下所示:,F=(9.0*C)/5.0+32.0,華氏轉攝氏的公式,如下所示:,C=(5.0/9.0)*(F-32),49,3-4-3,算術運算子,-Visual Basic,專案,Visual Basic,專案:,Ch3-4-3,在主控台應用程式計算上述數學運算式的值,和轉換攝氏或華氏溫度,如下圖所示:,50,ViLLE,1,.,3,數學公式建立運算式,請啟動,ViLLE,,在,【,一,.,變數與運算子,】,目錄下,選,【3.,數學公式建立運算式,】,,按,【Run】,鈕模擬執行此範例程式,,,如下圖所示:,51,3-4-4,字串連接與,Like,運算子,-,說明,對於,String,資料型別,,Visual Basic,語言提供兩種運算子,可以連接字串內容和進行字串的範本比較,如下所示:,52,3-4-4,字串連接與,Like,運算子,-,範本字串,Like,運算子的第,1,個運算元是欲比較字串,第,2,個運算元是範本字串,這是使用特殊符號字元組成的字串,如下表所示:,53,3-4-4,字串連接與,Like,運算子,-,範本字串範例,Like,運算子的範本字串範例,如下所表示:,54,3-4-4,字串連接與,Like,運算子,-Visual Basic,專案,Visual Basic,專案:,Ch3-4-4,在主控台應用程式測試字串連接和比較運算子,Like,,如下圖所示:,55,3-4-5,指定運算子,指定運算子除了使用前述指定敘述,=,外,指定運算子還可以配合其他運算子來簡化運算式,建立更簡潔的算術運算式,如下表所示:,56,3-5,資料型別的轉換,3-5-1,隱含型別轉換,3-5-2,明顯型別轉換,57,3-5,資料型別的轉換,資料型別轉換(,Type Conversions,)是因為同一個運算式可能有多個不同資料型別的變數或字面值。例如:在運算式擁有整數和浮點數的變數或字面值時,就需要執行型別轉換。,資料型別轉換是指轉換變數儲存的資料,而不是變數本身的資料型別,因為不同型別佔用的位元組數不同,在進行資料型別轉換時。例如:,Double,轉換成,Single,,變數資料就有可能損失資料或精確度。,58,3-5-1,隱含型別轉換,-,說明,隱含型別轉換(,Implicit Conversions,)並不需要特別語法,在運算式或指定敘述兩端,如果有不同型別的變數,就會將儲存資料自動轉換成相同的資料型別。,一些運算式範例,如下表所示:,59,3-5-1,隱含型別轉換,-Visual Basic,專案,Visual Basic,專案:,Ch3-5-1,在主控台應用程式建立運算式來測試隱含型別轉換,如下圖所示:,60,3-5-2,明顯型別轉換,-,說明,隱含型別轉換對於程式設計者來說,並不需要任何額外處理。不過,因為是自動轉換,有時可能造成未知的型別轉換錯誤。例如:上一節範例程式,如果準備將字串轉換成整數後再相加,運算式,num=str1+str2,結果的值應該是,375,,而不是,250125,。,明顯型別轉換(,Explicit Conversions,)是在進行運算前,自行使用轉換函數轉換成相同資料型別。,61,3-5-2,明顯型別轉換,-,轉換函數,在本節範例程式只使用幾個轉換函數,更多轉換函數說明請參閱第,7-4-3,節,如下表所示:,62,
展开阅读全文