C++面向对象程序设计标准教案(共36页)

上传人:txadgkn****dgknqu... 文档编号:53531887 上传时间:2022-02-10 格式:DOC 页数:42 大小:219.50KB
收藏 版权申诉 举报 下载
C++面向对象程序设计标准教案(共36页)_第1页
第1页 / 共42页
C++面向对象程序设计标准教案(共36页)_第2页
第2页 / 共42页
C++面向对象程序设计标准教案(共36页)_第3页
第3页 / 共42页
资源描述:

《C++面向对象程序设计标准教案(共36页)》由会员分享,可在线阅读,更多相关《C++面向对象程序设计标准教案(共36页)(42页珍藏版)》请在装配图网上搜索。

1、精选优质文档-倾情为你奉上四川警安职业学院标准教案纸课程名称第一章 C+程序设计基础第1讲、C+程序设计基础任课教师 授课时间09.02.23地点六多媒体授课班级06计信人数53人教学目标对面向对象的程序设计的思想有一个总体认识,掌握面向对象的基本概念、对象和类的概念,理解对象的特性;掌握C+语言的基本概念。 教学重点对象和类的概念,掌握对象的封装性、继承性和多态性的这三大对象的特征。熟练掌握类和对象的关系。教学难点对象的概念,封闭、继承和多态性的理解。教学时数2节教学方法讲授法、演示法、教学手段多媒体教学教学内容:一、 C+语言简介1、C+语言的发展史 C+源于C语言,而C语言是在B语言的基

2、础上发展起来的。 1972年美国贝尔实验室的Dennis M.Ritchie为克服B语言的诸多不足,在B语言的基础上重新设计了一种语言,取其第二字母C,故称为C语言。 1980年贝尔实验室的Bjarne Stroustrup对C语言进行了扩充,推出了“带类的C”,多次修改后起名为C+。以后又经过不断的改进,发展成为今 天的C+。 2、C+的编程模式结构化的程序设计 面向对象程序设计 3、C+语言的特点C+语言继承了C语言的特点:丰富的运算符和数据类型、结构化的程序设计方法、高效的机器代码、良好的可移植性。 C+语言扩展了C语言的功能,增加了面向对象机制。与C语言相比,C+语言的错误检查机制强。

3、 二、面向对象方法的基本概念 1、对象 按照面向对象的观点,对象(object)是现实世界中各种各样实际存在的事物,包括有形的对象和无形的对象。对象是构成世界的一个独立单位,它具有自己特定的属性(attribute)(如大小、形状和重量等)和行为(behavior)(如生长、行走、转弯和运算等),人们通过对象的属性和行为来认识对象。 在计算机科学中,对象是系统中用来描述客观事物的一个实体,它是构成系统的基本单位,而系统可以看作是由一系列相互作用的对象组成。 2、类 类是面向对象语言必需提供的用户定义的数据类型,它将具有相同状态、操作和访问机制的多个对象抽象成为一个对象类。 类可用公式表示: 类

4、=数据结构+对数据进行操作的函数一个对象又称作类的一个实例(instance)。 3、消息 面向对象方法提供了对象之间的通信机制。程序由一些相互作用的对象(类)构成,对象之间的交互通过发送消息来实现。程序通过执行对象的各种行为方法,来改变对象的状态(属性数据),从而使该对象发生某些事件。当对象发生某些事件时,通常需向其他相关对象发送消息,请求它们作出一些处理。 消息是向某对象请求服务的一种表达方法。对象内有方法和数据,外部的用户或对象对该对象提出的服务请求,可以称为向该对象发送了消息。 4、对象的特征 继承 继承是面向对象语言的另一特性。类与类之间可以组成继承层次,一个类的定义(子类)可以定义

