vbscrip编程内容摘要:

a=int(a) b=int(b) if a10 and b10 then msgbox(正确 ) else msgbox(错误 ) end if 这段程序让你输入两个值 , 必须都大于 10, 只要有一个不大于 , 就输 出错误 dim a,b a=inputbox(输入一个数 10) b=inputbox(输入另一个数 10) a=int(a) b=int(b) if a10 or b10 then msgbox(正确 ) else msgbox(错误 ) end if 这段程序让你输入两个值 , 只要有一个大于 10, 就返回成功 . 其实 and和 or很好理解 , 我读 if a10 or b10 then 这一句 , 用华语是这样 :如果 a大于 10或者 b大于 10, 那么 .... 这样是不是就很好理解了呢 . OK, 我们再来看一种新结构 , 今天的课就结束 , 已经午夜了 , 我都累死了 . 当你的程序要处理很多种不同的判断情况的时候 elseif..then 会让程序看起来很杂乱 , 所以就有了一种 select case 结构专门对付这种情况 , select case 的语法结构很简单 : select case 变量名 case 值 语句 case 值 语句 case else 语句 end select 我们举个例子就能很简单的说 明: dim a a=inputbox(输入一个 13 的值 ) a=int(a) 39。 处理 inputbox 返回字符串的问题 select case a case 1 msgbox(壹 ) case 2 msgbox(贰 ) case 3 msgbox(叁 ) 8 case else msgbox(输入错误 ) end select 这个例子把 1,2,3 这三个阿拉伯数字转化成中国大写数字 , 这个程序写成 if...elseif 的形式如下 dim a a=inputbox(请输入 13 的值 ) 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 ) 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) 自己随便设计一个程序 , 应用今天的知识 大家好 , 昨天我休息了一天 , 所以今天写第 4 章 :循环结构 我们先来看一道题 :商场进行每日结算 , 要求累加出今天的营业额 , 每次输入一个数 , 这道题其实很简单 , 但就我们现在学 过的知识要完成这道题相当麻烦 , 我们来分析一下 . 首先 , 我们需要知道买卖的次数 , 这样才能控制输入的次数 ,但是 , 这种设 计是非常低效的 , 每天都要重新设计程序 . 假定今天进行了 5 次交易 , 以下是源 程序 : dim sum sum=0 39。 初始化变量 sum=sum + int(inputbox(请输入交易额 )) 39。 sum=sum+x 这种形式是把本身的值取出来 , 进行一次运算 , 再放回本身 , 这种方法很有用处 39。 这里使用了函数嵌套 , 把 inputbox 的返回值直接传给 int 函数 , 转化成整数 , 下同 sum=sum + int(inputbox(请输入交易额 )) sum=sum + int(inputbox(请输入交易额 )) sum=sum + int(inputbox(请输入交易额 )) sum=sum + int(inputbox(请输入交易额 )) msgbox(sum) 看到了吗 , 我通过把计算过程复制了 5 遍才设计好了程序 , 这种程序在汽车交易所等交易次数少的地方还能凑合着用 , 如果 9 放到超市岂不是要复制 , 粘贴几千遍 ? 我们今天讲的内容就可以克服这种缺陷 , 首先 , 我们来讲以下 Do...Loop 语句 . do...loop 的结构看上去非常简单 , 就是 :do...loop, 仅此而已 , 这个结构不断执行 do和 loop 之间的语句 (学名 叫 :循环体 ), 永不停止 . 举个例子来说 : do msgbox(这个信息会不断重复出现 , 要停止程序请使用任务管理器 (Ctrl+Alt+Del)中止 wscript 进程 ) loop 运行这个程序 , 当你点销掉一个对话框马上会出来另一个 , 你永远点不完 , 总有下一个 . 谁会运行这样的程序 ? 除非是给 别人捣乱 (我就干过这种事 ), 所以在 do..loop 结构中还有一个语句 :exit do, 这个语句将终止循环 , 跳到 loop 后面的语句继续 执行 . 据个例子来说 : dim a 39。 注意 :常量不需要在 dim 里面声明 ,否则会引发错误 const pass=123456 39。 这是一个字符串 请用 包裹起来 . 设定密码为常量 , 不可变更 do a=inputbox(请输入密码 ) if a=pass then msgbox(密码校验成功 ) exit do end if loop 这个程序会一直不停的问你密码 , 知道你输入了正确的密码为止 .(if 可以嵌套在另一个 if 当中 , 也可以嵌套在循环体当中 , 所以一定要用缩进 , 来分清楚程序的各个部分 ). 这个程序是很经典的 , 早期的程序都是这么做的 . 但是我们是 Hacker, 所以 我们了解系统的安全性 , 这种无限次认证程序很容易被穷举破解 , 我们要来限定认证的次数 . 修改程序如下 dim a,ctr ctr=0 39。 设置计数器 const pass=pas123_ 39。 上面的那个是弱密码 , 这次改的强一点 do if ctr=3 then msgbox(已经达到认证上限 , 认证程序关闭 ) exit do else a=inputbox(请输入密码 ) if a=pass then msgbox(认证成功 ) msgbox((你可以在这里加一段成功后得到的信息 )) exit do else ctr=ctr+1 39。 如果密码出错就增加一次错误认证计数 msgbox(认证出错 , 请检查密码 ) end if end if loop 运行这个程序试试看 , 当你出了 3 此错误以后 , 就会停止再次询问密码 , 关闭程序 . tel 认证用来限制次数的程序与此大 同小异 . 要注意的是嵌套的 if 语句 , 清仔细读一下这个程序 , 可能比较难懂 , 也请 10 你试着自己设计一下类似的程序 . 其实 , 要在 do...loop 加上验证的功能 , 并不一定要用 if, 我们可以直接利用 do. 我来介绍一下 while 关键字 , while 可以放 在 do 或者是 loop 后面 , 然后再接一个表达式 , 当表达式的值为 true 的时候 (表达式成立 ),才运行循环体 .我们来看一下修改后的 程序 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 39。 如果密码出错就增加一次错误认证计数 msgbox(认证出错 , 请检查密码 ) end if loop dim a,ctr ctr=0 const pass=pas123_ do a=inputbox(请输入密码 ) if a=pass then msgbox(认证成功 ) msgbox((你可以在这里加一段成功后得到的信息 )) exit do else ctr=ctr+1 39。 如果密码出错就增加一次错误认证计数 msgbox(认证出错 , 请检查密码 ) end if loop while ctr3 功能是一样的 , 为什么要放在 loop 后面呢 ? 你把 ctr 的值改成 3 就知道了 , while 在do 后面的程序会直接退出 , 而在 loop 后面 还会允许一次认证 , 到了 loop才结束 .和 while相反的是 until, 用法和 while一样 , 不过他只有当后面的表达式的值为 false(表 达式不成立 )的时候才执行循环体 , 请自己试验一下 ok, 我们来看另外一种循环结构 ,for....next, 这种循环结构是基于计数的 , 也是在编程中最常见到的循环结构 . dim i for i=0 to 5 msgbox(i) next 看到了吗 ?每次输出的 i都是递增的 , 但我们没有明确指出 i要递增 , 当 i达到 5 的时候 , 循环就结束了 , 因为由 0 开始 , 所以 循环体执行了 6次 , 这一点很重要 , 大部分东西都是从 0开始而不是 1. 这 个程序也可以写成 do 的形式 : dim i i=0 11 do while i5 msgbox(i) i=i+1 39。 因为 do 不能自动计数 , 必须手动加 loop 怎么样 , 还是 for比较好用吧 . for在编。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。