2010C程序教案(第10章).docVIP

  1. 1、本文档共4页,可阅读全部内容。
  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文档。上传文档
查看更多
2010C程序教案(第10章)

【教学课题】 预编译处理 (第10章预编译处理,1、2节) 【目的要求】 了解编译预处理的特点和功能,掌握编译预处理中的宏定义,理解文件包含。 【教学重点】 宏的定义与使用(无参和有参),理解带参的宏和函数的区别。 【教学难点】 宏的定义与使用(无参和有参),理解带参的宏和函数的区别。 【教学方法】 任务驱动法,问题引导法 【教学手段】 讲授+多媒体演示+学生动手 【作业布置】 1、定义一个带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换的两个值。 2、分别用函数和带参的宏,从3 个数中找出最大数。 一、提出任务,引入课题 例1:#includestdio.h main() { int a……} 例2:#includestdio.h #define N 100 main() { int a[N];…… }。 一般C程序的开发执行过程: 编辑 → 编译 → 连接 → 执行 含有预处理命令的C程序: 编辑 → 预处理 → 编译 → 连接 → 执行 二、分析任务,讲授新课 C提供的预处理功能主要有以下三种: 宏定义、文件包含、条件编译。 分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“ #” 开头。 (一)宏替换(P172) 宏: 代表一个字符串的标识符。 宏名:被定义为“宏”的标识符。 宏代换(展开):在编译预处理时,对程序中所有出现的 “宏名”,用宏定义中的字符串去代换的过程。 ? 不带参数的宏定义 A、一般形式: #define 标识符 替换文本 例如:#define PI 3.14159 main() { float l,r; printf( “Input a number :”); scanf (“%f”,r); l=2*PI*r printf(“l=%f\n”,l); } 说明: ⑴宏名一般用大写表示,以便与变量名区分。 ⑵使用宏名使程序易读,易修改。 ⑶只作简单的置换,不作正确性检查。 ⑷宏定义不是C语句,不必在行末加分号。 ⑸宏名的作用域一般从自定义命令到本源文件结束。 ⑹可以用# undef命令终止宏定义的作用域。 ⑺宏定义允许嵌套,允许层层置换。 ⑻宏名在源程序中用双引号括起来,则TC中预处理不对其作宏代换。 例: printf(“L=%f”, L); 中双引号内L不替换。 ⑼宏定义与定义的变量不同,宏只作字符替换,不分配内存空间。 ⑽对“输出格式”进行宏定义,可以减少书写麻烦. 举例: 例1、不带参数的宏的程序(见P173) 2 格式:#define 宏名(参数表) 替换文本 ? 例:#define s(a,b) a*b {…… area =s(3,2); ……} 对带参的宏展开后,为area=3*2; 说明: ⑴对带参数的宏展开只是将宏名后括号内的实参字符串代替#define命令行中的形参。 ⑵宏定义时,在宏名与带参数的括号之间不应加空格,否则将空格以后的字符都作为替代字符串的一部分。 ⑶有参宏的展开,只是将实参作为字符串,简单地置换形参字符串,而不作任何语法检查。在定义有参宏时,在所有形参和整个字符串外,均加一对圆括号。 带参宏与函数的区别: 1、函数调用时,先求实参表达式值,后代入。而带参的宏只是进行简单的字符替换。 2、函数调用是在程序运行时处理的,分配临时的内存单元。而宏展开则是在编译时进行的,不分配内存单元,不进行值的传递,也无“返回值”。 3、对函数中的实参和形参都要定义类型,类型应一致。而宏不存在类型问题,宏名和参数无类型,只是一个符号代表,展开时代入指定的字符即可。 例2、带参数宏的使用实例(P174) “文件包含”处理 “文件包含”处理是指将指定的被包含文件的全部内容插到该控制行的位置处,使其成为源文件的一部分参与编译。因此,被包含的文件应该是源文件。 通常置于源程序文件的首部,故也称为“头文件”。 C编译系统提供的头文件扩展名为“.h”,但设计者可根据实际情况,自行确定包含文件的后缀、名字及其位置。 一般形式,#include “文件名” 或 #include 文件名 二者的区别: 用尖括号时称为标准方式,系统到存放C库头文件所在的目录中寻找要包含的文件。 用双引号时,系统先在用户当前目录中寻找要包含的文件,若找不到,再按标准方式查找。 说明: 编译预处理时,预处理程序将查找指定的被包含文件,并将其复制到#include命令出现的位置。 常用在文件头部的被包含文件,称为“标题文件”或“头部文件”,常

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档