5、在另一个已定义类(父类)的基础上。子类可以继承父类中的属性和操作,也可以定义自己的属性和操作。 封装 封装有两个涵义:第一个涵义是,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。第二个涵义也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界(或者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。 多态性 多态性是指一个接口名称具有多种功能三、 类的定义 C+定义类的基本形式如下:class private: ;public:;protected:;private: 只能由该类中的方法访问,不能被该类的对象访问. protected: 可以被该类

6、中的方法和其友元函数访问,但不能被该类的对象访问 public: 可以被该类中的方法和其友元函数访问,也可以由该类的对象访问 四、变量和常量 常量的值是始终不变的,而变量的值是可以被改变的。 常量和变量的主要区别在于:常量不占内存空间,不能为常量赋值;而变量需要占内存空间,可以给变量赋不同的值。 五、函数 函数是C+程序的构成基础。C+程序都是由一个个函数所组成的。 C+函数有三种:主函数(即main( )函数)、C+提供的库函数和自定义函数。六、输入和输出 程序从外部设备获得数据称为输入(input),反之,将程序中的数据送到外部设备如屏幕、打印机等称为程序的输出(output)。 1、标准

7、输出语句cout ”lets learn to write a C+ Program.”;cout endl;cout”chicken hen cock “endl;cout” ” chicken” ”hen” ”cockmyage;#includevoid main(void)int myage;cout myage;/输入年龄(一个整数)coutmyageendl;七、预处理命令 #include 预处理命令以位于行首的符号“#”开始,C+提供的预处理有宏定义命令、文件包含命令和条件编译命令三种。 八、命名 标识符是由程序员定义的字符串,用以命名程序中变量名、函数名、常量名和对象名等。标识

8、符由字母、数字和下划线“_”组成。第一个字符只能以字母或下划线开头,而且不能是数字。 与有些语言不同,C+编译器把大写和小写字母当作不同的字符,这个特征称为“大小写敏感”。 九、注释 注释是用来帮助阅读、理解及维护程序。在编译时,注释部分被忽略,不产生目标代码。C+语言提供两种注释方式。 一种是与C兼容的多行注释,用/*和*/分界。另一种是单行注释,以“/”开头的表明本行中“/”符号后的内容是注释。 十、C+程序的运行环境 1. Turbo C+2.C+ Builder3.Dev-C+4.Visual C+ Visual C+ 6.0在项目文件管理、调试及操作的亲和力等方面上都略胜一筹。 作

9、业熟练VC+的开发环境。教学反馈四川警安职业学院标准教案纸课程名称第二章 数据类型和表达式第2讲 数据类型和表达式任课教师 授课时间09.3.02地点六多媒体授课班级07信管人数53人教学目标掌握数据类型的分类、适用范围及表示方法;熟练掌握表达式的各种运算。教学重点数据类型的分类及其表示方法,各种运算符的运算规则教学难点数据类型之间表示方法,运算符的优先级教学时数2节教学方法讲授法、演示法、实践操作法教学手段多媒体教学教学内容:一、数据类型在C+中,数据类型分为两大类:基本数据类型和构造数据类型。构造数据类型从基本数据类型“演变”而来,不同的演变方法构成了不同的数据类型。 (一)整形 C+的整

10、型数一般占用四个字节,也可能是两个字节(取决与具体的计算机系统)。整型还可以通过加修饰符来改变它的长度。1、整形的分类 (1)基本型:用int来标识(2)短整型:用short int 标识,或简写成short(3)长整型:用long int 标识,或简写成long(4)无符号型:用unsigned标识。相反,不加unsigned标识,则默认是有符号的(singed)。无符号型又可与上述三种类型匹配构成以下三种形式:无符号基本型:用unsigned int或unsigned标识无符号短整型:用unsigned short标识无符号长整型:用unsigned long标识2、整形常量 整型常量即整

11、常数。C+中的整数可以用十进制、八进制和十六进制来表示。3、变量的定义变量定义的一般格式为:=,=,;例:int a,b,c; /定义a,b,c为整型变量long x1,y2; /定义x1,y2为长整型变量unsigned a1,b1; /定义a1,b1为无符号整型变量short x,y,z=6; /定义短整型变量x,y,z,对z 进行了初始化,值为6注意:允许在一个类型说明符后,定义多个相同类型的变量。各变量名之间用逗号间隔。类型说明符与变量名之间至少用一个空格间隔。最后一个变量名之后必须以“;”号结尾。允许在定义变量时同时对变量赋值以进行变量的初始化。变量定义必须放在变量使用之前,即“先定

12、义,后使用”。在函数内一般放在函数体的开头部分。 (二)实型分类 1、单精度型:用float来标识,占4个字节2、双精度型:用double来标识,占8个字节。3、长精度型:用long double来标识,占10个字节 实型变量的定义:实型变量定义的格式和规则与整型相同(三)字符型 1、字符型常量:普通字符;转义字符 2、字符型变量(1)字符变量用来存储字符常量,即单个字符。(2)字符变量的类型说明符是char。字符变量类型定义的格式和书写规则都与整型变量相同。 3、字符串常量 字符串常量是用一对双引号括起来的字符序列。(四)逻辑型 逻辑型也称布尔型,它用bool来标识。逻辑型常量只有两个值:即

13、true(真)和false(假),在C+中逻辑真是用非0来表示,而运算结果为逻辑真,是用数值1来表示,而对逻辑假,不管是参加运算,还是运算结果,都是用数值0来表示。(五)枚举型 枚举类型的定义:格式:enum 枚举类型名 枚举元素1, 枚举元素2, ,枚举元素n;定义语句以“;”结束,且各枚举元素不能同名;枚举类型名是用户自定义的标识符;该语句定义了一个枚举类型,且枚举类型中含有n个枚举常量,每个枚举常量均有值。如果不指定枚举元素的起始值,将自动从0开始为各个枚举元素设置初值,后面的枚举元素依次增1。如果指定某个枚举元素的值,则下一个枚举元素如果没有指定值,就是上一个枚举元素值加1。 二、表达

14、式l 表达式是描述数据加工的一种方法。它是由操作对象(常量、变量、函数等)和运算符组成的式子。l 表达式的类型由运算符和操作对象的类型决定。 l 表达式的求值是按运算符的优先级和结合性所规定的操作顺序进行。l 优先级是指在相邻的两种运算符中,应先执行哪一种。l 结合性是指两个同优先级的运算符相邻时,应按从左向右的顺序运算,还是按从右向左的顺序运算。(一)运算符根据操作数的个数可将运算符分为单目、双目和三目3类运算符。本节我们只讨论算术运算符、赋值运算符、自增自减运算符、关系运算符及逻辑运算符等基本运算符1、算术运算符 +(加法)、-(减法或负号)、*(乘法)、/(除法)、%(求余数)。 算术表

15、达式 算术表达式是由算术运算符连接的式子。2、赋值运算符赋值运算符是给变量或对象赋值,它分为基本赋值运算符和复合赋值运算符 。而最后进行赋值运算的表达式,称为赋值表达式。 简单赋值运算符基本赋值操作“=”, 是一种双目运算符,作用是将右操作数的值传递给左操作数。它的一般形式为: =复合赋值运算符3、自增自减运算符4、关系运算符5、逻辑运算符(二)运算符的优先级和综合性 表达式的操作一般遵循以下规则: 括号内的表达式优先计算;无括号的,按优先级从高到低进行计算; 若运算符的优先级相同,按结合性进行计算。 总结:1、五种算术运算符有优先级:其中乘()、除()、求余()优先于加()和减(),当然也可

16、用括号来改变其优先级,它们的结合性是自左向右。 2、自增自减运算符的优先级优于双目算术运算符,与+(正)和-(负)同级且它们操作顺序自右向左 3、算术运算符优先于关系运算符;、=优先于= =、!=;、=同级;= =、!=也是同级,它们的结合性自左向右 4、逻辑运算符的优先级顺序是:! & | 5、和其它运算符的优先级关系:! 双目算术运算符关系运算符&|。作 业教学反馈四川警安职业学院标准教案纸课程名称第三章 控制结构第3讲 顺序结构、选择结构任课教师 授课时间09.3.9地点六多媒体授课班级06计信人数53人教学目标掌握+语句的基本知识和三种基本程序结构;掌握构成选择结构的if,if-els

17、e和switch语句的使用教学重点if,if-else和switch语句的使用教学难点if,if-else和switch语句的使用教学时数2节教学方法讲授法、实践操作法教学手段多媒体教学教学内容:语句概述和程序结构 C+语言中的语句可分为空语句、说明语句、复合语句、表达式语句、函数调用语句和程序控制语句。一、语句概述1. 空语句 只由一个分号所构成的语句,它不执行任何动作。 例如:; ,/一般该语句是用来指明被转向的控制点或在特殊情况下作为循环语句的循环体。/2. 说明语句 对数据结构定义和描述、对变量的定义性说明、给变量赋初值的语句。在程序执行过程中,不对数据进行操作的执行,仅向编译程序提供

18、一些信息。说明语句可放在函数中允许出现语句的任何位置,也可以放在函数定义之外。例如:int x,y;/定义整形变量x,yfloat a,b=3.5; /定义浮点型变量a,b,并给b赋初值3.53. 表达式语句由表达式组成的语句,由一个表达式接一个分号组成。一般是描述算术运算、逻辑运算等。例如:a=a+3/表达式4. 函数调用语句在函数调用后加一个分号所构成的语句,称为函数调用语句。例如:sin(x);5. 程序控制语句 完成一定控制功能的语句,用于控制程序中语句的执行条件和执行顺序。例如:if (ab) c=a-b; /若ab,则c=a-belse c=b-a; /否则c=b-a6. 复合语句

19、由一对花括号“ ”括起来的若干语句的组合,在意义上是独立的,被视为单独一个语句。 凡是能用单独一个语句的地方,都能换用复合语句。复合语句的左、右花括号标明了复合语句的开始和结束,在右花括号的后面不需要再加分号。例如:if(ab)max=a; cout a;/复合语句elsemax=b; cout b;/复合语句else max=b; cout b;/复合语句二、程序结构 一个程序或函数从它的执行行为的角度来分析,都是由三种基本结构组合而成的,即顺序结构、选择结构和循环结构。1.顺序结构 按语句的先后顺序依次执行,这种结构称为顺序结构。 2.选择结构 根据某个条件,选择执行某一个语句。 3.循环

20、结构 根据某种条件,重复执行某一语句或若干个语句。三、选择结构 选择结构也称为条件分支结构。其执行流程的方式是:根据给定的条件,选择执行两个或两个以上分支程序段中的某一个分支程序段。C+中可由if语句和switch语句来实现这种选择结构。 1、条件语句 语句表达式语句是条件语句之一,它实现的功能是,根据给定的条件,决定执行两个分支中的一个分支。 单选条件语句if ()语句 如果内嵌语句有多个操作语句,用“”将几个语句括起来作为一个复合语句二选一条件语句一般格式为: if () 语句1 else 语句2嵌套的条件语句 条件语句中,内嵌的语句可以是任一C+的语句,当然也可以是条件语句。当条件语句的

21、内嵌语句是条件语句时,称为嵌套的条件语句。一般格式为:if ()语句1else if ()语句2else if ()语句3else 语句n2条件运算符 ? :执行过程:先求出表达式1的值,若其为非0,则求出表达式2的值(不求表达式3的值),把该值作为运算的结果;否则求出表达式3的值(不求表达式2的值),把它作为运算的结果。3开关语句 开关语句是switch语句,它也称为多分支选择语句。它可以根据给定的条件,从多个分支中选择执行一个分支的语句。格式:switch()case : case : case : default :语句n+1;执行过程:先计算条件表达式的值,从上向下依次与case后面的

22、常量表达式比较,若与某一常量表达式的值相等,就转去执行该case后的语句,一直执行到break语句或开关语句的右花括号为止。若无相等的值,有default分支,就执行该分支后的语句,否则什么也不执行。作 业教学反馈四川警安职业学院标准教案纸课程名称第三章 控制结构第4讲 循环结构任课教师 授课时间09.3.16地点六多媒体授课班级06计信人数53人教学目标掌握构成循环结构的for,while和do.while语句的使用;能利用三种基本结构解决实际问题。教学重点for,while和do.while结构的执行过程,利用前面的顺序结构,分支结构和这讲的循环结构解决具体的问题。教学难点for,whil

23、e和do.while循环中对于循环体执行条件的判断。教学时数2节教学方法讲授法、实践操作法教学手段多媒体教学教学内容:循环结构 :在进行程序设计时,常常会有一些需要重复执行的操作,可通过循环结构来实现这种重复执行的操作。例如,求s=1+2+3+100的和,在程序中不可能列出100个数再相加。一for语句 格式:for(;) 语句其中:三个表达式可以是C+中的任一符合语法规则的表达式;“语句”可以是任意C+的语句,是for的内嵌语句,把它称为循环体。 执行过程:1)先求出表达式1的值;2)求出表达式2的值,若表达式2的值为非0,则转去(3),否则转去(4);3)执行语句,然后求表达式3的值,转去

