主頁 > 知識庫 > VBS基礎(chǔ)編程教程 (第4篇)

VBS基礎(chǔ)編程教程 (第4篇)

熱門標簽:天津智能外呼系統(tǒng)排名 外呼系統(tǒng)群 智云億呼電話機器人 墨西哥地圖標注app 外呼系統(tǒng)說話聲音小怎么辦 機器人打電銷適用于美業(yè)嗎 企業(yè)400電話辦理價錢低 龍巖400電話申請 上海辦理400電話選號
四篇(共六篇): 
大家好, 昨天我休息了一天, 所以今天寫第4章:循環(huán)結(jié)構(gòu) 

  我們先來看一道題:商場進行每日結(jié)算, 要求累加出今天的營業(yè)額, 每次輸入一個數(shù), 這道題其實很簡單, 但就我們現(xiàn)在學(xué) 

過的知識要完成這道題相當(dāng)麻煩, 我們來分析一下. 首先, 我們需要知道買賣的次數(shù), 這樣才能控制輸入的次數(shù),但是, 這種設(shè) 

計是非常低效的, 每天都要重新設(shè)計程序. 假定今天進行了5次交易, 以下是源程序: 

dim sum 
sum=0 '初始化變量 
sum=sum + int(inputbox("請輸入交易額")) 
'sum=sum+x 這種形式是把本身的值取出來, 進行一次運算, 再放回本身, 這種方法很有用處 
'這里使用了函數(shù)嵌套, 把inputbox的返回值直接傳給int函數(shù), 轉(zhuǎn)化成整數(shù), 下同 
sum=sum + int(inputbox("請輸入交易額")) 
sum=sum + int(inputbox("請輸入交易額")) 
sum=sum + int(inputbox("請輸入交易額")) 
sum=sum + int(inputbox("請輸入交易額")) 
msgbox(sum) 

  看到了嗎, 我通過把計算過程復(fù)制了5遍才設(shè)計好了程序, 這種程序在汽車交易所等交易次數(shù)少的地方還能湊合著用, 如果 

放到超市豈不是要復(fù)制, 粘貼幾千遍? 我們今天講的內(nèi)容就可以克服這種缺陷, 首先, 我們來講以下Do...Loop語句. 

  do...loop的結(jié)構(gòu)看上去非常簡單, 就是:do...loop, 僅此而已, 這個結(jié)構(gòu)不斷執(zhí)行do和loop之間的語句(學(xué)名叫:循環(huán)體), 
永不停止. 舉個例子來說: 

do 
    msgbox("這個信息會不斷重復(fù)出現(xiàn), 要停止程序請使用任務(wù)管理器(Ctrl+Alt+Del)中止wscript進程") 
loop 

  運行這個程序, 當(dāng)你點銷掉一個對話框馬上會出來另一個, 你永遠點不完, 總有下一個. 誰會運行這樣的程序? 除非是給 

別人搗亂(我就干過這種事), 所以在do..loop結(jié)構(gòu)中還有一個語句:exit do, 這個語句將終止循環(huán), 跳到loop后面的語句繼續(xù) 

執(zhí)行. 據(jù)個例子來說: 

dim a '注意:常量不需要在dim里面聲明,否則會引發(fā)錯誤 
const pass="123456" '這是一個字符串 請用""包裹起來. 設(shè)定密碼為常量, 不可變更 
do 
    a=inputbox("請輸入密碼") 
    if a=pass then 
         msgbox("密碼校驗成功") 
         exit do 
    end if 
loop 

  這個程序會一直不停的問你密碼, 知道你輸入了正確的密碼為止.(if可以嵌套在另一個if當(dāng)中, 也可以嵌套在循環(huán)體當(dāng)中 

, 所以一定要用縮進, 來分清楚程序的各個部分). 這個程序是很經(jīng)典的, 早期的程序都是這么做的. 但是我們是Hacker, 所以 

