资源预览内容
第1页 / 共43页
第2页 / 共43页
第3页 / 共43页
第4页 / 共43页
第5页 / 共43页
第6页 / 共43页
第7页 / 共43页
第8页 / 共43页
第9页 / 共43页
第10页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
要点: 1.算法的概念及特点2.掌握程序3种基本结构的表示3.掌握利用分支结构编程4.掌握利用循环结构编程5.常用控件第三、四、五讲 程序设计(1)循环结构能够使某些语句或程序段重复执行若干次。如果某些语句或程序段需要在一个固定的位在一个固定的位 置上重复操作置上重复操作,使用循环是最好的选择。 3循环结构常见的循环结构有:条件循环条件循环do whiledo while步长循环步长循环for for 扫描循环扫描循环scanscan涉及数据表的循环 ,第6章介绍1 1)条件循环()条件循环(do whiledo while循环)循环)格式:流程图:条件语句序列Enddo之后的语句NY循环 体教材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 i并赋初值为并赋初值为1 1定义定义s s存放累加和存放累加和, ,初值为初值为0 0确定确定循环条件循环条件 i=1fac=fac*nn=n-1输出fac求n!的N-S图“计算”命令按钮的“Click”事件代码: p=1 for i=1 to thisform.text1.value p=p*i endfor thisform.text2.value=p 说明:步长可正可负,缺省为1。循环体中不应包含改变循环变不应包含改变循环变 量值的命令量值的命令,否则循环次数将随之 改变。如果循环可以通过计数计数来控制 ,则本循环比条件循环更为方便。当循环当循环 步长循环步长循环在文本框Text1中输入终值n在文本框Text2中输入步长ki=1 for i=1 to n step k do while iendfor|nexti=i+k endddo【练习1】求100以内的奇数和。A=1+3+5+99循环变量 初值n=1循环条件n=0.000001 s=s+1/p p=p*i i=i+1 enddo thisform.text1.value=s阶乘累加【例】求所有的水仙花数。(所谓水仙花数是指一个三位数,其各位数字的立方和等于该数本身。编程方法: “枚举法”按问题本身的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,我们采纳这个解,否则抛弃它。对于所列举的值,既不能遗漏也不能重复。查找范围:三位数100999任意一个三位数 X百位数字X1十位数字X2个位数字X3判断这个三位数x是水仙花数的条件: X=x13+x23+x33【练习4】 100以内能够被X整除的数之和。开始S=0,i=1输入Xi8“逆序: 从右到左逐个取出8Bj iY : 6 5 v A11 10 9 8 7 6 5 4 3 2 1 次数i(循环变量):总次数=总的字符数c=c+substr(x,i,1)C=“8BjiY:65vA“ substr(x,i,1)总的字符 数len(x)确定变量: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)8 显示: AYB 。输入一串ASCII字符,显示小写字母串。假设输入: Av56:YijB8 显示:vij 。请同学们自 己写出程序【例】如图图所示一程序界面。文本框TEXT1已经输经输 入一串文字,单击单击 “转换转换 ”命令按钮钮后,文本框的值值 将变为变为 什么?“转换转换 ” 命令按钮钮的CLICK 事件代码码: N=LEN(THISFORM.TEXT1.VALUE) Y= DO WHILE N0X=SUBSTR(THISFORM.TEXT1.VALUE,N,1)IF ASC(X)=ASC(a)X=UPPER(X)ELSEX=LOWER(X)ENDIFY=X+Y N=N-1 ENDDO THISFORM.TEXT1.VALUE=YtHIS IS A cpu.【练习7】输入一个正整数判断这个是几位数。Command1_click: x=thisform.text1.value W=0 &位数计数器 If int(x)=x and x=0do while x=1x=int(x/10)w=w+1enddomessagebox(“你输入的是一个“+alltrim(str(w)+“位数“) Elsemessagebox(“请输入正整数.“) endif拓展【练习8】将整数x中每一位上为奇数的数依次取出,并逆 序构成一个新数返回。例如:程序运行时输入123456789 ,输出:b=97531。Command1_click: x=thisform.text1.value y=0 If int(x)=x and x=0do while x=1x1=mod(x,10) &记录从后向前的每一位数IF x1%2=1 &判断每一位是否为奇数y=y*10+x1 &逆序组合新数endifx=int(x/10) enddo Elsemessagebox(“请输入正整数.“) endif【练习9】有一数列:1,1,2,3,5,8,13求出这个数列的前 30项之和。(注意分子与分母的变化规律。)Command1_click: x=1 a=1 b=1 W=a+b &和计数器 do while x=28c=a+b &计算第n项的值w=w+ca=b &为计算第n+1项做准备b=cx=x+1 enddo messagebox(“前30项的和是:“+alltrim(str(w)【练习10】有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13求出这个数 列的前20项之和。(注意分子与分母的变化规律。)Command1_click: w=0 &和计数器 a=2 &记录分子 b=1 &记录分母 x=1 do while x=20w=w+a/bc=aa=b+a &形成下一项的分子b=a &形成下一项的分母x=x+1 enddo messagebox(“前20项的和是:“+alltrim(str(w)
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号