24、(2);4)结束循环,执行for的下一个语句。 说明:(1)从for语句的执行过程可知,语句执行时,先判断循环条件,若条件满足,才执行循环体,所以有可能循环体一次也不执行。(2)for语句的三个表达式可以是任意表达式,也可以是逗号表达式。(3)表达式之间以分号间隔;三个表达式可以部分省略或全部省略,但分号不能省略。例如:二、while语句 一般格式为:while () 语句其中:表达式是C+中的任意的表达式;语句可以是任意语句,也可以是复合语句,是while的内嵌语句,把它称为循环体。 执行过程:1)先求出表达式的值;2)当表达式的值为非0,转去(3),否则转去(4);3)执行循环体语句;4)

25、结束循环,执行while的下一个语句。三、dowhile语句 一般格式为:do语句while (); 其中表达式是C+中的符合语法规则的表达式;语句可以是任意C+的语句,是内嵌语句,把它称为循环体。执行过程:1)执行循环体语句; 2)求表达式的值;3)若表达式的值为非0,则转去(1),否则转去(4);4)结束循环,执行dowhile的下一个语句。四、循环的嵌套及应用作 业教学反馈四川警安职业学院标准教案纸课程名称第四章 数组和指针第5讲 一维数组和二维数组任课教师 授课时间09.3.23地点六多媒体授课班级07计信人数53人教学目标掌握一维数组的定义、赋初值以及简单应用; 掌握一维字符数组和字

