项目5任务5.1 用函数实现餐饮账单计算系统_第1页
项目5任务5.1 用函数实现餐饮账单计算系统_第2页
项目5任务5.1 用函数实现餐饮账单计算系统_第3页
项目5任务5.1 用函数实现餐饮账单计算系统_第4页
项目5任务5.1 用函数实现餐饮账单计算系统_第5页
已阅读5页,还剩23页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

任务5.1用函数实现餐饮账单计算系统主讲:陈静目录教学目标与重难点任务导入函数的定义函数的声明与调用任务实施教学总结010203040506教学目标与重难点01教学目标知识目标能力目标素质目标理解函数概念理解函数的概念及其在模块化编程中的作用掌握定义语法掌握函数定义的语法结构(返回类型、函数名、形参列表、函数体)掌握声明调用掌握函数声明与函数调用的方法设计功能函数能够根据问题需求设计并定义独立的功能函数处理返回值能够正确调用函数并处理返回值实现账单系统能够运用函数实现餐饮账单计算系统培养模块化思维培养模块化编程思维,提升代码组织能力树立协作意识树立分工协作意识,理解团队配合的重要性教学重难点重点难点函数的定义方法返回类型、函数名、参数、函数体函数的调用方式有返回值调用、无返回值调用函数参数传递机制理解数据在函数间的流转规则声明与定义的区别函数声明与函数定义的区别和使用场景形参与实参的关系形参与实参的关系及数据传递过程复杂问题拆分方法如何将复杂问题拆分为多个独立函数任务导入02餐饮账单计算的现实需求餐饮账单计算的现实需求餐厅就餐时,服务员需要为顾客打印小票,包含菜品名称、单价、数量、小计,以及总价、折扣、服务费、实付金额等。手工计算繁琐且容易出错重复操作"计算小计"、"计算折扣"、"计算总价"等操作在多个地方重复出现相同逻辑每个菜品的小计计算逻辑相同固定规则折扣和税费的计算规则固定解决方案函数是解决"重复代码"问题的最佳工具。本任务将把账单计算中的各个功能模块封装成独立函数,体会模块化编程如何让程序更清晰、更易维护课堂互动思考与讨论1重复操作场景在日常生活中,还有哪些场景存在"重复操作"?2手工计算步骤如果让你手工计算一份包含10个菜品的账单,你会如何组织计算步骤?3重复代码问题为什么说"重复代码"是程序设计中的一个问题?分组讨论如果不使用函数,编写账单计算程序会遇到哪些困难?函数的定义03函数的基本概念函数是C语言中模块化编程的基本单元,封装可重用代码完成特定任务先定义,后使用函数的名字以便按名调用,是函数的唯一标识函数的类型即返回值的类型,决定函数输出数据的种类函数的参数名字和类型,无参函数则不需要参数函数的操作在函数体中实现,完成特定任务的具体逻辑函数定义的语法结构函数定义的一般形式[返回类型]

函数名

(

形式参数列表

)

//函数头{函数体

//函数体}返回类型•有返回值函数需指定类型•无返回值使用void•省略则默认为int函数名•有效的标识符•建议取有助于记忆的名称•与功能相关的命名形参列表•函数名后括号中的变量•用于接收传递的数据•可包含多个参数函数体:用花括号括起来的部分,由若干条语句组成,描述函数实现功能的过程。函数体可以为空(空函数)。函数定义示例【例5-1】实现两个整数之和的函数123456int

sum(int

a,int

b){int

m;m=a

+

b;return

m;}4个核心要素返回类型:int函数执行完毕后返回的数据类型为整型函数名:sum标识函数功能的名称,调用时使用形参列表:inta,intb接收两个整型参数,用于传入计算数据函数体:定义变量m,计算a+b,返回结果m封装具体计算逻辑,实现求和功能训练项目floatmultiply(floatx,floaty)1正确指定返回类型和参数类型函数原型中明确声明返回值类型为float,两个形参x、y均为float类型2在函数体中实现乘法运算使用*运算符完成x与y的乘法计算,存储运算结果3使用return语句返回计算结果通过return关键字将乘积结果传递回调用处,完成函数调用拓展进阶思考函数返回值修改如果要让这个函数只打印结果而不返回值,应该如何修改?思考空间函数的声明与调用04函数的声明函数声明规则矩阵声明的作用:函数声明告诉编译器函数的名称、返回类型和参数编译检查正确性使编译器能够检查函数调用的正确性,包括参数类型和数量匹配灵活组织代码结构允许函数定义放在调用点之后,不受物理位置限制支持多文件编程通过头文件共享函数接口,实现模块化开发提升代码可读性提高代码可读性和组织性,便于团队协作维护场景一定义在前调用在后✓

不必声明编译器已知晓函数定义场景二

⚠

