欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    c++程序设计教案.docx

    • 资源ID:83246347       资源大小:186.20KB        全文页数:73页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    c++程序设计教案.docx

    C+程序设计«海南软件职业技术学院IHainan Software Profession Institute(2006-2007学年度第一学期)教师姓名:季文天系 部: 软件工程系授课专业:软件技术 授课班级:目录课题01:Visual C+6.0开发环境2课题02:C+数据类型、表达式、语句5课题03: 数组7课题04:结构类型11课题05:函数13课题06:函数参数16课题07:内联函数与递归函数19课题08:函数重载21课题09:指针23课题10:指针与数组、字符串指针26课题11:指针与函数28课题12:指针与动态分配内存31课题13:引用33课题!4!类与对象36课题15:类的静态成员及常量成员39课题16: 友元4317:146课题18: 继承与派生49课题19:派生关系中的二义性处理53课题20:虚基类56课题21:多态性与虚函数59课题22:模板62课题23:文件、流及C+的流类库66课题24:插入与提取运算符的重载69课题25:磁盘文件I/O70课题01: Visual C+6.0开发环境、教学目标:1 .掌握MsualC+6.0开发工具的选单、工具栏、项目、工作区等概念2 .掌握使用VC编写控制台应用程序3 .掌握使用VC进行程序调试 二、教学重点:1、掌握VisualC+6.0开发工具的选单、工具栏、项目、工作区等概念 三、教学难点:1、使用VC编写控制台应用程序。2、使用VC进行程序调试四、课时安排:2节课 五、教具准备:多媒体教室六、教学方法:讲授七、教学过程:(一)、复习导入Visual C+是Microsoft公司推出的目前使用极为广泛的基于Windows平台的 可视化开发环境。Visual C+6.0是在以往版本不断更新的基础上形成的,由于 其功能强大、灵活性好、完全可扩展以及具有强有力的Internet支持,在各种C+ 语言开发工具中脱颖而出,成为目前最为流行的C+语言集成开发环境。(二)、讲授新课1、开发环境概述噺:板书或幻灯片演示下图画:Visual C+6.0开发环境包括: 标题栏 工具栏 选单 项目工作区窗口 输出窗口 状态栏 文档窗依次介绍各项功能,详细介绍选单、工具栏、项目工作区。2、简单的控制台应用程序使用Appwinzard创建一个控制台应用程序,使学生理解“工程”概念,熟 悉项目的程序框架,以及如何添加程序代码、编译、运行。以下面程序为例,讲述如何建立控制台应用程序: 【例 Ex_Hello#include <stdafx.h> int main(int argc,char* argv) (cout<v"Hello world"return 0;【运行结果】:【例Ex.Hello)利用投影演示P18例Ex_Helloo3、程序调由在软件开发过程中,大部分的工作往往体现在程序的调试上。调试一般按这 样的步骤进行:“修正语法错误设置断点启用调试器一控制程序运行查看和修改变 量的值” 修正语法错误调试最初的任务主要是修正一些语法错误,比如:未定义或不合法的标识符数据类型或参数类型及个数不匹配。设置断点用C+调试的断点可以有以下类型:B为之断点a数据断点条件断点 启用调试器Visual C+ 6.0创建的项目,系统会自动为项目创建Win32 Debug版本的 默认配置选择"build”选单-"start debug"-"Go", "step into" > "Run to cursor"命令,就可以启动调试器了。 控制程序运行可以通过"step into ,step over ,step out ,run to cursor"控制程序运行。 查看和修改屋量的值在程序调试的时候VC会自动显示"Watch"和"Variables"两个调试窗口, 通过这两个窗口可以査看或修改当前运行程序的变量的值。课题02: C+数据类型、表达式、语句、教学目标:1 .掌握C+程序结构、基本组成2 .掌握C+的基本数据类型、基本输入/输出3 .掌握C+运算符、表达式4 .掌握C+基本语句 二、教学重点:1 .C+程序结构、基本组成2 .C+基本数据类型、输入输出 三、教学难点:1 .C+运算符、表达式2 .C+基本语句四、课时安排:2节课 五、教具准备:多媒体教室六、教学方法:讲授七、教学过程:(一)、复习导入C+是在20世纪80年代初期由贝尔实验室设计的一种在C语言的基础上增 加了面向对象支持的语言,她是目前应用最为广泛的编程语言。今天我们来学习 他的基本结构、数据类型、运算符和表达式、基本语句。(二)、讲授新课1、C+程序结构个C+程序往往由预处理命令、语句、函数、变量和对象、输入与输出以 及注释几个部分组成。 预处理命令包括:宏定义命令、文件包含命令和条件编译命令 语句语句是组成程序的基本单元 函数个C+程序是由若干个函数组成。个程序中有且仅有一个主函数 main. 变量和对象C+是面向对象的语言,所以在C+中相比C语言多了对象,她是类" 的实例 输入输出程序中总是少不了输入和输出语句。 注释注释可以提高程序的可读性、帮助程序员理解,在程序运行中不执行。在编写C+程序时,还要注意程序的书写风格,要注意缩进和注释。在编写 程序时,标识符应该遵循以下原则: 合法性 有效性 异读性2、基本数据类型C+数据类型分为基本数据类型、派生类型以及复合类型3类。基本数据类 型包括: char int float double以及上述类型的变种,包括 short long signed unsigned voidP29表2.1列出了 C+的基本数据类型根据数据在程序中的可变性,我们将数据分为: 常量整型常量浮点型常量a字符常量字符串常量B符号常量变量B变量定义变量的初始化要注意个未初始化的变量不是没有数值,而是取决于变量在系统中的存储 形式,她可能是系统的默认值或无效值。3、基本输入、输出C+中是通过标准的输入流cin和标准输出流cout来实现数据的输入输出。举例:Ex_CoutEnd 举例:Ex_Algorism 4、运算符和表达式C+用来记述运算的符号称为运算符,按照操作数的个数可以分为: 单目运算符 双目运算符 三目运算符根据其功能可以分为: 算术运算符 赋值运算符 关系运算符 逻辑运算符 位运算符变量、常量通过个或多个运算符组合起来就构成了表达式,比如有关系运 算符构成的表达式成为关系表达式。5、基本语句C+提供了如表达式语句、复合语句、选择语句和循环语句等,满足了结构 化程序设计所需要的3中基本结构。 选择语句 条件语句if else 开关语句 switchB循环语句 while do . while for以上基本语句和C语言保持一致。课题03:数组、教学目标:1 .了解构造类型的意义2 .了解数组的概念3 .掌握维数组、多维数组的定义二、教学重点:1 . 维数组的定义2 .数组的基本操作三、教学难点:1 .多维数组将维处理过程及多维数组的存储2 .字符串数组的使用四、课时安排:2节课五、教具准备:多媒体教室六、教学方法:讲授七、教学过程:(7、复习导入在计算机所处理的数据中,最常见的,也是最需要由计算机高速处理的数据 是成批出现的同一类型的数据,C+语言中把这类数据称为数组。例如: 监测系统在一段时间内获得的检测、采样值,可能是int型或float型数 据的数组; 个管理系统的数据库,可能是一系列结构类型(记录)数据的序列; 一幅电视图像,可能是其每个像素的颜色及灰度值(整型数)的二维阵列。任何种类型的批数据,都可以组成数组,例如int型,float型,char型数 据可以组成数组;这些基本类型的派生类型(如long型,double型,unsigned char 型)的数据,枚举、结构、联合类型的数据,以至由用户或系统定义的类(类型) 的对象,都可以组成数组。(二)、讲授新课1、维数组由个同一类型数据组成的维序列,构成一维数组,维数组的下标为0, n-1 1 . 维数组的说明任何种已知类型数据都可说明为数组,数组说明的格式为:类型名 数组名元素数=(初值表;类型名:可以是基本类型名,基本类型的派生类型名,类名,枚举类型名,结构,联合类型名(也可以是枚举、结构联合的类型说明)。关于指针数组将在下节说 明。还有数组类型的数组就是多维数组了,也将在下面介绍。数组名:标识符,数组名有两个附加作用:(1)是表示数组元素的下标变量。如array2表示数组的第三个元素。(2)它还是一个指向数组的首元指针。元素数:个正整数,指出数组的元素个数,或数组的大小(size) 元素数要用方括 号“ 口”括起来。方括号口不可缺省,元素数则有时可缺省,这时必须赋初值,系 统按所赋的初值个数确定数组的大小。初值表:可缺省。是由花括号, 括起来且用逗号,分开的初始化常量值。例如:int list 100L A1O1O , B = 4,3,2;char ch26;complex com4= (3. 2, 4. 7) , (0. 0, 0. 0) ;其中,数组list100未赋初值。数组A10 10为一个二维数组,未赋初值。数组B已赋初值,元素数为3。数组com4是用户定义的complex类型的数组,数组有4个元素,其中前两个元素已赋初值,初值分别为(3.2, 4.7) , (0.0, 0.0) 2 .数组的操作下标变量C+语言未提供对于数组整体进行操作的运算符和运算。对于数组的操作是通过对于其元素,即下标变量进行的。下标变量的格式为:(数组名下标>下标:整数,或整型表达式,其取值范围为n-l,n=数组元素总数,例如:int A 4;共有四个下标变量:A, Al, A2, A3»对于下标变量可进行下列操作。(1)赋值。可以三种方式进行:初始化:int A 4 = 1, 2, 3);相当于一次为A, Al, A2赋值为1, 2, 3。赋值语句:A3= 4* Al;相当于把4*2=8赋值A3。输入语句:cin>>A0;或for (int i=0; i<4; i+) cin>>Ai;后者可通过键盘操作,为数组的四个元素依次赋值。(2) 一般运算。下标变量可与同一类型的一般变量一样参加它所允许的运算。如:A0+= A2+;coutVVAVV" W<<A1*A2;下标也可以是一个表达式,如:int A4 = 1, 2, 3, 4;A 3 =AA2-A1*4;下标表达式应注意其值应保持在n-1范围之内。2、多维数组若干同一类型的数据m歹M行的矩阵,则可称为维数组,维数组亦可视为维 数组的数组。int Am n;说明了一个二维数组,它有mXn个元素,它也可以视为由n个维数组int Am 组成的(维)数组。类似地,还可以说明三维,四维数组,二维以上的数组统 称为多维数组。1 .说明和初始化多维数组的说明(以二维为例):类型名X数组名行数列数> 类型名:同前节说明。数组名:同前节说明。行数:正整数。列数:正整数。例如:char ch23;该二维数组共有2行3歹!!,元素个数为2*3= 6 在二维数组中,为数组赋初值的方式有:int a23 = 1,2,3, 4,5,6;亦可写为:int a2 3=1, 2, 3, 4, 5, 6;二者效果是样的。系统将按逐行的次序顺序为各元素赋值。其次序为:a , a 1, a0 2, al0,all,al2对于三维以上的高维数组,其赋值方法是样的。2 .二维数组的操作对于二维数组的操作,同样是通过对其元素即下标变量的操作来进行的。操作中应注意:(1)注意下标表达式的取值范围:char Amn;则下标变量Aij中i的值应在m-1之间,j的值应在n-1之间。(2)当只有一个下标时:Ai (0 <= i <= n-1)表示的是个一维数组,其元素个数为n,这些元素可用下标变量: AiO,Ail,-,Ain-l来表示。(3)更高维的数组,其定义和操作类似。3、数组与字符串从表面上看,个字符串就是一个字符数组,但在C+语言中,二者并不完全相同, 读者在涉及到字符串处理时,必须注意。字符串是一个以串尾符、结尾的字符类型 数组。从下面的例子可看出其区别: char stringl7='China”; char string2 = "China";char string3 7= ' c', ' h', ' i', ' n', 'a' ;char string4 7= ' c' , ' h' , ' i' , ' n' , ' a' , 、'这说明了四个字符型数组,它们是互不相同的。课题04:结构类型、教学目标:1 .了解结构类型的意义2 .掌握结构类型的定义及应用方法3 .掌握结构数组的使用方法二、教学重点:1 .结构类型的定义2 .结构类型使用方法三、教学难点:1 .结构数组的使用方法四、课时安排:2节课五、教具准备:多媒体教室六、教学方法:讲授七、教学过程:(一)、复习导入实际应用中往往需要把若干种不同类型的数据组合为个导出类型,这就是 结构类型。数组是把若干相同类型的数据放在起,结构则是把若干不同的数据 放在起。例如,个公司雇员的数据可能包括:char name20;enum male, femalesex;float salary;char phonel1;那么我们如何处理这样的数据呢?下面就让我们来学习种新的构造数据类型 结构体。(二)、讲授新课对公司雇员数据进行处理或检索时,把它们组成结构类型会更方便: struct Employee (char name20;enum male, femalesex;float salary;char phone 11;);C+语言中的结构是作为类似于类的概念处理的,这一点将在以后学习中说明,在本章 结构(以及联合)类型仅作为一种构造数据类型。1、结构类型与结构变量说明结构类型说明的格式为:struct 类型名成员表;类型名:标识符。成员表:类型>成员1>;类型成员2;.类型成员n>结构类型的变量说明的格式为:struct 结构类型名变量名表;变量说明中的关键字struct可以省略(C语言中不可),变量名表与一般变量说明一样,其赋初始值的方法可从下面的例子中了解:struct Employee char name20;enum male, femalesex;float salary;char phone 11; ; /Z结构类型Employee的定义struct Employee gyl, gy2; / 变量gyl,gy2 的说明Employee gy3, gy4=''John Smith,I male, 2107. 5, 02223501234;/Z变量gy3,gy4(赋初值)的说明结构类型及其变量的说明也可放在起:struct Employee (char name20;enum male, femalesex;float salary;char phone11;gyl, gy2;2、结构变量的引用和赋值个结构变量由若干分量组成,对结构分量的存取由圆点运算符''实现,例 如,在上例中,雇员gyl的姓名可表示为gyl.name,其电话号码可表示为 gyl.phoneo因此,为结构变量赋值,除了在变量说明中赋初值(如为gy4赋初 值)的方法外,还可以用赋值语句或输入语句为结构分量赋值的方法:gy3. name = ''Tom Green"gy3. sex = male;cin >> gy3. salary;cin >> gy3. phone;无论采用哪种方法为结构分量赋值,都必须保证类型一致。C+语言还允许直接对结构变量赋值,下面的赋值语句也是允许的:gyl = gy4;gy3 = gy4;一般,数组变量不能这样直接赋值。3,结构数组结构类型的数据也可以组成数组,称为结构数组。结构数组在许多实际应用问题 中的采用非常普遍,例如,通讯录,学生成绩单,商业销售记录,人事档案,资 料登记表等等。下面的结构数组是个公司的雇员档案:struct Employee char name20;enum male, femalesex;float salary;char phone11;);Employee efile100;数组的每个分量是一个雇员的档案数据。课题05:函数、教学目标:1 .了解函数的作用、意义2 .掌握函数的说明、调用、返回3 .掌握函数的使用方法二、教学重点:1 .函数的说明2 .函数的调用三、教学难点:1.函数返回四、课时安排:2节课五、教具准备:多媒体教室六、教学方法:讲授七、教学过程:(一)、复习导入函数概念是C+语言中最重要的概念之一,函数设计是程序设计的主要部分 或实质部分。函数在C+程序设计中的意义体现在四个方面。(1)从历史上说,函数的思想来源于子程序,(如BASIC语言中的子程序), 把程序中反复出现的相同或相近的程序改写成子程序,可以大大缩短程序的长 度。函数实际上是参数化的子程序。(2)从结构化程序设计(SP)的观点来看,函数绝不仅仅是为了缩短程序长度, 更重要的是通过函数设计,可以把整个程序要完成的整体的复杂的计算任务,分 解为个个较小的,相对简单的子任务。这种模块化的程序易设计,易阅读,易 调试,易维护,较少出错。(3)从运算的角度说,函数就是C+语言提供的由用户定义的运算。运算符是 系统提供的运算,而函数是由用户自己定义的运算。(4)作为面向对象程序设计(OOP)语言的C+,以类为核心,类由数据和方 法组成,方法就是对数据的运算和处理,亦即类的函数成员。故函数设计同样是 OOP的重要组成部分。(二)、讲授新课1、函数的说明C+程序允许两种函数说明语句的形式,我们把它们分别称为函数原型(或函数声明)和函数定义。1.函数原型函数原型(亦称函数声明)用来指出函数的名称,类型和参数,其格式为:属性说明类型函数名(参数表);例如:int add (int a, int b);inline void swap (float & s, float & t);void print (char *);属卷傀明:可缺省,般可以是下面的关键字之一:inline, static, virtual,friend 等。inline表示该函数为内联函数;static表示该函数为静态函数;virtual表示该函数为虚函数:friend表示该函数为某类(class)的友元函数。其含义的细节在后面有关章节介绍。费型:指函数的返I可类型。C+语言规定除了特别情形(main ()函数和类的构造函数, 析构函数)之外,所有函数都必须在说明中指出返回类型。个函数可能有多个结果, 不一定都用返回值的方式输出(还可通过全局变量,引用参数和指针等方式传出)计算 结果,但函数调用作为一个表达式,该表达式的值则只能是函数的返回值。故名:个标识符。叁琳事:它可能为空,void或类型参数名,类型参数名的 形式。例如:main()print(void)cuberoot(float x)add(int a,int b)其中,函数原型中的参数表可忽略参数名,如:int add(int, int)void swap(float &, float &)它们与函数原型int add (int a, int b); void swap (float & s, float & t):是等价的,事实上在编译时,函数原型中的参数名是被忽略的,后者的参数表中的符 号、&、表示该参数为引用型参数,用以区别于一般的赋值型参数,其用法在下面 介绍。2,备做定义函数定义与函数原型的主要区别是它还包括函数体,其格式为:属性说明类型函数名(参数表)函数体属性说明,返回类型,函数名与函数原型一致,参数表中不可省略参数名。政体:由和括起来的复合语句即程序块。program5_!的最后12行就是个函数定义。从函数说明语句的介绍,我们可以看到程 序中各种语句的分类(说明语句,表达式语句,控制语句和复合语句)并不是个简单 的划分概念。函数定义本身是种说明语句,但其函数体则是个复合语句。而在函数 体内部又可能包含说明语句,表达式语句,控制语句和复合语句。总之,这种分类和区分是明确的,但它们之间又有互相包含的关系。2、函数调用函数调用是已定义函数的一次实际运行,(与某类型的个变量和后文中某类 的个对象类似),函数调用是函数定义的个“实例”。函数说明中的参数称为砂式麻(形参),函数调用中的参数称为窕呼参政(实参), 函数调用一般出现在表达式中或独立形成一个函数调用语句,例如:xr=cuberoot (-q/2+a) -Fcuberoot (-q / 2-a);swap (a, b);函数调用的两要素是函数名和实参表:函数名(实参表)实参表中的参数的类型、个数、顺序必须与函数说明的参数表(形参表)相一致。 赋值型的实参可以是一个表达式。在上节program5_l的main()中两次出现函数 cuberoot(x)调用,其具体的调用实施过程如下:(1)根据调用语句中的函数名(cuberoot)在整个程序中搜索同名函数定义;(2)对实参数的参数个数,类型,顺序进行核对,判定是否与函数定义中的形参表对应 一致,在上例中只有一个浮点型参数;(3)根据参数的类型(值参数或引用参数)进行值参数的值传递或引用参数的换名,在 上例中即是要把实参表达式的值计算出来赋给形参X;(4)运行函数体代码;(5)返回调用点,并返回所要求的函数值,即返回计算结果croot的值。3、函数的返回函数的返回完成两项任务:(1)把运行控制从函数体返回到函数调用点。在上例中就是在计算cuberoot(-q/2+a)之后再返回到语句xr = cuberoot () + cuberoot ()的计算过程中。(2)根据返回值要求,返回所需要的数据值。函数的返回值有下面几种情形:1 .但)void 1型如果函数无值返回,应说明为void类型。例如:void print ( ) cout<<" Hello World !" ;void show ( ) cout«” Wonderful C+!" ;函数仅需完成打印和显示工作,不需返回任何数据,这类函数调用一般形成一个函数调用语句。未作类型说明的函数,系统认为是int类型函数,应返回一整型值。2 .但O政保改型最常见的函数是返回一个数值的函数。例如:int add (int a, intb);float cuberoot (float x);这类函数的调用表达式可以出现在表达式语句中。当函数要返回的数值不止个时,情况比较复杂,一般它可以以结构或类的形式,也可 以以结构,数组或对象指针类型方式实现,这样的实例在后面的章节可以见到。3 .但)引用腐矍值返回方式是C和Pascal语言中唯一的返回方式,C+语言提供的引用返回概 念是其特有的种很强的功能,当函数定义中把该函数说明为某类型的引用类型 时,该函数调用后返回的不单是值,而是包含返回值的变量(或对象)。由于返 回引用与引用类型有关,所以这样的实例将在下节介绍。课题06:函数参数、教学目标:1 .进步了解函数的应用2 .了解函数参数3 .了解函数的值调用和引用调用 二、教学重点:1.函数参数形式三、教学难点:1.函数值调用和引用调用四、课时安排:2节课五、教具准备:多媒体教室六、教学方法:讲授七、教学过程:(一)、复习导入函数的参数的设置和使用是函数设计中非常重要的部分。(二)、讲授新课1、函数参数C+语言允许函数无参,有一个或多个参数,而且还支持不定个数参数的函数。(1)无参函数:其函数说明为下列形式:void print (void) ; /Z输出指定的数据intgetx : 输出变量x的值用void或空表示无参。(2) 一个或多个参数:多数函数有一个或多个确定的个数、确定的类型和顺序的参数,例如:void sort (int n, char* array) .: 对n 元整形数组array进行排序float max (float a, float b, float c)/求三个实数a, b, c中最大者。*/等等。定义中应注意参数表的组成。因为在C+语言中,不同的函数是根据函数名和参数表二者来区分的,只有二者完全一致是同一函数。(3)不定个数参数:有些应用问题中参数个数是变化的。例如设计个电话计费函数,为了计算通话费,不同的通话类型(如市话,长途,数据与通讯,BP机等)有不同数 目的参数。处理参数个数不定的情形,可有不同的途径。例如:void sort (int n, float * a);这个函数可对n长的浮点数组进行排序,n是变化的;由于a是数组的首 元指针,因此这个函数实际上是可以进行对任意多个浮点数排序的处理。 C+语言有的版本还提供些库函数,支持处理形如:void abc (int i,.);的不定参数函数。C+语言,允许参数表中包含无名参数,主要是为了区分函数,例如:int f (int a, int b) return a+b*b; int f (int a, int b, int) return a*a+b; 两个不同的函数同名,但由于第二个函数包含一无名参数,使得在调用时能够 被区分,f (x, y)是第一个函数的调用,f (x, y, 0)是第二个函数的调用。 C+程序还允许为函数定义可缺省参数,这种函数调用时具有灵活性, 如:int sqrsum (int a, int b, intc=0) return a*a+b*b+c*c;)其中参数c为可缺省参数,下面的调用方式都是合法的(x, y, z为int型变量): sqrsum (x, y, z) sqrsum (x+y, xy) sqrsum (x, y)参数表中可有任意多个参数指定为可缺省参数,但所有可缺省参数必须列 后。在调用该函数时,一般不允许部分缺省,即要么省去全部缺省参数,要么 个也不省。2、函数值调用和引用调用C+语言在进行函数调用时,对参数的处理有两种方式,赋值型和引用型, 即值调用方式和引用调用方式。前者是普通的形式,在C语言中只有这种方式; C+语言中增加了引用调用形式,这种形式与pascal语言中的变量参数调用方 式相似。1 .或色例附方式在执行函数调用时,在检查函数名及参数表之后,首先为值参数分配内存, 然后计算各对应的实参表达式,并把计算的值赋给刚刚创建的参数变量,进而 开始函数体的运行。喊住移叁:在函数定义的参数中,除了被说明为引用(&)的参数之外, 其余所有类型的形参都属于赋值形参。凡是赋值形参,在函数的每次调用时,都必须为每个赋值形参创建一个 新的参数变量。窕叁表9式:另一方面,函数调用语句中,与赋值形参相对应的实参可以 是指定类型的常量、变量或表达式。在执行函数调用时应把该表达式的值计算 出来,作为初值赋给刚刚为赋值形参创建的参数变量。这是赋值调用方式名称 的由来。2 .用詞用方式幻用移基:函数定义的参数表中,名字前加上符号&的参数为引用形参。 例如:void swap (int& a, int& b) int temp=a;a=b;b = temp;)形参a, b为引用形参,这时其函数原型可写为:void swap (int& , int& );引用形参在调用过程中的参数传递机制不同于赋值形参。其要点是:(1)函数的调用语句中对应于引用形参的实参必须是同一类型的变量,非变量的表达式则不允许。(2)参数传递的内容不是实参的值,而是地址,其实际的效果是令对应的 引用形参在调用过程中,作为个变量名指向作为实参的这个变量,与赋值形 参的不同在这里体现出来,在引用调用过程中并不创建新的参数变量!(3)在函数体程序块的运行中,引用形参的每次出现,由于它现在已经是 指向实参变量,因此相当于全用实参变量所代替。即起到了所谓的“换名”的 作用。(4)在函数体程序运行结束,控制转回调用点时,该引用形参与实参变量 的对应关系也就终止了。但是在调用过程中对于这个实参变量的所有处理和操 作的结果,却保留下来。这一点也是区别于赋值调用的。课题07:内联函数与递归函数一、教学目标:1 .进步掌握函数的应用2 .了解内联函数3 .掌握递归函数的使用二、教学重点:1,函数嵌套2内联函数三、教学难点:1.函数的递归调用四、课时安排:2节课五、教具准备:多媒体教室六、教学方法:讲授七、教学过程:(一)、复习导入(二)、讲授新课1、内联函数内联(inline)函数的设置是C+不同于C的特征之一。(1)在C+程序中符合下列条件的函数:函数说明前冠以“inline”关键字的函数;类内定义的函数成员,将在第七章介绍。(2)在编译过程中,凡内联函数,系统把它的执行代码插入到该函数的每个调用点, 从而使程序执行过程中,每次该函数调用时不需控制转移,但该函数代码可能有多个拷 贝出现在目标程序中。也就是说,把多次调用的函数说明为内联函数,会使目标程序占 用的空间加大,而运行时间得到节省。(3)为了优化程序、提高程序的运行效率,一般把函数体短小而又频繁调用的函数说 明为内联函数较好。(4)利用编译预处理的宏定义方式,也可以实现类似于内联函数的功能。不过,内联函数的方式更为方便和可靠。例如,下面儿个内联函数定义可以用带参数的 宏定义方式实现:inline int MAX (int a, int b) if (a>b) return a; return b;inline float ABS (float a) return ( a>=0)? a: 0-a; inline float PERCENT (float a, float b) return 100.0 * a/ b;inline void SWAP (int a, int b) int t; t=a; a=b; b=t; return;inline bool ISODD (int x) return (x %2 = = 1)?1:0; )对应的宏定义为:# define MAX (a,b) (a>b)? a: b)/Z 求较大者# define ABS (a) (a>=0)? a: 0-a)/Z 求绝对值# define PERCENT (a,b) (100.0 * a / b ) 求百分比# define SWAP (t, a, b) int t=a; a=b; b=t; /Z 交换a,b 的值# define ISODD (x) (x %2 = = 1) 1:0)/ 判断x 是否为奇数虽然这些带参数的宏定义的功能与对应的内联函数基本一致,但仍然是有差别 的,宏定义中的参数和计算结果没有类型说明,编译时不可能进行类型检査,是 不安全的,更无法区分赋值参数和引用参数,很容易出错。因此,C+语言的编 程中,当某段计算短小而又经常被重复时,建议采用内联函数,少用宏定义实现。2,函数嵌套个函数的函数体中包含个或多个函数调用语句,即称为函数嵌套。嵌套 的含义是,如果函数A要调用函数B,也就是说,函数A的定义要依赖于函数 B的定义。因此函数B的定义或函数B的原型必须出现在函数A的定义语句 之前。为了保证返回后继续正常运行,函数调用过程开始时需要做更多的事情: 1)建立被调用函数的栈空间;2)保存调用函数的运行状态和返回地址;3)传递参数;4)把程序控制转交给被调用函数。3、政的連先递归函数的设计在程序设计中占有重要的地位。函数A在其函数体中直接包含它自己的调用语句,这种调用称为直接递归调用, 函数A称为(直接)递归函数。函数A在其函数体中间接地包含对它自己的调 用,例如A调用函数B,但函数B又调用函数A,则函数A称为(间接)递归 函数。下面是一个(直接)递归函数的例子:floa

    注意事项

    本文(c++程序设计教案.docx)为本站会员(文***)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开