第十一章-程序设计基础_第1页
第十一章-程序设计基础_第2页
第十一章-程序设计基础_第3页
第十一章-程序设计基础_第4页
第十一章-程序设计基础_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

第11章程序设计基础

程序设计的任务不仅仅是编写出一个能得到正确结果的程序,还应当考虑程序的质量以及用什么方法能得到高质量的程序。什么样的程序才算质量高呢?现在已经把程序“具有良好的结构,容易阅读和理解”作为衡量程序质量的首要条件。本章主要介绍程序设计的风格、结构化程序设计的原则和特点以及面向对象程序设计的基本概念及其技术特点等。第十一章--程序设计基础全文共31页,当前为第1页。11.1程序设计的风格

11.2结构化程序设计

11.3模块化程序设计

11.4面向对象的程序设计

第十一章--程序设计基础全文共31页,当前为第2页。11.1程序设计的风格程序设计是一门技术,需要相应的理论、技术、方法和工具来支持。程序设计的最终产品是程序,但仅设计和编制出一个运行结果正确的程序是不够的,还应养成良好的程序设计风格。因为程序设计风格会深刻地影响软件的质量和可维护性,良好的程序设计风格可以使程序结构清晰合理,使程序代码便于维护。良好的程序设计风格,是在程序设计的全过程中逐步养成的,它主要表现在:设计的风格、语言运用的风格、程序文本的风格以及输入输出的风格四个方面。第十一章--程序设计基础全文共31页,当前为第3页。1.程序设计的风格程序设计的风格主要体现在以下三个方面:(1)结构要清晰。为了达到这个目标,要求程序是模块化结构的,并且是按层次组织各模块的,每个模块内部都是由顺序、选择、循环三种基本结构组成。(2)思路要清晰。为了达到这个目标,要求在设计的过程中遵循自顶向下、逐步细化的原则。第十一章--程序设计基础全文共31页,当前为第4页。(3)在设计程序时应遵循“简短朴实”的原则,切忌买弄所谓的“技巧”。如为了实现两个变量x与y的内容互换,可以使用以下3条语句:T=xx=yy=T其中T为工作单元。不要为了省略一个工作单元采用下列3条语句:x=x-yy=y+xx=y-x第十一章--程序设计基础全文共31页,当前为第5页。2.语言运用的风格语言运用的风格主要体现在以下两个方面:(1)选择合适的程序设计语言。选择程序设计语言的原则有三点:符合软件工程的要求;符合结构化程序设计的思想;使用要方便。(2)不要滥用语言中的某些特色。特别要注意,尽量不用灵活性大、不易理解的语句成分。第十一章--程序设计基础全文共31页,当前为第6页。3.程序文本的风格

程序文本的风格主要体现在四个方面:注意程序文本的易读性;符号要规范化;在程序中加必要的注释;在程序中要合理地使用分隔符。4.输入输出的风格输入输出的风格主要体现在三个方面:对输出的数据应该加上必要的说明;在需要输入数据时,应该给出必要的提示。提示的内容主要有数据的范围和意义、输入的结束标志等;以适当的方式对输入数据进行检查,以确保其有效性。第十一章--程序设计基础全文共31页,当前为第7页。11.2结构化程序设计

结构化程序设计是荷兰学者Dijkstra提出了的,它规定了一套方法,使程序具有合理的结构,以保证和验证程序的正确性。这种方法要求程序设计者不能随心所欲地编写程序,而要按照一定的结构形式来设计和编写程序。它的一个重要目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率第十一章--程序设计基础全文共31页,当前为第8页。11.2.1结构化程序设计的原则11.2.2结构化程序的基本结构与特点

