版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章模块化程序设计第3章模块化程序设计教学目标1、掌握函数的定义及其调用方法。2、理解掌握形式参数和实际参数的概念及 使用方法。3、掌握函数的调用及嵌套调用的方法。4、理解函数的递归调用方法教学重点、 难点1、掌握函数的调用及嵌套调用的方法。2、理解函数的递归调用方法技能培训重点、 难点1、掌握函数的定义。2、掌握函数的调用。3、熟悉形式参数和实际参数。4、理解和应用函数的返回值。教法 案例教学法学法 思考,讨论,练习巩固教具使用投影仪演示或教学机房学内容环 H、工丄学备教师活动丄、生汪教案课题:第3章模块化程序设计(1)活动导入新课第一章学习了C语言简单程序 设计,掌握了解决简单问题的程序
2、设 计方法。模块化程序设计的思想就是 将一个复杂的问题分解为若干个简 单的问题求解。所以,一个较大的应 用程序一般由若干个程序模块组成,其中有一个是主模块,每一个模块都 实现一个特定的功能。在C语言中,程序模块是由函数实现的。一个C语言程序可由一个主函数(主模块)和若干函数(子程序)构成。主函数调 用其它函数,其它函数也可以互相调 用。同一个函数可以被一个或多个函 数多讲授新课案例3.1:定义函数求平均分/*源程序:案例3_1.c*/(略)1、函数定义的一般形式(1)无参数函数的定义格式 类型标识符函数名()()输入案例程序声明部分语句用“类型标识符”指定函数值的 类型,即函数返回值的类型。若
3、函数 没有带回函数值,可以不写“类型标 识符”。(2) 有参数函数的定义格式类型标识符函数名(形式参数 表列)声明部分语句(3) “空函数”的定义格式 类型说明符函数名()() 此函数在调用时, 没有产生任何 实际作用。2、函数参数。在定义函数时, 函数名后面括号中的参数为“形式参 数”(简称“形参”)。在调用一个函数时,函数名后面括号中的参数(可 以是一个表达式)称为头际参数(简称“实参”)。关于形参和头参的说明:1定义函数中指定的形参,在函数未被调用时,并不占用内存中的存 储单兀。只有在函数被调用时,形参 才占用内存中的存储单元。在函数调 用结束后,形参所占的内存单元也随 之被释放。2实参
4、可以是常量、变量或表达式,并要求有确定的值。3在定义函数时,必须指定形参的类型。4实参与形参的类型应相同或 赋值兼容。5C语言规定, 实参变量对形参 变量的数据传递是“值传递”,即单 向传递。只能由实参传给形参,而不 能由形参传给实参。实参和形参占用 不同的存3、 函数的返回值。 通过函数调 用,使主调函数能得到一个确定的 值,这就是函数的返回值。(1)函数的返回值是通过return语句获得的。return语句的功 能是把被调用函数中的一个确定值带回主调函数。(2) 函数值的类型。函数的返回值都有确定的类型,在定义函数时 必须指定函数返回值的类型。C语言规定,凡不加类型说明的 函数,一律自动按
5、整型处理。在定义 函数时,函数值的类型一般和return语句中的表达式类型 致。(3)如果函数值的类型和return语句中的表达式的类型不一 致时, 要以函数类型为准。 对数值型 数据,可以自动进行类型转换。即函 数类型决定返回值的类型。(4) 为了明确表示“不返回教师可以进行启发式提问讲小结使函数带回任何值。为确保程序正 确,凡是不要求返回函数值的函数,一般疋义为void类型。4、函数的调用。函数调用的一 般形式是:函数名(实参表列);调用无参数函数,可以不写“实 参表列”,但括号不能省略。如果是 有参数函数,实参与形参的个数应相 等,类型应 致。当实参表列中有多 个实参时,各参数之间需要用
6、逗号隔 开。头参与形参按顺序一一对应传递 数据。但应说明的是,如果实参表列 中有多个实参,那么系统求实参值的 顺序是不确疋的,可以按照自左至 右”或“自右至左”的顺序求实参的 值。按照函数在程序中出现的位置 不冋,其调用方式有以下三种:函数语句。 把函数调用作为一 个语句。例如:解各功能模块2函数表达式。函数出现在一个表达式中,这种表达式称为函数表达 式。要求函数带回一个确定的值,并 参丁表达式的运算。例:s=sum( )*10+5;函数sum是表达式的部分。3函数参数。把函数调用作为一个函数的实参,例如:aver=average(s);改成:aver=average(sum();后,sum(
7、)是 一次函数调用,它的值作为函数average调用的实参。函数调用作为函数的参数, 实质 上也是一种函数表达式。函数的参数 就是表达式形式。5、 被调用函数的声明和函数原 型。被调用函数(在一个函数中调用 另一函数)需要具备下列条件:(1) 被调用的函数必须是已经 存在的函数(库函数或用户自己定义 的函本文件开头用#include命令将调用 有关库函数所需要的信息“包含”到 文件中。例如:# include vstdi o.h(3)如果用户使用自己定义的函数,而且该函数与调用它的函数(即主调函数) 在同一个文件中, 一 般还应该在主调函数中对被调用的 函数作声明(向编译系统声明将要调 用此函
8、数,并将有关信息通知编译系 统)。(4) 函数的“定义”是指对函数 功能的确立, 包括指定函数名, 函数 值类型,行参及其类型,函数体等。7、函数的嵌套调用。8、函数的递归调用。3、变量按其作用范围可以分为局 部变量和全局变量。小结:在C语言中,程序模块 是由函数实现的。一个C语言程序 可由一个主函数(主模块)和若干函 数(子程数,其它函数也可以互相调用。案例思考案例思考作业教学目标1、熟悉变量的存储属性2、熟练运用局部变量和全局变量。教学重点、 难点熟练运用局部变量和全局变量。技能培训重点、 难点1、理解变量的存储属性。2、运用变量的存储属性编写程序。教法 案例教学法学法 思考,讨论,练习和
9、巩固教具使用投影仪演示或教学机房学内容教师活动学生活动备注导入变量是对程序中数据存储空间教案课题:第3章模块化程序设计(2)新课 的抽象表示。我们在第二章的学习中接触了数据类型,数据类型是变量的操作属性。影响变量的使用的还有变量的存储属性。讲授新课案例3.2:变量的存储类别分析案例程序运行结果/*/源源程程序序穀案例例源2序M略例3_2_1.c*/3_2_2.c*/#in clud#in eludemai n()mai n()intfact(int int fact(intn);n);int n ,k;int n,k;pri ntf(“n=”)printf( “n =输入程序调试从案例可以看出
10、,两个程序只有 一个地方不同,即fact函数中变量f的定义。第一个程序是:int f=1;第二个程序是:static int f=1;而结果却完全不同。这是变量的 不同存储类别造成的。1、动态存储方式与静态存储方 式。按变量的作用域来划分将变量分 为全局变量和局部变量。按变量值存 在方式(即生存期)来划分,可以分 为静态存储方式和动态存储方式。内存中供用户使用的存储空间可以分成三个部分,如图3-5所示:用户 区教师程序分可区析以静态讨进存储论行区启动态发存储式区提图3-52、auto变量。 函数中的局部变 量,如不声明为static存储类别,都 使用动态分配技术。数据存储在动态 存储区中。函数
11、中的形参和在函数中 定义的变量(包括在复合语句中定义 的变量),都属于auto变量。在调用 该函数时系统会给它们分配存储空 间,在函数调用结束时就自动释放这 些存储空间。因此,这类局部变量称 为自动变量。程序问小结自动变量。 自动变量用关键字auto作存储类别的声明。注: 关键字“auto”可以省略,auto不写就默认为自动存储类别,它属于动态存储方式。3、用static声明局部变量。为 了使函数中的局部变量的值在函数 调用结束后保留原值,使其占用的存 储单元不被释放,以供下次调用该函 数时使用。这时就可指定该局部变量 为“静态局部变量”。用关键字“static声明。对静态局部变量的说明:1静
12、态局部变量属于静态存储 类别,在静态存储区域内分配存储单 元。在整个程序运行期间都不被释 放。而自动变量(即动态局部变量)属于动态存储类别,占用动态存储区 空间,在函数调用结束后即被释放。2静态局部变量在编译时赋初用结束时的值。对自动变量赋初值,不是在编译时进行的,而是在函数调 用时进行的,每调用一次函数重新赋 一次初值。3如果在定义局部变量时不赋 初值。 静态变量在编译时自动赋初值0(对数值型变量)或空字符(对字 符型变量) ; 自动变量的值是一个不 确定的值。这是由于每次函数调用结 束后存储单元已被释放,下次调用时 又重新分配存储单元,而所分配的存 储单元中的值是不确定的。4虽然静态局部变
13、量在函数调 用结束后仍然存在,但其它函数是不 能引用的。4、egister变量5、 用extern声明外部变量6、 在多文件的程序中声明外部变量。7、 用static声明外部变量应用方法。案例思考案例思考作业习题教学目标1、了解模块化程序设计思想。2、熟练运用局部变量和全局变量。3、理解内部函数和外部函数的概念。教学重点、 难点1、熟练运用局部变量和全局变量。2、模块化程序设计技能培训重 点、难点1、了解模块化程序设计的思想2、掌握宏定义、“文件包含”处理命令教法 案例教学法学法 思考,讨论,练习和巩固教具使用投影仪演示或教学机房学内容教师活动学生活动备注教案课题:第3章模块化程序设计(3)导
14、入新课在程序设计中, 通常将一些常用 的功能模块编写成函数,放在函数库 中,以供调用。充分使用库函数,可 以减少编写程序的工作量。本章主要 介绍如何使用函数实现C语言的模 块化程序设计功能。讲授新课案例3.3:学籍管理系统的 框架函数/*源程序:案例3_3.c*# include vstdi o.h# include vcon io.hmain()void create();void search();void print();void input();void output();void search_num();void search_name();void search_class();
15、void print_num();void print_class(); voidprint_score(); int select;while(1) clrscr();printf( nnttt学生信息管理系统nn);printf(tt1-学生信息 库建立n);printf(tt2-学生信 息查询n);printf(tt3-学生信 息输出n);printf(tt0-结束n);printf(tt请输入你 的选择(0-3):);scanf(%d, &select); switch(select)分case 1:create();析break;讨case 2:search();论教break;师c
16、ase 3: print();可break;以case 0:exit(0);进行启发1、案例中函数调用关系式2、“文件包含处理命令。提所谓“文件包含”处理是指一个 源文件可以将另一个源文件(头文 件)的全部内容包含进来。 头文件通 常以“.h”为后缀,也可用“c”为 后缀或者没有后缀。但用h作后缀更能表示此文件的性质。头文件除 了可以包括函数原型和宏定义外,也 可以包括结构体类型定义和全局变 量定义等。C语言提供了#include命 令用来实问总结件包含”可以减少程序设计人员的重 复劳动。其一般格式为:#include文件名”或#include坟件名案例中用到scanf和printf函 数,其函数原型在头文件stdio.h中, 只要用“文件包含”处理命令:# include 3、C语言提供的预处理功 能:宏定义、文件包含和条件编译(1)、宏定义不带参数的宏定义用一个指定的标识符 (即名字)来代表一个字符串,它的一般格式 为:# define标识符字符串带参数的宏定义。 其定义的一 般格式为:# define标识符(参数表)字符串(2)、条件编译。般情况下,源程序中所有程序行都进行编译。但 是,有时希
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度叉车租赁与租赁物租赁期限调整合同4篇
- 2025年昌月离婚协议书婚姻解除及财产清算范本4篇
- 2025年度航空航天材料质量保证协议4篇
- 2024年重庆地区标准离婚合同模板一
- 2024私募股权投资居间协议
- 专项舞台效果策划与实施协议版A版
- 2024年食堂运营合作协议标准文本版
- 专业电商咨询服务费用协议(2024版)版B版
- 个人房产作为抵押的贷款合同模板一
- 专项定制游学服务合同范本版
- 抗心律失常药物临床应用中国专家共识
- 考级代理合同范文大全
- 2024解析:第三章物态变化-讲核心(原卷版)
- DB32T 1590-2010 钢管塑料大棚(单体)通 用技术要求
- 安全行车知识培训
- 2024年安徽省高校分类对口招生考试数学试卷真题
- 第12讲 语态一般现在时、一般过去时、一般将来时(原卷版)
- 2024年采购员年终总结
- 2024年新疆区公务员录用考试《行测》试题及答案解析
- 肺动脉高压的护理查房课件
- 2025届北京巿通州区英语高三上期末综合测试试题含解析
评论
0/150
提交评论