26、符串之间的关系,了解字符串的常用操作; 掌握二维数组的定义、赋初值,了解其应用。 教学重点一维数组和二维数组的定义,相关操作和应用;字符串的操作。 教学难点一维数组、二维数组赋初值、应用;字符串与字符数组的之间的关系教学时数2节教学方法讲授法、演示法、实践操作法教学手段多媒体教学教学内容:一、一维数组 (一)一维数组的定义和初始化 1、数组的定义:数组是一组元素的集合,这些元素具有相同的数据类型,并且这些元素在计算机内存中是被存放在相邻的内存单元中的,这些元素不需要使用不同的变量名来定义,它们共享同一个名称,并且通过它们在数组中的位置加以区分。这个共享的名称叫做数组名。2、一维数组的定义: 在

27、使用数组前必须进行声明,定义一维数组的格式如下: ; 例如:要定义一个整型数组用来存放全班30个学生的成绩。 int cj30;/此数组包含30 个元素,这30个元素分别为:cj0、cj1、cj29,数据类型都为整型。/ 3、 初始化 当我们声明了一个数组之后,相当于在内存中开辟了一串连续的内存单元,接下来就要往这些内存单元中存储数据,我们把这一过程称之为赋值。如果是第一次进行赋值,则称之为初始化。 给数组赋值有下面几种方法:(1)可以给每个数组元素单独赋值: cj0=50; /可以直接赋以一具体的数据cj1=cj0; /可以把其它数组元素的值赋值给该数组元素 (2)可以对整个数组赋值如:fl