我們了解系統(tǒng)的安全性, 這種無限次認證程序很容易被窮舉破解, 我們要來限定認證的次數(shù). 修改程序如下 

dim a,ctr 
ctr=0 '設(shè)置計數(shù)器 
const pass="pas123_" '上面的那個是弱密碼, 這次改的強一點 
do 
    if ctr=3 then 
        msgbox("已經(jīng)達到認證上限, 認證程序關(guān)閉") 
        exit do 
    else 
        a=inputbox("請輸入密碼") 
        if a=pass then 
            msgbox("認證成功") 
            msgbox("(你可以在這里加一段成功后得到的信息)") 
            exit do 
        else 
            ctr=ctr+1 '如果密碼出錯就增加一次錯誤認證計數(shù) 
            msgbox("認證出錯, 請檢查密碼") 
        end if 
     end if 
loop 

  運行這個程序試試看, 當(dāng)你出了3此錯誤以后, 就會停止再次詢問密碼, 關(guān)閉程序. telnet認證用來限制次數(shù)的程序與此大 

同小異. 要注意的是嵌套的if語句, 清仔細讀一下這個程序, 可能比較難懂, 也請你試著自己設(shè)計一下類似的程序. 

  其實, 要在do...loop加上驗證的功能, 并不一定要用if, 我們可以直接利用do. 我來介紹一下while關(guān)鍵字, while可以放 
在do或者是loop后面, 然后再接一個表達式, 當(dāng)表達式的值為true的時候(表達式成立),才運行循環(huán)體.我們來看一下修改后的 
程序" 

dim a,ctr 
ctr=0 
const pass="pas123_" 
do while ctr3 
    a=inputbox("請輸入密碼") 
    if a=pass then 
        msgbox("認證成功") 
        msgbox("(你可以在這里加一段成功后得到的信息)") 
        exit do 
    else 
        ctr=ctr+1 '如果密碼出錯就增加一次錯誤認證計數(shù) 
        msgbox("認證出錯, 請檢查密碼") 
    end if 
loop 

  這樣實現(xiàn)的功能和上一個例子完全一樣, 我們再來看看把while放在loop后面: 

dim a,ctr 
ctr=0 
const pass="pas123_" 
do 
    a=inputbox("請輸入密碼") 
    if a=pass then 
        msgbox("認證成功") 
        msgbox("(你可以在這里加一段成功后得到的信息)") 
        exit do 
    else 
        ctr=ctr+1 '如果密碼出錯就增加一次錯誤認證計數(shù) 
        msgbox("認證出錯, 請檢查密碼") 
    end if 
loop while ctr3 

  功能是一樣的, 為什么要放在loop后面呢? 你把ctr的值改成3就知道了, while在do后面的程序會直接退出, 而在loop后面 

還會允許一次認證, 到了loop才結(jié)束.和while相反的是until, 用法和while一樣, 不過他只有當(dāng)后面的表達式的值為false(表 

達式不成立)的時候才執(zhí)行循環(huán)體, 請自己試驗一下 

  ok, 我們來看另外一種循環(huán)結(jié)構(gòu),for....next, 這種循環(huán)結(jié)構(gòu)是基于計數(shù)的, 也是在編程中最常見到的循環(huán)結(jié)構(gòu). 

dim i 
for i=0 to 5 
    msgbox(i) 
next 

  看到了嗎?每次輸出的i都是遞增的, 但我們沒有明確指出i要遞增, 當(dāng)i達到5的時候, 循環(huán)就結(jié)束了, 因為由0開始, 所以 

循環(huán)體執(zhí)行了6次, 這一點很重要, 大部分東西都是從0開始而不是1. 這個程序也可以寫成 

do的形式: 

dim i 
i=0 
do while i5 
    msgbox(i) 
    i=i+1 '因為do不能自動計數(shù), 必須手動加 
loop 

  怎么樣, 還是for比較好用吧. for在編程中很有用途, 我們再舉一個例子, 順便講一下嵌套循環(huán). 

