VBS基礎(chǔ)編程教程 (第4篇)
四篇(共六篇):
大家好, 昨天我休息了一天, 所以今天寫第4章:循環(huán)結(jié)構(gòu)
我們先來看一道題:商場進行每日結(jié)算, 要求累加出今天的營業(yè)額, 每次輸入一個數(shù), 這道題其實很簡單, 但就我們現(xiàn)在學
過的知識要完成這道題相當麻煩, 我們來分析一下. 首先, 我們需要知道買賣的次數(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)
看到了嗎, 我通過把計算過程復制了5遍才設(shè)計好了程序, 這種程序在汽車交易所等交易次數(shù)少的地方還能湊合著用, 如果
放到超市豈不是要復制, 粘貼幾千遍? 我們今天講的內(nèi)容就可以克服這種缺陷, 首先, 我們來講以下Do...Loop語句.
do...loop的結(jié)構(gòu)看上去非常簡單, 就是:do...loop, 僅此而已, 這個結(jié)構(gòu)不斷執(zhí)行do和loop之間的語句(學名叫:循環(huán)體),
永不停止. 舉個例子來說:
do
msgbox("這個信息會不斷重復出現(xiàn), 要停止程序請使用任務(wù)管理器(Ctrl+Alt+Del)中止wscript進程")
loop
運行這個程序, 當你點銷掉一個對話框馬上會出來另一個, 你永遠點不完, 總有下一個. 誰會運行這樣的程序? 除非是給
別人搗亂(我就干過這種事), 所以在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當中, 也可以嵌套在循環(huán)體當中
, 所以一定要用縮進, 來分清楚程序的各個部分). 這個程序是很經(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
運行這個程序試試看, 當你出了3此錯誤以后, 就會停止再次詢問密碼, 關(guān)閉程序. telnet認證用來限制次數(shù)的程序與此大
同小異. 要注意的是嵌套的if語句, 清仔細讀一下這個程序, 可能比較難懂, 也請你試著自己設(shè)計一下類似的程序.
其實, 要在do...loop加上驗證的功能, 并不一定要用if, 我們可以直接利用do. 我來介紹一下while關(guān)鍵字, while可以放
在do或者是loop后面, 然后再接一個表達式, 當表達式的值為true的時候(表達式成立),才運行循環(huán)體.我們來看一下修改后的
程序"
dim a,ctr
ctr=0
const pass="pas123_"
do while ctr<3
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 ctr<3
功能是一樣的, 為什么要放在loop后面呢? 你把ctr的值改成3就知道了, while在do后面的程序會直接退出, 而在loop后面
還會允許一次認證, 到了loop才結(jié)束.和while相反的是until, 用法和while一樣, 不過他只有當后面的表達式的值為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要遞增, 當i達到5的時候, 循環(huán)就結(jié)束了, 因為由0開始, 所以
循環(huán)體執(zhí)行了6次, 這一點很重要, 大部分東西都是從0開始而不是1. 這個程序也可以寫成
do的形式:
dim i
i=0
do while i<5
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對應一個for
next
看看運行結(jié)果, 是否令你會想起小學時代的數(shù)學老師(丑陋的嘴臉). 要注意, 這里有一個"大"的for, 和一個小的for, 當
小的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對應一個for
str=str & vbCrlf 'vbCrlf相當于鍵盤上的回車鍵,因為你不能在鍵盤上輸入,所以系統(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當表達式true的時候執(zhí)行循環(huán)體,until反之
3) for...next是計數(shù)循環(huán), 每次執(zhí)行計數(shù)器遞加
4) 嵌套循環(huán)的作用和寫法
4.5) &用于連接字符串
5) vbCrLf相當于鍵盤上的回車鍵
作業(yè):
1) 在我國的數(shù)學經(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è)大家在論壇應該
看到了, 我就不重復答案了, 不知道大家喜歡做這種題, 還是以前那種比較簡單的?
上一篇:最新病毒結(jié)合auto.exe,游戲盜號木馬下載者手工查殺microsofts.vbs
欄 目:vb
下一篇:vbs教程 chm下載
本文標題:VBS基礎(chǔ)編程教程 (第4篇)
本文地址:http://mengdiqiu.com.cn/a1/vb/7802.html
您可能感興趣的文章
- 01-10下載文件到本地運行的vbs
- 01-10VBS中的正則表達式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應用
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語法速查及實例說明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁面中添加VBscript代碼


閱讀排行
本欄相關(guān)
- 01-10下載文件到本地運行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個高效的軟件
- 01-10VBS中的正則表達式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語法速查及實例說明
隨機閱讀
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實例總結(jié)
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 01-10delphi制作wav文件的方法
- 01-11ajax實現(xiàn)頁面的局部加載
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文