28、oat money 3=12.5,34.6,4.8;或者float money 3; money 3=12.5,34.6,4.8; 注意:这种赋值方法在使用时必须确保中给出的数据个数必须要小于或者等于数组的实际大小,否则将会出现错误。 在初始化时需要注意:(1)对数组赋值时,不能用一个数组对另外一个数组赋值。如:int merry3=mike3; (2)在声明数组的时候需要说明数组的大小,除非你在同一个语句中对它进行初始化 。如:int merry =1,2,3; /说明该数组有三个元素 这种情况是错误的:int merry ;4、一维数组的应用(1)一维字符数组 如果数组存放的数据属于文本,

29、我们就将这样的数组称为字符数组。 声明 一维字符数组的声明与一维整型数组的声明类似,只是将表示类型的关键字换成char,格式如下 char 数组名数组大小; 例如:char array10;代表在内存中申请10个连续的存储单元,这些存储单元用来存放字符。 赋值如:定义一个字符数组,需要存储的数据为:abcdchar name4;name0= a;name1= b;name2= c;name3= d; 也可以这样写: char name4=a, b, c, d; (2)字符串 字符串是一个以NULL(“0”)结尾的字符数组,换句话讲,如果数组以NULL结尾,那么该数组就称为字符串,简称为串。在实

30、际显示中,NULL是不可显示字符,所以不在屏幕上显示,它只表示串的结束。 字符串的声明同字符数组,只是在赋值上有所区别。 如:存储字符串mike char name5=”mike”; /字符串mike实际长度为5 或 char name =”mike”;/计算机根据实际值计算出数组长度 或 char name5;/先定义数组,在逐个赋值 name0= m; name1= i; name2= k; name3= e; name4= 0; 字符串的操作 1.字符串的输入和输出 字符串的输入和输出与一般变量的输入与输出类似,用cin和cout实现。 2. 字符串的常用函数strlen() 求字符串的

31、长度 该函数将返回字符串中实际存储的字符个数,0除外,假设一字符串为“miker”,串名为name,则语句 coutstrlen(name)endl;将得到结果5。strcpy ( ) 复制字符串要将一个字符串复制给另外一个字符串,不能采用以下这种方法:strcat()字符串的连接该函数是将一个字符串连接到另一个字符串的后面,得到一个新的字符串。如要将字符串customer连接到字符串amounts的后面,可以采用下列语句:注意:要保证前一个字符串的空间足够大,否则将得不到正确结果。strcmp() 比较字符串我们经常需要比较两个字符串,用函数strcmp( )二、二维数组 1、二维数组的定义

32、和初始化定义 一维数组在空间上,我们可以将它看作是一行或者一列,是一维的、线性的;而二维数组是包含多行多列的一个矩阵,是二维的。 声明:声明一个二维数组必须指出该数组包含的行数和列数。格式如下: 数组名行数列数; 赋值 我们可以在声明二维数组的同时给予初始化,也可以在以后进行初始化,但有一点需要注意,那就是二维数组同一维数组一样,在声明的同时需要说明大小,除非你在同一个语句中对它进行初始化,这时也须指定列数。 由于二维数组涉及多行多列,因此在对其进行赋值时和一维数组有所不同。 例:int num32= 15,32,10,21,90,7 ; 在这个例子中,中的数据位于同一行中,由于该数组有3行,

33、所以每行数据都被括起来,而所有的行都被包括在最外层的中。 也可以写成:int num 2= 15,32,10,21,90,7 ; 这时省略了行数,但列数不能省略。下面这种写法就是错的:int num = 15,32,10,21,90,7 ; /错误2、二维数组的应用作 业教学反馈四川警安职业学院标准教案纸课程名称第四章 数组和指针第6讲 指针任课教师 授课时间09.3.30地点六多媒体授课班级07计信人数53人教学目标掌握指针的定义和运算;掌握指针与一维数组、字符串的关系;掌握动态内存管理的方法。教学重点指针的运算;指针与一维数组和字符串之间的关系。教学难点指针的运算。指针与一维数组和字符串之

