Presentation is loading. Please wait.

Presentation is loading. Please wait.

第6章 運算式與運算子 [算術與多功能計算機]

Similar presentations


Presentation on theme: "第6章 運算式與運算子 [算術與多功能計算機]"— Presentation transcript:

1 第6章 運算式與運算子 [算術與多功能計算機]
第6章 運算式與運算子 [算術與多功能計算機]

2 Contents 6-1 運算式基礎 6-2 Visual Basic運算子 6-3 算術與連接運算子 6-4 比較與邏輯運算子 6-5 運算式的資料型態轉換 6-6 例外處理

3 6-1 運算式的基礎 6-1-1 運算式簡介 運算式的種類

4 6-1-1 運算式簡介-說明 「運算式」(Expressions)是由一序列的「運算子」(Operators)和「運算元」(Operands)組成,可以用來在程式中執行所需的運算任務。

5 6-1-1 運算式簡介-範例 一些Visual Basic語言運算式範例,如下所示: A B 15 -15 A + B * 1
A > B And A > 1 A = B + 1 運算式中變數A、B和字面值1、15和-15是運算元,「+」、「*」、「>=」、「>」、「And」和「=」為運算子,運算子是一個使用幾個字元組成的符號,運算元是字面值或變數,事實上,單獨運算元(不包含運算子)也是一種運算式。

6 6-1-1 運算式簡介-如何執行運算 當同一個運算式擁有超過一個運算子時,運算式的執行結果會因運算子的執行順序而不同。例如:一個數學運算式,如下所示: 10 * 2 + 5 上述運算式如果先執行加法,運算過程是2+5=7,然後7*10=70,結果為70。如果先執行乘法,過程是10*2=20,然後20+5=25,結果是25。 運算式如果擁有多個運算子時,運算子執行順序是由優先順序(Precedence)和結合(Associativity)來決定。

7 6-1-1 運算式簡介-優先順序(Precedence)
程式語言提供多種不同運算子,在同一個運算式如果使用多個運算子時,為了讓運算式能夠得到相同運算結果,運算式是以運算子預設的優先順序進行運算,也就是我們所熟知的「先乘除後加減」口訣,如下所示: A + B * 2 在上述運算式中,因為運算子優先順序*大於+,所以先計算B*2後才和A相加。

8 6-1-1 運算式簡介-結合(Associativity)
右左結合(Right-to-left Associativity):運算式是 從右到左執行運算子的運算,例如:運算式A-B-C 是先計算B-C的結果D,然後才是A-D。 左右結合(Left-to-right Associativity):運算式是 從左到右執行運算子的運算,例如:運算式A-B-C 是先計算A-B的結果D,然後才是D-C。

9 6-1-2 運算式的種類-1 單運算元運算式(Unary Expressions)
單運算元運算式只包含一個運算元和「單運算元運算子」(Unary Operator),例如:正負號是一種單運算元運算式,如下所示: -15 +10 在Visual Basic語言的-和+正負號是一種單運算元運算子。

10 6-1-2 運算式的種類-2 A + B * 1 D + C + E 二元運算式(Binary Expressions)
二元運算式包含兩個運算元,使用一個二元運算子來分隔,Visual Basic語言的運算式大都屬於二元運算式,如下所示: A + B * 1 D + C + E 第1個運算式是使用運算子優先順序來執行運算。第2個運算式的2個運算子因為擁有相同優先順序,所以程式語言是使用結合(Associativity)來執行運算式的計算。

11 6-2 Visual Basic的運算子 6-2-1 運算子種類 運算子優先順序 在運算式使用括號

12 6-2-1 運算子的種類 算術運算子(Arithmetic Operators):執行常見數學運算的加、減、乘和除法等數值運算。
比較運算子(Comparison Operators):執行兩個運算元的大於、等於、小於、大於等於和小於等於的運算,可以傳回布林值True或False。 字串連接運算子(Concatenation Operators):可以連接多個字串成為一個字串,每一個字串是連接在前一個字串的最後。 邏輯運算子(Logical Operators):可以連接比較運算式來建立更複雜的條件運算式。

