《中职《C语言程序设计》教案第16课多角度统计人口增长率.docx》由会员分享,可在线阅读,更多相关《中职《C语言程序设计》教案第16课多角度统计人口增长率.docx(4页珍藏版)》请在课桌文档上搜索。
1、课题多角度统计人口增长率课时2课时(90min)教学目标知识目标:(1)掌握指针变量作为函数参数的使用(2)掌握指针作为函数的返回值的使用能力目标:能用指针写程序素质目标:通过统计人口增长率,理解我国的人口可持续发展战略教学重难点教学重点:指针变量作为函数参数,指针作为函数的返回值,指向函数的指针教学难点:指针作为函数的返回值教学方法问答法、讨论法、讲授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务请同学们回顾之前函数调用相关知识,明确按值传递与地址传递的区别。【学
2、生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】请同学们扫码观看“函数参数的数据类型“视频(详见教材),讨论并回答以下问题:哪些数据类型可以作为函数参数?哪些数据类型作为函数参数时,实参与形参的传递方式是“地址传递”?【甦】思考、传授新知【教师】讲解指针变量作为函数参数,指针作为函数的返回值,指向函数的指针一、指针变量作为函数参数*【教师】多媒体观看“指针变量作为函数参数”视频(详见教材),让学生了解指针变量作为参数时的作用和使用方法指针变量作为函数的参数时,其作用是将一个变量的地址传送到另一个函数中,即将实参指针指向的地址值传递给对应的形参指针,从
3、而使形参指针和实参指针指向同一个内存地址。【课堂练习】【教师】出示【例74】,组织学生编写代码利用指针作为函数参数,编写SWaP()函数交换两个变量的值。*【学生】编写程序、运行、对比结果【教师】解析例题指针变量作为函数参数时,会将变量的地址传递到被调函数中。由于指针指向的单元和变量对应的单元相同,因此,可以在被调函数中通过指针运算符修改主调函数中的变量值。(参考程序详见教材)【运行结果】程序运行结果如图7-9所示(详见教材)在该程序中,swap()函数的形参为指向整型的指针,调用SWaP()函数的实参为整型变量的地址。调用SWaP()函数时,指针变量pl中存入变量i的地址,指针变量p2中存入
4、变量j的地址,即指针变量pl指向变量i,指针变量p2指向变量j【课堂讨论】【教师】请学生分组讨论以下问题请同学们以小组为单位,讨论上述程序中,定义整型变量t,能否将t修改成指针类型,如果可以,程序如何进行修改?*【学生】讨论、总结、回答【教师】总结学生的回答A高手点拨在指针参数传递中,形参和实参共用同一个存储单元,要从被调函数中获得多个值,可用多个指针变量作为函数参数,通过修改指针所指变量的值来返回多个值。二、指针作为函数的返回值【教师】介绍函数返回值为指针时函数的定义形式,及调用方法一个函数既可以返回一个基本类型的数据,也可以返回一个指针类型的数据,即地址。将地址作为函数返回值时,该函数被称
5、为指针函数,其定义形式如下。数据类型*函数名(形参列表)(函数体;)其中,函数名前面的表示该函数为指针函数,即返回值类型为指针,数据类型表明指针指向的类型。因此,函数的返回值是一个指向该数据类型的指针。【课堂练习】【教师】出示【例7-5,组织学生编写代码编写一个指针函数求两个一维数组对应元素之和。【学生】编写程序、运行、对比结果【教师】解域崛使用指针函数求两个一维数组对应元素之和,返回指向数组的指针变量。(参考程序详见教材)【运行结果】程序运行结果如图7-10所示(详见教材)【课堂问答】*【教师】随机邀请学生回答以下问题请同学们思考,上述程序中,如果数组长度都改成6,程序中需要修改很多地方,将
6、5改成6,如何修改程序避免这种情况的发生?【学生】聆听、思考、回答【教师】总结学生的回答三、指向函数的指针【教师】介绍函数指针的概念,定义函数指针的方法,引用函数指针的方法如果程序中定义了一个函数,在编译时,编译系统会为该函数分配一段存储空间,这段存储空间的起始地址称为入口地址。当调用该函数时,系统会从这个入口地址开始执行该函数。存放函数入口地址的指针就是一个指向该函数的指针,简称函数的指针,其定义形式如下类型标识符(*指针变量名)(函数参数列表);例如:int(*p)(int);【课堂讨论】【教师】请学生分组讨论以下问题请同学们以小组为单位,讨论函数指针与返回值为指针的函数有何区别?【学生】
7、讨论、总结、回答*【教师】总结学生的回答A提示在C语言中,括号的优先级比*高,因此,*指针变量名外部必须用括号,否则指针变量名首先与后面的括号结合,就是前面介绍的“指针函数。例如:int(*pf)();/*定义一个指向函数的指针,该函数的返回值为整型数据殍i11t*f();产定义一个返回值为指针的函数,该指针指向一个整型数据叼和变量的指针一样,函数的指针也必须赋初值,才能指向具体的函数。由于函数名代表了该函数的入口地址,故可直接用函数名为函数指针赋值。例如:doublefun(inta);/*函数声明*/double(*p)(int);/*定义函数指针*/p=fun;*p指向fun()函数函数
8、指针经定义和初始化之后,就可以在程序中引用了。引用函数指针的目的是调用指针所指的函数。在用函数指针调用函数时,只需用(*P)”代替函数名(P为指针变量名),在(*P)之后的括号中根据需要写上实参即可。例如:b=(*p)(a);/*调用指针P指向的函数,实参为a*/中素养之窗失之毫厘,谬以千里。”这一成语的寓意是无论做人、做事都要注重细节,从小事做起。细节往往因其小而容易被人忽视,让人掉以轻心;因其细而使人感到烦琐,让人对其不屑一顾.但很多时候这些小事和细节,往往是学习过程中的关键和突破口。在指针学习中,指向关系的建立往往被当成无关紧要的细节对待,这是初学者容易犯错的地方.另外一个细节就是运算符
9、和的用法,如果运用不当,程序就会出错。四、任务实施*【教师】多媒体观看多角度统计人口增长率”视频(详见教材),让学生熟悉计算人口增长率的程序设计思路,代码的具体实现1 .任务分析定义函数GrOWIh(),用来统计人口增长率,在主函数中调用此函数,分别统计总人口、劳动力人口和老年人口的增长率;每次调用后,指针指向数组的下一行.Growth()函数的形参和实参均定义为指针变量。2 .参考程序(详见教材)3 .运行结果程序运行结果如图7-11所示(详见教材).【课堂问答】【教师】随机邀请学生回答以下问题请同学们分析上述程序中,语句p+=5;的作用是什么?【学生】聆听、思考、回答【教师】总结学生的回答
10、【学生】聆听、思考、理解、记录课堂实训【教师】介绍课堂实训目的、实训内容,要求学生按照实训要求完成实训任务一、实训目的(1)能够在程序中定义、初始化及引用指针变量,并且使用指针变量解决问题。(2)能够使用指针变量处理数组中的数据。(3)能够使用字符指针处理字符串数据。(4)能够使用指针变量作为函数参数实现数据传递。二、实训内容1 .阅读程序,判断运行结果(详见教材)2 .程序填空(1)程序的功能是通过指针找出3个整数中的最小值,请填空。(2)自定义函数StrLen(),返回字符串的有效串长。请在ProgramEnd填入若干语句,勿改动主函数或其他函数中给出的内容。(详见教材)3 .程序设计(1
11、)编写函数,实现两个float型数据的交换(要求函数参数为指针类型)(2)编写函数,判断字符串是否为回文字符串,若是则函数返回1,否则返回0(要求函数参数为指针类型)。【学生】按要求完成实训内容,并将实训过程中遇到的问题和解决办法记录在表7-2中(详见教材)课堂小结【教师】简要总结本节课的要点本次课介绍了指针变量作为函数的参数时,将一个变量的地址传送到另一个函数中,将实参指针指向的地址值传递给对应的形参指针,从而使形参指针和实参指针指向同一个内存地址。讲解了指针函数,即将地址作为函数返回值,以及指针函数的用法。介绍了函数指针的概念,定义形式,与指针函数的区别。最后通过任务实施,实现多角度统计人口增长率,练习了指针变量作为函数参数的使用方法,使同学们真正掌握其使用方法。【学生】总结回顾知识点作业布置【教师】布置课后作业请根据本课内容,完成课后习题中的相关习题。【学生】完成课后任务教学反思