34、间的关系。教学时数2节教学方法讲授法、演示法、实践操作法教学手段多媒体教学教学内容:一、指针的定义和初始化1. 定义 什么是指针?举例来讲,如果将计算机的各个内存单元比作是一个一个的小抽屉的话,那么指针就是开启这些小抽屉的钥匙,换句话讲,指针就是一个指示器,它告诉程序可以在在哪块内存中找到数据。实际上,指针也是一个变量,指针中存放的是所指向的那块内存单元的地址。 指针的定义方法如下: 指针类型 *指针名; 如:int *pname; 这个声明语句起到的作用是:定义一个指针,该指针的名字为pname,它指向一个存放整型数据的存储地址。需要注意的是*并不是指针名的一部分,它的作用在于说明所定义的是

35、一个指针变量,与我们前面所讲的基本数据类型变量的定义相区别。又如:char *psize; float *ptr; 分别表示定义一个字符型指针变量和单精度指针变量。 2. 初始化 对指针进行初始化其实就是将某块内存单元的地址赋值给它,但是怎么能够知道内存单元的地址呢?&这个符号能够帮助我们取得变量的地址。如:int tr; int *ptr=&tr;也可以这样写: int tr; *ptr; ptr=&tr; 该语句定义了一个指针ptr,它指向一个整型变量,该整型变量为tr。在指针变量ptr中存放的是变量tr的地址。而*ptr指向的就是变量tr中的内容。 二、指针的类型 指针是一个变量,因此指

36、针也有相关的类型。但是和普通变量不同的是,不同数据类型的指针之间的区别不是在指针的表示上,也不在指针所持有的值上,指针的类型指的是指针所指向的数据的类型,所以指针的类型必须和所指向的变量的类型相匹配。 三、指针的运算指针也可以进行加减运算,但是和普通的整数加减运算并不相同。它允许以下这些运算:1. 赋值运算 我们可以将一个变量的地址赋值给指针,如: int tr1; int *ptr=&tr1;/注意指针的类型在此处应该为整型 指针之间也可以进行相互赋值,如: int tr1; int *ptr1,*ptr2; ptr1=&tr1; ptr2=ptr1;2. 算术运算 由于指针存储的是内存地址

37、,所以指针的算术运算针对的都是整数。最常见的算术运算是加减运算,可以对指针加1或者减1。由于指针是一个指示器,所以指针的加减运算并不仅仅是整数的加减,而在于指针所存储的内存地址变动后,指针所指向的内存单元也产生变化。如:int tr1;int *ptr=&tr1;ptr+;3. 关系运算 指针之间可以进行比较,如果两个指针比较结果相同,说明它们指向的是同一个变量。 四、指针和一维数组的关系 指针经常与一维数组配合使用,这样能够非常方便的对数组进行操作。int num3=10,20,30;int *p; p=&num0; p+的作用是使指针指向下一个元素,(*p)+的作用是使指针所指向的那个元素

38、自增1。如果将(*p)+的括号去掉,程序的最后输出结果将会怎么样呢?五、指针和字符串的关系使用指针操作字符串非常的方便。有如下语句:char *p=”BeiJing”; 指针p指向字符串BeiJing,那么如果要将该字符串输出怎么操作? 语句 cout*pendl;能够实现吗?答案是否定的,该语句运行后得到结果是:B。 语句char *p=”BeiJing”;的作用是使指针p指向字符串,而我们已经知道字符串其实是一个以0结尾的字符数组,所以指针p就是指向字符串的第一个元素,而通过cout*pendl;输出的就是字符串的第一个元素B。那要输出整个字符串怎么办呢?我们可以使用语句:coutpend

39、l; 由于在程序中使用字符串的时候,字符串会占有一个连续的空间,所以只要给出指针名即可将该指针所指向的整个字符串输出。 如果有人问如果要输出存储该字符串的内存的地址,该如何做呢?下列程序可以实现:char *p=”BeiJing”;void *n;n=p;coutn; 我们可以定义一个通用指针(void指针),该指针可以指向任何类型的数据,通过n=p;可将字符串的地址赋值给void指针n. 六、动态内存管理 所谓动态内存管理,其实就是在需要的时候申请内存,而在不需要的时候释放内存,这使得计算机的内存不会被浪费,提高使用效率。 1. 动态分配内存 使用new运算符能够在需要的时候申请内存。new

