内容正文:
/第9课 《算法的验证》 五上信息技术 德国“数学王子”高斯三岁时便能纠正父亲的借债账目。十岁时,他的老师布纳特出了一道算数题:求1到100所有整数的和,老师刚叙述完,高斯就算出了正确答案。同学们知道高斯是怎么算的吗?你们又会怎么计算?能设计算法验证吗? 1+2+3+……+99+100=? 问题抽象 2 尝试先设计一个“求1+2+3+4+5和”的算法 1+2+3+4+5 数(i=1) 观察相邻sum求和式子,你发现了什么规律? 和(sum=0) sum=0+1=1 sum=1+2=3 sum=3+3=6 sum=6+4=10 sum=10+5=15 i=i+1 sum=sum+i 问题分解 3 在课件中补全“求1+2+3+4+5和”的算法流程图 开始 结束 sum=0 i=i+1 sum=sum+i i=1 输出sum的值 i<=5? 否 是 算法特征验证 步骤有限? 可确定执行? 输出? 数一数高斯的方法和累加求和两种算法的步骤,哪个少? 高斯方法 和=(1+尾数)*尾数/2 5 √ √ 算法设计 4 进入时i的值 每一步结果 i=1 sum=0+1=1 i=i+1=2 i=2 sum=1+2=3 i=i+1=3 …… …… …… 修改流程图中条件为“i<=6”,逐步写出计算结果 开始 结束 sum=0 i=i+1 sum=sum+i i=1 输出sum的值 i<=6? 否 是 数据验证 如果验证的数据很大(如i<=1000)怎么办? sum=3+3=6 i=i+1=4 sum=15+6=21 i=i+1=7 i=6 i=3 算法设计 5 调整桌面上“求和”程序中i<=?的值为8、100、1000,记录程序输出结果 算式 1+2+……+8 1+2+……+100 1+2+……+1000 条件 i<=8 i<=100 i<=1000 结果 程序验证 执行速度如何? 和:36 和:5050 和:500500 我们可以发现,用程序验证比数据验证速度要_(快/慢)。当数据规模变得越来越大,程序运行时间越_(长/短)。 用程序验证高斯的方法 sum=(1+i)*i/2 算法设计 6 我会了吗 我还存在的疑问 我会根据算法的特征找到问题,正确描述算法 会 会一点 不会 我能读懂算法,代入数据写出每一步结果 会 会一点 不会 我会修改编写程序验证算法 会 会一点 不会 测一测你今天的学习情况 $$