zoukankan      html  css  js  c++  java
  • volcanol的工控博客

      在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等,

    这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面

    也提供了和其他一些语言中一样的机制: 常量。

      常量大体有两种类型: 字面值常量 和 具名常量。

    一、常量

    Option Explicit
    
    '   vbs 常量
    'vbs有两种类型的常量: 字面值常量 和 具名常量
    
    '字面值常量
    '字面值常量, 就如字面意思一样,其值就和字面意思表达的一样
    Dim strAddress
    '下面语句的 中华人民共和国上海市 就是字面值常量
    strAddress = "中华人民共和国上海市"
    
    Dim nYear
    '下面语句的 2000 就是字面值常量
    nYear = 2000
    
    
    '具名常量
    '1、具名常量,其实质就是其值不能修改的变量, 这个变量一旦初始化后
    '   其存储的内容不能被改变, 
    '2、具名常量通过关键字 const 指定
    Const Pi = 3.1415926 
    
    '具名常量初始化后不能在赋值
    Pi= 10
    
    MsgBox Pi

      如上代码,具名常量初始化后不能再进行赋值,如果赋值的话就会报错。如下图所示:

      这个地方需要注意。

    Option Explicit
    
    '   vbs 常量
    'vbs有两种类型的常量: 字面值常量 和 具名常量
    
    '字面值常量
    '字面值常量, 就如字面意思一样,其值就和字面意思表达的一样
    Dim strAddress
    '下面语句的 中华人民共和国上海市 就是字面值常量
    strAddress = "中华人民共和国上海市"
    
    Dim nYear
    '下面语句的 2000 就是字面值常量
    nYear = 2000
    
    
    '具名常量
    '1、具名常量,其实质就是其值不能修改的变量, 这个变量一旦初始化后
    '   其存储的内容不能被改变, 
    '2、具名常量通过关键字 const 指定
    Const Pi = 3.1415926 
    
    '具名常量初始化后不能在赋值
    'Pi= 10
    
    MsgBox Pi
    
    
    'vbs的内置具名常量
    '在vbs中内置了部分具名常量,这些常量方便使用vbs
    '典型的具名常量就是 msgbox的具名常量,通过不同的具名常量显示不同的按钮形式
    '1、仅显示OK、确定按钮
    MsgBox Pi,vbOKOnly
    
    '2、显示yes、no按钮
    MsgBox Pi,vbYesNo
    
    '3、显示 i 图标
    MsgBox Pi,vbYesNo + vbInformation 
    
    '对于vbs内置的具名常量,建议可以查手册,这里再说几个常用的,其他不多说
    ' vbNewLine  这个是表示再起一行的意思
    ' vbcrlf 这个与上面的vbnewline是一个意思
    MsgBox Pi & vbNewLine  & "新行" & vbCrLf & "新的第二行" 

    二、流程控制

       流程控制是编程语言最终要的概念之一,需要注意。 

    Option Explicit
    
    Rem 流程控制
    
    '流程控制是编程语言中重要的概念,通过流程控制可以实现复杂的功能控制
    '流程控制主要有: 分支、循环两种
    
    '    分支
    '1、分支主要有IF语句
    '2、select case 语句
    
    'if语句
    Dim strPrompt
    Dim nSelect
    
    strPrompt = vbCrLf & "1: 选择Yes说哈哈" & vbCrLf & _
                         "2: 选择No说嘻嘻" & vbCrLf & "3: 选择取消,不说话"
    nSelect = MsgBox("请选择不同的按钮,然后实现不同的功能" & strPrompt, vbYesNoCancel)
    
    If nSelect = vbyes Then
        MsgBox "选择Yes说哈哈"
    ElseIf nSelect = vbno Then
        MsgBox "选择No说嘻嘻"
    Else
        MsgBox "选择取消,不说话"
    End If
    
    '这个地方需要注意select case语句的执行与其他语言的不一致的地方
    Select Case nSelect
        Case vbyes
            MsgBox "选择Yes哈哈"
        Case vbno
            MsgBox "选择No说嘻嘻"
        Case vbcancel 
            MsgBox "选择取消,不说话"
        Case Else
            MsgBox "不正确的选择"
    End Select
        
    
     
    '循环
    '循环共有四种形式
    '1、 for..... next
    '2、 do....loop、
    '3、 while....wend
    
    
    'for 循环
    'for 循环有两种形式
    '1、for...next
    '2、for each .....next
    
    'for...next
    'for....next循环主要用于循环次数明确的循环应用,例如打印斐波那契数列
    '的前多少项
    Dim nStart
    Dim nSecond 
    Dim nLoop
    Dim strMsg
    Dim nTemp
    
    '斐波那契数列的开始两项
    nStart = 1
    nSecond = 1
    strMsg = nStart & vbNewLine & nSecond
    
    '计算斐波那契数列的第3-30项
    For nLoop = 2 To 30
        nTemp = nSecond
        nSecond = nSecond + nStart
        nStart = nTemp
        strMsg = strMsg & vbNewLine & nSecond
    Next
    MsgBox strMsg
    
    'for each.....next循环 
    'for each....next循环是用来遍历集合中所有元素的一种特定的循环结构
    '通过这个循环来实现对循环次数不确定的情况进行遍历
    '使用for each....next循环需要使用关键字in, in表示在集合中访问元素
    '同样需要使用一个循环控制变量,在循环中这个循环变量代表的就是集合中的元素
    '但是这个变量在使用完毕之后,循环变量就 objLoop = empty 
    '如果要再使用必须重新赋值
    Dim objFSO
    Dim objFolder
    Dim objLoop
    Dim strFileName
    
    Set objFso=CreateObject("Scripting.FileSystemObject")
    Set objFolder= objFSO.GetFolder("D:1_vbs")
    For Each objLoop In objFolder.Files
        strFileName =strFileName & objLoop.Name & vbCrLf
        'MsgBox "我是循环变量,我的值为:" & objLoop
    Next
    MsgBox strFileName
    
    '下面的语句检测objLoop变量在循环结束后的值
    If IsEmpty(objLoop) Then
        MsgBox  "已经设置为empty"
    ElseIf IsNull(objLoop) then
        MsgBox  "已经设置为空"
    Else
        MsgBox "未知结果"
    End If
    
    'for each....next 循环还可以用来遍历数组
    '注意新的脚本解释器对于数组维数的定义,这里5表示下标最大为5,但是开始
    '是从0,所以有6个元素
    Dim nArrayName(5)
    
    nArrayName(0) = 1
    nArrayName(1) = 2
    nArrayName(2) = 3
    nArrayName(3) = 4
    nArrayName(4) = 5
    nArrayName(5) = 6
    
    For Each nLoop In nArrayName 
        MsgBox nLoop
    Next
    
    MsgBox "遍历后,nLoop的值为:" & nLoop

        在使用For Each...next 语句的时候,要注意循环变量的值,在循环结束后已经自动的被设置

    为Empty,如果这个时候访问的话必须再次赋值,否则就会出错,如下图所示:

      循环变量在循环结束后被设置为 Empty。

    三、Tips

    1、分支结构不要嵌套太深

    2、循环结构知道次数的一半用For语句

    3、数组、集合遍历可以使用For each...next语句。

    --------------------------------------------------------------分割线---------------------------------------------------------------

    1、文章均为个人原创,欢迎转载,转载请保留出处:https://www.cnblogs.com/volcanol/

    2、获取工控PLC、变频器、HMI、计算机、Windows、Linux、嵌入式资料点击:获取资料

    3、如果您觉得文章对您有帮助可转至页面上半部分打赏,或移步:打赏 

    4、或者在页面右下角点推荐哟!!!

    --------------------------------------------------------------分割线---------------------------------------------------------------

  • 相关阅读:
    MAIL (mailed 317 bytes of output but got status 0x004b#012)
    centOS7 复制文件夹
    X000100
    第一次博客作业
    《构建之法》阅读第四章、第十七章收获
    2016012017+小学四则运算练习软件项目报告
    看完构建之法1、2、16章的几个问题
    druid 多数据源配置
    flowableUI包
    vue 使用@fullcalendar进行行程展示
  • 原文地址:https://www.cnblogs.com/volcanol/p/10091936.html
Copyright © 2011-2022 走看看