主頁(yè) > 知識(shí)庫(kù) > VBS基礎(chǔ)編程教程 (第4篇)

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

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

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

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

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

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

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

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

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

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

  運(yùn)行這個(gè)程序, 當(dāng)你點(diǎn)銷掉一個(gè)對(duì)話框馬上會(huì)出來(lái)另一個(gè), 你永遠(yuǎn)點(diǎn)不完, 總有下一個(gè). 誰(shuí)會(huì)運(yùn)行這樣的程序? 除非是給 

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

執(zhí)行. 據(jù)個(gè)例子來(lái)說(shuō): 

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

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

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

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

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

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

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

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

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

  這樣實(shí)現(xiàn)的功能和上一個(gè)例子完全一樣, 我們?cè)賮?lái)看看把while放在loop后面: 

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

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

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

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

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

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

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

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

do的形式: 

dim i 
i=0 
do while i5 
    msgbox(i) 
    i=i+1 '因?yàn)閐o不能自動(dòng)計(jì)數(shù), 必須手動(dòng)加 
loop 

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

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

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

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

一次. 在大的for里可以不僅僅是一個(gè)小的for, 也可以加上另外的語(yǔ)句. 我們來(lái)修改一下源程序: 

dim i,j 
for i=1 to 9 
    for i=1 to 9 
       str=str  i * j  " " 
    next '每個(gè)next對(duì)應(yīng)一個(gè)for 
    str=str  vbCrlf 'vbCrlf相當(dāng)于鍵盤上的回車鍵,因?yàn)槟悴荒茉阪I盤上輸入,所以系統(tǒng)定義了一個(gè)默認(rèn)的常量 
next 

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

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

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

再問(wèn). 另外, 國(guó)產(chǎn)的一種垃圾軟件"超級(jí)X霸"搶占了vbs這個(gè)擴(kuò)展名, 請(qǐng)把那個(gè)垃圾卸載掉. 

  我們總結(jié)一下: 

要點(diǎn): 

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

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

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

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

4.5) 用于連接字符串 

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


作業(yè): 

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

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

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

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

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

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

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

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