dim i,j 
for i=1 to 9 
    for i=1 to 9 
       str=str  i * j  " " '是和并字符串的符號 
    next '每個next對應(yīng)一個for 
next 

  看看運行結(jié)果, 是否令你會想起小學(xué)時代的數(shù)學(xué)老師(丑陋的嘴臉). 要注意, 這里有一個"大"的for, 和一個小的for, 當(dāng) 

小的for執(zhí)行完一個周期以后, 大的for才執(zhí)行一次(換句話說, 大的for執(zhí)行一次, 小的要執(zhí)行9次), 所以一共執(zhí)行了九九八十 

一次. 在大的for里可以不僅僅是一個小的for, 也可以加上另外的語句. 我們來修改一下源程序: 

dim i,j 
for i=1 to 9 
    for i=1 to 9 
       str=str  i * j  " " 
    next '每個next對應(yīng)一個for 
    str=str  vbCrlf 'vbCrlf相當(dāng)于鍵盤上的回車鍵,因為你不能在鍵盤上輸入,所以系統(tǒng)定義了一個默認的常量 
next 

  這次運行完成以后, 輸出結(jié)果按照乘數(shù)進行了分割, 每小for運行完一次, 就換一行(通過vbcrlf). 

  這次的內(nèi)容對菜鳥可能比較難懂, 掌握的辦法只有一個:多實踐. 另外, 我在論壇看到很多人還是問:"VBScript要用什么工 

具編?"我就很氣憤, 我在第一篇里面已經(jīng)說明:用記事本編輯源代碼, 然后保存為以.vbs為擴展名的程序就可以了, 請大家不要 

再問. 另外, 國產(chǎn)的一種垃圾軟件"超級X霸"搶占了vbs這個擴展名, 請把那個垃圾卸載掉. 

  我們總結(jié)一下: 

要點: 

1) do..loop和exit do的用法 

2) while當(dāng)表達式true的時候執(zhí)行循環(huán)體,until反之 

3) for...next是計數(shù)循環(huán), 每次執(zhí)行計數(shù)器遞加 

4) 嵌套循環(huán)的作用和寫法 

4.5) 用于連接字符串 

5) vbCrLf相當(dāng)于鍵盤上的回車鍵 


作業(yè): 

1) 在我國的數(shù)學(xué)經(jīng)典著作"九章算術(shù)"中有這樣一道題:百錢買百雞, 公雞5錢一只, 母雞3錢一只, 小雞1錢2只(這個數(shù)據(jù)我是參 

考一本編程書的, 但我記得是公3,母1,小1錢3只? 不管了, 就按照書上得來吧)求得是能有多少種辦法買這些雞. 如果看不懂的 

話我用大白話說說:有人要去買雞, 用100塊錢正好買了100只雞, 價格如下:公:5$, 母:3$, 小:1$ for 2, 讓你求一共多少種賣 

法(公母小怎么搭配). 請用循環(huán)解決這個問題. 

ps:今天要去移民局辦事, 所以文章寫的很倉促. 大部分代碼都沒有實驗, 請大家?guī)臀艺义e. 另外, 上次的作業(yè)大家在論壇應(yīng)該 

看到了, 我就不重復(fù)答案了, 不知道大家喜歡做這種題, 還是以前那種比較簡單的? 

標簽:青島 齊齊哈爾 錫林郭勒盟 麗水 黃山 阜新 承德 鄂爾多斯

巨人網(wǎng)絡(luò)通訊聲明:本文標題《VBS基礎(chǔ)編程教程 (第4篇)》,本文關(guān)鍵詞  VBS,基礎(chǔ),編程,教程,第,4篇,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《VBS基礎(chǔ)編程教程 (第4篇)》相關(guān)的同類信息!
  • 本頁收集關(guān)于VBS基礎(chǔ)編程教程 (第4篇)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章