版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务5.4模拟停车场计时收费系统设计主讲:陈静目录任务导入与必备知识任务实施与代码实现教学总结010203教学目标知识目标1.理解变量的作用域(空间概念)与生命周期(时间概念),掌握C语言中四种作用域和三种存储期的含义。2.掌握局部变量、全局变量和静态变量的定义方法、作用范围、生命周期及初始化特点。3.理解静态局部变量"只初始化一次、值跨调用保留"的特性,以及静态全局变量限制文件内可见的作用。能力目标1.能根据实际需求合理选择局部变量、全局变量或静态变量,做到作用域最小化、职责清晰化。2.能运用全局变量实现多函数间数据共享,运用静态变量实现状态保持与唯一编号生成。3.能独立开发停车场计时收费系统,实现车辆登记、费用计算、营收统计和服务计数等功能。素养目标1.培养"公私分明、各司其职"的规则意识,正确界定变量作用范围,避免数据污染与命名冲突。2.树立"恪尽职守、协同有序"的责任担当,守好自身"局部"职责的同时善用"全局"资源。3.学习张秉贵"一把抓"精益求精的工匠精神,在岗位上守土有责、心怀大局、协同配合。树立"恪尽职守、协同有序"的责任担当教学重难点重点教学重点局部变量、全局变量、静态变量的作用域范围三种变量的生命周期及存储位置变量在实际项目中的应用场景难点教学难点静态变量的特性理解只初始化一次、值持久保存变量遮蔽现象及命名冲突处理如何根据实际需求选择合适的变量类型策略突破策略通过停车场收费系统案例,直观展示三种变量的应用场景结合代码演示,观察静态变量的递增特性对比分析不同变量的优缺点,建立选择依据任务导入与必备知识01任务导入如何选择合适的变量类型来存储这些数据?单次停车时长临时计算用,函数内使用当日累计收费总额供多个函数共享访问系统运行总交易次数跨函数持久保存局部变量函数内部临时使用全局变量多个函数共享数据静态变量需要保持状态的场景变量作用域概念作用域空间概念:变量在程序中的可见范围,决定变量能被哪些代码访问生命周期时间概念:变量在内存中存在的时间段,决定何时创建与销毁块作用域代码块内定义的变量,如{}包裹的复合语句函数作用域主要适用于标签(label),函数体内部可见文件作用域所有函数之外定义的变量,全局可见函数原型作用域函数原型中声明的参数,仅原型内可见自动存储期进入作用域时创建,离开作用域时自动销毁静态存储期程序开始时创建,程序结束时销毁,生命周期贯穿全程动态存储期通过malloc/calloc等手动分配和释放,程序员完全控制作用域
×
存储期=变量特性局部变量块作用域+自动存储期静态局部变量块作用域+静态存储期全局变量文件作用域+静态存储期动态分配变量动态存储期+指针作用域局部变量函数内部定义在函数内部或复合语句内定义变量作用域受限仅限于定义它的函数或代码块内有效栈内存存储存储在栈内存中,不会自动初始化生命周期进入作用域创建,离开时自动销毁变量遮蔽现象当内部作用域定义了与外部作用域同名的变量时,内部变量会暂时屏蔽外部变量intx=10;//外部变量{intx=20;//遮蔽外部xprintf("%d",x);//输出20}printf("%d",x);//输出10尽量缩小变量作用域,避免命名冲突始终初始化局部变量,防止使用未定义的值避免在嵌套作用域中重用变量名注意函数参数也属于局部变量课堂互动:局部变量作用域分析思考题:变量作用域分析}}local_var分析作用域范围:整个函数体从声明位置开始,至函数结束的花括号为止可见性结论:函数内任何位置均可访问block_var分析作用域范围:内部代码块仅在第4-6行的花括号内部有效可见性结论:代码块外不可访问讨论要点local_var的作用域范围是什么?block_var的作用域范围是什么?在代码块外能否访问block_var?voidexamplefunction(){intlocal_var=10;{ intblock_var=20; printf("block_var=%d\n",block_var); } //block_var在此是否可见?}全局变量优点定义与特点在所有函数外部定义作用域从定义点开始到文件结束存储在数据段中,自动初始化为零生命周期:程序启动时创建,结束时销毁可使用extern关键字在其他源文件中访问便于多个函数共享数据生命周期长适合存储程序级状态减少参数传递使用警示增加代码耦合度,降低模块化程度容易造成命名冲突不利于调试,任何函数都可能修改它破坏函数的可重入性静态变量静态变量定义与分类使用static关键字声明,具有静态存储期静态局部变量作用域仅限于定义它的函数内生命周期贯穿程序执行期间只初始化一次静态全局变量作用域仅限于定义它的源文件内避免与其他文件的全局变量命名冲突文件级隔离存储位置数据段(与全局变量相同)初始化特性未显式初始化时自动初始化为零存储特性数据段存储存储在数据段中,与全局变量相同自动归零未显式初始化时自动初始化为零应用场景函数调用之间保持状态(计数器、缓存数据)实现单例模式限制全局变量的可见范围提高程序性能,避免重复初始化课堂互动:静态变量特性观察思考题:静态变量特性观察voidcounter(){staticintcount=0;count++;printf("调用次数:%d\n",count);}intmain(){counter();counter();counter();return0;}为什么count的值会递增?静态变量在函数调用结束后不会销毁,其值会被保留,下次调用时继续使用上次的结果静态变量初始化执行了几次?静态变量仅在程序生命周期中初始化一次,后续调用跳过初始化语句,直接执行后续代码如果去掉static关键字会怎样?变为普通局部变量,每次函数调用重新创建并初始化为0,三次调用均输出"调用次数:1"变量使用原则最小作用域原则使用尽可能小的作用域,减少命名冲突风险避免全局变量除非必要,优先使用局部变量,降低耦合度慎用静态变量只在需要保持状态时使用,避免滥用初始化变量始终初始化变量,避免未定义行为命名规范使用前缀区分变量类型g_表示全局变量s_表示静态变量任务实施与代码实现02实施思路全局变量定义dailyIncome,记录当日累计收费金额,实现当日营收统计功能局部变量存储停车时长、本次费用等临时数据,实现单次计费计算静态变量·统计定义totalVehicles,记录累计服务车辆总数,实现系统运行统计静态变量·编号定义currentId,自动生成唯一编号,实现车辆序号生成1免费时长15分钟前15分钟免费停车2计费规则5元/小时不足1小时按1小时计算3单日封顶30元单日最高收费限额车辆进入登记车辆离开结算查询当日营收查询服务总数退出系统任务分析全局变量定义在函数外部定义,用于累计当日营收floatdailyIncome=0.0;静态变量服务计数在函数内定义,统计当日服务车辆总数staticinttotalVehicles=0;静态变量编号生成在enterVehicle函数内定义,生成唯一车辆编号staticintnextId=1001;车辆进入函数生成唯一编号记录入场时间保存车辆信息车辆离开函数计算停车时长和费用更新全局变量增加服务总数查询函数输出当日营收输出服务总数训练项目:系统功能实现编程任务车辆进入登记生成唯一编号车辆离开结算计算停车费用查询当日营收显示累计金额查询服务总数显示车辆数量技术要求全局变量正确使用全局变量存储当日营收数据,确保跨函数数据持久化静态变量使用静态变量实现编号生成和服务计数,保持函数内状态局部变量使用局部变量存储临时计算数据,避免命名冲突核心代码结构全局变量定义floatdailyIncome=0.0;Vehiclevehicles[MAX_VEHICLES];在函数外部定义,整个程序生命周期内有效,用于存储停车场日收入和车辆信息数组静态变量应用static
inttotalVehiclesCount=0;static
intnextId=1001;static
关键字修饰,保持值持久性,函数调用间保留数据,用于车辆计数和ID生成局部变量使用intduration;floatfee;intbillableHours;在函数内部定义,作用域仅限于该函数,用于存储停车时长、计算费用和计费小时数教学总结03知识回顾三种变量对比变量类型作用域生命周期存储位置初始化局部变量函数或代码块内进入作用域创建,离开销毁栈内存不自动初始化全局变量整个文件程序开始到结束数据段自动初始化为零静态变量局部:函数内;全局:文件内程序开始到结束数据段自动初始化为零临时数据用局部变量
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房地产心态课件
- 高中政治2026教资面试经典考题题库及解析
- 风电场入场管理课件
- 意外伤害的处理与护理
- 房地产逻辑课件
- 妇科化疗副反应及其护理说
- 福鼎白茶产品介绍课件
- 房产直播奖励机制课件
- 反传销教学设计课件
- 2026年电离辐射计量工专项题库(附答案与解释)
- 无人机地形测绘作业方案
- 2026中国睡眠医学中心建设现状及市场需求调研报告
- 2026秋小学湘美版美术五年级上册(新教材)教学计划含教学进度表
- 【MOOC】电机与拖动-浙江大学 中国大学慕课MOOC答案
- 北京市第四十三中学2024-2025学年高一数学上学期期中试题
- 光伏运维技能大赛备考试题库500题(含答案)
- 2024年机床制造行业培训资料
- 高中文理科分班后初次班会课件
- 工程项目劳务实名制工资管理办法分享
- 薛华成管理信息系统(第6版) 第15章 系统分析 ok
- DO3000中分永磁变频门机使用说明书
评论
0/150
提交评论