计算机程序设计基础 第三章 函 数讲课教案

上传人:yuzo****123 文档编号:137059906 上传时间:2020-07-04 格式:PPT 页数:37 大小:233KB
返回 下载 相关 举报
计算机程序设计基础 第三章 函 数讲课教案_第1页
第1页 / 共37页
计算机程序设计基础 第三章 函 数讲课教案_第2页
第2页 / 共37页
计算机程序设计基础 第三章 函 数讲课教案_第3页
第3页 / 共37页
计算机程序设计基础 第三章 函 数讲课教案_第4页
第4页 / 共37页
计算机程序设计基础 第三章 函 数讲课教案_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《计算机程序设计基础 第三章 函 数讲课教案》由会员分享,可在线阅读,更多相关《计算机程序设计基础 第三章 函 数讲课教案(37页珍藏版)》请在金锄头文库上搜索。

1、计算机程序设计基础,第三章函数,提纲,3.1函数声明与调用3.2函数定义3.3函数调用规范3.4程序的结构化与模块化3.5程序测试与代码优化本章小结,3.1函数声明与调用,函数调用主调(客户)函数与被调(服务器)函数函数调用时的参数与返回值例一:printf(%2d,i);例二:n=GetIntegerFromKeyboard();函数原型函数的实现与调用格式说明:作为函数接口一般出现在头文件中/#include格式:函数返回值类型函数名称(形式参数列表);例一:intAdd(intx,inty);例二:voidSwap(intx,inty);例三:voidCompute();,3.2函数定义

2、,函数实现函数定义,使用编程语言给出函数的执行步骤函数返回值函数完成后带回来的结果主调函数可以使用谓词函数返回BOOL类型值的函数表达某项任务是否完成或某个条件是否满足,Compare函数,编写函数Compare,比较两个整型数据x、y的大小。若x等于y返回0,若x大于y返回1,若x小于y返回-1,intCompare(intx,inty)intt;if(x=y)t=0;elseif(xy)t=1;elset=-1;returnt;,Swap函数,编写函数Swap,互换两个整型数据x、y的值,voidSwap(intx,inty)intt;t=x;x=y;y=t;return;/因函数没有返回

3、值,只需直接列写return语句,多条return语句,编写函数Compare,比较两个整型数据x、y的大小。若x等于y返回0,若x大于y返回1,若x小于y返回-1,/允许函数中包含多条return语句/函数在执行到第一条return语句后终止intCompare(intx,inty)if(x=y)return0;elseif(xy)return1;elsereturn-1;,谓词函数,编写函数IsLeapYear,判断某个给定年份是否为闰年,BOOLIsLeapYear(intyear)returnyear%4=0,3.3函数调用规范,函数调用示例参数传递机制函数调用栈框架函数的嵌套调用,函

4、数调用示例,编写程序将用户输入的两个整数相加,要求尽可能使用函数将程序中的有关操作独立出来,#include#includezylib.hvoidPrintWelcomeInfo();intGetInteger(STRINGprompt);intAdd(intx,inty);intmain()inta,b,sum;PrintWelcomeInfo();a=GetInteger(Thefirstnumber:);b=GetInteger(Thesecondnumber:);sum=Add(a,b);printf(Thesumis%d.n,sum);return0;,#includeintmain

