1、第二章 程序设计基础2.1 程序设计方法与风格2.2 结构化程序设计2.3 面向对象的程序设计方法第二章程序设计基础2.1程序设计方法与风格 2.1.1 计算机程序与程序设计语言1几个术语 程序。程序是将计算机语言代码依据一定的语法规则,描述为完成特定任务的算法的指令序列。简单说,程序就是对计算机工作规则的描述,规则可以是不相同的。第二章程序设计基础 程序设计。程序设计为完成一项程序工作的过程。计算机语言。计算机语言是人与计算机交流的工具。算法+数据结构=程序。这是计算机科学家Niklaus Wirth给出的程序定义,即著名的Wirth公式。第二章程序设计基础语 言 级 别语 言 类 别范 例
2、低级语言机器语言汇编语言高级语言(过程化语言/算法语言)C,Fortran,BASIC等非过程化语言(非算法语言)FoxBASE系列(FoxBASE+、FoxPro等)、Sybase、Oracle等面向对象语言Visual C+、VB、VF等第二章程序设计基础(1)机器语言(2)汇编语言(3)高级语言第二章程序设计基础2.1.2 编码风格 编码风格是指在不影响程序正确性和效率的前提下,有效编排和合理组织程序的基本原则。一个具有良好编码风格的程序主要表现为可读性好,易测试,易维护。程序设计的风格主要强调:“清晰第一,效率第二”(抓住该宗旨,做考题就有了原则和方向了)。第二章程序设计基础1、源程序
3、文档化1)符号名的命名。符号名能反映它所代表的实际东西,应有一定的实际含义。第二章程序设计基础2)程序的注释。分为序言性注释和功能性注释。序言性注释 序言性注释一般位于模块的首部,位于程序开头部分,包括程序标题、程序功能说明、主要算法、接口说明、程序位置、开发简历、程序设计者、复审者、复审日期及修改日期等。描述性注释(功能性注释)嵌在源程序体之中,用于描述其后的语句或程序的主要功能。3)视觉组织。利用空格、空行、缩进等技巧使程序层次清晰。第二章程序设计基础2、数据说明1)数据说明的次序规范化;2)说明语句中变量安排有序化;3)使用注释来说明复杂数据的结构。第二章程序设计基础3、语句的结构1)在
4、一行内只写一条语句;2)程序编写应优先考虑清晰性;3)程序编写要做到清晰第一,效率第二;4)在保证程序正确的基础上再要求提高效率;5)避免使用临时变量而使程序的可读性下降;6)避免不必要的转移;7)尽量使用库函数;8)避免采用复杂的条件语句;第二章程序设计基础9)尽量减少使用“否定”条件语句;10)数据结构要有利于程序的简化;11)要模块化,使模块功能尽可能单一化;12)利用信息隐蔽,确保每一个模块的独立性13)从数据出发去构造程序;14)不要修补不好的程序,要重新编写。第二章程序设计基础4、输入/输出1)对输入数据检验数据的合法性;2)检查输入项的各种重要组合的合法性;3)输入格式要简单,使
5、得输入的步骤和操作尽可能简单;4)输入数据时,应允许使用自由格式;5)应允许缺省值;6)输入一批数据时,最好使用输入结束标志;第二章程序设计基础4、输入/输出7)在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过 程中和输入结束时,应在屏幕上给出状态信息;8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输出加注释,并设计输出报表格式。第二章程序设计基础2.2 结构化程序设计 结构化程序设计的主要思想是功能分解并逐步求精。当一些任务十分复杂不描述时,可以将它拆分为一系列较小的功能部件,直到这些子任务小到易于理解和实现的
6、程度。1、结构化程序设计方法的主要原则 自顶向下,逐步求精,模块化,限制使用goto语句(高频考点)。第二章程序设计基础(1)自顶向下。程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。(2)逐步求精。对复杂问题,应设计一些子目标作过渡,逐步细化。(3)模块化。一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。(4)限制使用goto语句。第二章程序设计基础2、结构化程序的基本结构 分为:顺序结构,选择结构,重复
7、结构。1)顺序结构。一种简单的程序设计,即按照程序语句行的自然顺序,一条语句一条语句地执行程序,它是最基本、最常用的结构。2)选择结构。又称分支结构,包括简单选择和多分支选择结构,可根据条件,判断应该选择哪一条分支来执行相应的语句序列。3)重复结构。又称循环结构,可根据给定的条件,判断是否需要重复执行某一相同的或类似的程序段。第二章程序设计基础 结构化程序设计原则和方法的应用结构化程序设计中,要注意把握如下要素:使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;选用的控制结构只准许有一个入口和一个出口;程序语言组成容易识别的块,每块只有一个入口和一个出口;复杂结构应该用嵌
8、套的基本控制结构进行组合嵌套来实现;语言中所有的控制结构,应该采用前后一致的方法来模拟;尽量避免作用GOTO语句。第二章程序设计基础2.3 面向对象的程序设计方法背景 客观世界中任何一个事物都可以被看成是一个对象,面向对象方法的本质就是主张从客观世界固有的事物出发来构造系统,提倡人们在现实生活中常用的思维来认识、理解和描述客观事物,强调最终建立的系统能够映射问题域。也就是说,系统中的对象及对象之间的关系能够如实地反映问题域中固有的事物及其关系。第二章程序设计基础1、面向对象方法的主要优点(1)与人类习惯的思维方法一致;(2)稳定性好;(3)可重用性好;(4)易于开发大型软件产品;(5)可维护性
9、好。第二章程序设计基础2、面向对象的程序设计主要考虑的是提高软件的可重用性 对象是面向对象方法中最基本的概念,可以用来表示客观世界中的任何实体,对象是实体的抽象。面向对象的程序设计方法中的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组表示其静态特征的属性和它可执行的一组操作组成。第二章程序设计基础3、对象是属性和方法的封装体 客观世界中的对象既具有静态的属性,又具有动态的行为,因此,面向对象方法学中的对象是由描述该对象属性的数据以及可以对这些数据施加的操作封装在一起构成的统一体。对象可以执行的操作表示它的动态行为。属性即对象所包含的信息,它在设计对象时确定,一般只能通
10、过执行对象的操作来改变。操作描述了对象执行的功能,操作也称为方法或服务。第二章程序设计基础4、对象的基本特点(1)标识惟一性。指对象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分。(2)分类性。指可以将具有相同属性的操作的对象抽象成类。(3)多态性。指同一个操作可以是不同对象的行为。第二章程序设计基础4、对象的基本特点(4)封装性。从外面看只能看到对象的外部特性,即只需知道数据的取值范围和可以对该数据施加的操作,根本无需知道数据的具体结构以及实现操作的算法。对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内
11、部状态只能由其自身改变。注:信息隐蔽是通过对象的封装性来实现的。第二章程序设计基础4、对象的基本特点(5)模块独立性好。对象是面向对象的软件的基本模块,它是由数据及可以对这些数据施加的操作所组成的统一体,而且对象是以数据为中心的,操作围绕对其数据所需做的处理来设置,没有无关的操作。从模块的独立性考虑,对象内部各种元素彼此结合得很紧密,内聚性强。即:高内聚、低耦合。第二章程序设计基础5、重要概念(1)类是指具有共同属性、共同方法的对象的集合。所以类是对象的抽象,对象是对应类的一个实例。(2)消息是一个实例与另一个实例之间传递的信息。在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送
12、消息。第二章程序设计基础5、重要概念(3)继承是指能够直接获得已有的性质和特征,而不必重复定义他们。继承分单继承和多重继承。单继承指一个类只允许有一个父类,多重继承指一个类允许有多个父类。继承的优点是,相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息,便于软件修改维护。(4)方法:对象中的属性只能通过该对象所提供的操作来存取或修改。第二章程序设计基础图2-1 一般与特殊的关系 第二章程序设计基础5、重要概念(5)类的继承性是类之间共享属性和操作的机制,它提高了软件的可重用性。(6)多态性是指同样的消息被不同的对象接受时可导致完全不同的行动的现象。多态性机制不仅增加了面向对象
13、软件系统的灵活性,进一步减少了信息冗余,而且显著提高了软件的可重用性的可扩充性。第二章程序设计基础6、本章学习建议 本章在考试中会出现约12个选择题,是出题量较小的一章。本章内容比较少,也很简单,掌握住基本的概念就可以轻松应对考试了。第二章程序设计基础课堂练习:【2011年9月考题】下列选项中属于面向对象设计方法主要特征的是A)继承 B)自顶向下 C)模块化 D)逐步求精答案:A第二章程序设计基础【2011年3月考题】结构化程序所要求的基本结构不包括A)顺序结构 B)GOT0跳转 C)选择(分支)结构 D)重复(循环)结构答案:B第二章程序设计基础【2007年9月考题】在面向对象方法中,实现信
14、息隐蔽是依靠A)对象的继承 B)对象的多态 C)对象的封装 D)对象的分类答案:C第二章程序设计基础【2007年9月考题】下列叙述中,不符合良好程序设计风格要求的是A)程序的效率第一,清晰第二 B)程序的可读性好C)程序中要有必要的注释 D)输入数据前要有提示信息答案:A第二章程序设计基础(7)在面向对象方法中,一个对象请求另一个对象为其服务的方式是通过发送A)调用语句 B)命令 C)口令 D)消息答案:D第二章程序设计基础(8)同样的消息被不同对象接受时可导致完全不同的行为,这种现象称为A)多态性 B)继承性 C)重载性 D)封装性答案:A第二章程序设计基础人有了知识,就会具备各种分析能力,明辨是非的能力。所以我们要勤恳读书,广泛阅读,古人说“书中自有黄金屋。”通过阅读科技书籍,我们能丰富知识,培养逻辑思维能力;通过阅读文学作品,我们能提高文学鉴赏水平,培养文学情趣;通过阅读报刊,我们能增长见识,扩大自己的知识面。有许多书籍还能培养我们的道德情操,给我们巨大的精神力量,鼓舞我们前进。