40、运算符的语法是:=new ;说明:(1)类型可以是整型、字符型或者是浮点型等。 (2)左边的指针变量的类型应该与右边的变量类型匹配。2. 内存的释放 内存使用完毕,为了节约资源需要将其释放。可以使用delete运算符将其释放。delete运算符的语法是: delete ;七、引用和初始化 什么是引用?引用就是引入了对象的一个同义词,相当于给对象取个别名,通过使用别名来引用该对象进行操作。就像古人有字、号一样。使用别名的引用的定义方法是: &别名=变量名;引用必须在定义的同时进行初始化int num=10;int &anum=num; 作 业教学反馈四川警安职业学院标准教案纸课程名称第五章 函数

41、第7讲 函数的概念、调用及参数任课教师 授课时间09.4.6地点六多媒体授课班级07计信人数53人教学目标.掌握函数的概念、定义和调用方法;理解C+函数参数传递的方法,掌握函数参数值传递的过程。掌握函数递归调用,理解递归调用的过程。教学重点函数的调用方法、形参和实参的概念,参数传递, 递归函数的编写和调用。教学难点参数传递中的值传递,地址传递;递归函数的编写和调用。教学时数2节教学方法讲授法、演示法、实践操作法教学手段多媒体教学教学内容:一、 函数的定义 类型说明符 函数名(形式参数表 )函数体return 合适类型数值 1、类型规定了函数返回值的类型,返回为整形时可省略;若没有返回值,可定义

42、其类型为空。2、函数名是用户给函数取的名字3、形参表的一般格式为: , 可省略。4、括起来的部分是函数体,定义了函数需要完成的具体操作,当函数体为空时,称为空函数。5、C+对形参的个数没有限制,可以是一个参数,也可以是若干个参数。例:已给某三角形的三边长,求该三角形的面积double area(double a,double b,double c)double l,s;l=(a+b+c)/2;s=sqrt(l*(l-a)*(l-b)*(l-c);/ sqrt是开平方根函数return(s);二、函数的调用1、函数调用三种方式(1)函数调用的一般格式:函数名(实际参数表);实参表的一般格式: 实

43、参1,实参2,(2)函数表达式,要求函数有确定的返回值。(3)函数参数。函数作为一个参数的实参。如m=max(a,max(a,b);2、函数的递归调用和嵌套调用 函数的递归调用是指一个函数在定义它的函数体内,直接或间接地调用它自身。在递归调用中,调用函数又是被调用函数,函数将直接或间接的反复调用其自身,每调用一层就进入新的一层。关键:(1)、递归停止条件(2)、递归公式直接递归调用:函数体中直接调用该函数本身计算n! #include long power(int n)long f;if(n0) coutn0,input error!endl;else if(n= =1|n= =0) f=1;

44、else f=power(n-1)*n;return(f); main( )int n;long y;coutInput a integer number:n;y=power(n);coutn!=yendl; 间接递归调用即在函数f1的定义过程中调用了函数f2,而在函数f2的定义过程中又函数了f1函数。int func1(int a) int b; b=func2(a+1); /func1( )函数调用func2( )函数,间接递归 return(b); int func2(int c) int d; d=func1(c-1); /func2( )函数调用func1( )函数,间接递归 ret

45、urn(d);函数的嵌套调用C+中不能嵌套定义函数,但可以嵌套调用函数。三、函数调用中的参数传递1、参数传递方式传值方式: 用变量或表达式作为实参的,属于传值调用。 实参值传递给形参,形参变化,实参不变。传地址方式(指针和数组): 用数组名或地址作为实参的,属于地址传递。实参和形参此时同时指向同一存储单元。实参变化,形参变化。传引用方式 形参即实参别名,实参变化,形参变化。2、函数的形参和实参具有以下特点:形参变量只有在函数被调用时才分配内存单元,在函数调用结束时,即刻释放所分配的内存单元。因此,形参只有在函数内部才有效。 函数调用结束返回主调函数后则不能再使用该形参变量。实参可以是常量、变量

46、、表达式、函数调用等,无论实参是何种类型,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。因此应预先用赋值、输入等办法使实参获得确定值。实参和形参在数量上、类型上、顺序上应严格一致, 否则会发生“类型不匹配”的错误。函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 3、数组作函数参数数组元素作函数实参 同变量作实参一样,“值传递”。如print(a5);数组名作为函数参数1一维数组作为函数参数1)函数定义格式: (数组名长度,)2)函数调用格式:函数名(数组名,)注:A、实参数组名后不参加。 B、传递的是数组的首地址,不为形参

47、分配空间。 对形参的修 改就是对实参的修改。 C、主函数中和被调函数中分别定义数组,类型需一致,大小可 一致可不一致。 D、形参数组可不指定大小,定义形参时,采用“数组名”即 可,可另设一个参数,传递数组元素的个数。2二维数组作为函数参数1)函数定义格式: (行长度列长度)2)函数调用格式:函数名(数组名,)3)参数传递方式为地址传递。注:形参中定义二维数组时,行长度可以省略,列长度不能省略作 业教学反馈四川警安职业学院标准教案纸课程名称第五章 函数第8讲 函数变量的作用域任课教师 授课时间09.4.13地点六多媒体授课班级07计信人数53人教学目标理解变量的作用域,能够理解全局变量、局部变量

