1、课程基本信息课题算法与程序综合应用1教科书书名: 信息技术必修1 数据与计算 人民教育出版社;中国地图出版社 出版日期:2019 年 6 月教学目标教学目标:1. 复习与巩固Python语言的语句内涵,强化相关的编程知识;2. 通过编程实践,体验用计算机解决问题的一般过程,从而理解此过程中各个环节的实际内涵与意义;3. 通过对枚举、解析两种算法的实践,理解通过优化算法和综合应用算法思想来提高解决问题效率的意义。教学重点:体验用计算机解决问题的一般过程,从而理解此过程中各个环节的实际内涵与意义。教学难点:理解综合应用各种算法的思想来提升解决问题有效性的实际意义。教学过程时间教学环节主要师生活动1
2、课前准备1. 打开“自主学习任务单”;2. 打开Python语言编译器Jupyter Notebook。8初步体验初步体验以“韩信点兵”的习题为例,引导学生开始体验计算机解决问题的一般过程。【步骤1】提出问题韩信是汉初著名军事家,传说他统计士兵数目有个独特的方法。例如,先令士兵排成5列纵队,结果余1人;接着,命令士兵排成6列纵队,结果余5人;再命令士兵排成7列纵队,结果余4人;最后命令士兵排成11列纵队,结果余10人。这样他便知道士兵的总人数了。这种计数的方法被后人称为“韩信点兵”。试编写程序计算士兵的数目。引导学生回顾前面课时中学习过的“计算机解决问题的一般过程”的几个步骤,带领学生对问题进
3、行条理性的分析。【步骤2】分析问题将问题转化为数学问题,列出不定方程组X5=a1X6=b5X7=c4X11=d10,需要求解X的数值。【步骤3】设计算法结合计算机计算能力强、运算速度快的特点,引导学生尝试用枚举法来解决问题,并呈现算法流程图。同时满足:X%5=1,X%6=5,X%7=4,X%11=10输出XX:相应范围内依次取值否是【步骤4】编程调试在枚举法的基本编程思想的引导下,以for循环结构语句、if条件语句和具体表达式的写法为基本内容,带领学生一步一步完成程序代码的输入,并在编译器中运行。for X in range (4000,5000):if X%5=1 and X%6=5 and
4、 X%7=4 and X%11=10:print(X)【步骤5】解决问题运行,得出在“4000多人”的情况下,满足条件的数值为4421。问题似乎解决了?又似乎解决得不是那么完善?13深入体验深入体验提出程序的改进方案,从而引导学生认识并体验计算机解决问题并非纯粹是一个线性的过程,其间可能会反复循环、多次调整。提出问题分析问题设计问题编程调试解决问题解决问题【任务一】理解改进后的程序,输入到编译器中运行,观察运行的结果。y5=int(input(排成5列纵队,余下的人数:)y6=int(input(排成6列纵队,余下的人数:)y7=int(input(排成7列纵队,余下的人数:)y11=int(
5、input(排成11列纵队,余下的人数:)A=int(input(部队总人数有几千人左右?)for X in range (A-1000, A+1000): if y5=X%5 and y6=X%6 and y7=X%7 and y11=X%11: print(部队士兵总数应该是:, X , 人)通过小视频播放,了解更贴近历史真实情况的“韩信点兵”,并引导学生对新问题进行分析,并尝试使用解析算法来编写程序、解决问题。采用解析算法的原因在于:算法也有优劣之分,要尽可能地提升算法解决问题的效率。新的“韩信点兵”问题又可以分为“同余”与“非同余”两大类问题,各自都有不同的解析式可以帮助求解问题的答案
6、。【任务二】对于用解析算法解决“同余问题”的情况,画出相应的算法流程图。根据解析式和新的解析算法,再引导学生编写出新的程序代码,并运行,以观察运行的结果。A = int(input(士兵约有几百来人?)y = int(input(排好3列、5列、7列纵队后,所余人数为:)n = (A+100) / 105X = 105*n + yprint(这群士兵有:, X , 人。)然后,带领学生了解史书中对于“非同余问题”的求解歌诀,得出新的解析式。并根据此解析式,编写新的程序,运行后观察结果,发现问题。A = int(input(士兵约有几百人?)y1 = int(input(排3列纵队,所余人数为:
7、)y2 = int(input(排5列纵队,所余人数为:)y3 = int(input(排7列纵队,所余人数为:)for n in range (A-100)/105,(A+100)/105): X = y1 * 70 + y2 * 21 + y3 * 15 - 105 * n if X A-100 and X A+100: print(这群士兵有:,X,人。)此时,引导学生发现:此程序的运行过程,不是单纯的解析算法思想的应用,其中也用到枚举法。而且是利用解析式缩小了枚举的范围,自然也是提升了运行的效率。从而,提醒学生注意:要辩证地看待算法与编程之间的关系,要学会综合地应用算法思想来解决问题。最后,再次引导学生发现程序中的漏洞,并在进行简单的、提示性的分析后,布置第三个任务。【任务三】在已有的程序上做出修改,以完善程序,使得输出准确的结果。2课堂小结1布置课后练习“鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?”算经(北魏张丘建)编写程序,解决此问题。