




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Visual Foxpro 6.0,程序设计基础,重庆工商大学计算机学院计算机基础教研室,要点: 1.算法的概念及特点 2.掌握程序3种基本结构的表示 3.掌握利用分支结构编程 4.掌握利用循环结构编程 5.常用控件,第三、四、五讲 程序设计(1),循环结构能够使某些语句或程序段重复执行若干次。 如果某些语句或程序段需要在一个固定的位置上重复操作,使用循环是最好的选择。,3循环结构,常见的循环结构有:,条件循环do while,步长循环for,扫描循环scan,涉及数据表的循环,第6章介绍,1)条件循环(do while循环) 格式: 流程图:,条件,语句序列,Enddo之后的语句,N,Y,循环体,教材P62,【例】计算1+2+3+100,第 1 步, 计算 0+1; 第 2 步, 计算 (0+1)+2; 第 3 步, 计算 (0+1+2)+3; 第 i 步, 计算 (0+1+i-1)+i; . 第 100 步,计算 (0+1+99)+100;,递归算法,前i-1次累加和,第i次累加项,三个“确定” 循环三要素,算法: 确定循环变量i并赋初值为1 定义s存放累加和,初值为0 确定循环条件 i=100 s=s+i 确定循环变量的变化趋势i=i+1 输出结果s,递推公式,在条件循环中如何体现的?,s=1+2+3+100,基本方法:,属于“累加器”类型问题,(1)在进入累加前先给累加器赋初值 s=0(求和一般为0) (2)用循环语句实现累加 循环控制变量赋初值:i=1 循环条件:i=100 循环变量的改变规律:i=i+1 (3)循环体语句的设计 s=s+i (累加器当前值=累加器原值+循环当前值),“计算”按钮的click事件代码: s=0 i=1 do while i=100 s=s+i i=i+1 enddo Thisform.text1.value=s,循环体,【修改例3-8】计算s=1+2+3+n,x: x=0 x=n x=x+1,S: s=0 S=s+x,“计算”命令按钮的“click”事件代码: n=thisform.text1.value s=0 x=1 do while x=n s=s+x enddo thisform.text2.value=s,说明: 循环结构从do while开始,到enddo结束,两者必须成对出现;在enddo后面可以书写注释。 循环是否继续取决于条件的当前取值,一般情况下循环体中应含有改变条件取值的命令或语句,否则将造成死循环。 循环结构能自身嵌套(多重循环),还能与选择结构的各种形式嵌套。,2)步长循环(forendfor计数循环) 格式:,教材P62,计算1+2+3+100,s=0 for i=1 to 100 s=s+i endfor Thisform.text1.value=s,step 1,(教材P60) 【例3-9】设计如图所示表单,在文本框text1中输入N的值,求N!。,如:123.100,(1)给累乘器赋初值 p=1(一般为1) (2)用循环语句实现累乘 循环变量赋初值:i=1 循环条件:i= thisform.text1.value 循环变量改变规律: i=i+1 (3)循环体设计 p=p*i (累乘器当前值=累乘器原值*循环当前值 ),基本方法:,属于“累乘器”类型问题,“计算”命令按钮的“Click”事件代码: p=1 for i=1 to thisform.text1.value p=p*i endfor thisform.text2.value=p,说明: 步长可正可负,缺省为1。 循环体中不应包含改变循环变量值的命令,否则循环次数将随之改变。 如果循环可以通过计数来控制,则本循环比条件循环更为方便。,当循环 步长循环 在文本框Text1中输入终值n 在文本框Text2中输入步长k i=1 for i=1 to n step k do while i endfor|next i=i+k endddo,【练习1】求100以内的奇数和。,A=1+3+5+99,循环变量 初值n=1,循环条件n100,循环变量的变化 趋势n=n+2,请同学们自己写出流程图和程序,循环体累加语句:A=A+n,【练习2】求,循环变量 初值x=1,循环条件xn,循环变量的变化 趋势x=x+1,循环体累加语句:K=K+x2,请同学们自己写出流程图和程序,【练习3】,请同学们自己写出流程图和程序,s=0 for i=1 to 100 s=s+(-1)(i+1)/i endfor thisform.text1.value=s,方法1:,方法2:,s=0 k=1 for i=1 to 100 s=s+k/i k=-k endfor thisform.text1.value=s,命令按钮的“click”事件代码: s1=0 s2=0 for i=1 to 99 step 2 s1=s1+1/i endfor for i=2 to 100 step 2 s2=s2+1/i endfor thisform.text1.value=s1-s2,方法3:,思考:计算e的近似值。其公式为:e1+1/1!1/2!1/3!1/N!,直到1/N!0.000001为止。,“计算”命令按钮的“click”事件代码: s=1 i=2 p=1 do while 1/p=0.000001 s=s+1/p p=p*i i=i+1 enddo thisform.text1.value=s,阶乘,累加,【例】求所有的水仙花数。(所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。,编程方法: “枚举法” 按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。对于所列举的值,既不能遗漏也不能重复。,查找范围:,三位数100999,任意一个三位数,判断这个三位数x是水仙花数的条件: X=x13+x23+x33,【练习4】 100以内能够被X整除的数之和。,【练习5】找出所有的四位水仙花数,【练习6】找出所有的三位回文数,开始,S=0,i=1,100=i and i=999,真,输出i,结束,假,i=i+1,取个位数a1和百位数a3,a1=a3,真,假,(教材P60-61) 【例3-10】设计如图1所示表单。运行该表单,在文本框Text1中输入一串字符,单击“逆序显示”命令按钮后,逆序显示该字符串,如图2所示。,图1,图2,x=“Av56:YijB8“,8,B,j,i,Y,:,6,5,v,A,c=c+substr(x,i,1),确定变量: x:存任意字符串x=“ Av56:YijB8 “ i:存截取次数(1len(x) c:存逆序字符串 c=c+substr(x,i,1),确定算法:用循环在原字符串中从右到左逐个截取字符,重新组装成逆序字符串,确定循环三要素: 循环变量 : i (i初值为len(x),终值为1) 循环条件: i=1 循环条件改变:i=i-1(从右到左截取),【例】输入一串ASCII字符,显示数字字符串。假设输入:Av56:YijB8 显示:568。,请同学们自己写出程序,从左到右逐个取出字符x,判断x是数字的条件:,Asc(x)asc(0) and Asc(x)asc(9),【例】输入一串ASCII字符,显示大写字母串。假设输入:Av56:YijB8 显示: AYB 。 输入一串ASCII字符,显示小写字母串。假设输入: Av56:YijB8 显示:vij 。,请同学们自己写出程序,【例】如图所示一程序界面。文本框TEXT1已经输入一串文字,单击“转换”命令按钮后,文本框的值将变为什么?,“转换” 命令按钮的CLICK 事件代码: N=LEN(THISFORM.TEXT1.VALUE) Y= DO WHILE N0 X=SUBSTR(THISFORM.TEXT1.VALUE,N,1) IF ASC(X)=ASC(a) X=UPPER(X) ELSE X=LOWER(X) ENDIF Y=X+Y N=N-1 ENDDO THISFORM.TEXT1.VALUE=Y,tHIS IS A cpu.,【练习7】输入一个正整数判断这个是几位数。,Command1_click: x=thisform.text1.value W=0 &位数计数器 If int(x)=x and x=0 do while x=1 x=int(x/10) w=w+1 enddo messagebox(“你输入的是一个“+alltrim(str(w)+“位数“) Else messagebox(“请输入正整数.“) endif,拓展,【练习8】将整数x中每一位上为奇数的数依次取出,并逆序构成一个新数返回。例如:程序运行时输入123456789,输出:b=97531。,Command1_click: x=thisform.text1.value y=0 If int(x)=x and x=0 do while x=1 x1=mod(x,10) &记录从后向前的每一位数 IF x1%2=1 &判断每一位是否为奇数 y=y*10+x1 &逆序组合新数 endif x=int(x/10) enddo Else messagebox(“请输入正整数.“) endif,【练习9】有一数列:1,1,2,3,5,8,13求出这个数列的前30项之和。(注意分子与分母的变化规律。),Command1_click: x=1 a=1 b=1 W=a+b &和计数器 do while x=28 c=a+b &计算第n项的值 w=w+c a=b &为计算第n+1项做准备 b=c x=x+1 enddo messagebox(“前30项的和是:“+alltrim(str(w),【练习10】有一分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 花卉植物养护培训课件
- 高级会计考试应对方案与试题答案
- 2024年大悟县数学三年级第一学期期末调研试题含解析
- 2025年啶虫咪项目建议书
- 管理经典案例合集分享
- 2025年食品搅拌均匀机械项目发展计划
- 高级会计复习素材与试题
- 高级会计考试备考经验分享试题及答案
- 《传承工匠精神主题班会课件版》
- 《最深情的关怀:小学生亲情教育主题班会“家人的爱”课件》
- 大型心血管造影系统及其DSA质量控制
- (高清版)DB33∕T 386-2013 内河航道工程质量检验规范
- 铝加工深井铸造培训
- 国家中小学智慧教育平台应用指南
- 无人机喷洒系统设计-全面剖析
- 人工智能安全监控系统开发协议
- 非遗档案资源管理系统建设与实施研究
- 外研版(三起)(2024)三年级下册英语Unit 5 单元测试卷(含答案)
- 幼儿保育专业课件
- 畜牧业人才培养的新机遇与发展路径
- 2025年广东省中考模拟英语试卷(二)(原卷版+解析版)
评论
0/150
提交评论