48、、静态变量的概念和用法; 掌握函数原形的概念及使用方法教学重点全局变量、局部变量、静态变量的概念,用法。函数原形的使用方法教学难点全局变量、局部变量、静态变量的概念,用法。函数原形的使用方法教学时数2节教学方法讲授法、演示法、实践操作法教学手段多媒体教学教学内容:一、函数变量(一)变量的作用域的定义即分类。 变量在程序、函数或者程序体中的作用范围即变量的作用域。包括以下四类作用域:1、块作用域:从块内变量定义到块结束;2、文件作用域:从函数外变量定义开到文件结束。3、函数原型作用域:从原型变量定义开始到函数原型说明结束4、函数作用域:从函数开始到函数结束。(二)局部变量函数或块内定义的变量称为

49、局部变量。局部变量都具有块作用域,只能在定义它的函数或块内使用。int f1(int a) /函数f1int b,c; int f2(int x) /函数f2int y,z; /x,y,z作用域:仅限于函数f2( )中void main( )int m,n; /a,b,c作用域:仅限于函数f1( )中;/m,n作用域:仅限于函数main( )中(三)全局变量 定义在函数体外的变量。 int f1(int a) /函数f1int b,c; int f2(int x) /函数f2int y,z; /x,y,z作用域:仅限于函数f2( )中#include int name;void main( )

50、int m,n; /a,b,c作用域:仅限于函数f1( )中;m,n作用域:仅限于函数main( )中;name是全局变量/ 全局变量从定义开始文件结束为止。块中变量与全局变量同名时,全局变量在块中不起作用。但可通过:来引用全局变量。(四)静态变量 程序开始执行时系统为就为变量分配存储空间。直接程序结束才收回变量的存储空间。static #includeint f( )static int i=0;int s=1;s+=i;i+;return s; void main( )int i,a=0;for(i=0;i5;i+)a+=f( );coutaendl;(五)变量的存储类型 存储类型例:au

51、to int x;自动类型auto: 1可省略,自动类型是局部变量,只能定义在函数内,其作用域为块作用域。 2变量放在动态存储区。 3此类型的变量若没有赋初值,初值是不定的寄存器型 register动态局部变量,存储于CPU的寄存器中,存取速度快。通常用做循环控制变量。静态类型static函数内局部静态变量(函数外全局静态变量)1程序执行过程中,当调用定义该变量的函数结事后,并不收回存储空间,再次调用函数时,变量仍然使用相同的空间,整个程序运行期间变量都存在。2变量存储于静态存储区中,默认初值为03静态变量只能由定义它的函数引用它,其它函数不能引用它。外部类型extern1在同一文件中使用ex

52、tern说明外部变量,扩展全局变量的作用域。若全局变量在同一文件中定义在后,引用在前,则引用前要将此全局变量说明成外部变量2 在多个文件的程序中使用extern 说明外部变量,在一个文件中定义的全局变量,要被其他文件引用时,引用的文件中要用extern将此全局变量说明成外部变量。即可将一个文件中定义伯全局变量的作用域扩大到引用文件中。二、函数的原型1、定义:函数的原形也称为函数声明或函数模型。在主调函数中,如果要调用另一个函数,则需在本函数或本文件中的开头将要被调用的函数事先作一声明。声明函数,就是告诉编译器函数的返回类型、名称和形参表构成,以便编译系统对函数的调用进行检查。2、 函数声明的一

53、般格式为:函数类型 函数名(形式参数表);3、 对于函数原型的几点说明:(1)一个完整的程序中,函数的定义和函数的调用可以在同一个程序文件中,也可以处在不同的程序文件中,但必须确保函数声明语句与函数调用表达式出现在同一个文件中,并且函数声明语句出现在前,函数的调用出现在后。(2)当一个函数要被一个文件中的多个函数调用时,可以将该函数声明写在所有函数之前。(3)虽然函数声明与函数头相似,但是它们之间也有细微的差别,注意区别。(4)函数声明中不能只写形参名而不写类型。(5)函数声明中除了当函数返回值类型为int或char时函数类型可以省略外,一般情况下不能省略函数类型。 (6)由于调用时是按参数顺序进行传递的,所以函数声明中形参的次序也不要写错。(7)并不是对所有被调函数都要作声明。作 业教学反馈四川警安职业学院标准教案纸课程名称图形的外部引用及尺寸标注任课教师吴煌授课时间地点一多媒体授课班级06计应人数67人教学目标各种尺寸的设置及标注教学重点各种尺寸的设置及标注教学难点各种尺寸的设置及标注教学时数2节教学方法讲授法、演示法、实践操

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!