VBS基礎教程:[4]第三篇(共六篇)?

首先, 我來解決一下上次課程的幾個疑問

  第一, 那個餘數問題, 16 / 5 = 3……1, 是因為我改過前面的部分, 後面的忘了改了, 不好意思。

  第二, 請看一下程序清單:

  (1)

  Dim a,b,c

  a=inputbox("a是:","輸入半徑")

  b=Inputbox("b是:","輸入半徑")

  c=a*2+b*2

  msgbox c

  這個 輸入1、2時是6

  (2)

  Dim a,b,c

  a=inputbox("a是:","輸入半徑")

  b=Inputbox("b是:","輸入半徑")

  c=(a+b)*2

  msgbox c

  這個輸入1、2時是24

  為什麼會不一樣呢? 在數學上c=(a+b)*2 和 c=a*2+b*2是等價的, 在VBS中也是如此. 問題出在"+"上, 在VBS中, +不僅僅是加號的意思還表示把兩個字符串連接起來,例如"Hello"+"World"="HelloWorld" ,have you understood? 你還記得InoutBox函數的返回值嗎? 是字符串! 這就看出問題了吧, 在編程中"1"不等於(<>)1, "1"是一個字符, 而1是一個數, 所以a,b都是字符串變量, "1"+"2"="12", 這就好像我們小時跟夥伴開玩笑問他們1+1=?一樣, 我們總是笑著說"錯啦,應該是11".但為什麼, a可以*2卻不發生錯誤呢? 這時VBS比較智能的一個表現, 如果這個字符串的內容是一個數且對他進行數學運算, 則把字符串強制轉換成數參與運算, 如果字符串代表一個數, 但不參加數學運算, 而是參加字符串運算(合併)則當作字符串處理, 所以你看到a+b=12, 這時候a+b的結果(12)是一個字符串, 當它要乘以2的時候就被強制轉換成了數字12, 這樣我就得到了結果24。

  怎麼修改這個程序呢? 我們需要用到另一個內建的函數:int, int函數的功能是將輸入值轉化成整數值, 我們這樣修改:

  c=(int(a)+int(b))*2

  這個意思就是把a作為參數傳遞給int函數, int函數就會返回那個整數(你的輸入值), 然後讓返回值參與運算, 這樣就得到了正確答案.所以,以後如果你用的是inputbox函數的話,最好用int語句加工一下:比如c=int(c) 'c是你自己的變量

  另外,還有一個函數:CDbl。如果你想把字符轉換為數字,但又不取整時就用這個:

  Dim a,b,c,d,e

  a=inputbox("a是:","輸入半徑")

  b=Inputbox("b是:","輸入半徑")

  c=CDbl(a)

  d=CDbl(b)

  e=(c+d)*2

  msgbox e

  你輸入1.2,1.3時就會輸出5。

  上面的實例也可以綜合寫成:

  Dim a,b

  a=CDbl(inputbox("a是:","輸入半徑"))

  b=CDbl(Inputbox("b是:","輸入半徑"))

  Msgbox (a+b)*2

  這樣輸入1.2,1.3時依然就得出5。不過這樣寫比較適合學習過一段時間VBS的朋友.

  大家是不是覺得這個課程有點枯燥?呵呵, 變量和運算符部分的確是這樣的, 不過多多練習也就好了, 這次, 我們寫寫真正好玩的東西: 流程控制語句. 這個部分開始才是真正的編程.

  首先介紹判斷結構.

  在此之前, 我們先介紹一種簡單的變量類型:布爾值(Boolean), 這種變量只有兩個可能值:True,Flase,即真或假. 這種變量在某些情況下很有用(比如"開關"). 我們定義一個Boolean變量的方法和其他變量一樣, 賦值也一樣, 例如:

  dim a,b

  a=true

  b=false

  注意,true和"true"(加雙引號)是不一樣的, "true"是字符串,true是布爾值, 千萬不能混淆.

  回到if語句上來, 我們先來看看簡化版的if語句:if 判斷式 then 語句體 我們來看一個例子:

  dim a,b

  a=12

  b=13

  if b

  我們只看最後一行, a

  當我們要在判斷之後執行多行語句怎麼辦呢, 我們需要用語句塊來解決, 在這裡可以叫塊if

  dim a,b

  a=12

  b=13

  if a

  msgbox "A小於B"

  msgbox "B大於A"

  end if

  兩個msgbox函數夾在if和end if之間, 這個部分就是語句塊, 塊裡的每一條語句之前請空出4~8(一個鍵)個格, 這不是必需的, 但是是一個好習慣, 以便看清楚程序的結構. 這樣我們就能運行多於一個的語句, 請注意if...then...end if 這三個關鍵部分不要掉了. OK, 我出一個題, 輸入一個數, 如果小於100就輸出"錯誤", 如果大於100就輸出"正確", 我這裡有兩個程序版本:

  dim a

  a=inputbox("請輸入一個大於100的數")

  a=int(a) 'inputbox返回的是字符串, 我們把他變成整數 : )

  if a<100 then msgbox "正確"

  if a<100 then msgbox div>

  還有一個更簡單的

  dim a

  a=inputbox("請輸入一個大於100的數")

  a=int(a) 'inputbox返回的是字符串, 我們把他變成整數

  if a<100 then

  msgbox "正確"

  else

  msgbox "錯誤"

  end if

  看到多了一個else了吧, else的作用就是當要判斷的表達式為false時執行的. 這樣程序就可以處理兩種不同的情況了. 不要忘了用end if結尾

  嘿嘿, 我是“變態者”, 現在我要你處理三種情況, <100 >100, 還要寫在一個if結構裡, 你怎麼辦, 我給你答案:

  dim a

  a=inputbox("請輸入一個大於100的數")

  a=int(a) 'inputbox返回的是字符串, 我們把他變成整數

  if a<100 then

  msgbox "正確"

  else if a=100 then

  msgbox "老大, 你耍我?"

  else

  msgbox "錯誤"

  end if

  end if

  這次輸入100看看, 是什麼? else if語句可以在if結構中多次出現, 以靈活判斷不同的情況 (如果你要判斷得太多, 就請使用"選擇結構", 過會兒就講), 當所有elseif都處理完了,而沒有符合情況的時候再執行else中的語句.另一個例子:

  Dim a,b,c,d

  a=inputbox("a是:","輸入半徑")

  b=Inputbox("b是:","輸入半徑")

  d=Inputbox("答案:","輸入答案")

  c=a*2+b*2 '這裡沒有問題, 會自動轉換

  if d=c then

  msgbox "你好聰明"

  else

  msgbox "你好豬頭 自己的題還不會!"

  end if

  哈哈, 無論你回答得多麼正確你都是豬頭, 不是我耍你, 還是文章開始時候的inputbox的返回類型在耍你, d是inputbox的返回值, 他是一個字符串, 而c是一次整數計算的結果, 他是一個整數. 一個字符串無論如何也不等於一個整數, 儘管他們字面上是一樣的:"8"<>(不等於號)8 所以if的判斷式的值永遠是false, 總是執行else部分的語句. 我們可以這麼修改

  Dim a,b,c,d

  a=inputbox("a是:","輸入半徑")

  b=Inputbox("b是:","輸入半徑")

  d=Inputbox("答案:","輸入答案")

  d=int(d)

  '在這裡我們取出了d的值, 變成整數, 再放回"d"這個盒子裡

  c=a*2+b*2

  if d=c then

  msgbox "你好聰明"

  else

  msgbox "你好豬頭 自己的題還不會!"

  end if

  這樣就成功了. 這也是Inputbox函數的一個討厭的地方, 沒辦法, vbs沒有其他好的輸入方式了.

  說到if, 我們不得不說一說邏輯運算符, 今天介紹兩種, "and" 和 "or" 學會了if語句之後, 我舉一個例子, 你一看就明白了.

  dim a,b

  a=inputbox("輸入一個數 <10")

  b=inputbox("輸入另一個數 <10")

  a=int(a)

  b=int(b)

  if a<10 and b<10 then

  msgbox "正確"

  else

  msgbox "錯誤"

  end if

  這段程序讓你輸入兩個值, 必須都大於10, 只要有一個不大於, 就輸出錯誤

  dim a,b

  a=inputbox("輸入一個數 <10")

  b=inputbox("輸入另一個數 <10")

  a=int(a)

  b=int(b)

  if a<10 or b<10 then

  msgbox "正確"

  else

  msgbox "錯誤"

  end if

  這段程序讓你輸入兩個值, 只要有一個大於10, 就返回成功. 其實and和or很好理解, 我讀"if a<10 or b<10 then" 這一句, 用華語是這樣:"如果a大於10或者b大於10, 那麼...". 這樣是不是就很好理解了呢.

  OK, 我們再來看一種新結構,,學完這個,今天的課就結束, 已經午夜了, 我都累死了.

  當你的程序要處理很多種不同的判斷情況的時候elseif..then會讓程序看起來很雜亂, 所以就有了一種select case結構專門對付這種情況, select case的語法結構很簡單:

  select case 變量名

  case 值

  語句

  case 值

  語句

  case else

  語句

  end select

  我們舉個例子就能很簡單的說明:

  dim a

  a=inputbox("輸入一個1--3的值")

  a=int(a) '處理inputbox返回字符串的問題

  select case a

  case 1

  msgbox "壹"

  case 2

  msgbox "貳"

  case 3

  msgbox "叄"

  case else

  msgbox "輸入錯誤"

  end select

  這個例子把1,2,3這三個阿拉伯數字轉化成中國大寫數字, 這個程序寫成if...elseif 的形式如下

  dim a

  a=inputbox("請輸入1--3的值")

  a=int(a)

  if a=1 then

  msgbox "壹"

  elseif a=2 then

  msgbox "貳"

  elseif a=3 then

  msgbox "叄"

  else

  msgbox "輸入錯誤"

  end if

  怎麼樣, 麻煩吧, 還是select好吧.

  OK, 今天到此結束, 總結一下:

要點:

  1) inputbox返回的是一個字符串, 而不是一個數, 必須用a=int(a)這種形式轉化成數

  2) bool變量的值只有兩種:true,false

  2.5) and兩邊的表達式都是true, 則返回true. or兩邊的表達式有一個是true, 就返回true

  3) if 語句的格式

  4) select...case的格式

作業:

  1) 使用3個bool值, 儲存你的3兄弟姐妹是否是男性 (提示:sister1male=false)

  2) 給定一個個數, 大於10而且小於20輸出"正確", 否則輸出"錯誤"

  3) 輸入12,或者15, 輸出"正確", 否則輸出"錯誤"

  4) 把5以內的正整數都轉換成中國大些數字

  5) 自己隨便設計一個程序, 應用今天的知識

VBS基礎教程 (共8篇) 上一篇:第二篇(共六篇) 下一篇:第四篇(共六篇)

教程, 基礎教程,
相關問題答案