1、出租车计价器程序的设计If语句的教学【基本信息】作者课时1课时单位【课标要求】(二)程序设计语言初步1内容标准(1)理解并掌握一种程序设计语言的基本知识,包括语句、数据类型、变量、常量、表达式、函数。会使用程序设计语言实现选择控制结构。(2)理解模块化程序设计的基本思想,初步掌握其基本方法。(3)初步掌握调试、运行程序的方法。(4)在使用某种面向对象程序设计语言解决问题的过程中,掌握面向对象程序设计的基本思想与方法,熟悉对象、属性、事件、事件驱动等概念并学会运用。2活动建议(1)选择实例,根据解决问题的要求分析设计算法,恰当地使用选择结构编写源程序,调试并运行该程序,在过程中体验程序设计语言的
2、逻辑特点。【教材分析】本节课的内容是初学程序设计者的一道难关:语句格式稍显复杂;功能理解有点难度,也就是不能很好地掌握它的执行流程;解决问题时,无法建立合适、正确的“条件”。与本节有关的知识点有VBA中的几个常用函数和相关的数学知识。此处的“教材分析”事实上属于“教学任务分析”(或称“教学目标分析”)的范畴。教学任务分析是教学设计中非常重要的一个环节,它旨在确立教学任务、分析学习结果的类型,以及判断有效学习的过程与条件。此处,作者对教学任务的分析重点放在了教学内容难点的分析上,并且确立了与学习相关的知识点,这就为下一步教学目标的设置奠定了基础。【教学目标】(1) 掌握分支结构的用法与用途(2)
3、 掌握IF语句的格式,理解它的功能与执行流程(3) 灵活运用IF语句解决一些实际问题(4) 既要自主探究,又要学会跟同学合作交流新课标的课程目标指出,教学应面向知识与技能、过程与方法、情感态度价值观三大目标。因此,教师在设计教学目标的时候也应该围绕这三个方面来进行。本案例教学目标的前三点显然属于“知识与技能”的范畴,最后一点属于“情感态度价值观”的范畴。而下面的“教法学法”应属于“过程与方法”的范畴,建议能将三点统写在教学目标之中,并按三大目标进行分类,这样可以使得教学目标更为清晰。【教法学法】教法:任务驱动法、探究式、启发式学法:自主探究、小组交流、个别指导此处的教法、学法比较混乱,教法中的
4、“探究式”应属于学法的范畴,而学法中的“个别指导”应属于教法的范畴。【学情分析】省一级重点中学的学生。大部分同学的学习态度良好、求知欲强且基础知识扎实。对教学对象的分析在教学设计系统中十分的重要,它旨在分析学生的原有知识、技能、态度以及其他与学习相关的心理特征,从而确立教学的起点,即我们通常所说的“备学生”。教学对象的准确分析与把握可以为教学过程与方法的选择与应用提供依据。在编写组评审这篇案例的过程中,就有编委提出,案例的设计似乎对学生的要求太高了,当回过头来看过对教学对象的分析之后就释然了对重点中学的学生的要求自然要比一般中学要高。这也说明教学案例的普适性是受约于教学对象的,作者对教学对象的
5、分析虽然只有一句话,却保证了该案例的科学性和可操作性。【教学环境】网络机房,配备Lanstar多媒体教学系统,可实现广播、转播、示范等功能。在教学设计过程中,许多教师往往忽略了对教学环境的交待。事实上,教学环境是保证教学案例能够得以实施的硬件基础,没有对教学环境的描述,使教学案例有可能成为“空中楼阁”。当然,有经验的教师在阅读教学案例的时候可以自己在脑中构建出支撑案例实施的教学环境,但无论如何,没有教学环境的描述,就会使教学案例缺乏完整性。很高兴地看到,本案例的作者保证了案例的完整性。【教学过程】(1)创设情景T:“同学们坐过出租车吗?”S: “坐过”,大家异口同声。T:“注意过出租车的计价器
6、吗?”S:“注意过!”T:“好,现在请一位同学描述一下我们当地的出租车是如何计费的。”学生甲: 起步价(2公里以内)5元;超出2公里外,每公里1块4。(2)引入课题T:“好,说明大家对计价器是比较熟悉的。那我们能否编一个计价器程序呢?也就是当我们给它一个路程值,让它自动算出车费。”S: 表情迟疑的、甚或惴惴的T:“回答是肯定的!今天的课题就是:编制出租车的计价器程序。” S:表情:舒展的、兴奋的此处以课堂实录的形式进行描述,特别是通过对学生表情的记录来表现教师对学生学习状态的观察,通过学生的外在表现来判断学生的学习积极性,让读者读来既获得身临其境的感受,又体验了一种表现性教学评价的方法,值得借
7、鉴。(3)建立数学模型首先还是请大家将刚才甲同学的描述转化为数学语言函数,这一步我们称为建立数学模型。同学们很快写出了以下的分段函数解析式:5 x2y= 1.4(x-2)+5 x2这一部分要求学生的数学功底很强,不愧是重点学校的学生。对于大多数学校而言,此处的分段函数解析式可能需要在教师的引导与提示下才能顺利写出,或是由教师直接给出后进行分析,从而提高课堂效率,各位老师可以看情况而定。师生一起分析:要解决以上这个问题,我们的程序应有以下的功能:输入一个数;若该数小于等于2,则输出车费5元;若该数大于2,则车费按1.4(x-2)+5计算再输出.大家已经会用输入语句与输出语句,那以上的分析中还有一
8、处是大家不知道的,那就是判断,这就是今天我们要学的内容IF语句。在学生建立数学模型后,教师又引导学生分析总结出解决问题的伪代码,并以此引入新知的学习。这样的过程是严格按照“计算机解决问题的基本过程”来进行的,也就是在教学的过程中,潜移默化地训练学生用计算机解决问题的方法。从课标的要求出发,每一节程序设计课都应该贯彻这样的理念,使学生在整个课程完成时,自然地养成编程解决问题的良好习惯。条件语句NY图1(4)I F语句格式功能介绍、示范(一)简单IF语句格式:IF then 对应的流程图如图1所示,并通过一个实例来说明它的格式与功能及注意事项。例1:判断一个考试成绩,若大于等于60,则输出“Pas
9、s!”主要代码为:inputbox(“请输入一个成绩:”,score)if score=60 then msgbox(“Pass!”)演示并讲解格式方面要注意的地方。在示范讲解过程中有同学问:若输入一个小于60的数,结果会怎样?有这样的提问,说明同学对这条语句还没有弄明白,作为老师要善于捕捉课堂中的信息,并好好的利用它深入剖析该语句的用法,使大家对它有全面正确的理解。所以又多演示几遍,并输入不同情况的数据,让大家观察程序的运行结果并比较、分析原因。大家得出结论:当输入一个小于60的数之所以没有输出结果是因为我们没有对这种情况做出反应,也就是说对这种情况没做相应的处理。这一点说明很重要,因为有部
10、分同学认为电脑会对各种情况自动做出处理,他(她)不知道电脑的各种功能是人赋予的,其实这就是我们学程序设计的目标之一,让大家对电脑有比较全面的认识。经过演示说明,同学们对IF语句有了更进一步的理解。其时这步操作也是我们编程者对自己所编程序进行检查的必要环节。此处的教师反思读来发人深省,在一线教师的授课过程中,我们常常醉心于自我的教学设计和流程之中,而忽视学生突如其来的发问。应该说,并不是每一位教师都能对这种突发式的提问做出迅速、恰当的判断与应对,或者是做出应对以后就戛然而止,很少进行反思与总结。事实上,学生的这种发问应该引起教师的足够重视与兴奋,这表明他在思考。而教师的重视应表现在当时的应对与课
11、后的分析两个方面。(五) “小刀”初试再让同学们自主实践(利用该语句解决上面的问题)。不到5分钟,绝大部分同学调试成功,主要有以下两种形式:inputbox(“请输入路程值:”,s)if s2 then msgbox(1.4*(x-2)+5)inputbox(“请输入路程值:”,s)if s2 then pay=1.4*(x-2)+5msgbox(pay)分析交流:两种方法都可以,但第二种感觉思路清晰,程序结构明了,易读,请大家要养成良好的编程习惯。作者是一名很注意观察课堂并在课后进行分析的教师,这一点在此处再一次得到了证明。一般教师只关注学生有没有正确的解决问题而很少关注学生解决问题的不同形
12、式。此处,作者对学生实践结果的及时总结与分析,达到了他注意培养学生良好编程习惯的目标,同时,由于是学生自主实践的结果,记忆深刻。提问:同学们有没有发现,这段代码似乎还有点“问题”?同学们议论纷纷。有的说没有;有的说好像有点,但说不出来。提示:存在重复判断。因为给定一个数值,它只会符合一种情况,但是我们的程序现在都对它进行了两次判断,这是浪费计算机资源和降低程序运行效率的做法,If语句还有一种格式能很好地解决这个问题。从而引出复合IF语句。在已有的实践结果上再设疑,再引导,从而引发学生的深入思考,逻辑严谨,环环紧扣。设计的非常紧凑与合理。同时,在提出问题的过程中,培养学生优化程序设计算法,提高程
13、序运行效率的思想,也就是在向学生传达一个信息,不仅要能够解决问题,而且要尽力找到解决问题的最好方法。条件语句组1NY语句组2图2(5) I F语句格式功能介绍、示范(二)复合IF语句格式:IF then Else Endif对应的流程图如图2所示,并再次通过例1的简单变式来说明它的格式与功能及注意事项。作者很注意与前面的教学内容进行呼应,易于让学生接受新知,并及时与刚获得的新知进行比较。例2:判断一个考试成绩,若大于等于60,则输出“Pass!”,否则输出“Work hard!”。主要代码为:inputbox(“请输入一个成绩:”,score)if score=60 then msgbox(“
14、Pass!”)else msgbox(“Work hard!”)endif由于已有了一点的经验,这次学生很快就明白了。两个示例是相互联系并步步递进的,在示例一中学生产生的问题,在示例二中及时得到了解决,使学生获得即时的学习愉悦感,进一步激发和维持学生的学习动机,保证课堂的效率。(6) “小刀”再试再让同学们自主实践(利用该语句解决上面的问题)。不到5 分钟,同学们基本上能写出以下代码:inputbox(“请输入路程值:”,s)if s=2 then pay=5else pay=1.4*(s-2)+5endifmsgbox(pay)说明大家对该语句的格式与功能已基本掌握。这时,有同学在底下窃窃私
15、语,“我输入一个负数也能得到结果5”;“我输入一个非整数,得到的结果跟实际情况也不符合”刚才同学们的议论,非常有道理,我们现在的这个程序跟实际还有一些不符合,针对以上同学提的这两个问题,我们能否利用现有的知识对它进一步的完善呢?回答是肯定的!请大家思考、讨论、尝试解决。刚刚完成的新知传授与训练后,再次通过问题强化新知。不同的是,前面是在教师的带领下完成的,这次给学生充分的“自由”,自己完成。既满足了学生用刚学到的新知解决问题的迫切要求,也锻炼了学生独立思考,解决问题的能力。同时,对学生的积极思考及时给予评价和鼓励,学生们的思考肯定更加活跃同时也体验到了用计算机程序来比较完善地解决一个实际问题的
16、艰辛过程。(7) 完善程序针对问题一,我们经过讨论,得到这样的结论:s应有三种情况(s0;02),而我们在程序中只考虑了两种情况,所以会出现以上的问题,在程序设计时应把第一种情况“过滤”,怎么“过滤”?引入IF语句的嵌套格式并简要分析它的执行过程(图3)即可,因为同学已有基础。IF语句的嵌套格式:条件2语句组1NY语句组3图3条件1语句组2IF then Else IF then Else EndifEndif同学自主实践,写出代码:inputbox(“请输入路程值:”,s)if s=0 then msgbox(“路程值不能为0或负,请重输!”)else if s=2 then pay=5 e
17、lse pay=1.4*(x-2)+5 endifmsgbox(pay)endif虽然在这之前已经学过取整等函数,但由于没有实际编程经验,以至不会灵活运用,这是学程序设计的一个通病,所以在教学实践中,应加强这方面的训练。此时将整个教学过程推向最后一层选择语句的嵌套。这应该是本节课的最难点,但由于有了前面一层层的引导与推进,学生在高涨的热情下也很轻松地解决了这个难点。当然,问题的解决并不能代表学生对选择语句的嵌套有了多么深刻的认识需要更多的强化训练,但是学生经历了运用嵌套结构正确解决问题的过程,为进一步的理解选择嵌套打下了坚实的基础。针对问题二,有同学很气愤,因为他有时起的晚了,为赶早自修去打的
18、,而他家离学校刚好超过2公里,为此,他说自己经常在2公里之前停下再跑几十米到校,赚了1块多钱很高兴。由此可以看出,只要超过一点,就当超过1公里计算,经过提示、讨论,得到如下的解决方案:s=int(s+0.9999),把这句代码插在上面程序段的第二行就可以了。此处再次将要解决的问题与学生实际的生活经验进行联系,而且这种联系是学生在学习活动中自已发现的,这保证了学生解决问题的动机。在经过引导、讨论的活动之后找出了解决方案,解决了问题,让学生在掌握了知识的同时,充分感受了解决问题之后的成就感与完全解决问题的艰苦过程。建议此时教师可引入“知识产权保护”的教育内容,应该可以引起学生内心深处的共鸣。课后作
19、业:为巩固知识,深化理解,灵活应用,特设计两道课后作业。(1) 输入一个整数,若是偶数则输出“even”,否则输出“odd”。(2) 个人所得税计算:月收入低于1500元时,不缴个人所得税;月收入在15002000元之间时,超过1500部分缴10%的个人所得税;月收入超过2000元,则超过2000元部分再缴25%的个人所得税。设计恰当的课后练习,强化本节课所授的新知。当然,练习一定要与本节课的内容贴切才能达到较好的强化效果。【教学反思】语句教学本来比较枯燥乏味,但跟实际问题相联系,学生就愿意学,而且是在不知不觉中学会了,教学目标顺利达成。这种设计有以下几点优点:1、 符合学生的认知结构老师根据
20、学生的知识水平与学习习惯搭建合适的支架,使新知识的出现不是突然的,无端的,学生不会觉得为了学习而学习,而是觉得学习是有意义的,学习目标是非常明确的,同时也是有基础有能力去掌握它并运用它来解决问题的,可以促进他进一步学习的自信心和学习能力的提高。2、 与实际应用相结合所创设的问题是学生关注的问题或与学习、生活密切相关,这给学生提供了一个运用所学知识的“虚拟”平台,甚至是实际平台,缩短了知识与应用之间的距离。当学生看到他们的学习资料与实际生活之间的联系时,学生的积极性会被调动起来,他们会尽力学习、掌握相关的信息,并运用所学来解决问题,这有助于加深学生对知识的理解及迁移应用。3、 开放性学习促进学生
21、掌握基本的学习策略和学习方法基于实际问题的学习是一种开放性的学习。学生自主参与学习的过程,学生愿意学习(具有学习的动力)、主动学习(成为学习的主人),并且通过与同伴、教师的合作与交流,通过不断地反思,调整自身已经习惯的学习方式与方法,在解决问题的过程中获得解决问题的能力,从而更加地善于学习,成为独立的学习者。另外也给老师提出了更高的要求,因为课堂可能会出现一些无法预料的情况,也许老师也无法“收拾”,也许会“尴尬”,但都是很好的经验。【案例分析】本案例覆盖的知识点是程序设计中选择结构的教学。本案例教学任务分析透彻,教学目标设置合理,能注意到教学对象与教学环境的分析。教学过程描述清晰,语言流畅,并
22、能够在案例中适时的加入教学反思。最后的总结也很到位。本案例能够选择恰当的实例,根据解决问题的要求分析设计算法,恰当地用选择结构编写源程序,调试并运行该程序,并在过程中体验选择结构的逻辑特点。本案例能够选择与学生实际生活经验相符的实例出租车计价器,来引入并展开教学,激发了学生的学习热情,保证了学生的学习动机。能够恰当地将教学内容,根据学生的认识特点以及教学内容的难易程度,进行分析,并以“从易到难,由浅入深,层层推进”的教学策略来实现教学目标。案例体现出作者较强的自我反思意识,展示了作者对教学过程中突发的教学状况合理有效的应变能力。字里行间充满了对学生课堂表现的细心观察、积极响应与循循善诱。建议能
23、加强教学重、难点的描述与教学策略的设计;最好能全程使用计价器这一个例子,如,将例1中的“判断一个考试成绩,若大于60则输出PASS”改为“起步价(2公里以内)5元”,再将后面的“IFTHENELSE”结构,以及选择结构的嵌套的教学也与计价器的实例联系起来,效果可能会更好。【专家点评】 本案例通过让学生解决身边的问题:出租车计价器程序设计,完成分支语句的教学。 (1)课程引入出租车计价器问题及数学模型的建立,很容易让学生产生分支结构的问题意识,从而能够带着问题学习下面的课程; (2)通过IF.THEN.语句教学与学生实践,引出分支语句的第二种表达格式,IF.THEN.ELSE.语句的教学与应用,进而通过出租车计价器问题实际应用中,输入值不可能为负数,引出分支语句的嵌套使用,教学过程以问题为引导由浅入深,使学生在顺理成章中掌握了分支结构程序设计; (3)课后的作业任务与课程内容相呼应,让学生掌握一类问题的程序设计方法。 本案例教学从问题的提出到问题解决的教学过程符合中学生的认知结构,且培养学生的逻辑分析问题与解决问题的能力。建议教学过程中增加一些学生小组讨论的元素,丰富程序设计的输入输出表现形式。8