13 6-2-2 運算子的優先順序-規則 運算式預設依其出現順序,由左到右依序執行運算,其優先順序規則,如下所示:
“( )”括號內比括號外先執行,括號的目的是為了推翻現有優先順序,在括號內依照正常優先順序。 當運算式擁有多種運算子時,算術運算子最先,接著是比較運算子,最後才是邏輯運算子,如下所示: 算術運算子 > 比較運算子 > 邏輯運算子 比較運算子擁有相同的優先順序。 算術運算子的加和減法優先順序相同,乘和除法擁有相同的優先順序,不過乘除高於加減,如下所示: ^指數 > (-)負號 > */乘除 > \整數除法 > Mod餘數 > +-加減 > & 邏輯運算子的優先順序,如下所示: Not > And, AndAlso > Or, OrElse > Xor

14 6-2-2 運算子的優先順序-優先順序 Visual Basic語言運算子的預設優先順序,愈前面的列,其優先順序愈高,如下表所示:

15 6-2-2 運算子的優先順序-結合規則 當運算式的運算子擁有相同優先順序時,Visual Basic語言是使用左右結合(Left-to-right Associativity)來執行D + C + E的運算,先計算D + C等於R後,計算R+E的值。

16 6-2-3 在運算式使用括號-括號運算式(Parenthetical Expressions)
在運算式中擁有超過2個運算子時,才可能使用括號來改變運算順序,例如:一個擁有乘法和加法運算子的算術運算式,如下所示: A = B * C + 10 上述運算式的運算順序是先計算B * C後,再加上字面值10,因為乘法優先順序大於加法。如果需要先計算C + 10,可以使用括號來改變優先順序,如下所示: A = B * (C + 10)

17 6-2-3 在運算式使用括號-巢狀括號運算式(Nested Parenthetical Expressions)
在運算式的括號中可以擁有其他括號,稱為巢狀括號,此時在最內層括號擁有最高優先順序,然後是其上一層,直到得到最後的運算結果,如下所示: A = (B * 2) ^ (C * (D + 10)) 上述運算式的運算順序是先計算最內層的D + 10,然後是上一層的(B * 2)和(C * (D + 10)),最後才計算指數運算結果。

18 6-3 算術與字串連接運算子 6-3-1 算術運算子 使用數學公式建立運算式 字串連接運算子 再談指定敘述

19 6-3-1 算術運算子-種類 Visual Basic語言提供多種算術運算子來執行數學運算,其說明與範例如下表所示:

20 6-3-1 算術運算子-取得TextBox控制項輸入的數值
在Windows應用程式通常是使用TextBox控制項來取得使用者輸入的變數值,因為預設資料型態是字串,所以需要使用資料型態轉換函數來轉換成數值,如下所示: Dim opd1, opd2 As Integer opd1 = CInt(txtOpd1.Text) opd2 = CInt(txtOpd2.Text)

21 6-3-1 算術運算子-Visual Basic專案
Visual Basic專案:Ch6-3-1\算術計算機 在Windows應用程式使用2個TextBox控制項輸入運算元的值後,使用算術運算子在Label標籤控制項顯示計算結果。其執行結果如下圖所示:

22 6-3-2 使用數學公式建立運算式-說明 數學公式可以轉換成算術運算式,建立Visual Basic應用程式來解決數學問題。
例如:華氏(Fahrenheit)和攝氏(Celsius)溫度的轉換公式。首先是攝氏轉華氏的公式,如下所示: F = (9.0 * C) / 華氏轉攝氏的公式,如下所示: C = (5.0 / 9.0) * (F – 32.0) 體脂肪BMI值的計算公式,如下所示: R = Weight / Height ^ 2

23 6-3-2 使用數學公式建立運算式-Visual Basic專案
Visual Basic專案:Ch6-3-2\多功能計算機 在Windows應用程式使用數學公式來建立算術運算式,可以計算BMI值,和轉換攝氏或華氏溫度。其執行結果如下圖所示:

24 6-3-3 字串連接運算子-說明 如果運算元是String字串資料型態,在Visual Basic語言提供運算子可以連接字串內容,其說明和範例如下所示:

25 6-3-3 字串連接運算子-Visual Basic專案
Visual Basic專案:Ch6-3-3\多功能計算機 這個Windows應用程式和上一節的專案相同,只是在計算BMI值時,除了輸出計算結果外,還加上說明字串。其執行結果如下圖所示:

26 6-3-4 再談指定敘述 在Visual Basic語言除了使用「=」等號建立指定敘述外,還可以配合其他運算子來簡化運算式撰寫,建立更簡潔算術運算式,如下表所示:

