内容正文:
数据与计算 学教案
3.1体验计算机解决问题的过程
【学习目标】:
1、体会人工解决问题与计算机解决问题的不同特点。
2、通过亲历项目“利用计算机编程计算商品购买最佳方案”问题的解决过程,经历计算机解决问题的一般过程。
3、通过经历项目问题分析、建立数学模型、设计解决方案、实现计算的过程,能初步规划项目解决方案。
4、认识Python语言,了解计算机程序的主要功能,能够修改简单的程序代码,体验程序设计的魅力。
【重点和难点】:
重点:
1、 运用计算思维对具体问题进行分析和设计解决方案。
2、 计算机解决问题的一般过程。
难点:
1、 运用计算思维对具体问题进行分析和设计解决方案。
2、 计算机解决问题的一般过程。
【学法提示】:
讲授法、演示法、小组合作学习法
【课时安排】:1课时
【创设情境】:
开学时同学们纷纷购买用于学习的各种文具,假如同学手中有50元现金,分别购买单价为6元的笔记本,单价为5元的签字笔,和单价为4元的橡皮,请问各种文具应该购买何种数量,才能让手中的资金最大化利用(即刚好用完)呢?
【主题探究】:
一、人工求解的过程
(1) 需求分析
问题描述:
三种商品单价分别为6元,5元,4元;
用于购买商品的总资金为50元;
需求:
现求三种商品分别的购买数量,可让资金刚好用完(要求每种商品的购买数量不得小于1)。
思考:
1、如果假设购买三种文具的数量分别为x,y,z
2、同学们是否可以据此列出含有x,y,z的数学方程来表达这一关系呢?
(二)小组讨论
讨论要求:
(1)列出含有x,y,z的求解方程
(2)分析x,y,z的取值是否存在界限范围,如果有,这个界限范围是多少?
(3) 求解该方程的方法是什么?
(三)问题求解
由于三元一次方程6x+5y+4z=50不存在其它约束条件,可以尝试把x,y,z的取值都计算一次来判断其是否满足条件:
思路: 令y=1,z=1,令x=1,计算6x+5y+4z是否等于50;
令y=1,z=1,令x=2,计算6x+5y+4z是否等于50;
……
令y=1,z=1,令x=6,计算6x+5y+4z是否等于50;
……
令y=2,z=1,令x=6,计算6x+5y+4z是否等于50;
思考:找到:x=6,y=2,z=1是方程的一个正整数解,但是……解唯一吗?
(4) 问题反思
由于三元一次方程6x+5y+4z=50不存在其它约束条件,方程的正整数解可能存在多个。
且由于x,y,z的取值可能分别有6、8、12种,经排列组合计算,x,y,z可能的取值情况有6*8*10=480 种。
也就是说,通过手工计算的方式,我们必须对所有的取值情况进行逐一计算,判
断其是否满足等于50的条件,若满足,则该取值情况是方程解集中的一个,若不满足,则继续计算。
这种对变量一定取值范围内所有情况依次进行计算和判断的方法,称为遍历。
通过人工计算的方式求解该问题,不仅计算量浩大,还会出错,容易漏解、错解。
2、 计算机求解
计算机解决问题的基本过程:
(一)分析问题
将计算购买商品的最佳方案转化为利用计算机求解三元一次方程6x+5y+4z=50的所有解,将实际问题转化为数学问题。
(二)设计算法
归纳刚才讨论总结的解方程方法:分别遍历x,y,z的取值范围,判断每一种取值情况是否满足和等于50的条件,若满足,则此时x,y,z的值为方程的解,若不满足,则继续遍历。
(三)编写程序
Python是一种面向对象的高级程序语言,具有轻巧灵活的编程特点,可以用于快速开发简单易用的计算机应用程序。
该三元一次方程的Python程序代码。
t=0
for x in range(1,50):
for y in range(1,50):
for z in range(1,50):
if x*6+y*5+z*4==50:
{t=t+1;
输出解的个数t和三个整数x,y,z}
(四)调试运行
演示进行简单的代码修改和调试的方法,让学生自主尝试进行程序调试并运行,得出计算结果。
【课堂小结】:
计算机解决问题的一般过程:
1、提出问题
2、分析问题,将问题转化为数学形式,并对其进行数学描述和分析
3、设计算法,对问题进行分解,寻找其计算步骤,并用简洁的形式进行描述
4、编写程序代码
5、调试运行
【课堂巩固 问卷星考试】:
1. 下列说法错误的是(