c语言宏定义教学设计.docVIP

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

135****6994 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档