- 1、本文档共56页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Python电子教案5-2 函数和代码复用;数码管是一种价格便宜、使用简单的发光电子器件,广泛应用在价格较低的电子类产品中,其中,七段数码管最为常用。七段数码管(seven-segment indicator)由7段数码管拼接而成,每段有亮或不亮两种情况,改进型的七段数码管还包括一个小数点位置,如图5.4所示。
;;七段数码管能形成27=128种不同状态,其中部分状态能够显示易于人们理解的数字或字母含义,因此被广泛使用。图5.5给出了十六进制中16个字符的七段数码管表示。
;本节将延续实例2和第2.4节内容,通过??分turtle库函数绘制七段数码管形式的日期信息。该问题的IPO描述如下:
输入:当前日期的数字形式
处理:根据每个数字绘制七段数码管表示
输出:绘制当前日期的七段数码管表示
;每个0到9的数字都有相同的七段数码管样式,因此,可以通过设计函数复用数字的绘制过程。进一步,每个七段数码管包括7个数码管样式,除了数码管位置不同外,绘制风格一致,也可以通过函数复用单个数码段的绘制过程。这里,先给出程序的全部代码,实例代码7.1如下;;实例代码7.1定义了drawDigit()函数,该函数根据输入的数字d绘制七段数码管,结合七段数码管结构,每个数码管的绘制采用图5.6所示顺序。
;绘制起点在数码管中部左侧,无论每段数码管是否被绘制出来,turtle画笔都按顺序“画完”所有7个数码管。对于给定数字d,哪个数码段被绘制出来采用if…else…语句判断。
drawLine(True) if d in [2,3,4,5,6,8,9] else drawLine(False);以第8行为例,代码采用了单行if…else语句,这种语句常用于if和else分别只有一行语句的情形。第8行代码含义采用普通if…else语句表达如下,可见,单行语句的实现方式能够使表达更加紧凑。
if d in [2,3,4,5,6,8,9]:
drawLine(True)
else:
drawLine(False);第8行代码根据输入数字判断是否要绘制七段数码管最中间的横线
当需要绘制时,调用绘制函数drawLine(),参数赋值True
当不需要绘制时,赋值参数False。根据0-9数字结构,对于2,3,4,5,6,8,9这些数字需要绘制,否则不需要绘制。为了使输出样式固定,简化设计,当不需要绘制时,turtle画笔需要抬起。drawLine()函数根据输出参数的值(True或False)决定是否抬起画笔。;为了使代码模块化更好,实例代码7.1定义了drawDate()函数和main()函数。
drawDate()函数将更长数字分解为单个数字,进一步调用drawDigit()分别绘制每个数字。
main()函数将启动窗体大小、画笔宽度、系统时间等功能封装在一起,但main()函数并不体现单一功能,这种封装仅从提高代码可读性角度考虑。;;实例代码7.1仅给出了最基本的七段数码管绘制程序,可以看出,使用函数能大量复用代码,避免相同功能重复编写。此外,函数的好处还体现在对代码的修改方面。能否绘制更有趣的七段数码管呢?
实例代码7.2给出了图5.8的绘制风格,请读者比较实例代码7.2和实例代码7.1,进一步体会函数为编程带来的便利。;;;;代码的复用和模块化设计;程序由一系列代码组成,如果代码是顺序但无组织的,不仅不利于阅读和理解,也很难进行升级和维护。因此,需要对代码进行抽象,形成易于理解的结构。
当代编程语言从代码层面采用函数和对象两种抽象方式,分别对应面向过程和面向对象编程思想。;函数是程序的一种基本抽象方式,它将一系列代码组织起来通过命名供其他程序使用。函数封装的直接好处是代码复用,任何其他代码只要输入参数即可调用函数,从而避免相同功能代码在被调用处重复编写。代码复用产生了另一个好处,当更新函数功能时,所有被调用处的功能都被更新。;对象是程序的一种高级抽象方式,它将程序代码组织为更高级别的类。对象包括表征对象特征的属性和代表对象操作的方法。例如,汽车是一个对象,其颜色、轮胎数量、车型是属性,代表汽车的静态值;前进、后退、转弯等是方法,代表汽车的动作和行为。
在程序设计中,如果a代表对象,获取其属性b采用a.b,调用其方法c采用a.c()。对象的方法具有程序功能性,因此采用函数形式封装。;简单地,对象是程序拟解决计算问题的一个高级别抽象,它包括一组静态值(属性)和一组函数(方法)。从代码行数角度,对象和函数都使用了一个容易理解的抽象逻辑,但对象可以凝聚更多代码。因此,面向对象编程更适合代码规模较大,交互逻辑复杂的程序
;面向过程是一种以过程描述为主要方法的编程方式,该方法要求程序员列出解决问题所需要的步骤,然后用函数将这些步骤一步一步实现,使
您可能关注的文档
最近下载
- 部队工程保密方案及措施(3篇).docx VIP
- 玩转科技助力业务答案.pdf VIP
- 2024年江苏无锡高新区(新吴区)教育系统招聘中小学教师49人(事业编)历年公开引进高层次人才和急需紧缺人才笔试参考题库(共500题)答案详解版.docx
- 房屋市政工程生产安全重大事故隐患判定标准(2024版)试题附答案.doc
- 急症患者入院护理常规.pptx
- 信息系统监理师教程.docx VIP
- 包米勒横切系统伺服控制器操作说明书V0.2.pdf
- 人教版小学五年级下册数学口算题.doc VIP
- 2024年银从初级《个人理财》三色笔记复习.pdf
- 毕业设计(论文)-物料搬运机器人结构设计-六轴机械手.docx VIP
文档评论(0)