1、1,1,第二章 程序设计基础,2,2.1程序设计方法与风格,程序设计的风格主要强调:“清晰第一,效率第二” 。主要应注重和考虑下述一些因素: (1)源程序文档化。 1)符号名的命名。符号名能反映它所代表的实际东西,应有一定的实际含义。 2)程序的注释。分为序言性注释和功能性注释。 序言性注释:位于程序开头部分,包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。 功能性注释:嵌在源程序体之中,用于描述其后的语句或程序的主要功能。“清晰第一,效率第二” 是当今主导的程序设计风格。,2,3,2.1程序设计方法与风格,3)视觉组织。利用空格、
2、空行、缩进等技巧使程序层次清晰。 (2)数据说明。1)数据说明的次序规范化;2)说明语句中变量安排有序化;3)使用注释来说明复杂数据的结构。 (3)语句的结构。1)在一行内只写一条语句;2)程序编写应优先考虑清晰性;3)程序编写要做到清晰第一,效率第二;4)在保证程序正确的基础上再要求提高效率;5)避免使用临时变量而使程序的可读性下降;6)避免不必要的转移;7)尽量使用库函数;8)避免采用复杂的条件语句;9)尽量减少使用“否定”条件语句;10)数据结构要有利于程序的简化;,3,4,2.1程序设计方法与风格,11)要模块化,使模块功能尽可能单一化;12)利用信息隐蔽 ,确保每一个模块的独立性;1
3、3)从数据出发去构造程序;14)不要修补不好的程序,要重新编写。 (4)输入和输出。1)对输入数据检验数据的合法性;2)检查输入项的各种重要组合的合法性;3)输入格式要简单,使得输入的步骤和操作尽可能简单;4)输入数据时,应允许使用自由格式;5)应允许缺省值;6)输入一批数据时,最好使用输入结束标志;7)在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息;8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输出加注释,并设计输出报表格式。 信息隐蔽是指采用封装技术,将程序模块的实施
4、细节隐藏起来,使模块接口尽量简单。即指在设计和确定模块时,使得一个模块内包含的信息(过程或数据),对于不需要这些信息的其它模块来说,是不能访问的。,4,5,2.2结构化程序设计(面向过程的程序设计方法),1、结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化,限制使用goto语句。 (1)自顶向下。程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。 (2)逐步求精。对复杂问题,应设计一些子目标作过渡,逐步细化。 (3)模块化。一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序
5、要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。 (4)限制使用goto语句。,5,6,2.2结构化程序设计,结构化程序的基本结构:顺序结构,选择结构,重复结构。 1)顺序结构。一种简单的程序设计,即按照程序语句行的自然顺序,一条语句一条语句地执行程序,它是最基本、最常用的结构。 2)选择结构。又称分支结构,包括简单选择和多分支选择结构,可根据条件,判断应该选择哪一条分支来执行相应的语句序列。 3)重复结构。又称循环结构,可根据给定的条件,判断是否需要重复执行某一相同的或类似的程序段。 仅仅使用顺序、选择和循环三种基本控制结构就足以表达各种其他形式结构,从而实
6、现任何单入口/单出口的程序。,6,7,2.3面向对象程序设计,客观世界中任何一个事物都可以被看成是一个对象,面向对象方法的本质就是主张从客观世界固有的事物出发来构造系统,提倡人们在现实生活中常用的思维来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域。也就是说,系统中的对象及对象之间的关系能够如实地反映问题域中固有的事物及其关系。 面向对象方法的主要优点:(1)与人类习惯的思维方法一致;(2)稳定性好;(3)可重用 性好;(4)易于开发大型软件产品;(5)可维护性好。 *:面向对象的程序设计主要考虑的是提高软件的可重用性。 软件的重用是指在不同的软件开发过程中重复使用相同或相似软件的
7、过程。,7,8,2.3面向对象方法的基本概念,对象是面向对象方法中最基本的概念,可以用来表示客观世界中的任何实体,对象是实体的抽象。面向对象的程序设计方法中的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组表示其静态特征的属性和它可执行的一组操作组成。对象是属性和方法的封装体。 属性即对象所包含的信息,它在设计对象时确定,一般只能通过执行对象的操作来改变。 操作描述了对象执行的功能,操作也称为方法或服务。操作是对象的动态属性。 *:一个对象由对象名、属性和操作三部分组成。 对象的基本特点:标识惟一性,分类性,多态性,封装性,模块独立性好。,8,9,2.3面向对象方法的基
8、本概念,(1)标识惟一性。指对象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分。 (2)分类性。指可以将具有相同属性的操作的对象抽象成类。 (3)多态性。指同一个操作可以是不同对象的行为。 (4)封装性。从外面看只能看到对象的外部特性,即只需知道数据的取值范围和可以对该数据施加的操作,根本无需知道数据的具体结构以及实现操作的算法。对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。 *:信息隐蔽是通过对象的封装性来实现的。,9,10,2.3面向对象方法的基本概念,(5)模块独立性好。对
9、象是面向对象的软件的基本模块,它是由数据及可以对这些数据施加的操作所组成的统一体,而且对象是以数据为中心的,操作围绕对其数据所需做的处理来设置,没有无关的操作。从模块的独立性考虑,对象内部各种元素彼此结合得很紧密,内聚性强。 类是指具有共同属性、共同方法的对象的集合。所以类是对象的抽象,对象是对应类的一个实例。 消息是一个实例与另一个实例之间传递的信息。消息的组成包括:(1)接收消息的对象的名称;(2)消息标识符,也称消息名;(3)零个或多个参数。 *:在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送消息。,10,11,2.3面向对象方法的基本概念,继承是指能够直接获得已有的性
10、质和特征,而不必重复定义他们。继承分单继承和多重继承。单继承指一个类只允许有一个父类,多重继承指一个类允许有多个父类。 *:类的继承性是类之间共享属性和操作的机制,它提高了软件的可重用性。 多态性是指同样的消息被不同的对象接受时可导致完全不同的行动的现象。(学吧学吧独家稿件) 本章应考点拨:本章在考试中会出现约1个题目,所占分值大约占2分,是出题量较小的一章。本章内容比较少,也很简单,掌握住基本的概念就可以轻松应对考试了,所以在这部分丢分,比较可惜。,11,12,【例1】下列选项中不属于结构化程序设计方法的是( )。2006.4 A)自顶向下 B)逐步求精 C)模块化 D)可复用,知识点:结构
11、化程序设计方法的四条原则是:1. 自顶向下;2. 逐步求精;3.模块化;4.限制使用goto语句。,答 案:D,【例2】下列叙述中,不符合良好程序设计风格要求的是 2007.9 A)程序的效率第一, 清晰第二 B)程序的可读性好 C)程序中要有必要的注释D)输入数据前要有提示信息,知识点:良好的程序设计风格 1、源程序文档化;2、数据说明的方法; 3、语句的结构; 4、输入和输出。 注释分序言性注释和功能性注释,语句结构清晰第一、效率第二。,答 案: A,13,【例3】下列选项不符合良好程序设计风格的是_。 A)源程序要文档化 B)数据说明的次序要规范化 C)避免滥用goto语句 D)模块设计
12、要保证高耦合、高内聚 2006.9,知识点:优秀软件应高内聚,低耦合。 内聚性是用来度量一个模块功能强度的一个相对指标,一个内聚程序高的模块应当只做一件事。 耦合性用来度量模块之间的相互联系程序。耦合性与内聚性是相互关联的,在程序结构中各模块的内聚性越强,则耦合性越弱。,答 案:D,【例4】在面向对象方法中, 描述的是具有相似属性与操作的一组对象。2006.4 【例5】在面向对象方法中,类的实例称为 。2005.4,知识点: 类是指具有共同属性、共同方法的对象的集合。所以类是对象的抽象,对象是对应类的一个实例。 消息是一个实例与另一个实例之间传递的信息。,答 案 :类 对象,14,【例6】在面
13、向对象方法中,实现信息隐蔽是依靠_2007.9 A)对象的继承 B)对象的多态 C)对象的封装 D)对象的分类,知识点:对象的基本特点: (1)标识惟一性;(2)分类性;(3)多态性; (4)封装性;实现信息隐蔽 (5)模块独立性好。继承是指能够直接获得已有的性质和特征,而不必重复定义他们。多态性是指同样的消息被不同的对象接受时可导致完全不同的行动的现象。在面向对象程序设计中,从外面看只能看到对象的外部特征,而不知道也无需知道数据的具体结构及实现操作的算法,这称为对象的封装性,答 案: C,【例7】下面选项中不属于面向对象程序设计特征的是 2007.4 A)继承性 B)多态性 C)类比性 D)
14、封闭性,知识点:对象的基本特点: (1)标识惟一性;(2)分类性;(3)多态性; (4)封装性;实现信息隐蔽 (5)模块独立性好。继承是指能够直接获得已有的性质和特征,而不必重复定义它们。,答 案:D,15,【例】源程序的文档化不包括 A)符号名的命名要有实际意义B)正确的文档格式C)良好的视觉组织D)正确的程序注释,知识点:源程序的文档化主要包括: (1)符号名的命名应具有一定的实际含义,以便理解程序功能;(2)正确的程序注释;(3)良好的视觉组织:在程序中利用空格、空行、缩进等技巧使程序层次清晰;,答 案: B,【例】结构化程序设计的三种基本控制结构是 A)过程、子程序和分程序B)顺序、选
15、择和重复C)递归、堆栈和队列D)调用、返回和转移,知识点:程序设计主要经历了结构化设计和面向对象的程序设计阶段,其中程序设计语言仅仅使用顺序、选择和重复三种基本控制结构就足以表达出各种其他形式结构的程序设计方法。,答 案: B,16,【例10】结构化程序设计主要强调的是 A)程序的规模 B)程序的易读性C)程序的执行效率 D)程序的可移植性,知识点:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。,答 案: B,【例11】采用面向对象技术开发的应用系统的特点是 A)重用性更强 B)运行速度更快C)占用存储量小 D)维护更复杂
16、,知识点:采用面向对象技术开发的应用系统的特点主要包括:(1)与人类习惯的思维方法一致;(2)稳定性好;(3)可重用性好;(4)易于开发大型软件产品;(5)可维护性好,答 案: A,17,【例12】消息传递是对象间通信的手段,一个对象通过向另一个对象发送消息来请求其服务。一个消息通常包括 A)接收消息的对象的名称、消息标识符和必要的参数B)接收消息的对象的名称和消息标识符C)发送消息的对象的名称、调用的接收方的操作名和必要的参数D)消息标识符,知识点:对象之间的相互作用和通信是通过消息来完成的,当对象A要执行对象B的方法时,对象A发送一个消息到对象B。接受对象需要有足够的信息,以便知道要它做什么。通常,一个消息由下述三部分组成:(1)接收消息的对象的名称;(2)消息标识符(消息名);(3)零个或多个参数;,答 案:A,【例13】一个类允许有多个父类,这种继承称为,知识点:继承分为单继承与多重继承。单继承是指一个类只允许有一个父类,即类等价为树形结构。多重继承是指一个类允许有多个父类。多重继承的类可以组合多个父类的性质构成所需要的性质。,答 案:多重继承,