关键定义在后调用在前✗

必须声明原型说明必不可少执行流程定义调用自然顺序无需额外操作执行流程

⚠

关键声明调用定义前置声明原型说明先行函数的调用调用语法返回值变量=函数名(实际参数)函数调用的标准语法格式等号左侧接收返回值无返回值函数调用<函数名>([<实参列表>]);作为一条语句执行,只要求函数完成一定功能,不接收返回值。有返回值函数调用<变量>=<函数名>([<实参列表>]);把函数返回值赋给某个变量。实参的个数、类型和顺序应与被调用函数要求的参数一致。调用注意事项个数一致:实参与形参数量相同类型匹配:实参类型与形参类型兼容顺序对应:实参顺序与形参定义一致函数调用示例【例5-2】定义加法函数并在主函数中调用函数声明intadd(inta,intb);声明函数原型,告知编译器函数返回值类型、参数个数及类型函数调用result=add(3,5);在主函数中调用,传入实参3和5,返回值赋给result变量输出结果两次调用分别输出3+5=8和10+20=30,验证函数可重复使用3+5=810+20=30完整代码1234567891011121314#include

<stdio.h>

intadd(inta,intb);

//函数声明intmain(){intresult;

result=add(3,5);

//函数调用printf("3+5=%d\n",result);printf("10+20=%d\n",add(10,20));return0;}intadd(inta,intb){//函数定义returna+b;}实参传递3,5→a,b返回值8→result拓展提升标准输入输出库函数#include<stdio.h>用于printf、scanf等输入输出操作数学库函数#include<math.h>用于sqrt、pow等数学运算函数声明与定义的位置函数定义在前,调用在后→不必声明函数定义在后,调用在前→必须声明最佳实践将函数声明放在程序顶部或头文件中便于代码组织和维护课堂互动问题代码intmain(){intresult=multiply(3,4);printf("%d\n",result);return0;}int

multiply(inta,intb){returna*b;}隐式声明错误问题代码讨论问题1编译问题这段代码能否正常编译?为什么?2修正方法如何修正这个问题?3声明位置函数声明应该放在什么位置?任务实施05实施思路设计一个餐饮账单计算程序,将各功能封装为独立函数程序功能用户输入:输入菜品数量,依次输入每个菜品的名称、单价和数量自动计算:计算每个菜品的小计金额(单价×数量)折扣计算:满100打9折,满200打8折,满300打7折服务费:加收10%服务费输出结果:输出实付金额模块化设计将计算、打印等功能封装为独立函数,主函数负责输入数据和调用函数任务分析1floatcalItemTotal(floatprice,intquantity)计算单个菜品小计2floatcalDiscount(floattotal)根据总消费金额返回折扣额3floatcalServiceFee(floatamountAfterDiscount)计算服务费4voidprintBillHeader()打印账单表头5voidprintBillItem(charname[],floatprice,intquantity,floatsubtotal)打印菜品明细6voidprintSummary(floattotal,floatdiscount,floatserviceFee,floatfinalPay)打印结算信息主函数职责只负责输入数据,调用上述函数输出结果折扣计算规则总消费金额折扣率折扣额计算total<100无折扣0100≤total<2009折total×0.1200≤total<3008折total×0.2total≥3007折total×0.3服务费计算服务费=折后金额

×10%实付金额实付金额=总消费-折扣+服务费码上思悟小课堂分工协作,各司其职每个函数负责一项独立任务——calItemTotal只管算小计,calDiscount只负责折扣,printBillItem只负责打印一行。它们互不干扰,却又通过主函数的调度紧密配合每个人明确自己的职责,定义清晰的接口团队精神启示每个人明确自己的职责,定义清晰的接口(输入输出)独立完成任务,最后集成产出成果你写的函数可能会被团队的其他人调用,代码质量直接影响整体项目北斗团队的榜样北斗系统由数十万科研人员耗时二十余年建成,每个团队负责一个子模块,必须经过严格测试、接口明确,才能确保整个系统稳定可靠训练项目实践任务1输入3个菜品的信息(名称、单价、数量)2计算每个菜品的小计和总消费3根据折扣规则计算折扣额4计算服务费和实付金额5输出完整的账单详情测试数据菜品1:红烧肉,单价38元,数量2菜品2:清蒸鱼,单价68元,数量1菜品3:炒时蔬,单价28元,数量2预期输出总消费162元折扣16.2元服务费14.58元实付160.38元教学总结06知识要点回顾函数的定义函数的声明推荐函数的调用函数是模块化编程的基本单元,封装可重用代码函数由函数头(返回类型、函数名、形参列表)和函数体组成必须遵循"先定义,后使用"的原则函数声明告诉编译器函数的名称、返回类型和参数定义在后、调用在前时必须

温馨提示

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

评论

0/150

提交评论