4.4 运用循环结构描述问题求解过程 课件(29张ppt)

资源下载
  1. 二一教育资源

4.4 运用循环结构描述问题求解过程 课件(29张ppt)

资源简介

4.4 运用循环结构描述问题的求解过程
4.4运用循环结构描述问题求解过程
程序的循环结构是程序设计中常用到的基本结构之一。循环是让计算机自动完成重复工作的常见方式。for循环、while循环、 循环嵌套、循环控制等都是程序循环结构的主要内容。
4.4.1for循环的应用
for循环语句的一般格式如下:
for循环依次把列表中的每个元素逐个迭代出来。冒号“:”代表下一行是循环的第一行,但是循环体在书写时需要缩进。在Eor循环中,从for语句末尾的冒号开始至其下面没有缩进的代码之间都是其包含的需要重复执行的部分。因此,for循环所包含的语句是以缩进为标志的。具体如表4-9所示。
需要注意的是,列表可以有几种表达方式:
(1)直接罗列的方式。
如表4-9中代码“for value in [1,2,3,4,5]:”就是直接罗列的方式。
(2)先定义后使用的方式,如表4-10所示。
(3)使用range()函数。
range()函数是让Python从指定的第一个值开始数,并在到达所指的第二个值后停止,因此不包含第二个值。如range(1,6)其实是生成一个1~6的整数(不包含6),如表4-11所示。
使用range()函数时,还可指定步长,如表4-12所示。
当然,使用range()函数时,数值列表也可以是降序的,如rangc(10,1,-2)就是生成10至2的偶数(降序),具体如表4-13所示。
问题
假如项目小组经过讨论,决定先网购单价为1元至10元的十种笔记本各1本,且每一种只买1本,那么该如何编程计算一共要花多少元?
思考
如何用for循环语句编程解决上述“网购物品累计费用计算”问题?
观察
解决上述问题的方法有很多,其中一种方法步骤如下:
( 1)分析问题。
这个问题相当于要计算从1到10的累加值。1~10的累加就是计算1+2+…+10,可以用for循环结构编程来解决这个问题。
(2)设计算法。
根据上述分析,可设计如下算法:需要有一个循环变量从1变化到10,将该变量命名为i;还需要另外一个临时变量不断和该变量进行加法运算,并记录运算结果,将临时变量命名为sum ;变量i每增加1时,就和变量sum进行一次加法运算,变量sum记录的是累加的结果。该算法流程图如图4-14所示。
(3)编写程序。根据上面设计的算法,编写出解决该问题的程序(见配套学习资源包“第四章\课本素材\程序4-5”)如下:
(4)调试程序。将程序4-5输入计算机进行调试运行,所得结果为“the result=55”。
4.4.2 while循环的应用
while循环是当型循环,只要条件满足,就不断循环;否则,退出循环。while循环语句的格式:
(1) 表达式一般是一个关系表达式或一个逻辑表达式,表达式的值应该是一个逻辑值真(True)或假(False)。
(2)当表达式的值为真时,执行循环体语句;当表达式的值为假时, 退出循环,执行循环体外的下一条语句 (即while后面没有缩进的第一条语句 )。
(3)每次循环都是执行完循环体语句后回到表达式处重新开始判断,重新计算表达式的值。一旦表达式的值为假就退出循环,为真时就继续执行循环体语句。
(4)循环体中必须有改变条件表达式值的语句,否则将成为死循环。
(5)while循环可以用流程图来演示执行过程,如图4-15所示。
问题
项目小组为了筹集购买奖品和纪念品的费用,准备开展一次募捐活动,计划向第一个赞助人募集20元,向第二个赞助人募集25元....后一个比前一个多募捐5元,依次下去,第几个人募捐后募集到的总费用累计超过500元?
思考
如何用while循环语句编程解决上述的募集费用计算问题?
观察
用while循环语句编程解决上述问题的方法有多种,编程时要注意条件表达式的构成,
现给出其中一种方法的步骤如下:
(1)分析问题。
设所拉赞助人的数量为num (num=1, 2, 3, .).每次募集的费用为money,每次募
集之后总费用为sum,则sum可以用 如下的式子表示:
sum= 20+ 25+30+...
于是这个问题就可以转化为:当sum ≥500时,求num的值。
(2)设计算法。
根据上述的分析,设计算法如下:
①令num=1;
②令money=20;
③令sum=20;
④num=num+1;
⑤money= money+5;
⑥sum=sum+money;
⑦如果sum<500,则返回步骤④;
⑧榆出num的值;
⑨结束。
(3)编写程序。
根据上面设计的算法,编写出解决该问题的程序(见配套学习资源包“第四章\课本素材\程序4-6”)如下:
(4)调试程序
将程序4-6输入计算机进行调试运行,得出结果为12。
交流
各小组讨论、交流如下问题:
(1)如何根据上述解法的自然语言描述画出其算法流程图?
(2)对于上述问题的解法,如果改变几个变量的初始值,假设令"num=0, money =20,sum=0",那么,while循环体中的程序段应该如何编写?它们之间的语序能改变吗?为什么?
4.4.3 循环嵌套的应用
单独使用for循环或while循环单循环语句,往往无法解决复杂的问题。如需要解决类似“工作要做很多遍,而每一遍工作都是需要重复做一些事情” 的问题,就要用到多重循环,即“循环嵌套”。如果某一种循环语句中包含着自身或其他循环语句,就称为循环的“嵌套”。for循环或while循环之间可以相互嵌套。
问题
项目小组经过讨论,最后选择购买单价分别为1.8元的笔记本、1.9元的笔、2.1元的小饰品作为活动的奖品和纪念品,每一种物品至少买100件,并且尽可能地用完1000元经费。如何设计方案,才能实现购买物品数量最多呢?如数量相同的情况下余额最小的方案为最佳,则最佳方案中每一种物品的数量是多少?余额是多少?
思考
如何运用循环嵌套的方法编程解决上述的最优采购方案设计问题?
观察
要解决这个问题,需要用到循环嵌套的知识,下面提供了其中一种解法:
(1)分析问题。
设购买单价为1.8元、1.9元、2.1元的物品数量分别为x,y,z,当前余额为r元,所买物品总数量为s,根据题意有下面关系式:1.8x+1.9y+2.1z≤1000 ( x,y, zEN',N"为自然数),我们分别将x,y,z从100至555,526,476逐个穷举,如果x,y,z的值满足式子1.8x+1.9y+2.1z≤1000 (x,y, zEN',N'表示自然数),如x+y+z>s,则s=x+y+z,r=1000-( 1.8&+1.9y+2.1z),并记录此时x,y,z的值;如x+y+z=s,且1000- ( 1.8x+1.9y+2.1z )(2)设计算法。
根据上述的分析,可设计出如下的算法:
①令x1=100,令y1=100,令z1=100,令s=300,令r=1000- ( 100×1.8+100×1.9+100×2.1) ;
②x从100~555穷举;
③y从100~526穷举;
④z从100~476穷举;
⑤如果1.8x+1.9y+2.1z≤1000,若x+y+z>s,则s=x+y+z,r=1000- ( 1.8x+1.9y+2.1z) ,x 1=x,y1=y,z1=z;若x+y+z=s ,且1000-(1.8x+1.9y+2.1z)⑥转步骤④;
⑦转步骤③;
⑧转步骤②;
⑨输出x1,y1, z1,s和r的值。
(3)编写程序。
根据上面设计的算法,编写出解决该问题的程序(见配套学习资源包“第四章\课本素材\程序4-7”)如下:
( 4)调试运行。
将程序4—7输入计算机进行调试运行,结果如下:
交流
各小组讨论、交流for循环、while循环语句在格式、功能、应用等方面的异同及其各自的特点。
实践
1.我们用or循环计算了从1到10的累加值,并且使用的循环控制变量为还增方式。借助此问题的学习,尝试设计用递减方式的循环控制编写代码。
2.用while循环编程实现计 算从1到10的累加值,并对for循环、 while循环的使用进行对比。
4.4.4 循环控制的应用
循环控制包含控制循环变址的变化方式和控制循环的跳转。无论是or循环还是while街环,都需要一个控制循环的变量来控制循环的执行。但是,有些循环仅靠循环变量自身的
变化难以达到想要的控制效果,因此需要用到控制循环的跳转语句。实现控制循环的跳转需要用到rrak flcontinwe两个关键字。其中,break 是中断循环,continue 是跳出本次循环体的执行。
1. break语句
在循环结构中,可以用break语句跳出 当前循环体,从而中断当前循环。在实际运用中,往往是在循环体中使用某一个条件来选择 是否中断循环,即跳出当前循环,维面执行当前循环外的下一条语句。也就是说,当某个条件成立的时候,需要立即退出循环,不再运行循环中余下的代码,也不管循环控制变量的条件测试的结果如何。使用brak语句, 即可让程序能按照要求执行要执行的代码。
2. continue语句
continue语句是对trrak语句的补充。continue不是立即跳出循环体,而是当条件符合需要跳转的时候,跳过该次循环结束前的语句,回到循环开头的条件测试部分,重新开始执行循环。同理,在实际运用中,往往是在循环体中使用某一个条件来选择是否跳转循环。
项目实施
各小组根据项目选题及权订的项目方案,结合本节所学知识,比较程序设计几种基本结构的特点,利用几种程序结构完成相应的程序编写,进一步完善该项目方案中的各项学习活动,并参照项目范例的样式,撰写相应的项目成果报告。
成果交流
各小组运用数字化学习工具,将所完成的项目成果,在小组或班级上进行展示与交流,共享创造、分享快乐。?
活动评价
各小组根据项目选题、权订的项目方案、实施情况以及所形成的项目成果,利用教科书附录2的“项目活动评价表",开展项目学习活动评价。
拓展:函数的定义与调用
在面对较大项目的时候,随着堆砌的代码越来越多,编程人员发现有很多功能重复的模块被反复地键入和执行。因此需要考虑是否可以将这些功能具体且经常使用的代码段,从程序中抽离出来单独封装。于是,函数的概念出现在编程语言里。在对函数的设计方面,我们可以向函数提供必要的参数输入,同时可以调用函数获取所需的返回值。Python采用def作为关键词来定义一个函数,具体例子如下:定义和调用函数getValue(b,r,n),根据本金b、年利率r和年数n,计算最终收益u。提示:v=b(1+r)"。
程序运行结果为:1276.2815625000003。
本章扼要回顾
同学们通过本章学习,根据“程序设计基础”知识结构图,扼要回顾,总结、归纳学过的内容,建立自己的知识结构体系。
本章学业评价
同学们完成下列测试题(更多的测试题可以在教科书的配套学习资源包中查看),并通过“本章扼要回顾”以及本章的项目活动评价,综合评价自己在信息技术知识与技能.解决实际问题的过程与方法。以及相关情感态度与价值观的形成等方面,是否达到了本章的学习目标。
1.单选题
(1)在Python中,元素是无序不重复的是()
A.列表 B.元组 C.集合D.字符串
(2)在以下运算符中,优先级最低的运算符是()
A.* B. != C.+ D. =
(3)有以下程序段:
程序的运行结果为()
A.24 5 B.120 5 C.24 4 D.120 4
2.思考题
编写函数,接收一个正偶数为参数, 输出两个素数,并且这两个素数之和等于原来的正偶数。如果存在多组符合条件的素数,则全部输出。
3.情境题
依法纳税是每一个公4民应尽的义务。同学们上网学习2018年8月31日第七次修正的《中华人民共和国个人所得税法》,了解居民个人应纳税所得额的含义和个人所得税税率表(综合所得适用),试设计一个程序计算以下人员应缴个人所得税额。
end

展开更多......

收起↑

资源预览