1、微项目微项目3用探究数据变化的规律学习目标学习目标n 1.本项目的核心是理解并运用完成迭代算法的编程实现,掌握、迭代表达式的识别技巧,学会利用迭代算法设计程序进行问题推导。n 2.迭代算法的关键是:跳绳是一项简单易行的体育运动。为了增强体质,甲乙两位同学各自制订了循序渐进的锻炼方案。甲同学决定第一天跳绳100下,第二天开始每天增加5下。乙同学也决定第一天跳绳100加10下。两位同学按照上述方案锻炼30天,各自的总运动量是多少下?看看谁的总运动量大。活动活动1 观察数据累加的迭代算法观察数据累加的迭代算法 乙同学训练日志第一天:100第二天:100第三天:110 第四天:.甲同学训练日志第一天:
2、100第二天:105第三天:110第四天:1 观察数据累加规律观察数据累加规律甲同学决定第一天跳绳100下,第二天开始每天增加5下。乙同学也决定第一天跳绳100下,以后每隔一天增加10下。甲同学每天的跳绳次数(用a表示):al=100#第1天 a2=a1+5#第2天 a3=a2+5#第3天 2.初步设计迭代算法初步设计迭代算法 模拟模拟 第一次第一次 乙同学每天的跳绳次数(用b表示):bl=100#第1天 b2=b1#第2天 b3=b2+10#第3天是用旧值重复推出新值的过程。每一次迭代得到的结果会作为下一次迭代的初始值,如此一步步逼近所寻求的目标或得到需要的结果。迭代关系迭代关系b1=100
3、#第1天 b2=b1#第2天 b3=b2+10#第3天al=100#第1天 a2=a1+5#第2天 a3=a2+5#第3天#!/usr/bin/onv python3#甲同学每天的跳绳次数al=100#第1天 a2=al+5#第2天 a3=a2+5#第3天#乙同学每天的跳绳次数b1=100#第1天 b2=b1#第2天 b3=b2+10#第3天#显示甲乙同学3天跳绳的总数print(“甲同学3天共跳绳:,al+a2+a3,“下”)print(乙同学3天共跳绳:,b1+b2+b3,“下”)思考:尝试继续编写程序计算前10天的跳绳总数,程序需要编写多少行?(2)体验迭代算法程序)体验迭代算法程序-顺
4、序结构顺序结构使用描述送代虽然直观,但编程及程序运行效率低,当迭代次数较多时,使用顺序结构就显得力不从心。可以尝试采用实现迭代算法。累计跳绳总数。在构造循环结构程序之前,需要分析出,这样才能设计出相应的迭代算法是用计算机解决问题的基本方法之一。在使用迭代算法解决问题时,需要注意:1.确定。在可以使用迭代算法解决的问题中,至少存在一个迭代变量。2.建立。这是解决迭代问题的关键。3.控制。要用序让迭代自动进行。活动2 用循环结构实现自动选代(1)每天的跳绳数甲乙两位同学每天的跳绳数规律比较好找。在顺序程序设计中已经有体验,其选代关系式可如下表示:甲同学每天跳绳数量迭代关系式:ai=ai-1+5(i
5、=2)乙同学每天跳绳数量迭代关系式:ai=ai-1(i为偶数,i=2)和ai=ai-1+10(i为奇数,i=3)(1).分析数据的迭代关系跳绳总量的跳绳总量的示意图示意图每人跳绳总数如图所示。由此图很容易发现其计算规律是以前的总数加当天的数量,如,甲同学跳绳总数的迭代关系式为xi=xi-1+ai (i=2)。(2).分析迭代过程的程序代码【1】每天的跳绳数】每天的跳绳数a=a+5#甲同学每天都增加5次 if i%2=1:#当前天数为奇数时 b=b+10#乙同学的跳绳次数增加10甲同学每天跳绳100下,第2天开始每天增加5下;乙同学每天跳绳100下,每隔一天增加10下。用a表示甲同学每天的跳绳数
6、,b表示乙同学每天的跳绳数。每天的跳绳数迭代过程为:【2】新一天的跳绳累计总数】新一天的跳绳累计总数用x表示新一天甲同学的总跳绳数,y表示新一天乙同学的总跳绳数,新一天的跳绳累计总数迭代关系为:x=x+ay=y+b可以构建一个固定次数的循环来确定在什么时候结束迭代过程,在此过程中应用迭代公式让迭代变量自动迭代,计算出结果。3.用用程序实现程序实现运行完整的迭代程序,体验迭代的过程,并修改程序计算出n天后甲、乙两位同学各自的总运动量,比较谁的运动量更大、谁的训练更加科学。for i in range(2,n+1):a=a+5#甲同学每天都增加5次 if i%2=1:#当前天数为奇数时 b=b+1
7、0#乙同学的跳绳次数增加10次#计算甲乙同学跳绳的累加次数 x=x+a y=y+b#i/usr/bin/env python3a=100#甲同学第1天的跳绳次数 b=100#乙同学第1天的跳绳次数#甲乙同学累计跳绳次数分别用x、y表示X=a#甲同学第1天累计跳绳次数 y=b#乙同学第1天累计跳绳次数 n=30#跳绳的总天数 for i in range(2,n+1):a=a+5#甲同学每天都增加5次 if i%2=1:#当前天数为奇数时 b=b+10#乙同学的跳绳次数增加10次 x=x+a#计算甲乙同学跳绳的累加次数 y=y+b#显示甲乙同学n大跳绳的总数print(“甲同学,n,“天共跳绳”,x,下)print(乙同学,n,天共跳绳,下)跳绳总量的计算程序迭代算法(循环结构)#从第二天开始选代计算 for i in range(2,n+1):a=a+5#甲同学每天都增加5次 if i%2=1:#当前天数为奇数时 b=b+10#乙同学的跳绳次数增加10次 x=x+a#计算甲乙同学跳绳的累加次数 y=y+b课堂小结:迭代迭代关系迭代算法语法顺序结构循环结构算法效率?课堂小结1、什么是迭代算法?迭代算法的3要素的构成2、迭代算法和循环结构的关系?、迭代算法和循环结构的关系?