c语言宏定义教学设计

上传人:繁星 文档编号:43100048 上传时间:2018-06-04 格式:DOC 页数:10 大小:90.50KB
返回 下载 相关 举报
c语言宏定义教学设计_第1页
第1页 / 共10页
c语言宏定义教学设计_第2页
第2页 / 共10页
c语言宏定义教学设计_第3页
第3页 / 共10页
c语言宏定义教学设计_第4页
第4页 / 共10页
c语言宏定义教学设计_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《c语言宏定义教学设计》由会员分享,可在线阅读,更多相关《c语言宏定义教学设计(10页珍藏版)》请在金锄头文库上搜索。

1、 教教 学学 计计 划划 课题宏定义宏定义教学目标1.让学生了解预处理命令定义及分类2.让学生掌握宏定义的概念及分类3.让学生掌握无参宏的展开方法及注意事项重点难点1.预处理命令的意义2.无参宏的展开方法及运用教学方法1.任务驱动法2.讲练法3.讨论法教学资源教材、多媒体课件、板书教学活动流程设计一、导入新课一、导入新课1.复习提问例 1:#include int main( ) printf (”This is a C program.n”);return 0; 上述例题是我们学习 c语言来碰到的第一个完整的 c 程序,请问同学们,这个程序的输出结果是什么?(请学生起立回答)答案:2.导入新

2、课好,这个程序是最简单的程序,也是最完整的程序,我们看这个程序的第一句#include ,有没有预习过的同学能告诉老师,这条命令叫什么命令?(请学生起立回答)答案:预处理命令。是的,这就是预处理命令,那么预处理命令的意义何在?它为什么需要写在程序开头呢?让我们带着这些问题,一起进行今天的学习。二、讲授新课二、讲授新课1.展示课件,呈现教学目标,让学生了解当前所学知识主题,积极参与探索求知。2.创设情境,提出驱动任务:任务 1:预处理的定义提问:“预处理”的字面意思?(请学生起立回答)答:提前进行处理。所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是语言的一个重

3、要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。对于上述定义,可能有点难以理解,我们可以用做红烧鱼来理解这个过程。要做红烧鱼,不能直接下锅烹调,而是先需要小工对鱼进行一个预先处理,比如刮鱼鳞、去鱼鳃、腌制等步骤,这样一些提前处理的过程,我们称之为预处理,预处理完成后,才可以由大厨开始正式烹调;在计算机中,预处理的过程不被包含在编译过程中,它发生在正式编译前。任务 2:预处理的分类C 提供的预处理功能:宏定义文件包含条件编译预处理功能分为三类,分别用来实现宏定义命令、文件包含命令、条件编译命令,今天我

4、们来学习第一种:宏定义。任务 3:宏定义概念在 c 语言源程序中,允许用一个标识符来表示一个字符串,这种规则称之为“宏”。如:#define PI 3.14159 表示用 PI 这个标识符来表示字符串 3.14159,这个语句就被称为宏。宏定义的目的,通常是用于简化程序,用一个简单的标识符替代一长串字符串、表达式,这样我们之后再用到这个字符串/表达式时,就可以不宏定义命令文件包含命令条件编译命令实现用再写这么长的字符串/表达式,程序中所有的设置,都是为了使程序进一步优化。任务 4:宏定义的注意点(1)标识符被称为“宏名”。在预处理的时候,对程序中所有出现的宏名,都用宏定义中的字符串代替,这种替

5、换过程,称为“宏展开”或“宏替换”。提问:标识符由什么组成?有什么特点?(请学生起立回答)答案:标识符右字母、数字、下划线组成,且首字符只能、是字母或者下划线。如定义宏名为 a,字符串为”student”,则之后程序中凡是出现”student”的地方,系统都会用 a 进行替换,可以参考 office 里的“替换”功能。(2)宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的, #define 就是一个宏定义命令。宏替换不在正式编译的过程中,不占用正式编译运行时间。任务 5:无参宏的一般格式#define 标识符 字符串如:#define PI 3.14159 说明:(1) #