第十一章--程序设计基础全文共31页,当前为第9页。11.2.1结构化程序设计的原则结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化和限制使用goto语句。1.自顶向下程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。即首先把一个复杂的大问题分解为若干相对独立的小问题。如果小问题仍较复杂,则可以把这些小问题又继续分解成若干子问题,这样不断地分解,使得小问题或子问题简单到能够直接用程序的三种基本结构表达为止。2.逐步求精对复杂问题,应设计一些子目标作过度,逐步细化。第十一章--程序设计基础全文共31页,当前为第10页。3.模块化一个复杂问题,肯定是由若干简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标叫做一个模块。对应每一个小问题或子问题编写出一个功能上相对独立的程序块来,每个模块各个击破,最后再统一组装,这样,对一个复杂问题的解决就变成了对若干个简单问题的求解。4.限制使用goto语句goto语句是有害的,程序的质量与goto语句的数量成反比,应该在所有的高级程序设计语言中取消goto语句。第十一章--程序设计基础全文共31页,当前为第11页。11.2.2结构化程序的基本结构与特点结构化程序设计方法是程序设计的先进方法和工具。采用结构化程序设计方法编写程序,可使程序的结构良好、易读、易理解、易维护。1.顺序结构顺序结构是指程序中的各操作是按照它们出现的先后顺序执行的。这种结构的特点是:程序从入口点开始,按顺序执行所有操作,直到出口点处。顺序结构是一种简单的程序设计,它是最基本、最常用的结构。如图11.1所示。第十一章--程序设计基础全文共31页,当前为第12页。2.选择结构

选择结构是指程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。它包括两路分支选择结构和多路分支选择结构。(1)两路分支选择结构两路分支选择结构是指根据判断结构的入口点处的条件,如果条件满足执行S1处理,否则执行S2处理。值得注意的是,在这两个分支中只能选择一条且必须选择一条执行,但不论选择了哪一条分支执行,最后流程都一定到达结构的出口点处。如图11.2所示。第十一章--程序设计基础全文共31页,当前为第13页。

条件满足

不满足S1S2S1S2S3第十一章--程序设计基础全文共31页,当前为第14页。(2)多路分支选择结构多选择结构是指程序流程中遇到多个分支,程序执行方向将根据条件确定。如果满足条件1则执行S1处理,如果满足条件n则执行Sn处理,总之要根据判断条件选择多个分支的其中之一执行。不论选择了哪一条分支,最后流程要到达同一个出口处。如果所有分支的条件都不满足,则直接到达出口。如图11.3所示。

条件情况1情况2…情况nS1S2…Sn第十一章--程序设计基础全文共31页,当前为第15页。3.循环结构

循环结构是指程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环。(1)当型循环结构当型结构循环结构是指先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处。如图11.4所示。第十一章--程序设计基础全文共31页,当前为第16页。图11.4当型循环结构流程图第十一章--程序设计基础全文共31页,当前为第17页。(2)直到型循环结构直到型循环是指从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断。如图11.5所示。第十一章--程序设计基础全文共31页,当前为第18页。11.3模块化程序设计

模块化程序设计是指把一个大程序按人们能理解的大小规模进行分解。由于经过分解后的各模块比较小,因此容易实现,也容易调试。在进行模块化程序设计时,应重点考虑以下两个问题:按什么原则划分模块?如何组织好各模块之间的联系?第十一章--程序设计基础全文共31页,当前为第19页。1.按功能划分模块划分模块的基本原则是使每个模块都易于理解。按照人类思维的特点,按功能来划分模块最为自然。在按功能划分模块时,要求各模块的功能尽量单一,各模块之间的联系尽量少。满足这些要求的模块有以下几个优点:(1)可读性和可理解性都比较好。(2)各模块间的接口关系比较简单。(3)当要修改某一功能时,只涉及一个模块。(4)其他应用程序可以充分利用已有的一些模块。第十一章--程序设计基础全文共31页,当前为第20页。2.按层次组织模块在按层次组织模块时,一般上层模块只指出“做什么”,只有在最底层的模块中才精确地描述“怎么做”。主模块只需要指出总任务就可以了,而模块1、模块2与模块3分别指出各自的子任务。模块4、模块5与模块6才精确描述“怎么做”。如图11.6所示。第十一章--程序设计基础全文共31页,当前为第21页。第十一章--程序设计基础全文共31页,当前为第22页。11.4面向对象的程序设计

