您好,欢迎访问三七文档
《指针》教学设计课题指针学科C语言奥赛授课人课时两课时年级高一学情分析上节课已经学习了函数,函数中有以数组作为形参传递,在此部分中,已经初步认识了地址的概念。学生来自不同的班级,接受能力有所区别;编程能力与水平也有差异。教学目标1.学生深刻理解地址的概念;2.学生知道变量地址的概念,能说出不同变量的地址;3.学生理解变量内容的概念;4.学生知道如何去引用一个变量的地址;5.学生能说出指针变量的概念,并比较出指针与指针变量两个概念的区别与联系;6.学生能较为熟练的使用指针,包括指针变量的定义与操作;7.学生能说出*与&运算符的关系;8.学生能理解数组的定义后在内存中的空间分配与赋值操作;9.学生能够理解指针变量的操作,对其它变量的影响;10.学生能编写出指针作为形参的函数;11.学生了解当指针被赋值数组的地址时的操作;教学内容分析指针作为C语言的一大特色,与其他语言区别开来,第一是必学内容,而也是每年信息奥赛初赛的必考题目内容;指针同时还是C语言实现函数返回多个值与改变实参的唯一方式;指针且是后面学习内容:文件操作、结构体的基础,而结构体又是之后数据结构的基础,因此指针的基础性作用不言而喻。教学重点1、学生能较为熟练的使用指针,包括指针的定义与操作;2、学生能说出*与&运算符的关系;3、学生了解当指针被赋值数组的地址时的操作;4、学生能够理解指针变量的操作,对其它变量的影响;5、学生能编写出指针作为形参的函数;教学难点1、地址的理解;2、&与*运算符的关系;3、学生了解当指针被赋值数组的地址时的操作;4、学生能够理解指针变量的操作,对其它变量的影响;5、学生能编写出指针作为形参的函数;教学方法问题教学法、讲授教学法、演示教学法、比较教学法、任务驱动教学环境多媒体教室(一人一机)、投影仪、计算机广播控制系统、Devc++4.9、课件等教学过程教师活动学生活动设计意图提出现实概念,类比讲解1、提出现实生活中的街道;2、提出程序中的内存;3、内存与街道的对比:内存街道储存单元房子地址门牌号4、具体讲解地址概念;积极思考,一起类比学习使用现实生活中概念,类比讲解抽象概念,突破难点!讲解变量地址概念1、模拟当一个变量定义后,为其分配储存单元;2、强调不同类型变量,地址的不同;3、提问:已定义的inti与doublef它们的地址是多少?4、提出变量地址概念:系统分配给变量的内存单元的起始地址学生与老师一起观察计算机为变量分配空间规律,并回答具体变量地址,最终总结出变量地址概念。以问题引导方式,集中学生注意力,提升学生总结能力,并加深学生对变量地址的概念的印象。讲解变量内容1、模拟为变量赋值后的内存行为;2、形成变量的第二属性:变量内容;与老师一起将熟悉的内容进行一个更准确的定义演示学生熟悉的操作,但揭示熟悉的操作背后的深层次内容:变量内容的赋值;讲解变量两种属性的引用1、承接刚刚所讲两个知识点,内容与地址,提出如何引用的问题;2、内容的引用是熟悉的,有学生自我总结归纳;3、地址的引用是新的知识,教师提出,并引出新的知识点“&运算”;4、最终,将两种引用,以输出的实例呈现出来。与老师一起总结归纳原有的熟悉知识:内容的引用。并开始记忆新的知识点,并在实例演示中,进行思考。以旧知进行引导学生思考,并引出新的知识点,与学生一起总结分析,最后以提问的方式加深学生印象。讲解指针变量概念1、提问:有没有储存地址的变量?2、引出指针变量;3、分拆“指针变量”四个字为“指针”与“变量”;4、讲解指针定义为:变量的地址;5、讲解指针变量的定义为:储存变量的地址的变量;6、以实际例子,在内存中模拟,呈现指针与指针变量的关系;与老师一起思考,理解字面上的意思,并通过之前的理解,一起预测实例中的输出。从字面上拆分帮助学生理解指针变量,再以实例呈现,帮助学生理解指针变量的定义讲解指针变量如何定义1、所有的变量都应该从定义开始,因此我们先看一下指针变量是如何定义的;2、呈现六种不同的的指针变量的定义;3、与学生一起观察特性,一起归纳总结定义方式;4、指针变量最终的定义格式为:数据类型*自定义名称;与老师一起观察,归纳,总结出定义的一般格式特点。给出实例,让学生观察,并总结一般特性,提升学生总结归纳能力,并加深了如何定义的了解。讲解指针变量的赋值与操作1、通过之前的变量地址引用与熟知赋值操作,来对指针变量赋值,并模拟内存操作;2、通过内存的展现,讲解指针操作中的变量名的引用和*+变量名的引用的差别;3、提问学生p,*p,*p=3后i的值,以实例的展现、提问加深学生理解学生记忆操作一般方法,并运用该方法,推断出实际问题答案。以内存的实际存储方式来呈现指针变量的两种操作的实质区别,将抽象问题具体化,加深学生印象。比较&与*运算符1、给出&与*运算符的定义;2、给出实例分析;3、提问:i,&i,*(&i)分别代表什么值;4、结论:*与&运算互为逆运算。学生通过学习的知识,回答问题,并归纳总结特性。给出定义,提出问题,学生根据定义,给出答案,根据答案,总结出结论。以这种方式,突破重点。小结1、函数的定义:数据类型*自定义名称;2、操作:p,*p,&p分别代表的内容;学生回答老师提问将前面所学知识,以提问方式,带领学生一起总结一下,加深学生印象。尝试写出交换a,b的函数1、我们来尝试写一个函数:交换a,b;2、很多同学写这个函数会失败,原因是形参改变,实参不改变,我们就应该先来探究下这个的原因;3、写出一个未使用指针的函数,模拟内存调用,揭示形参改变,实参不改变的本质;4、由之前对*p的操作引发对此程序的修改思考;5、写出使用指针该函数的内存调用;观察内存的调用,总结出形参改变实参不变的原因;并思考改进方法。以内存调用的方式,揭示了函数调用的实质,再在此基础上,引导学生修改程序,最终实现功能,使学生对指针引用的印象更为深刻。指针变量与数组的关系大家还记得曾经我们输出过数组吧?1、给出printf(”%d”,a);(a是一个数组的数组名)2、分析输出结果:是一个地址;3、结论:数组名储存的也是一个地址;4、那么它可以直接赋值给一个与之相同类型的指针;5、被赋值之后的指针可以有什么操作呢?6、和数组一样的下标操作;7、所特有的自加的操作;(友情提示:大家也可以尝试一下数组是否也有这种操作?)8、两种操作进行比较:9、*(p+n)=p[n]学生跟随老师的引导,思考一个个输出的结果,并最终根据思考结果,总结出一维数组与指针变量的异同。使用有联系的问题,提问学生,学生在思考的过程中,总结出一维数组与指针变量的异同以此来突破难点:学生了解当指针被赋值数组的地址时的操作10、9、总结:一维数组与指针变量基本相同,不同:一维数组是一个常量,不能进行赋值操作;11、10、小问题:*p+1,与*(p+1)的区别?数组与指针题目讲解题目:输入5个数字,逆序输出1、引导学生思考,该功能实现;2、以程序代码实现与内存调用结合起来,一起观察运行效果。思考如何实现,观察运行效果以一个实例,加深学生对指针与数组的理解
本文标题:指针 教案
链接地址:https://www.777doc.com/doc-3238278 .html