资源简介 2.编程解决问题 教学设计1教学目标 1.知识与技能:建立求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。2.过程与方法:利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。培养学生分析问题、解决问题的能力,让学生学会在面对问题时能梳理出解决问题的清晰思路,进而设计出解决某个特定问题的有限步骤,从而理解计算机是如何解决、处理某种问题的。3.情感态度与价值观:让学生全身心地投入到教学活动中,积极与同伴合作交流,进行探索活动。培养学生良好的思维品质,发展他们的创新思维,并养成积极的学习态度和良好的学习习惯。创设情境,以激发学生的学习兴趣。努力营造一个可以接纳的、支持性的、宽容的课堂学习环境,让学生置身于民主和愉悦的课堂氛围中放飞思维、潜心研究、快乐创造。2学情分析 高一年级的学生已具备了一定的观察、思考、分析和解决问题能力,也已有了顺序结构、分支结构、循环结构等知识的储备。因此,对于如何将解决问题的思路画成流程图已有一定的基础,但可能还不很熟练,尤其对刚学过的循环结构,教师在课堂上要注意引导。3重点难点 教学重点:建立求一批数据中最大值的算法设计思想,并将此算法设计思想用流程图表示出来。教学难点:上述重点问题同样是本课教学的难点。另外,如何把人解决问题的思路、步骤用计算机语言描述出来也是本课的难点之一。4教学过程 活动1【活动】算法与程序设计思想 【教学过程】1.情境创设___________如何建立支架的?师(提问): 今天在第一排就座的有10 多位同学,谁是我们第一排在座各位中的最高者呢?师(引导): 大家思考,通常这个任务我们是怎样去完成的?教师根据学生对问题的回答进行分析。引导学生往古时候比武时常常采用的“打擂台”的方式上想,提示学生可参考电视上经常播放的“挑战主持人”节目。师生: 打擂的过程可以描述为: (1) 确定一个擂主(讨论第一个擂主是如何确定的); (2) 挑战者上台; (3) 擂主和挑战者比较; (4) 挑战者胜的话,挑战者做擂主,否则擂主卫冕; (5) 重复执行(2)~(4) 步骤,直到最后一个挑战者。师: 在打擂的过程中,我们看到(2)~(4) 步骤是要重复做的,所以我们该怎么办呢?生: 需要循环结构来实现。师: 这几个步骤序列重复到什么时候结束呢?由学生讨论结束的办法,很显然,需要在最后加上一个能判断什么时候结束的判断框。根据讨论的步骤,最后师生共同得出打擂台的算法和流程图(如图1 )。『作者的引导可以总结为:比身高(学生的回答可能多种多样,也可能偏离预设方向)——比武、“打擂台”(将学生发散出去的思考往预设方向上牵引)——“挑战主持人”节目(进一步将学生的思考引到其头脑中已有的认识上,前提是学生要看过该节目)——用自然语言的方式整理出比赛的规则(即算法的自然语言描述)——得到表示算法的流程图。应该说,这样的引导方式完全可以达到作者的预设目标。』2.求一般情况下的最大值的算法师(引导): 如果我们面对的是一堆数据,现在希望我们求出这一堆数据中的最大值该怎么办?通过教师和学生的共同分析,把问题进一步细化为: (1) 从第一个数据开始看起; (2) 把第一个数据的值在变量中记下来; (3) 再取一个数据; (4) 比较这个数据与变量中记下的数据的值; (5) 如果这个数据的值比记下的数据的值大,则去掉变量中原来那个数据,记下新数据的值; (6) 重复执行(2)~(4), 继续比较,直到最后一个数据。 也就是说,计算机的变量始终记着当前比较过数据中的最大者(我们不妨用X 表示它),当取完最后一个数据时,X 中留下的也就是最大值了。求最大值的算法设计思想用下图表示。『教学在上一环节的基础上再做进一步的深入,即扩大数据的比较范围,讨论一般的情况。由于学生已经经历了上一环节的思考过程,因此,再次思考一般性问题的解决方案就变得容易多了,这又是另一维度的“逐步引导和训练”,即具体到一般的过渡。这是作者对教学策略设计的准确实现。』注意: a.再次让学生讨论变量的意义,弄清赋值语句的意义。 b.一些物理量用变量表达的意义。如X 表示最大值,X 表示输入的一个值,且每次循环时都用同一个变量X 。 c.为了控制循环结束,必须加入一个控制循环次数的计数器I, 当I 达到一定的次数后,循环工作结束。 『除了对教学目标宏观上的关注与设计之外,也注意到了教学内容细节上的把握。作者在此处提出的三点注意都是编程语言细节上的问题,应该说,这“三点注意”是作者多年或是本案例实践过后总结的教学经验,当然也可能是教师在教学设计时预先设想的教学问题。这些要“注意的点”正是教学实践或设计中的精华所在,也是值得我们借鉴与学习的内容之一。』3. 回顾小结师生共同总结算法设计的过程,就是将大脑思维的每一步都记录下来,并且用计算机能达到的功能来实现人解决问题的思路。『最后带领学生总结本节课的中心思想,即回答“算法设计的过程是怎样的?”这一问题。使整节课有了一个明确的结论。』课件40张PPT。2.编程解决问题个人计算机的另一个称呼是什么?电脑为什么称计算机是电脑?计算机能模拟人的大脑的活动。 算法初步算法与程序框图基本算法算法案例揭开计算机解决问题的神秘面纱程序设计基础可视化编程算法与程序实现面向对象程序设计程序设计实践算法与程序设计如何用计算机解决问题当我们用计算机解决问题时,首先要分析问题,然后根据问题的要求选择合适的软件。如果现有的软件能满足我们的要求,我们会直接用这些软件来完成任务。例如:学校财务处要制作一份工资表,工资表中许多数据,我们可以用Excel解决;学生要设计一个报刊设计,可以使用word;网络上的网页是使用网页制作工具完成的,记事本要输入代码,Frontpage和Dreamweaver可以直接使用可视化工具。除此之外, 现实生活中还有许多工作往往比较特殊,现有的软件不能很好地完成,或者由于其他方面的原因无法使用,这就需要我们编写程序来解决问题。计算机解决问题的步骤分析问题——可采用建立数学模型的方式使问题变得更明确、易理解。 设计算法——数学模型确定了应该“做什么”,接下来就要为它寻找一个“如何做”的算法。 编写程序——用一种计算机能接受的程序设计语言来描述问题求解的算法。 调试程序——查找和改正程序中存在的错误,使程序能顺利地执行,得出正确结果。算法的概念加法口诀表 农夫过河问题 一个农夫带着一只狼,一只羊和一棵白菜过河。河边只有一条船,由于船小,农夫一次只能带其中的一样过河。 如无人看管,狼要吃羊,羊要吃菜。问农夫如何安排过河,才能使狼、羊、菜都安然无恙。 渡河的方法与步骤:第一步:农夫带着羊渡过河去;第二步:农夫划船回来;第三步:农夫带着菜渡过河去;第四步:农夫带着羊划船回来;第五步:农夫带着狼渡过河去;第六步:农夫划船回来;第七步:农夫带着羊渡过河。一个笼子里有鸡和兔,现在只知道里面一共有35个头,94只脚,问鸡和兔各有多少只? X+Y=a 2X+4Y=b解方程组得:X=2a-b/2,Y=b/2-a鸡兔同笼问题设计算法输入a和b的值求X=2a-b/2求Y=b/2-a输出X,Y的值结束a1X+b1Y=c1a2X+b2Y=c2输入a1,b1,c1,a2,b2,c2的值求X=(b2*c1-b1*c2)/(a1*b2-a2*b1)求Y=(a1*c2-a2*c1)/(a1*b2-a2*b1)输出X,Y的值结束算法算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。算法是解决问题的方法和步骤 算法的特征输入确定有穷性输出能行性判断整数n(n>2)是否为质数第一步:给定大于2的整数第二步:令i=2第三步:用i除n,得到余数r.判断余数r是否为0,若是,则n不是质数,结束算法;否则,将i的值增加1,仍用i表示第四步:判断i是否大于(n-1),若是,则n是质数,返回第三步著名数学家华罗庚“烧水泡茶” 算法一第一步:烧水;第二步:水烧开后,洗刷茶具;第三步:沏茶。算法二第一步:烧水;第二步:烧水过程中,洗刷茶具;第三步:水烧开后沏茶。求最大公约数辗转相除法穷举法算法在解决问题中的地位和作用见书P13表1-6两个程序的效率比较 计算机只懂得根据人的命令来执行相关的程序,而我们要编写程序,首先要分析问题: 对问题进行详细地分析,通过分析,弄清楚已知条件下的初始状态及要达到的目标,找出求解问题的方法和过程,并抽取出一个数学模型,形成算法;然后要设计算法: 将这个数学模型连同它要处理的数据用计算机能识别的方式描述出来,使之成为计算机能处理的对象;最后,编写程序: 用程序设计语言设计出具体的问题求解过程,形成计算机程序,这样,计算机就会按照我们给定的指令一条一条地 进行处理了。设计一个软件的步骤是:开始分析问题设计算法编写程序运行程序验证结果问题解决无论使用现成的软件解决问题,还是自己动手编程解决问题,其实质都是一样的:现有的计算机软件同样也经历了这些过程,其差别在于,用程序设计解决问题需要我们亲自动手设计软件,而使用现成的软件,是别人已经给我们设计好了的。算法的描述自然语言流程图伪代码1、用自然语言来描述。什么是自然语言。人们日常生活中使用的语言 算法描述:以“韩信点兵问题” 为例:算法分析:以“韩信点兵问题” 为例:自然语言的优点:通俗易懂。缺点:容易产生歧义。例如:“这个人连老张也不认识”。 意思之一:这个人不认识老张。意思之二:老张不认识这个人。 2、用流程图来描述流程图也称程序框图,算法的一种图形化表示方法。流程图流程图的优缺点与自然语言相比,用流程图描述算法形象、直观,更容易理解。3、用伪代码描述算法。 例如,给定一个四位数的年份,判断它是否为闰年。如果用伪代码来描述算法,可以表示如下:算法分析: 我们知道,如果2月是28天,则这一年是平年;如果是29天,则这一年是闰年。判断闰年的条件是:如果该年份能被4整除但不能被100整除,或者能被400整除,则该年为闰年。算法描述:输入年份→yIF y能被4整除 THEN IF y 不能被100整除 THEN 输出“是闰年” ELSE IF y 能被400整除 THEN 输出“是闰年” ELSE 输出“不是闰年” END IF END IFELSE 输出“不是闰年”END IF使用伪代码描述算法没有严格的语法限制,书写格式也比较自由,只要把意思表达清楚就可以了,它更侧重于对算法本身的描述。在伪代码描述中,表示关键词的语句一般用英文单词,其他语句可以用英文语句,也可以用汉语语句。伪代码的优缺点:用伪代码描述的算法简洁、易懂,修改起来也比较容易,并且很容易转化为程序语言代码。缺点是不是很直观。 INPUT m,nr=m mod nDO WHILE r≠0 m=n n=r r=m mod nLoopPRINT n程序的基本结构顺序结构选择结构循环结构分析问题、建立模型、设计算法、编写程序具体问题程序设计计算机程序程序设计语言机器语言汇编语言高级语言程序的编辑与翻译MOV AL,9 ADD AL,8HLT1011000000001001000001000000100011110100机器语言 汇编语言 Print 8+9高级语言 Thank You ! 展开更多...... 收起↑ 资源列表 3.3.2编程解决问题 教学设计 (5).doc 3.3.2编程解决问题 课件 (5).ppt