面向对象的程序设计(ObjectOrientedProgramming,简称OOP)是20世纪80年代提出的,它汲取了结构化程序设计中好的思想,引入了新的概念和思维方式,从而给程序设计工作提供了一种全新的方法。通常,在面向对象的程序设计风格中,会将一个问题分解为一些相互关联的子集,每个子集内部都包含了相关的数据和函数。同时,会以某种方式将这些子集分为不同等级,而一个对象就是已定义的某个类型的变量。第十一章--程序设计基础全文共31页,当前为第23页。1.面向对象技术的基本概念面向对象实现的主要任务是实现软件功能,实现各个对象所应完成的任务,包括实现每个对象的内部功能、系统的界面设计、输出格式等。在面向对象技术中,主要用到以下一些基本概念。(1)对象对象是指具有某些特性的具体事物的抽象。在一个面向对象的系统中,对象是运行期的基本实体。它可以用来表示一个人或者说一个银行帐户,一张数据表格,或者其它什么需要被程序处理的东西。它也可以用来表示用户定义的数据,如一个向量,时间或者列表。在面向对象程序设计中,问题的分析一般以对象及对象间的自然联系为依据。客观世界由实体及其实体之间的联系所组成,其中客观世界中的实体称为问题域的对象。如一本书、一辆车等都是一个对象。第十一章--程序设计基础全文共31页,当前为第24页。对象具有以下一些基本特征:模块性:一个对象是一个可以独立存在的实体。各个对象之间相对独立,相互依赖性小。继承性和类比性:可以把具有相同属性的一些不同对象归类,称为对象类。还可以划分类的子类,构成层次系统,下一层次的对象继承上一层次对象的某些属性。动态连接性:对象与对象之间可以相互连接构成各种不同的系统。对象与对象之间所具有的统一、方便、动态的连接和传送消息的能力与机制称为动态连接性。易维护性:任何一个对象是一个独立的模块,无论是改善其功能还是改变其细节均局限于该对象内部,不会影响到其他的对象。第十一章--程序设计基础全文共31页,当前为第25页。(2)类类是指具有相似性质的一组对象。例如,芒果、苹果和桔子都是水果类的对象。类是用户定义的数据类型,但在一个程序设计语言中,它和内建的数据类型行为相同。一个具体对象称为类的实例。(3)方法方法是指允许作用于某个对象上的各种操作。面向对象的程序设计语言,为程序设计人员提供了一种特殊的过程和函数,然后将一些通用的过程和函数封装起来,作为方法供用户直接调用,这给用户的编程带来了很大的方便。第十一章--程序设计基础全文共31页,当前为第26页。(4)消息消息是指用来请求对象执行某一处理或回答某些信息的要求。对象之间通过收发信息相互沟通,这一点类似于人与人之间的信息传递。消息的接收对象会调用一个函数(过程),以产生预期的结果。传递的消息的内容包括接收消息的对象的名字,需要调用的函数的名字,以及必要的信息。对象就有一个生命周期。它们可以被创建和销毁。只要对象正处于其生存期,就可以与其进行通讯。(5)继承继承是指可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。如知更鸟属于飞鸟类,也属于鸟类。如果类X继承类Y,则X为Y的子类,Y为X的父类(超类)。如“车”是一类对象,“小轿车”、“卡车”等都继承了“车”类的性质,因而是“车”的子类。第十一章--程序设计基础全文共31页,当前为第27页。(6)封装封装是指将数据和代码捆绑到一起,避免了外界的干扰和不确定性。目的在于将对象的使用者和对象的设计者分开。用户只能见到对象封装界面上的信息,不必知道实现的细节。封装一方面通过数据抽象,把相关的信息结合在一起,另一方面也简化了接口。在一个对象内部,某些代码和某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。第十一章--程序设计基础

温馨提示

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

评论

0/150

提交评论