《中职《C语言程序设计》教案第14课猜数字游戏.docx》由会员分享,可在线阅读,更多相关《中职《C语言程序设计》教案第14课猜数字游戏.docx(5页珍藏版)》请在第壹文秘上搜索。
1、课题猜数字游戏课时2课时(90min)教学目标知识目标:(1)理解指针的相关概念(2)掌握指针变量的定义、初始化和引用方法(3)掌握空指针和void指针的使用方法能力目标:能在程序中综合运用指针变量素质目标:通过学习指针变量,增强创新意识教学重难点教学重点:指针的基本概念,指针变量的定义及初始化,指针变量的引用,空指针和VOid指针教学睚点:指针变量的引用教学方法问答法、讨论法、i并授法、实践法教学用具电脑、投影仪、多媒体课件、教材教学过程主要教学内容及步骤课前任务【教师】布置课前任务,和学生负责人取得联系,让其提醒同学通过APP或其他学习软件,完成课前任务请同学们设计一款简单的猜数字游戏,并
2、说明游戏设计思路。【学生】完成课前任务考勤【教师】使用APP进行签到【学生】班干部报请假人员及原因问题导入【教师】请同学们扫码观看”变量的访问方式“视频(详见教材),讨论并回答以下问题:变量的访问方式可分为哪几种?什么是指针?什么是指针变量?【学生】思考、举手回答传授新知【教师】讲解指针的基本概念,指针变量的定义及初始化,指针变量的引用,空指针和Void指针一、指针的基本概念【教师】介绍指针的概念,指针变星的概念每个变量在内存中都占用一定的存储空间,不同数据类型的变量占用的字节数是不一样的。例如,整型变量占用4个字节,字符型变量占用1个字节。为了正确地访问这些变量,内存中的每个字节都会被编上号
3、码,且每个编号都是唯一的,因此,可以根据编号准确地找到存储在某个字节中的数据。这个内存单元的编号就称为内存地址,即指针.例如,在格式输入语句scanf(%/,&x)中,&x为变量X的指针(内存地址)在C程序中,允许用一个变量来存放指针,这个变量称为指针变量,而指针变量的值就是某个内存单元的地址。【课堂讨论】【教师】请学生分组讨论以下问题请同学们以小组为单位,讨论指针变量的值与普通变量的值有何区别.【学生】讨论、总结、回答【教师】总结学生的回答二、指针变量的定义及初始化【教师】多媒体观看“指针变量”视频(详见教材),让学生了解指针变量的定义及初始化1 .指针变量的定义与普通变量一样,指针变量也必
4、须先定义后使用.定义指针变量的一般形式如下。类型说明符*指针变量名1,*指针变量名2;其中,类型说明符是指针指向的目标数据的类型;指针变量名前的表示该变量的类型是指针型变量,不能省略。例如:int*pl;/*定义指向整型变量的指针变量pl*/char*p2,*p3;/*定义指向字符型变量的指针变量p2和p3*/其他类型的变量允许和指针变量在同一个语句中定义。例如:intm,*p;/*定义2个变量,其中m是整型变量,P是指向整型变量的指针变量*/2 .指针变量的初始化可以在定义指针变量的同时为其赋初值,即指针变量的初始化.由于指针变量是指针类型,故所赋初值应是一个地址值。其一般形式如下:类型说明
5、符*指针变量名I=地址1,*指针变量名2=地址2;例如:inti;int*p=&i;/*定义指针变量p指向整型变量i*/表示地址的形式可以是&变量名数组名其他指针变量”等.例如:chars20;char*str=s;/*定义指针变量str指向字符数组S的首地址*/【课堂问答】【教师】随机邀请学生回答以下问题请同学们思考,上次课中数组名作为函数参数,实际上传递的是什么?【学生】聆听、思考、回答【教师】总结学生的回答三、指针变量的引用【教师】介绍指针变量引用的三种情况:给指针变量赋值,引用指针变量指向的变量,引用指针变量的值引用指针变量时,一般包括以下三种情况。1.给指针变量赋值在程序执行过程中,
6、可以使用赋值语句为指针变量赋值,一般形式如下:指针变量=地址;例如:inta=2O,b=3O,*p1,*p2;pl=&a;/*把变量a的地址赋给指针变量pl*/p2=&b;/*把变量b的地址赋给指针变量p2*/在此例中,定义了两个整型变量a和b,a的初值为20,b的初值为30;定义了指针变量pl指向变量a,指针变量p2指向变量b,其相互之间的关系如图7-1所示(详见教材)。指针变量和一般变量一样,存放其中的值是可以改变的,即可以改变它们的指向。例如,在上述定义语句后,执行赋值语句p2=p1,则p2与Pl指向同一对象a,此时*p2就等价于a,而不是b,如图7-2所示(详见教材)。小提示(1)&运
7、算符是取地址运算符,其功能是返回其后所跟操作数的地址,其结合性为从右向左。例如,&a是变量a的地址。(2)运算符是指针运算符,其功能是取该指针指向的存储单元的值。例如,*p代表指针变量P指向的对象。2 .引用指针变量指向的变量如果在上述定义语句后面执行赋值语句*p2=*p1;,即inta=20,b=30,*p1,*p2;pl=&a;/*把变量a的地址赋给指针变量pl*/p2=&b;/*把变量b的地址赋给指针变量p2*/*p2=*p1;/*引用指针变量指向的变量*/则表示将PI指向的内容赋给P2所指的区域,即等价于b=a;.3 .引用指针变量的值若要输出指针变量P的值,即a的地址,可以用如下语句
8、实现。inta;int*p=&a;printf(%x,p);【课堂练习】* 【教师】出示【例,组织学生答题试分析以下代码的输出结果,程序详见教材。【学生】聆听、思考、分析【教师】解析例题程序运行结果如图73所示。此例中定义了3个变量x、y和p,intx=10,*p,y;语句中的*p表示将变量P声明为指针变量,用与一般变量进行区别;p=&x;语句表示指针变量P指向X;y=*p;语句中的*p表示使用指针变量P,此时是运算符,表示取指针P所指向的存储单元的内容,即取变量X的值。因此,*P和y的值都是10,且P为X的地址;y和X是不同的变量,故它们的内存地址是不同的。【课堂讨论】* 【教师】请学生分组
9、讨论以下问题请同学们以小组为单位,讨论在指针的使用过程中,所能表示的含义有哪些?* 【学生】讨论、总结、回答* 【教师】总结学生的回答)提示当程序运行结束后,存储空间都会被释放,下次运行时会重新分酉洲址,故每次运行后输出的地址是不相同的。四、空指针和Void指针【教师】介绍空指针和Void指针的概念,及使用方法1 .空指针空指针是不指向任何对象的指针,即该指针没有指向任I可内存单元。构造空指针的方法主要有以下两种。(1)赋。值。例如:int*p=0;(2)赋NULL值。例如:int*p=NULL;空指针常用来初始化指针,避免野指针的出现。2 .void指针指针变量也可以定义为Void型,VOi
10、d指针是不指定返回值数据类型的指针,该指针有自己的存储单元,构造void指针的一般形式如下。void*指针变量名;例如:void*p;任何指针都可以赋值给Void指针。例如:intx=10;int*q=&x;p=q;/*不需要进行强制类型转换*/但是,若想将void指针赋给其他类型的指针,就须进行强制类型转换。例如:int*t=(int*)p;/*需要进行强制类型转换*/printf(,*p=%d,*(int*)p);/*输出P指向的存储单元内容*/五、任务实施【教师】多媒体观看“猜数字游戏”视频(详见教材),让学生熟悉该游戏的规则,设计思路,代码流程,代码实现1 .任务分析通过运算符得到存放
11、随机数和用户输入数字的变量地址,赋值给指针变量P和q;通过运算符取得指针变量P和q所指向存储单元的值并进行比较。小提示在C语言中,使用VSldlibh头文件中的函数rand()来生成随机数(值为0RAND-MAX,RAND_MAX是一个预定义的常量,其值等于int类型的最大值)函数rand()生成的随机数不是真正意义上的随机数,是伪随机数。一般需要通过函数Srand()初始化随机种子。相同的随机数种子产生的随机数是一样的,失去了随机性的意义,所以通常使用Iime()函数值(即当前时间)作为Srand()的参数,因为两次调用rand()函数的时间通常不同,这样就能够保证随机性。2 .参考鼾(详见
12、教材)3 .运行结果程序运行结果如图7-4所示(详见教材)。【课堂问答】【教师】随机邀请学生回答以下问题请同学们思考,上述程序中,如果想进一步提示用户输入数据的左右边界范围,该如何实现?【学生】聆听、思考、回答【教师】总结学生的回答【学生】聆听、思考、理解、记录课堂实训I【教师】介绍课堂实训要求,以及实训内容,要求学生按照实训要求完成实训任务请同学们按照任务实施中猜数字游戏的程序设计思路和步骤进行练习。定义变量a,b,并将a,b赋值给指针P,q,分别表示生成的随机数和用户猜测的数字,定义变量n代表猜测的次数。调用随机数函数rand(),生成随机数,然后使用do-while循环判断用户输入的数字
13、与生成的随机数是否相等,不相等则提示用户输入的数据大了或者小了,相等则结束程序。【学生】按照要求进行操作,完成后总结自己哪些地方做得很好,还有哪些地方需要改进课堂小结【教师】简要总结本节课的要点本次课介绍了指针的基本概念,内存单元的编号就称为内存地址,即指针e介绍了指针变量的定义,包括类型说明符、*号、指针变量名称,指针变量的初始化,其所赋初值应是一个地址值。讲解了指针变量的引用,包括给指针变量赋值,引用指针变量指向的变量,引用指针变量的值。介绍了空指针和void指针,空指针是不指向任可对象的指针,void指针是不指定返回值数据类型的指针。最后通过任务实施的猜数字游戏,练习本次课所学知识。【学生】总结回顾知识点作业布置【教师】布置课后作业请根据本课内容,完成课后习题中的相关习题。【学生】完成课后任务教学反思