vba26-29

二十六 认识循环
1 常见循环:
计次型for
条件型do…loop
遍历型 for…each
2 计次循环
语法:
for 计次变量=初值 to 终值 [step]
循环体
next

'用for 循环来实现
'for 循环是每执行一次初值向终值移动一次步长,默认是1
Sub for循环实现()
    Dim i As Long
    For i = 1 To 5 '闭区间的概念
        Debug.Print i
    Next
End Sub

3立即窗口输出
debug.print
4 本地窗口,显示变量值。
5 断点:左侧设置
6 监视窗口
二十七深入理解for
1循环头只运行次,循环体运行i次,next运行i+ 1次
'剖析计次循环

Sub 剖析计次循环()
    Dim i As Long
    '剖析循环头: 问题:循环头会执行几次?
    'for 循环的循环头只执行一次
    '1. 把1 作为i的初值赋值给i, 在内存某处匿名赋值了一个终值3,在某处又存了一个步长1
    For i = 1 To 3
        Debug.Print "循环中" & i
Next
    '循环尾蕴含了两个操作:1.二话不说先对计次变量进行 i = i+ 1
    '                     2. if i > 终值 then 退出循环
    
    Debug.Print "循环外" & i
End Sub

累加程序

'高斯累加问题
'1+2+3+...+n
Sub GaosiSum()
    Dim sum As Long '代表和值
    'sum = 0
    Dim i As Long
    For i = 1 To 100
        sum = sum + i '这个范式就是累加范式,胡说老师也称它为高斯累加
Next
    MsgBox sum
End Sub

二十八浮点数陷阱和循环的使用技术
1预防浮点数陷阱
计次的时候定要注意步长、初值、终值如果是小数的话有可能发生浮
for循环初值+步长<=终值
不要在计数循环用浮点数做为步长、初值、终值
2输出1-10 ,跳过5。

sub解法- -(
dim i&
for i=1 to 10
	if i<> 5 then debug.print i
next
end sub

sub解法二) '不推荐 ,在循环中尽量不要改变计次变量

dim i&
fori=1 to 10
	if i=5 then i=i+1
		debug.print i
	next
end sub

sub解法三( 'goto 是无条件跳转,非常容易破坏程序结构

dim i&
fori=1 to 10
	if i<>5 then goto 100
100:
next
end sub

sub解法四(

dim i&
fori=1 to 10
	if i<>5 then debug.print i
next
end sub

二十九for作业
作业1:计算1- 100中所有的奇数和

'思路1: 1,3,5,7,9-99
Sub 作业1循环直接生成奇数()
    Dim sum As Long, i As Long
    For i = 1 To 100 Step 2
        sum = sum + i
    Next
    MsgBox sum
End Sub

作业2:计算1+2-3+4-5… + 100的和

Sub 作业1判断是否奇数()
    Dim sum As Long, i As Long
    For i = 1 To 100
        If i Mod 2 <> 0 Then sum = sum + i
    Next
    MsgBox sum
End Sub

作业3:计算1+2+3+…+ 100当中所有5和7的倍数和

Sub 作业3第一种思路()
    Dim sum As Long, i As Long
    For i = 1 To 100
       If i Mod 5 = 0 And i Mod 7 = 0 Then
           sum = sum + i
       End If
    Next
    MsgBox sum
End Sub
Sub 作业3第二种思路()
    Dim sum As Long, i As Long
    For i = 0 To 100 Step 35
        sum = sum + i
   Next
    MsgBox sum
End Sub
Sub 作业2原始的思路()
    Dim sum As Long, i As Long
    sum = 1
    For i = 2 To 100
        If i Mod 2 = 0 Then
            sum = sum + i
        Else
            sum = sum - i
        End If
    Next
    
    MsgBox sum
End Sub

Sub 作业2数学思路()
    Dim sum&, i&
    sum = 1
    For i = 2 To 100
        '-1*-1 =1
        '-1 * -1 * -1 =-1 '-1的奇数次方一定是-1,偶数次方一定是1
        sum = sum + i * (-1) ^ i
    Next
    MsgBox sum
End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值