循环结构程序设计ppt

简介 相关

截图

循环结构程序设计ppt

简介

这是循环结构程序设计ppt,包括了循环结构,用For-Next语句实现循环结构,用Do While-Loop语句实现循环结构,嵌套的循环结构等内容,欢迎点击下载。

循环结构程序设计ppt是由红软PPT免费下载网推荐的一款课件PPT类型的PowerPoint.

第4章 循环结构程序设计 本章内容 循环结构 用For-Next语句实现循环结构 用Do While-Loop语句实现循环结构 嵌套的循环结构 循环结构 用For-Next语句实现循环结构 语句形式: For 循环变量=初值 to 终值 [Step 步长] [循环体] [Exit For] [循环体] Next 循环变量 用For-Next语句实现循环结构 语句说明: 循环变量必须为数值型。 当步长为正时,初值小于终值,反之初值大于终值;步长缺省时为1。 循环体由一条或多条语句组成。 执行到Exit For语句时退出循环体,执行For语句的下一语句。 循环次数: int为取整。 用For-Next语句实现循环结构 语句执行过程: 用For-Next语句实现循环结构 【实例4.1】求1+2+3+……+n的和。窗体界面如图4-2 实例4.1 代码编写分析 求1+2+3+……+100的和,描述如下: Sum=Sum+1 Sum=Sum+2 Sum=Sum+3 …… Sum=Sum+100 实例4.1 代码编写 【实例4.1】界面设计 实例4.1 代码编写 “计算”按钮完整代码: Private Sub cmdcal_Click() Dim i As Integer, sum As Long, n As Long n = Val(txtn.Text) For i = 1 To n sum = sum + i Next i txtsum.Text = sum End Sub 实例4.1 代码编写 “计算结果”框架中的标签(labn)内容随txtn输入值变化 Private Sub txtn_Change() labn.Caption = "1+2+3……+" & txtn.Text End Sub 问题:修改程序 (1)单击“计算”按钮时,检测n的值,如果为空或不合法,弹出提示对话框 实例4.1 代码编写 Private Sub cmdcal_Click() Dim i As Integer, sum As Long, n As Long If txtn.Text = "" Then MsgBox "请输入一个正整数", vbOKOnly, "提示信息" txtn.SetFocus Else n = Val(txtn.Text) For i = 1 To n sum = sum + i Next i txtsum.Text = sum End if End Sub 实例4.1 代码编写 问题:修改程序 (2)计算完毕后, “计算”按钮的标题改为“清空”,同时两个文本框的内容清空 如何检测按钮的状态是需要显示“计算”还是 “清空”? 解决方法:设置一个布尔变量true对应“计算”,false对应“清空” 例:1*2*3……*100 Private Sub cmdCal_Click() Dim Fac As Integer Dim i As Integer Fac=1 For i = 1 To 100 Fac = Fac * i Next i lblSum.Caption = Fac End Sub 1!+2!+3!+……+15! Private Sub cmdCal_Click() Dim Fac As long, sum As long Dim i As Integer Fac=1 For i = 1 To 15 Fac = Fac * i sum=sum+Fac Next i lblSum.Caption = sum End Sub 用While语句实现循环 语句形式: While 条件 [循环体] Wend 语句说明: “条件”一般为条件表达式,结果为布尔变量True或False。 “条件”用于控制“循环体”是否执行。 多用于循环次数不定的情况。 用While语句实现循环 语句执行过程: 用While语句改写实例4.1 “计算”按钮完整代码: Private Sub cmdcal_Click() Dim i As Integer Dim sum As Long, n As Long n = Val(txtn.Text) For i = 1 To n sum = sum + i Next i txtsum.Text = sum End Sub 用While语句实现循环 【实例4.2】实现1*2*3*……*n的操作,当阶乘值>5000时结束操作。 实例4.2 代码编写 Private Sub cmdcal_Click() Dim i As Integer,fac As Long i = 1:fac = 1 While fac <= 5000 fac = fac * i i = i + 1 txtcyc.Text = i txtfac.Text = fac Wend End Sub 实例4.2 代码编写 “手动计算”按钮:单步演示累乘结果,需要窗体级变量保留成绩,及点击次数 Private Sub Cmdcalh_Click() If j = 0 Then fact = 1 If fact <= 5000 Then j = j + 1 fact = fact * j txtcyc.Text = j txtfac.Text = fact Else Cmdcalh.Enabled = False End If End Sub 用DO语句实现循环 Do While – Loop语句 Do While 条件 循环体语句 Loop Do – Loop While语句 Do 循环体语句 Loop While 条件 用Do While – Loop 语句改写实例4.1 “计算”按钮完整代码: Private Sub cmdcal_Click() Dim i As Integer Dim sum As Long, n As Long n = Val(txtn.Text) For i = 1 To n sum = sum + i Next i txtsum.Text = sum End Sub 执行过程 用Do – Loop While语句改写实例4.1 “计算”按钮完整代码: Private Sub cmdcal_Click() Dim i As Integer Dim sum As Long, n As Long n = Val(txtn.Text) For i = 1 To n sum = sum + i Next i txtsum.Text = sum End Sub 补充例题1 产生m个1~100之间的随机数,求出其中的最大值、最小值和平均值。窗体设计界面和运行界面如图 。 补充例题1 代码分析 代码 Private Sub Command1_Click() Dim m As Integer, n As Integer, r As Integer, i As Integer, max As Integer, min As Integer Dim sum As Single, ave As Single lblrnd.Caption = "" m = Val(txtnum.Text) r = Int(Rnd * 100) + 1 max = r min = r n = 1 sum = r lblrnd.Caption = Str(r) 代码 Do r = Int(Rnd * 100) + 1 If r > max Then max = r Else If r < min Then min = r End If sum = sum + r lblrnd.Caption = lblrnd.Caption + "" + Str(r) n = n + 1 Loop While n < m 代码 ave = sum / n '求平均值 lblmax.Caption = max '标签显示最大值 lblmin.Caption = min '标签显示最小值 lblave.Caption = ave '标签显示平均值 End Sub 用 DO 语句实现循环 【实例4.3】产生m个10~99之间的随机整数,求出其中的素数,并求出素数中的最大值、最小值和平均值。窗体设计界面 算法 产生随机数r r= Int(Rnd*90)+10 判断r 是否素数 素数最大、最小值 、平均 判断r是否素数 For i = 2 To r - 1 If r Mod i = 0 Then Exit For Next i If i >= r Then End if 素数最大、最小值 、平均 If r > max Then max = r Else If r < min Then min = r End If sum = sum + r 初始化部分 lblrnd.Caption = "" '清空显示随机数的标签 lblprime.Caption = "" '清空显示随机数素数的标签 m = Val(txtnum.Text) max = 10 '最大值赋值两位整数中的最小值 min = 99 '最小值赋值两位整数中的最大值 n = 0 '计数变量赋初值 sum = 0 '累加求和变量赋初值 输出部分 ave = sum / p '求平均值 lblmax.Caption = max '标签显示最大值 lblmin.Caption = min '标签显示最小值 lblave.Caption = ave '标签显示平均值 循环的嵌套 Private Sub Form_Activate() Dim i As Integer, j As Integer For i = 1 To 3 Print Tab(20); For j = 1 To 4 - i Print Spc(1); Next j For j = 1 To 2 * i - 1 Print "*"; Next j Print Next i End Sub For i = 2 To 1 Step -1 Print Tab(20); For j = 1 To 4 - i Print Spc(1); Next j For j = 1 To 2 * i - 1 Print "*"; Next j Print Next i 问题 如果是n行图形,程序应如何修改? 每行“ * ”输出的位置? 奇数和偶数输出的图形有何不同? 补充例题 例:请输入n值,编写程序输出下列图形(例如n=5). 1 2 3 4 5 1 1 2 3 4 1 1 1 2 3 1 1 1 1 2 1 1 1 1 1 补充例题代码 Private Sub Form_Activate() Dim i As Integer, j As Integer For i = 1 To 5 For j = 1 To i Print 1; Next j For j = 2 To 6 - i Print j; Next j Print Next i End Sub 实例4.4 补充例题 译密码: 字母翻译:按26个字母排列顺序向后移动n位,若移出了最后一个则移到字母a或A并顺序往后移 例:今天是28号,a 向后移动28位 abcdefghijklmnopqrstuvwxyz 补充例题代码 If ch >= "a" And ch <= "z" Then asch = Asc(ch) - 97 + 1 ’在26个小写字母中的位置 trap = Chr$(( asch + n ) Mod 26 + 97 - 1) ‘求出按规则转换后的字符 补充例题 题目要求:输入一行数字,按相反的顺序输出。 例如:输入“1 2 3 4 5 6 7 8” 输出“8 7 6 5 4 3 2 1” 难点:如何获得各位数字 补充例题代码 Private Sub lblout_Click() n = Val(txtin.Text) While n <> 0 r = n Mod 10 lblout.Caption = lblout.Caption & r n = n \ 10 Wend End Sub 译码器——密码检测窗体设计 译码器——密码检测窗体设计 添加窗体:工程||添加窗体 密码框属性:PasswordChar * 代码 Dim n As Integer ‘定义n为窗体级变量,用于累计验证密码的次数 Private Sub cmdok_Click()  Const password = "061216"  Const name = "santa"  n = n + 1  If n <= 3 Then '控制验证密码的次数 If txtname.Text = "" Or txtpassword.Text = "" Then MsgBox "必须输入姓名和密码", 0 + 64, "提示" Else If txtname.Text = name And txtpassword.Text = password Then frm1.Hide frm2.Show Else   MsgBox "姓名或密码错误", 0 + 48, "警告" End If End If Else End End If End Sub 译码器——译码器窗体设计 译码器——译码器窗体设计 函数 Asc(C)的功能是将字符转换成ASCII码值,如Asc(“A”)的值65 Chr(65)其功能是将ASCII码值转换成字符,如Chr(65)的值“A” LTrim(C)是去掉字符串左边的空格, 如LTrim(“└┘└┘ABVC”)的值为ABVC Mid(C,N1,N2)是取字符子串,在C中从N1位开始向右取N2个字符 译码器——译码器窗体设计 约定 “原文”文本框中的数字字符串每三位代表一个完整的信息,如一个字母(065表示字符“A”)或一个空格(000表示空格),一个数字(033非字母或空格,表示数字33),字符串结束(“###”) 译码器——“译码”代码 n = 1 ori = LTrim$(txtori.Text) '去掉“原文”文本框字符串右边的空格,赋值给变量ori orip = Mid$(ori, n, 3) '从字符串ori的第一个位置开始取3个字符,赋值给字符串变量orip While orip <> "###" n = n + 3 '确定下一次取字符的位置 If Val(orip) >= 0 And Val(orip) <= 255 Then 'ASAII码的范围是0~255 orip = Chr$(Val(orip)) If orip >= "a" And orip <= "z" Then trapn = Asc(orip) - 97 + 1 trap = Chr$((trapn + Day(Now)) Mod 26 + 97 - 1) letterlow = letterlow + 1 '计小写字母的个数 Else If orip >= "A" And orip <= "Z" Then trapn = Asc(orip) - 65 + 1 trap = Chr$((trapn + Day(Now)) Mod 26 + 65 - 1) lettercap = lettercap + 1 '计大写字母的个数 Else '非字母 trap = Asc(orip) '字符orip转换成ASCII码值,作为译码即保持原值 If trap = 0 Then '字符oripASCII码值为0即原值为“000” trap = " " '译码为空格 word = word + 1 '单词计数,因为空格分隔单词 other = other + 1 '其它字符计数,空格也是一个非字母字符 Else If trap > 99 Then '其它字符计数 other = other + 3 Else If trap > 9 Then other = other + 2 Else other = other + 122 End If End If End If End If End If Else trap = orip '超出ASCLL码范围的值不变 other = other + 3 End If tra = tra + trap '译码连接到字符串tra orip = Mid$(ori, n, 3) '取出下一个字符串 Wend txttra.Text = tra '译码在“译文”文本框中显示 inf = "大写字母个数:" + Str$(lettercap) + Chr$(13) +chr$(10) + "小写字母个数:" + Str$(letterlow) + Chr$(13) +chr$(10) + "单词个数:" + Str$(word + 1) + Chr$(13) +chr$(10)+ "其它字符个数:" + Str$(other) MsgBox inf, 0 + 64, "译文统计信息" End Sub4Km红软基地

展开

同类推荐

热门PPT

相关PPT