第5讲结构化程序设计(PartII)提要课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第5讲结构化程序设计(PartII)提要课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 程序设计 PartII 提要 课件
- 资源描述:
-
1、第第5讲讲结构化程序设计(结构化程序设计(Part II)2018年10月11日1谢谢观赏2019-8-17谢谢观赏提要提要nC程序简介n函数基础知识n文件的简单用法n简单程序设计实例22019-8-17谢谢观赏提要提要nC程序简介程序简介n函数基础知识n文件的简单用法n简单程序设计实例32019-8-17谢谢观赏C程序简介程序简介n一个C程序可由若干个源程序文件源程序文件组成n一个源文件可以由若干个函数函数和预处理命预处理命令令以及全局变量声明全局变量声明部分组成n 一个函数由变量定义部分变量定义部分和执行语句执行语句组成n一个源程序文件也是可独立编译的单位,所以C程序可以按源程序文件分别编
2、写、分别编译42019-8-17谢谢观赏52019-8-17谢谢观赏C语句语句nC语句是C程序的基本组成单元nC语句可以分为以下5类n空语句n表达式语句n复合语句n控制语句n函数调用语句62019-8-17谢谢观赏C语句(续)语句(续)n控制语句有9种nif()else (条件语句)nswitch (多分支选择语句)nfor()(循环语句)nwhile()(循环语句)ndo while()(循环语句)ncontinue (结束本次循环语句)nbreak (中止执行switch或循环语句)ngoto (转向语句)nreturn (从函数返回语句)72019-8-17谢谢观赏C语句(续)语句(续)
3、n函数调用语句n由一次函数调用加一个分号构成n表达式语句n由一个表达式加一个分号构成,如赋值语句n空语句n只有一个分号的语句,它什么也不做n复合语句n用 把一些语句括起来构成,又称分程序82019-8-17谢谢观赏C程序的三种基本结构程序的三种基本结构n顺序结构n条件控制结构nif else n循环结构nwhile()ndo while()nfor()92019-8-17谢谢观赏提要提要nC程序简介n函数基础知识函数基础知识n正文文件的简单用法n简单程序设计实例102019-8-17谢谢观赏函数基础知识函数基础知识n结构化程序设计中,将复杂的功能分解成若干简结构化程序设计中,将复杂的功能分解成
4、若干简单的子功能,用函数编码实现子功能,通过调用单的子功能,用函数编码实现子功能,通过调用函数实施子功能要求函数实施子功能要求n函数是一个实现指定功能、逻辑上独立的代码段函数是一个实现指定功能、逻辑上独立的代码段n对函数使用者来说,把它看作对函数使用者来说,把它看作“黑盒黑盒”,只需知,只需知道要传送给函数的数据(输入),和函数执行后道要传送给函数的数据(输入),和函数执行后能得到什么结果(输出)能得到什么结果(输出)n函数可以定义局部对象,使函数在逻辑上作为程函数可以定义局部对象,使函数在逻辑上作为程序的一个相对独立单位,不受主函数或其它函数序的一个相对独立单位,不受主函数或其它函数的程序对
5、象命名的影响的程序对象命名的影响112019-8-17谢谢观赏函数基础知识(续)函数基础知识(续)n函数可带函数可带形参形参,使函数执行时,操作对象、求值方式,使函数执行时,操作对象、求值方式等可随不同调用的需要而改变等可随不同调用的需要而改变n函数为程序的层次构造和开发提供支持,使设计新程函数为程序的层次构造和开发提供支持,使设计新程序能在已有函数基础上构造功能更强的函数和程序序能在已有函数基础上构造功能更强的函数和程序n一个一个C程序以程序以 main()函数作为程序的主函数。程序运函数作为程序的主函数。程序运行时,从它开始执行行时,从它开始执行n在在C语言中,函数不能嵌套定义,一个函数并
6、不从属语言中,函数不能嵌套定义,一个函数并不从属于另一个函数于另一个函数n除不能调用除不能调用 main()函数外,其它函数可以相互调用函数外,其它函数可以相互调用122019-8-17谢谢观赏函数库函数库n把一些公用的、基本的计算功能所对应的函数集中起来,构成一个库,我们称之为函数库函数库,相应的函数成为库函数库函数n函数库中的函数具有预先定义的、标准的输入、输入接口输入、输入接口nC语言中定义了一些基本的标准函数n编程环境工具厂商(Microsoft、Borland等)往往提供更多的函数供编程者使用132019-8-17谢谢观赏函数库(续)函数库(续)nC语言使用头文(header fil
7、e,即*.h文件文件)对函数库中的函数进行定义和说明n函数库中的函数经编译后,绑定在一起件,构成一个库文件(library file,即*.lib文件文件)nC程序调用C语言或者编程环境提供的函数时,要在程序中包含(include)相应的头文件;在产生执行文件时,需要与库文件中相应的目标函数代码连接n为了使用方便,C语言按功能分类,提供了大量函数库,每个函数库都有自己的头文件142019-8-17谢谢观赏库函数的使用库函数的使用n使用相应库函数的程序都要在使用之前写上包含其头文件的预处理命令n常用的头文件nstdio.h (输入输出库函数)(输入输出库函数)nmath.h、stdlib.h、f
8、loat.h(数学库函数)(数学库函数)ntime.h(时间库函数)(时间库函数)nctype.h(字符分类和转换库函数)(字符分类和转换库函数)nstring.h(内存缓冲区和字符串处理库函数)(内存缓冲区和字符串处理库函数)ngraphics.h(图形处理库函数)(图形处理库函数)nmalloc.h、stdlib.h(内存动态分配库函数)(内存动态分配库函数)nsignal.h、process.h(进程控制库函数)(进程控制库函数)152019-8-17谢谢观赏实例实例n实例1:时间函数使用n实例2:随机函数使用(1)n实例3:随机函数使用(2)162019-8-17谢谢观赏#includ
9、e#include void main()struct tm*tmNow;/*定义一个时间结构指针变量定义一个时间结构指针变量*/long secsNow;/*定义以秒为单位的记录时间的变量定义以秒为单位的记录时间的变量*/char*strNow;/*时间字符串表示的字符指针时间字符串表示的字符指针*/time(&secsNow);/*调用函数调用函数time(),得到当前时间得到当前时间*/strNow=ctime(&secsNow);/*获得时间的字符串表示获得时间的字符串表示*/printf(自自1970年年1月月1日至现在的时间日至现在的时间(以秒为单位以秒为单位):%ldn,secs
10、Now);printf(当前时间的另一种表示:当前时间的另一种表示:%sn,strNow);tmNow=localtime(&secsNow);/*获得结构形式的时间获得结构形式的时间*/printf(存于存于tmNow所指结构中的时间有年中的日、年、月、日、时、分、秒所指结构中的时间有年中的日、年、月、日、时、分、秒:n);printf(%d%d-%02d-%02d%02d:%02d:%02dn,tmNow-tm_yday,tmNow-tm_year+1900,tmNow-tm_mon,tmNow-tm_mday,tmNow-tm_hour,tmNow-tm_min,tmNow-tm_sec
11、);strNow=asctime(tmNow);/*得到字符串表示的时间得到字符串表示的时间*/printf(当前时间的另一种表示:当前时间的另一种表示:%sn,strNow);172019-8-17谢谢观赏#include#include#include void main()int k;long now;srand(time(&now)%60);/*用时间初始化随机用时间初始化随机 数发生函数的初态,使初态总不相同数发生函数的初态,使初态总不相同*/for(k=0;k 10;k+)/*产生产生10个随机数输出个随机数输出*/printf(”%dn”,rand();/*调用随机函数调用随机函
12、数*/182019-8-17谢谢观赏#include#include#include void main()int i;srand(time(NULL);for(i=1;i=10000;i+)printf(”%10d”,1+rand()%6);if(i%5=0)printf(“n”);192019-8-17谢谢观赏函数定义函数定义n函数定义的一般形式为函数定义的一般形式为 类型标识符类型标识符 函数名函数名(形式参数说明表形式参数说明表)说明和定义部分说明和定义部分 语句序列语句序列 202019-8-17谢谢观赏函数定义(续)函数定义(续)n类型标识符用于标识函数执行结果返回值的类型n当函数
13、执行不返回值时,习惯用void来标记n当函数返回int型值时,类型标识符int可以省略n函数名是一个标识符,一个C程序有且只有一个main()函数,其它的函数名可以随意命名212019-8-17谢谢观赏函数定义(续)函数定义(续)n函数名之后括号内的形式参数说明表是按需要而定n没有形参的函数,也就没有形参说明表,常用void代之,但函数名之后的一对圆括号不可省略n当函数有多个形参时,形参说明之间用逗号分隔,每个形参说明指定形参的类型类型和形参形参名名222019-8-17谢谢观赏函数定义(续)函数定义(续)n最外层花括号最外层花括号“”和和“”括住的部分括住的部分是函数体是函数体n在函数体的前
14、面部分可有函数需要的程序对在函数体的前面部分可有函数需要的程序对象的说明和定义象的说明和定义n函数体内定义的变量是局部变量,只能在函函数体内定义的变量是局部变量,只能在函数体内引用它们数体内引用它们n说明和定义之后是由语句序列组成的执行代说明和定义之后是由语句序列组成的执行代码码232019-8-17谢谢观赏例子例子1n求两个数中最小值的函数求两个数中最小值的函数min()double min(double x,double y)/*返回返回 double 型值,有两个形参型值,有两个形参 x,y,都为,都为 double 型的型的*/*函数返回函数返回x和和y中的小者的值中的小者的值*/re
15、turn x b;ngcd(a,b)=gcd(a,b-a),如如a b)a-=b;else b-=a;return a;第第1解法解法262019-8-17谢谢观赏n步骤:n求余数求余数 求求a除除b的余数的余数rn判结束判结束 如如r等于等于0,b为最大公约数为最大公约数n替换替换 用用b置置a,r置置b,并回到步骤,并回到步骤求余数求余数 第第2解法解法272019-8-17谢谢观赏 int gcd(int a,int b)int r;while(1)if(r=a%b)=0)break;a=b;b=r;return b;282019-8-17谢谢观赏 int gcd(int a,int b
16、)int r=a;do a=b;b=r;r=a%b;while(r);return b;292019-8-17谢谢观赏函数定义(续)函数定义(续)nC语言也允许在函数名后的圆括号内只给出各形参语言也允许在函数名后的圆括号内只给出各形参的名,随后才指定各形参的类型,但这种写法在的名,随后才指定各形参的类型,但这种写法在C+中已不允许中已不允许ndouble min(x,y)ndouble x,y;nn return x y?x:y;nnC语言还允许函数体为空的函数语言还允许函数体为空的函数ndummy()/*或或 dummy(void)*/nn302019-8-17谢谢观赏函数调用函数调用n函数
17、被定义以后,凡要实现函数功能的地函数被定义以后,凡要实现函数功能的地方,就可简单地通过函数调用来完成方,就可简单地通过函数调用来完成n函数调用的一般形式为函数调用的一般形式为n函数名(实在参数表)函数名(实在参数表)n实在参数,简称实参。函数调用时,实参实在参数,简称实参。函数调用时,实参按它们出现的顺序与函数定义中的形参一按它们出现的顺序与函数定义中的形参一一对应,并要求实参类型与其对应的形参一对应,并要求实参类型与其对应的形参类型相一致类型相一致312019-8-17谢谢观赏函数调用(续)函数调用(续)n函数调用有两种方式函数调用有两种方式n传值调用(传值调用(call by value)
18、n把实参的值传给被调用函数的参数(形参)。这把实参的值传给被调用函数的参数(形参)。这时,被调用函数对参数的改变,不影响调用函数时,被调用函数对参数的改变,不影响调用函数实参的原始值实参的原始值n传引用调用(传引用调用(call by reference)n把实参的地址传给被调用函数的参数(形参)地把实参的地址传给被调用函数的参数(形参)地址。这时,被调用函数对参数的改变,将影响到址。这时,被调用函数对参数的改变,将影响到调用函数实参的原始值调用函数实参的原始值322019-8-17谢谢观赏函数调用(续)函数调用(续)n对double min(double x,double y)的函数调用 w
19、=min(u,v);n函数调用min(u,v)就是对函数min()的调用,它提供了两个实参u和v,分别对应形参x和yn如果调用无形参的函数,这时函数的调用形式变为n函数名()n其中函数名之后的一对圆括号是不能省略的 332019-8-17谢谢观赏函数调用(续)函数调用(续)n按函数调用在程序中的作用,有两种不同类型的应用n函数调用只是利用函数所完成的功能函数调用只是利用函数所完成的功能。此时,将函数调用作为一个独立的语句。这种应用不要求或无视函数的返回值n如程序中经常使用的调用格式输入函数scanf()和格式输出函数printf()等。n函数调用是利用函数的返回值函数调用是利用函数的返回值:或
20、用这返回值继续进行表达式的计算,或输出函数返回值等342019-8-17谢谢观赏函数调用的执行过程函数调用的执行过程1.为形参分配内存空间为形参分配内存空间2.计算实参表达式的值,并将值赋给对应的形参计算实参表达式的值,并将值赋给对应的形参3.为函数的局部变量分配内存空间为函数的局部变量分配内存空间4.执行函数体内的语句序列执行函数体内的语句序列5.函数体执行完,或执行了函数体执行完,或执行了return语句后,释放为语句后,释放为这次函数调用分配的全部内存空间这次函数调用分配的全部内存空间6.将函数值(如果有)返回到函数调用处继续执行将函数值(如果有)返回到函数调用处继续执行352019-8
21、-17谢谢观赏#include double x,y,d,min(double,double);void main()printf(“Enter x,y.n”);scanf(“%lf%lf”,&x,&y);d=min(x,y);printf(“MIN(%.3f,%.3f)=%.3fn”,x,y,d);double min(double a,double b)double temp;temp=a b?b:a;return temp;362019-8-17谢谢观赏对函数调用的说明对函数调用的说明n当函数执行当函数执行return语句或执行完函数体的语句序语句或执行完函数体的语句序列后,函数的这次调
22、用就结束,随之将控制返回列后,函数的这次调用就结束,随之将控制返回到函数调用处继续执行到函数调用处继续执行n函数的返回值是通过执行函数的返回值是通过执行return 语句时,计算语句时,计算return之后的表达式值而获得的。如果函数不提之后的表达式值而获得的。如果函数不提供返回值,则供返回值,则return语句不包含表达式。语句不包含表达式。n如果函数有返回值,则应有确定的类型,并在函如果函数有返回值,则应有确定的类型,并在函数定义时指明。数定义时指明。若函数定义时不指明返回值类型,若函数定义时不指明返回值类型,且函数有返回值,且函数有返回值,C语言约定该函数的返回值类语言约定该函数的返回值
23、类型为型为int型型372019-8-17谢谢观赏对函数调用的说明(续)对函数调用的说明(续)n为了明确指明函数不提供返回值,建议在函数定义时,为了明确指明函数不提供返回值,建议在函数定义时,在函数名之前写上在函数名之前写上void。并在这样的函数体内,所有的。并在这样的函数体内,所有的return语句都不带表达式语句都不带表达式n当函数执行不带表达式的当函数执行不带表达式的return语句返回时,函数并不语句返回时,函数并不是一定不带回值,而是返回一个不确定的值。这时,不是一定不带回值,而是返回一个不确定的值。这时,不应该利用函数返回值进行再计算,否则会产生错误结果应该利用函数返回值进行再计
24、算,否则会产生错误结果n函数定义中的函数定义中的return语句的表达式类型应与函数定义中语句的表达式类型应与函数定义中指明的返回值类型相一致。如果指明的返回值类型相一致。如果return语句中的表达式语句中的表达式类型与函数定义指明的返回值类型不一致时,对于基本类型与函数定义指明的返回值类型不一致时,对于基本类型情况,类型情况,则以函数的返回值类型为准,系统会自动进则以函数的返回值类型为准,系统会自动进行类型转换行类型转换382019-8-17谢谢观赏实参向形参单向传递数据实参向形参单向传递数据n在函数未被调用时,函数定义中的形参和函数体在函数未被调用时,函数定义中的形参和函数体中定义的局部
25、变量并不占用存储单元中定义的局部变量并不占用存储单元n在函数定义中,必须为函数的形参指定数据类型在函数定义中,必须为函数的形参指定数据类型n函数体中所使用的形参的初值是由函数调用时对函数体中所使用的形参的初值是由函数调用时对应的实参表达式给定的应的实参表达式给定的nC语言规定,实参表达式对形参的数据传递是语言规定,实参表达式对形参的数据传递是“值传递值传递”的,即单向传递的,即单向传递n对于有多个实参的函数调用情况,对于有多个实参的函数调用情况,C语言不规定语言不规定实参的求值次序实参的求值次序392019-8-17谢谢观赏提要提要nC程序简介n函数基础知识n文件的简单用法文件的简单用法n简单
展开阅读全文