27 6-4 比較與邏輯運算子 6-4-1 比較運算子 邏輯運算子

28 6-4-1 比較運算子 比較運算子沒有優先順序分別,通常使用在迴圈和條件敘述作為判斷條件,運算結果是布林值True或False,其說明和範例如下表所示:

29 6-4-2 邏輯運算子-種類 如果迴圈和條件敘述的判斷條件不只一個,需要使用邏輯運算子來連接多個比較運算式,其說明如下表所示:

30 6-4-2 邏輯運算子-範例 對於複雜比較運算式可使用邏輯運算子連接,一些 實際的運算式範例,如下表所示:

31 6-5 運算式的資料型態轉換 6-5-1 隱含型態轉換 明顯型態轉換

32 6-5 運算式的資料型態轉換 「資料型態轉換」(Type Conversions)是因同一個運算式可能有多個不同資料型態的變數或字面值。例如:在運算式擁有整數和浮點數的變數或字面值時,就需要執行型態轉換。 資料型態轉換是指轉換變數儲存資料,而不是變數本身的資料型態,因不同型態佔用的位元組數不同,所以在進行資料型態轉換時。例如:Double轉換成Single,變數資料有可能損失資料或精確度。

33 6-5-1 隱含型態轉換-說明 隱含型態轉換(Implicit Conversions)並不需特別語法,在運算式或指定敘述兩端,如果有不同型態變數,就會將儲存資料自動轉換成相同資料型態。 在指定敘述右邊運算式結果會自動轉換成與左邊變數相同資料型態。一些運算式範例和說明,如下表所示:

34 6-5-1 隱含型態轉換-Visual Basic專案
Visual Basic專案:Ch6-5-1\我的主控台程式 這個Windows應用程式直接使用第5-4-1節的【我的主控台程式】,可以建立運算式來測試隱含型態轉換。其執行結果如下圖所示:

35 6-5-2 明顯型態轉換-說明 隱含型態轉換對於程式設計者來說,並不需任何 額外處理。不過因為是自動轉換,有時可能造成 未知型態轉換錯誤。例如:上一節範例程式,如 果準備將字串轉換成整數後再相加,運算式 num=str1+str2結果的值應該是375,而不是250125。 「明顯型態轉換」(Explicit Conversions)是在進 行運算前,自行使用資料型態轉換函數來轉換成 相同資料型態。

36 6-5-2 明顯型態轉換-資料型態轉換函數

37 6-5-2 明顯型態轉換-明顯型態轉換 當運算式或指定敘述兩端資料型態不相同時,就可使用上表函數自行轉換成相同資料型態,如下所示:
intValue = CInt(longValue) num = CInt(str1) + num1 str = CStr(CInt(str1) + num1)

38 6-5-2 明顯型態轉換-Visual Basic專案
Visual Basic專案:Ch6-5-2\我的主控台程式 這個Windows應用程式是直接使用第6-5-1節的【我的主控台程式】,可以建立運算式來測試明顯型態轉換,對於不同型態變數,需要自行使用型態轉換函數來轉換型態。其執行結果如下圖所示:

39 6-6 例外處理-說明 例外處理是指在程式執行時,如果發生不正常執 行狀態時,可以在程式碼處理這些錯誤。
例外處理是指在程式執行時,如果發生不正常執 行狀態時,可以在程式碼處理這些錯誤。 例外處理的目的是為了讓程式能夠更「穩健」 (Robust)。當程式遇到不尋常情況,也不會造成 程式「崩潰」(Crashing),進而導致整個系統當 機情況。

40 6-6 例外處理-語法 Visual Basic語言提供結構化的例外處理程式敘述,即Try/End Try,其語法如下所示: Try
' 測試錯誤的程式碼 程式區塊 Catch ex As Exception ' 例外處理的程式碼 Finally End Try

41 6-6 例外處理-語法說明 例外處理敘述可以分為三個部分,其說明如下表所示:

42 6-6 例外處理-Visual Basic專案 Visual Basic專案:Ch6-6\算術計算機
這個Windows應用程式是修改第6-3-1節的【算術計算機】,在除法運算建立Try/End Try例外處理敘述,可以處理除以0導致溢位的運算錯誤。其執行結果如下圖所示:


Download ppt "第6章 運算式與運算子 [算術與多功能計算機]"

Similar presentations


Ads by Google