PASCAL循环嵌套程序.doc_第1页
PASCAL循环嵌套程序.doc_第2页
PASCAL循环嵌套程序.doc_第3页
PASCAL循环嵌套程序.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 题: PASCAL循环嵌套程序 教学目标知识目标: 1掌握FOR多重循环结构; 2熟练运用流程图表达简单程序算法。能力目标:1学会运用FOR嵌套解决多层穷举算法问题。2掌握穷举算法的设计。情感目标: 1理解反复执行程序段的设计方法;2体验计算机高速与穷举算法思想在程序中的实现。教学重点:FOR嵌套在程序中的运用 难 点: 穷举算法设计教学方法:任务驱动和解析启示法 课程类型:授新课教学准备:投影或小黑板尼科梅彻斯NS图 & Tab99.PAS教学反思:教 学 过 程一、任务导入:打印1X1=1 2X1=2 2X2=49X1=9 9X2=18 9X9=81 FOR A : = 1 to 9 do beginFor B : =1 to A do Write(A , * , B, =, AXB:2 ) ; WritelnEnd;在上例中,FOR循环中又包括另一个FOR循环,称为循环嵌套。内嵌套的FOR语句是外循环体的一部分。二、新授写出运行结果:FOR I:= 1 to 2 do Begin For j:=1 to 4 do write (I:4,J:4); writeln end; 跟踪变量当前值,并借助循环过程执行流程图,说明循环嵌套的执行过程。 外循环执行一次,内循环执行一遍,总次数为外循环次数*内循环次数。例6-1百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。用百钱买百鸡,问鸡翁、母、雏各几何?师生共同分析算法:设公鸡、母鸡、小鸡分别X,Y,Z只,则 X+Y+Z=100 (只) 5X+3Y+z/3=100(钱) 这是一个不定方程求整数解,因为三个变量只能列出两个方程,不能解,必须一个一个组合地去试,看是否能满足条件。穷举法。Var X,Y,Z,N:integer;Begin 计数器置空FOR X:=1 to 100 do FOR Y:= 1 to 100 doFor Z:=1 to 100 do Begin IF X+Y+Z=100 AND 5*X+3*Y+z/3=100 Then writeln(x:10, y:10, z:10) ; 未设置计数器N:=N+1; End; END.该程序要运行100*100*100=1000000(一百万)次。讨论优化,简化程序FOR I:=1 to 20 do FOR j:= 1 to 33 doBegin Z:=100-X-Y; IF (5*X+3*Y+(100-X-Y)/3=100) then writeln(x:6, y:6, (100-X-Y):6) End;由百万次减为20*33=660次。三、巩固提高例6-2著名的尼科梅彻斯Nicomachus定理:任何一个整数的立方都可以写成一串奇数之和。例如:1的三次方=1 ; 2的三次方=3+5 ; 3的三次方=7+9+11; 4的三次方=13+15+17+19;开始的数是 n*n-n+1尼科梅彻斯定理:任何一个整数的立方都可以写成一串奇数之和。13=1 23=3+5=833=7+9+11=2743=13+15+17+19=64组成13的1个奇数是奇数序列中的第1个奇数组成23的2个奇数中最大的奇数是奇数序列第3(3=1+2)个奇数,值5;组成33的3个奇数中最大的奇数是奇数序列第6(6=1+2+3)个奇数,值11;组成N3的n个奇数中最大的奇数是奇数序列中的第m=1+2+3+4+n=n(n+1)/2个奇数,第m个奇数的值为modd=2*m-1. N3= modd +(modd-2)+(modd-4)+(modd-6)+(modd-2(n-1)注:分析后得出!给出n,求N3是哪些奇数之和?分析:从上面可以看出以下的规律:1N3是N个奇数之和;2N3是哪几个奇数呢?首先知道是N个相邻的奇数。N3 最小 最大13 1 (1) 1 1 23 3 (2) 5 (3) 1+233 7 (4) 11 (6) 1+2+343 13 (7) 19 (10) 1+2+3+4可以推出组成N3的n个奇数中,最大的奇数是,奇数序列中的第mM=1+2+3+4+n个奇数,由数学知识可知m=1+2+n=n(n+1)/2. 3奇数序列中第m个奇数(最大的奇数)的值为MAXOdd=2*m-1=2* n(n+1)/2-1=n*n+(n-1)4 N3= maxodd +(maxodd-2)+(maxodd-4)+(maxodd-6)+(maxodd-2(n-1)组成N3的n个奇数中,最小的奇数是MinOdd=maxodd-2(n-1)= n*n+(n-1)-2(n-1)=n*n-(n-1)从上面分析得出读入N n1T F输出错误信息Minodd:=n*n-(n-1)T:=minodd;Sum:=minoddWrite(t)FOR count : = 2 to n dot : =t+2;打印 Write(+,t:3) ;Sum: = sum+t;输出(=,sum)Program Nicomachus(input,output);Var t,n,m,modd,count:integer; sum:real;Begin writeln( n=) ; Readln(n); If n1 then writeln(n,1 error ) ELSE Begin minodd:=n*n-(n-1) ; t:=minodd ; Sum:=minodd; Writeln(t:3); For count:=2 to n do begin t:=t + 2 ; sum:=sum + t ; write(+ , t:3); end ; writeln(=,n:3, 3=, sum:10:2) endEnd.四、上机练习:整币换零。将一张面值100元的人民币换成5元、1元和0.5元面值的零币共100张,且要求每种不少于一张,问有哪几种组合?算法:设5元票i张、1元票j张, 0.5元票k张, I+j+k=100 5i+j+0.5k=100 (或 10i+2j+k=200)Program OneHundred (OutPut) ;Var I,j,k:integer; SUM, RMBsum:REAL;BEGIN writeln(I j k);FOR I:=1 to 100 do FOR j:= 1 to 100 doFor k:=1 to 100 do Begin Sum=I+j+k ; RMBsum=5*I+j+0.5*k ; If (I+j+k=100) and (5*I+j+0.5*k=100) then Writeln(I:10, j:10, k:10) End END.程序优化:BEGIN For FOR i:=1 to 11 do FOR j:= 1 to 100 do if (5*i + j + 0.5* ( 100-i-j ) = 100 ) then Writeln( i:10, j:10, k:10)End.五、拓展提高练习例6-4逻辑判断。五位选手参赛前,预测比赛结果如下:A选手说:B第二,我第三; B选手说:我第二,E第四; C选手说:我第一,D第二;D选手说:C最后,我第三; E选手说:我第四,A第一。结果每人只猜对了一个。请编程解出决赛实际名次。FOR a:=1 to 5 do For b:=1 to 5条件1满足?T FFORc:=1 to 5 do FOR d:=1 to 5 doe := 15-(a+b+c+d+e) 条件2,3,4,5满足?TF输出a,b,c,d,e分析:条件1:(b=2)+(a=3)=1;ord(b=2)+ord(a=3)=1条件2:(b=2)+(e=4)=1;ord(b=2)+ord(e=4)=1条件3:(c=1)+(d=2)=1;条件4:(c=5)+(d=3)=1;条件5:(e=4)+(a=1)=1;还有条件6:a,b,c,d,e名次必须在1,2,3,4,5中取值,且不能重复。A*b*c*d*e=120,或a+b+c+d+e=15.(学生完成程序)五、归纳总结 穷举算法:对于结果有穷的求解问题,利用计算机高速运算的特点,将所有可能情况进行逐一验证,从而获得所有解答。双重循环,外层循环变量每变化一个值,内层循环变量的值从循环起始值变化到循环终止值一遍。六、上机练习(自选三题)1、输出九九表。2、百鸡问题。鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。用百钱买百鸡,问鸡翁、母、雏各几何?3百马问题。大马每匹驮三块瓦,老马每匹驮二块瓦,小马两匹合驮一块瓦。用一百匹马驮一百块瓦,问大马,老马和小马各几匹?4、 输出图形。 5、湖泊排序。地理课上四位同学对四个湖泊大小这样说:A说“洞庭湖最大,洪泽湖最小,鄱阳湖第三”B说“洪泽湖最大,洞庭湖最小,鄱阳湖第二,太湖第三”C说“洪泽湖最小,洞庭湖第三”D说“鄱阳湖最大,太湖最小,洪泽湖第二,洞庭湖第三”。已知每人只说对一个,试编程输出四个湖泊的大小顺序。6、整币换零。用一张一元币,换成1分,2分和5分的硬币至少各一枚,问共有哪几种换法(每种硬币各几枚)?七、板书设计百鸡问题:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一。用百钱买百鸡,问鸡翁、母、雏各几何? X+Y+Z=100 (只) 5X+3Y+z/3=100(钱) 不定方程整数解,穷举法BeginFOR I:=1 to 100 do FOR j:= 1 to 100 doFor Z:=1 to 100 doBegin IF X+Y+Z=100 AND 5*X+3*Y+z/3=100 Then writeln(x:10, y:10, z:10) ; endendend.PROGRAM Table99(input,outout);Var i , j : integer ; BEGIN FOR i : = 1 to 9 do beginFor j : =1 to i do Write(i , * , j, =, i*j:2 ) ; WritelnEndEND.* * 、上机(自选三题)1、输出九九表。2、百鸡问题。3百马

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论