6、 表示这是一条预处理命令;(2)#define 表示这是宏定义命令;(3) 标识符表示定义的宏名; 如上例里的 PI(4)字符串可以是常数、表达式、格式串等。 如上例的 3.14159练习:1.当输入为 3 时,以下程序结果是:#include #define M (y*y+3*y)main() int s,y;printf(“input a number: “);scanf(“%d“, s=3*M+4*M+5*M;printf(“s=%dn“,s);解释:上例程序中首先进行宏定义,定义 M 来替代表达式(y*y+3*y),在 s=3*M+4*M+5* M 中作了宏调用。在预处理时经宏展开后该

7、语句变为:s=3*(y*y+3*y)+4*(y*y+3*y)+5*(y*y+3*y);但要注意的是,在宏定义中表达式(y*y+3*y)两边的括号不能少。否则会发生错误。如当作以下定义后:#difine M y*y+3*y在宏展开时将得到下述语句:s=3*y*y+3*y+4*y*y+3*y+5*y*y+3*y;这相当于:3y2+3y+4y2+3y+5y2+3y;显然与原题意要求不符。计算结果当然是错误的。因此在作宏定义时必须十分注意。应保证在宏代换之后不发生错误。2.当输入为 3 时,以下程序结果是:#include #define M y*y+3*ymain() int s,y;printf(

8、“input a number: “);scanf(“%d“, s=3*M+4*M+5*M;printf(“s=%dn“,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;这相当于:3y2+3y+4y2+3y+5y2+3y;所以结果为 135.任务 6:无参宏的几点说明(1)宏名一般习惯用大写字母表示,以便于变量名区分,但也可用小写字母表示;(2)用宏名代替一个字符串,当需要改变程序中字符串内容时,只需在宏定义中进行改变即可;

9、(3)宏定义只做简单置换,不做正确性检查,即预处理时不做任何语法检查,不占用内存运行时间;如:#define PI 3.14A26 即使语句发生了错误,但预处理时不会报错,仍会用 3.14A26 替代所有的 PI。(4)宏定义不是 c 语句,不必在行末加分号;若加了分号,则会连分号一起置换;如:#define PI 3.14;则宏展开时,会用 3.14;替代所有的 PI。(5)#define 命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。通常,#define 命令写在文件开头,函数之前,作为文件的一部分,在此文件范围内有效。可对比之前学的全局变量的有效范围。三、巩固练

10、习三、巩固练习1.以下关于宏的描述正确的是:(C)A.宏名必须用大写字母表示B.宏替换时要进行语法检查C.宏替换不占用运行时间D.宏定义中不允许引用已有的宏名2.c 语言编译系统对宏定义是:(D)A.在程序运行时进行代换处理的B.在程序连接时进行处理的C.和源程序中其它 c 语句同时进行编译的D.在对源程序中其他成分正式编译之前进行处理的四、归纳小结四、归纳小结1.宏定义一般形式:#define 标识符 字符串标识符被称为“宏名”,一般用大写字母表示;字符串可以是常数、表达式、格式串等,编译时将宏名替换成字符串,此过程称为“宏替换”,替换过程不做正确性检查;2. 宏定义不是 c 语句,宏定义不

11、必在行末加分号;3.#define 命令出现在程序中函数的外面,宏名的有效范围为定义命令之后到本源文件结束。五、课堂作业五、课堂作业c 程序试题汇编P141,T8.2P142,T8.10,8.11P144,T8.19P145,T8.26板 书 设 计一、预处理的定义二、预处理的分类宏定义文件包含条件编译三、宏定义概念四、宏定义的注意点五、无参宏的一般格式#define 标识符 字符串六、无参宏的几点说明教 学 后 记本节主要讲解了预处理命令的概念及宏定义的概念和用法,重点 在于让学生理解预处理命令处理的流程及无参宏展开的方法,通过两 个例题,让学生在练习中领会宏展开的方法,比单纯地讲概念更能加 深学生的印象,学生通过预习,能带着疑问听课,比不加预习直接听 课更有效果,做题也顺畅许多,课后需多布置习题,能让学生加以巩 固。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号