VB的源程序是由语句组成的,同其它高级编程语言一样,VB的语句也可以分为可执行语句和非可执行语句。可执行语句是指在程序运行时执行了某种操作的浯句,它往往以某种方式控制程序的执行顺序。非可执行语句是指不执行某种具体操作具有说明性的语句,一般主要是定义常量、变量等说明性的语句。 我们所要进行的程序设计属于过程化、结构化、程序设计。结构化的程序设计包含三种基本结构:顺序结构、选择结构和循环结构。 顺序结构: 选择结构: 一、If语句 其中的条件一般为布尔型表达式,其值只有真或假两种情况。所谓条件成立,是指该表达式的值为真(True);而条件不成立,是指该表达式的值为假(False)。 当只需要判断一种情况时,其中的Else部分是可以省略的。这种格式适用于只需判断一种或两种情况,且执行相应的操作都比较简单。 (2)复杂格式:这种格式的1f语句,不管条件成立与否,所执行的操作均可以是一条语句或多条语句。具体格式如下: 其中的语句体1和语句体2均为一个整体,既可以是单个语句也可以是多个语句。若为多语句,则这多个语句分别写在多行内。 这种格式代表的含义是:若条件成立时,执行Then后面的语句体l中的全部语句,执行后跳出整个If语句体,执行其后的语句;若条件不成立,如果Else部分存在,则执行Else的语句体2中的全部语句,再执行整个If语句体后的语句,否则就直接执行整个If语{的语句。与简单格式一样,复杂格式中的Else部分也是可以省略的。 另外,复杂格式也可以判断出现多种情况的可能。只需在将“Else替换成“Else件Then'’就可以多进行一层判断,它的含义是:当前一个条件不成立时,再判断这里的根据条件的成立与否来执行相应的操作。在If语句中可以多次出现“Elself",且“Else”是和与它最接近的“Elself”相对应。 现在举几个例子,以帮助大家理解。 ② If a<b Then ③ If x<60 Then 例①是简单格式,它的含义是:比较a、b的大小,然后输出比较大的一个 例②复杂格式,它的含义是:对a、b两个数进行排序,如果a小于b,则交换它们的值,否则改变,执行这个IF语句后,a一定大于或等于b。 例③中出现了三种情况,首先判断成否小于60,如果小于60,则这个人的成绩是不及格的,于是输出“不及格”;否则,再对个条件进行判断,如果成绩小于90,则这个人的成绩是及格,否则的话就是优秀。在这里注意,这两个条件的顺序不是随意的,只有前一个条件不成立的情况下才会判断第二个条件一个条件成立,执行过相应的语句体后就会直接执行If语句后面的语句。 二、 Select Case语句 VB的Select语句的格式是: 只要使用时结构合理,其中的“Case表达式结果表列”可以为任意多个。 上述格式中,表达式可以是数值表达式或字符串表达式,然后根据表达式的值与下面的第一个“表达式结果表列”去进行比较,若与其中某个值相同,则执行该表列后的相应语句体部分,执行后退出整个 Select Case结构,执行其后的语句;若第一个“表达式结果表列”中的值没有与表达式的值相等的情况,则再与第二个“表达式结果表列”进行比较,如果表达式的值与所有的“表达式结果表列”中的值都不相等,则要看Select Case结构中是否有Case Else子句,如果有此子句,则执行其后相应的语句体部分,然后退出Select Case结构,执行其后的语句,否则不执行该结构内的任何语句,整个SelectCase结构结束,再执行其后的语句。 SelectCase语句一般格式中的“表达式结果表列”可以有如下四种格式: (1)Case表达式结果: (2)case表达式结果1[表达式结果2]…?[,表达式结果n]; (3)Case表达式结果1 TO表达式结果2 (4)case ls关系运算符 数值或字符串: 下面的例子说明Select Case语句 在这个例子中,根据变量、的值来判断输出结果。当输入的成绩是100时,就会与第一个表达式结果表列”表中的100相等,这时就会输出“满分”:如果是99至91之间的数,就会喻出“优秀”;如果是在60至90之间,则会输出“及格”;如果小于60,则会输出“不及格”。 在使用Select Case语句时,要注意各个Case子句的“表达式结果表列”表中的值不要出现交叉或相容的的情况。 循环结构: 三、For……Next语句有时我们需要在程序中重复执行某段代码,这就需要用到循环浯句。其中,For…Next语可是最常用的一种循环语句。 For…Next循环属于计数型循环,程序按照该结构中指定的循环次数来执行循环体部分。 Or……Next语句的格式如下: For循环变量=初始值 TO终值[Step步长] 在此格式中,使用了这样几个概念: (1)循环变量:用于统计循环次数的变量,循环的过程就是该变量是从某个值变化到另一个值的过程。该变量一般为整型变量。 (2)初始值:用于设置循环变量的初始取值。 (3)终值:用于设置循环变量的最后取值。 (4)步长:用于决定循环变量每次循环时变化的数值,即循环变量在变化时的增值。如果省步长的话,其默认值为1。步长的取值可以为正,也可以为负。若初始值小于终值,则必将步长设为正值才有可能执行循环体;若初始值大于终值,则必须将步长设为负值才有可能行循环体。 (5)循环体:需要重复执行的代码部分,可以是一个或多个语句。 (6)Next循环变量:用于结束一次For循环,根据终值和现在循环变量的值的大小关系决定是否执行下一次循环。其中的循环变量的名称必须与循环开始时的循环变量名称相同。 For…Next语句循环的执行过程是:先将循环变量取为初始值,然后检验循环变量的取值是否超出终值(若步长为正值,则检验循环变量是否大于终值;若步长为负值,则检验循环变量的取值是否小于终值)。若循环变量没有超出终值,则执行一次循环体,然后将循环变量加—上步长再赋给循环变量本身,再与终值进行比较,直到循环变量超出终值时,退出循环,执循环后的语句。 在For…Next循环中,只要步长不为0,就永远不会出现死循环。所谓死循环,就是由于编程者的失误,导致程序进入循环后再也无法跳出循环,程序将无法正常结束。因为只要步长不为0,无论始值和终值之间相差多么大,总可以经过有限次的循环,使始值超出终值,从而跳出循环。由此可见,For…Next适用于预先知道循环次数的情况。在某些情况下,可能需要在循环变量没有超出终值之前就跳出循环,这时就要用到Exit For语句。该语句一般是作为if语句的子句出现在循环体中的,当满足某种特殊的条件时,就提前跳出循环。 从For…Next浯句的格式中可以看到:其中的循环体是可选的。若省略了循环体,即For循环的循环体内没有任何具体的语句,则其只是起到延时的作用。因为当循环了一定次数后虽不执行任何操作,但却花费了一定时间,故可作为延时工具使用。但要注意的是由于现存计算机的速度都比较快了,如果循环次数比较少的话将不会达到预期的效果,因此要适当选择循环次数。 下面举一个循环的例子来说明For…Next语句: 四、For Each…Next语句 FOR……Next语句与For…Next语句有些类似,但它们有很大的区别:前者是由指定或集合中的元素来控制循环,而后者是由循环变量来控制循环过程。由此可见,For Each…语句是不需要预先知道循环次数的,指定数组或集合中的元素个数就是循环次数。该语句的使用格式为: For Each循环变量In数组或集合 五、Do…Loop语句 Do…Loop语句有四种形式: 形式2: 形式3: 形式4: 由上面四种形式的格式可以看出: 第一种和第三种形式是先执行循环体,然后再判断条件,条件成立与否,至少执行一次循环体;第二种和第四种形式,则是先判断条件,如果条件当,循环体可能一次也没有执行。且“While”和“Until”正好相反,前者是条件成立时入循环,而后者则是条件不成立时才进入循环。使用时可根据需要选择最适当的形式。 在前面For…Next语句中介绍的Exit语句也适用于DO…Loop语句,只是把“Exit For”改成“Exit Do”即可,它们的作用是一样的,都是用来提前跳出循环的。 六、GOT0语句和注释语句 使用GoTo语句要注意以下两点: (2)由于GoTo浯句破坏了程序的结构化,可能会导致程序的混乱的,因此最好少用甚至不用该语句。 注释语句是对于程序的注解和说明,以便于自己和他人阅读程序代码。它只起到帮助阅读的作用,而不执行其它任何操作。使用格式为: 七、求素数实例 步骤2: 步骤3: Private Sub Command1_Click() 至此,程序设计完毕,保存工程及窗体。 在这个程序中,主要使用循环嵌套来求素数。所谓循环嵌套是指一个循环当中包含着另一个循环。外层循环是从100到200,内层循环则是相外层循环变量i能否被2至它的平方根之间的数整除来判断i是否是素数,若i能被这个范围的某数整除,则i一定不是素数,且提前退出内层循环;若内层循环没有提前退出,就说明当的i是素数。内层循环之后的判断语句就是用来判断是否提前退出了内层循环,如果没有(即满条件d>X),则在窗体上输出这个数,并累计素数的个数。 最后,再输出素数的总个数。程序中的Print是个输出语句,它是把其后的内容输出到窗体上。其使用格式如下: |
|