5、()inta,b,sum;printf(Theprogramgetstwointegers,andprintstheirsum.n);printf(Thefirstnumber:);scanf(%d,函数调用示例,voidPrintWelcomeInfo()printf(Theprogramgetstwointegers,andprintstheirsum.n);intGetInteger(STRINGprompt)intt;printf(%s,prompt);t=GetIntegerFromKeyboard();/scanf(%d,参数传递机制,形式参数在函数调用时才分配存储空间,并接受实际

6、参数的值实际参数可以为复杂的表达式,在函数调用前获得计算形式参数与实际参数可同名,也可不同名参数较多时,实际参数值逐一赋值,它们必须保持数目、类型、顺序的一致值的复制过程是单向不可逆的,函数内部对形式参数值的修改不会反映到实际参数中去函数参数一般为函数输入集的一部分,函数输出集一般使用返回值表示,只有使用特殊的手段才可以将函数参数作为函数输出集的一部分,函数调用栈框架,首次调用GetInteger函数前,函数调用栈框架,首次调用GetInteger函数,数据输入前,函数调用栈框架,Thefirstnumber:,10,prompt,t,GetInteger,首次调用GetInteger函数,数

7、据输入后,函数调用栈框架,首次调用GetInteger函数,数据输入后,函数调用栈框架,首次调用GetInteger函数结束,函数调用栈框架,再次调用GetInteger函数,数据输入后,函数调用栈框架,再次调用GetInteger函数结束,函数调用栈框架,调用Add函数,函数调用栈框架,调用Add函数结束,结果为30,整数互换示例第一版,编写程序将用户输入的两个整数互换,#include#includezylib.hvoidPrintWelcomeInfo();intGetInteger(STRINGprompt);voidSwap(intx,inty);intmain()inta,b;/*

8、输入部分*/PrintWelcomeInfo();a=GetInteger(Thefirstnumber:);b=GetInteger(Thesecondnumber:);/*数据处理与输出部分*/printf(Inmain():a:%d;b:%dn,a,b);Swap(a,b);printf(Inmain():a:%d;b:%dn,a,b);return0;,整数互换示例第一版,voidPrintWelcomeInfo()printf(Theprogramgetstwointegers,andtriestoswapthem.n);intGetInteger(STRINGprompt)intt

9、;printf(%s,prompt);t=GetIntegerFromKeyboard();returnt;voidSwap(intx,inty)intt;printf(InSwap():x:%d;y:%dn,x,y);t=x;x=y;y=t;printf(InSwap():x:%d;y:%dn,x,y);return;,整数互换程序栈框架,调用Swap函数前,整数互换程序栈框架,调用Swap函数,数据互换前,整数互换程序栈框架,调用Swap函数,数据互换后,整数互换程序栈框架,调用Swap函数后,整数互换示例第二版,编写程序将用户输入的两个整数互换,#include#includezylib

10、.hinta,b;/*全局数据对象声明,以保证所有函数都可以访问这两个数据对象*/voidPrintWelcomeInfo();intGetInteger(STRINGprompt);voidSwap();/*不再需要函数参数*/intmain()/*输入部分*/PrintWelcomeInfo();a=GetInteger(Thefirstnumber:);b=GetInteger(Thesecondnumber:);/*数据处理与输出部分*/printf(Inmain():a:%d;b:%dn,a,b);Swap();printf(Inmain():a:%d;b:%dn,a,b);retu

11、rn0;,整数互换示例第二版,voidPrintWelcomeInfo()printf(Theprogramgetstwointegers,andtriestoswapthem.n);intGetInteger(STRINGprompt)intt;printf(%s,prompt);t=GetIntegerFromKeyboard();returnt;voidSwap()intt;printf(InSwap():a:%d;b:%dn,a,b);t=a;a=b;b=t;printf(InSwap():a:%d;b:%dn,a,b);return;,函数嵌套调用,函数平行定义,不能嵌套定义,但可以

12、嵌套调用,3.4程序的结构化与模块化,结构化与函数抽象结构化负责实现函数,强调编码自顶向下,逐步求精抽象手段:函数模块化与函数抽象模块化负责组织函数,进行任务划分,强调设计抽象手段:函数模块间通信使用接口,典型表现为函数参数与返回值,3.5程序测试与代码优化,程序测试原则顺序结构:一般一次测试。注意:仅仅是一般!分支结构:每条路径都需要测试循环结构:一般测试第一次、最后一次与中间某次迭代程序效率混合运算时文字的存储类型程序测试示例编写程序,实现从摄氏温度到华氏温度值的转换。温度转换公式为f=1.8c+32,c为摄氏温度值,f为转换后的华氏温度值,温度转换程序,#include#includez

13、ylib.hconstfloatabsolute_zero=-273.15;floatf,c;floatGetFloat(STRINGprompt);voidInput();voidCompute();voidOutput();voidmain()Input();Compute();Output();,温度转换程序,voidInput()c=GetFloat(Inputatemperaturevalue(C):);while(c=absolute_zero)printf(Thetemperaturevalueisbelow%.2f.n,absolute_zero);c=GetFloat(Inp

14、utatemperaturegreaterthantheabsolutezero:);voidCompute()f=c*1.8+32;voidOutput()printf(Temperaturevalue(F)is%.2f.n,f);floatGetFloat(STRINGprompt)floatt;printf(%s,prompt);t=GetRealFromKeyboard();returnt;,本章小结,结构化与模块化重要程序设计原则!函数的声明、调用与定义函数参数与函数返回值参数传递规范函数调用栈框架程序测试与代码优化基本程序测试原则代码优化是双刃剑,注意在效率与可读性间维持平衡,作业,第115页:习题二第4、5、9小题第116页:习题二第11小题,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

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