内容正文:
五年级上册 第三单元 第十四课
《算法的验证》教学设计
【教材分析】
《算法验证》是浙教版五年级上册第三单元“用算法解决问题”第五模块内容,在前四课已经介绍了设计算法的一般过程,学生能够将问题分解、抽象、建模并设计算法。本课主要讲解算法验证的三种方式,第一部分安排“根据算法特征验证”,旨在让学生通过对流程图的观察,回忆算法特征、变量值的变化过程,熟练运用流程图描述算法,确保算法的描述是有效的。第二部分“用数据验证算法”,根据算法能够通过部分测试数据,让学生感受算法验证的作用和重要性,能将具体数据代入流程图并逐步计算得到结果。第三部分“用计算机程序验证算法”,让学生通过修改、编写程序等方式体验程序验证算法的优势。
【学情分析】
从问题的分解、抽象、算法的设计到验证,是一个将形式化的描述方式转变为可以实现的结果。从学生的认知发展角度来看,需要将推演结果转变为编程的预测结果,然后执行程序验证结果。虽然五年级学生已经有图形化编程基础,了解了变量、三种程序结构等,但是在掌握python程序语言上还是存在一定困难,因此本节课尝试搭建支架,为学生提供半成品程序,引导学生修改参数、记录结果、观察数据、发现规律。
【教学目标】
信息意识:具有主动跟踪和分析量值变化的意识。
计算思维:掌握用算法特征、数据验证及程序验证算法的方法;通过算法验证,初步形成模拟、验证解决问题的思维;认识到解决同一问题有不同算法,算法效率和算法本身、问题规模都有关系。
数字化学习与创新:能用数字化流程图描述累加求和的算法。
信息社会责任:认识到不同算法验证方式的价值和局限性,将其灵活迁移运用到学习和生活中。
【教学重点】
1. 掌握用算法特征、数据验证及程序验证算法的方法。
【教学难点】
1.掌握用数据验证算法的方法。
【教学准备】
1. 学习单
2. 流程图
3. 验证程序
【教学过程】
教学板块
教学活动预设
学生活动预计
设计意图
情
景
导
入
1.设疑提问
德国“数学王子”高斯三岁时便能纠正父亲的借债账目。十岁时,他的老师布纳特出了一道算数题:求1到100所有整数的和,老师刚叙述完,高斯就算出了正确答案。同学们知道高斯是怎么算的吗?你们会怎么计算?能设计算法并验证吗?
2.板书标题:算法验证
回答:5050,首尾配对……
数学中的求和运算是学生熟悉的问题,不会给学生造成太大认知障碍。另一方面,布纳特老师的数学难题也能激发学生的兴趣。
新
课
讲
授
1.感知算法
探究:尝试先设计“求1+2+3+4+5和”的算法。在用i表示某个数,sum表示和的情况下,观察相邻累加求和的过程,你有什么发现?
总结:数每次增加1,和是在上一步的基础上增加新的数,可以表示为sum=sum+i,i=i+1
2.用算法特征验证算法
完型:在希沃课件中补全“求1+2+3+4+5和”算法流程图
提问:观察流程图,一共有几步?步骤有限吗?每一步可以确定执行吗?有输出吗?输出符合规定吗?
总结:用算法特征验证算法可以从算法有限性、确定性和有输出三个角度实施。
拓展:算一算高斯的方法和累加求和两种算法的步骤。
3.用数据验证算法
代数:修改流程图中条件为“i<=6”,逐步写出每一步结果。
进入时i的值
每一步结果
i=1
sum=0+1=1
i=i+1=2
i=2
总结:用数据验证算法需要代入具体数据,逐步分析计算结果,从而验证算法是否存在问题。
提问:如果验证的数据很大(比如要求1+2+……+1000)怎么办?
4.程序验证
人工测试便捷且不要求掌握程序设计语言,但是当数据规模变大时就显得比较麻烦,这时可以采用机器测试。
调参:调整桌面上“求和.py”程序中的条件终值为8、100、1000,记录程序结果。
sum=0
i=1
#修改下面i的停止条件为i<=8 i<=100 i<=1000 记录sum的值
while i<=5:
sum=sum+i
i=i+1
print("和:",sum)
算式
1+2+……+8
1+2+……+100
1+2+……+1000
条件
i<=8
i<=100
i<=1000
结果
总结:程序验证比前两种验证更适合大规模数据,但如果跳过前两步验证,可能需要多次修改算法和程序,甚至在编写程序过程中就会遇到问题。
拓展:用程序验证高斯的方法
补全流程图
回答问题
代入数据,记录结果
调整参数,记录结果
通过图解1+2+3+4+5的累加过程,帮助学生建立累加模型,初步感知累加算法。
补全算法流程图能让学生进一步理解累加算法。学生在回答算法特征相关问题时进一步修改算法中的错误,确保算法的描述是有效的。
通过代入测试数据,并逐步计算得到结果,让学生