- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
教学计划
课题
宏定义
教学目标
1.让学生了解预处理命令定义及分类
2.让学生掌握宏定义的概念及分类
3.让学生掌握无参宏的展开方法及注意事项
重点难点
1.预处理命令的意义
2.无参宏的展开方法及运用
教学方法
1.任务驱动法
2.讲练法
3.讨论法
教学资源
教材、多媒体课件、板书
教学活动流程设计
一、导入新课
1.复习提问
例1:#includestdio.h
intmain()
{printf(”ThisisaCprogram.\n”);
return0;
}
上述例题是我们学习c语言来碰到的第一个完整的c程序,请问同学们,这个程序的输出结果是什么?(请学生起立回答)
答案:
2.导入新课
好,这个程序是最简单的程序,也是最完整的程序,我们看这个程序的第一句#includestdio.h,有没有预习过的同学能告诉老师,这条命令叫什么命令?(请学生起立回答)
答案:预处理命令。
是的,这就是预处理命令,那么预处理命令的意义何在?它为什么需要写在程序开头呢?让我们带着这些问题,一起进行今天的学习。
二、讲授新课
1.展示课件,呈现教学目标,让学生了解当前所学知识主题,积极参与探索求知。
2.创设情境,提出驱动任务:
任务1:预处理的定义
提问:“预处理”的字面意思?(请学生起立回答)
答:提前进行处理。
所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。
对于上述定义,可能有点难以理解,我们可以用做红烧鱼来理解这个过程。要做红烧鱼,不能直接下锅烹调,而是先需要小工对鱼进行一个预先处理,比如刮鱼鳞、去鱼鳃、腌制等步骤,这样一些提前处理的过程,我们称之为预处理,预处理完成后,才可以由大厨开始正式烹调;在计算机中,预处理的过程不被包含在编译过程中,它发生在正式编译前。
任务2:预处理的分类
实现宏定义命令
文件包含命令条件编译命令C提供的预处理功能:
宏定义
实现
宏定义命令
文件包含命令
条件编译命令
文件包含
条件编译
预处理功能分为三类,分别用来实现宏定义命令、文件包含命令、条件编译命令,今天我们来学习第一种:宏定义。
任务3:宏定义概念
在c语言源程序中,允许用一个标识符来表示一个字符串,这种规则称之为“宏”。
如:#definePI3.14159
表示用PI这个标识符来表示字符串3.14159,这个语句就被称为宏。
宏定义的目的,通常是用于简化程序,用一个简单的标识符替代一长串字符串、表达式,这样我们之后再用到这个字符串/表达式时,就可以不用再写这么长的字符串/表达式,程序中所有的设置,都是为了使程序进一步优化。
任务4:宏定义的注意点
(1)标识符被称为“宏名”。在预处理的时候,对程序中所有出现的宏名,都用宏定义中的字符串代替,这种替换过程,称为“宏展开”或“宏替换”。
提问:标识符由什么组成?有什么特点?(请学生起立回答)
答案:标识符右字母、数字、下划线组成,且首字符只能、是字母或者下划线。
如定义宏名为a,字符串为”student”,则之后程序中凡是出现”student”的地方,系统都会用a进行替换,可以参考office里的“替换”功能。
(2)宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的,#define就是一个宏定义命令。
宏替换不在正式编译的过程中,不占用正式编译运行时间。
任务5:无参宏的一般格式
#define标识符字符串
如:#definePI3.14159
说明:
(1)#表示这是一条预处理命令;
(2)#define表示这是宏定义命令;
(3)标识符表示定义的宏名;如上例里的PI
(4)字符串可以是常数、表达式、格式串等。如上例的3.14159
练习:
1.当输入为3时,以下程序结果是:
#includestdio.h
#defineM(y*y+3*y)
main(){ints,y;
printf(inputanumber:);
scanf(%d,y);
s=3*M+4*M+5*M;
printf(s=%d\n,s);}
解释:上例程序中首先进行宏定义,定义M来替代表达式(y*y+3*y),在s=3*M+4*M+5*M中作了宏调用。在预处理时经宏展开后该语句变为:
s=3*(y*y+3*y)+4*(y*y+3*y)+5*(y*y+3*y);
但要注意的是,在宏定义中表达式(y*y+3*y)两边的括号不能少。
文档评论(0)