计算机科学导论第4章 程序设计基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
把整个程序中不同部分的相互影响减少到最低限度。
2015-1-2
计算机科学导论
21
4.2.2 面向对象的程序设计方法
5.继承性
是父类和子类之间共享数据和方法的机制。在定义一 个类的时候,可以以一个已经存在的类为基础,并把 这个已经存在的类所包含的属性和方法作为自身的一
部分,然后加入新的属性和方法以区别于原来的类。
2015-1-2
计算机科学导论
11
4.2.1 结构化程序设计方法
3.结构化程序设计方法
结构化程序设计的原则是: (1) 使用顺序、选择、循环3种基本控制结 构表示程序逻辑。 (2)程序语句组织成容易识别的语句模块, 每个模块都是单入口、单出口。
(3)严格控制GOTO语句的使用。
2015-1-2
性注释应置于每个模块的起始部分。
2015-1-2
计算机科学导论
27
4.2.4 程序设计风格
2.数据说明
为了使数据定义更易于理解和维护,有以下原则。
(1) 数据说明顺序应规范,使数据的属性更易于查找,从而
有利于测试、纠错与维护。如常量说明、类型说明、全局 变量说明、局部变量说明等。 (2) 一个语句说明多个变量时,各变量名按字典顺序排列。 (3) 对于复杂的数据结构,要加注释,说明在程序实现时的 特点。
2015-1-2
计算机科学导论
7
4.2.1 结构化程序设计方法
1.自上而下与自下而上 先将一个大问题分解成若干个子问题,把比较复 杂的子问题继续分解成更加简单的二级子问题,
直至每个子问题都有显而易见的解决办法,然后
在实现时采用自下而上的方法,逐一编写解决各 个子问题的程序。设计程序时采用自上而下的方 法比采用自下而上的方法效率要高得多。
程序,任何程序都可由顺序、选择、循环三种基本控制结
构构造。 结构化程序设计思想:
采用自顶向下、逐步求精的设计方法和单入口单出口的控
制结构。
2015-1-2
计算机科学导论
6
4.2.1 结构化程序设计方法
20世纪60年代末到70年代初,当时采用结构程序 设计方法的两个最著名项目是: ①纽约时报信息库管理系统,含8.3万行源代码, 只花了11人· 年,第一年使用过程中,只发生过一 次使系统失效的软件故障; ②美国宇航局空间实验室的模拟系统,含40万行 源代码,只用两年时间就全部完成。
15
2015-1-2
计算机科学导论
4.2.2 面向对象的程序设计方法
2.对象、消息传递和类 对象:
是对现实问题的高度概括、分类和抽象。每个对 象都只有自己的数据和相应的处理函数,整个程序是 由一系列相互作用的对象来构成,不同对象之间是通 过发送消息来实现相互联系、相互作用。
2015-1-2
计算机科学导论
16
4.2.2 面向对象的程序设计方法
消息传递:
消息是对象之间进行通信的一种机制。发送给某 个对象的一个消息包含着要求接收对象完成某些活动
的信息。接收到消息的对象经过解释,然后予以响应。
这个通信机制叫做消息传递。发送消息的对象并不需 要知道接收消息的对象如何对请求予以响应。
2015-1-2
计算机科学导论
2015-1-2
计算机科学导论
25
4.2.4 程序设计风格
程序设计风格指一个人编制程序时所表现
出来的特点、习惯、逻辑思路等。
2015-1-2
计算机科学导论
26
4.2.4 程序设计风格
1.源程序文档化
(1) 标识符应按意取名。 (2) 程序应加注释。注释是程序员与读者之间通信 的重要工具,用自然语言或伪码描述。它说明了程 序的功能,特别是在维护阶段,对理解程序提供了 明确指导。注释分序言性注释和功能性注释。序言
2015-1-2
计算机科学导论
8
4.2.1 结构化程序设计方法
采用自上而下解决问题的思路如图:
需要解决的复杂问题
二级子问题 . . . 三级子问题 . . .
二级子问题

二级子问题 . . .
三级子问题 . . .

三级子问题 . . .
最小问题
2015-1-2
最小问题

最小问题
计算机科学导论
20
4.2.2 面向对象的程序设计方法
4.封装性
封装的两个含义:
第一是,将抽象得到的数据成员和代码成员相结合, 形成一个不可分割的整体,即对象,这种数据及行为的有 机结合也就是封装。 第二个含义称为信息隐蔽,即尽可能隐蔽对象的内部 细节。在隐蔽对象内部细节的同时,对象需要提供与外部
世界进行交流的接口,并实现对数据访问权限的合理控制,
17
4.2.2 面向对象的程序设计方法
类:
定义了一组大体上相似的对象。一个类所包 含的方法和数据描述一组对象的共同行为和属性。
对象则是类的具体化,是类的实例。
类通过派生可以有子类,同样也可以有父类,形成
层次结构。
2015-1-2
计算机科学导论
18
4.2.2 面向对象的程序设计方法
3.抽象
是对具体事物(即对象)进行概括,即忽略事物的非 本质特征,只注意那些与当前目标有关的本质特 征,从而抽象出一类对象的共性并加以描述。
2015-1-2
计算机科学导论
29
4.2.4 程序设计风格
4.在编写输入和输出语句时应考虑原则
(1) 输入操作步骤和输入格式尽量简单。 (2) 应检查输入数据的合法性、有效性,报告必 要的输入状态信息及错误信息。 (3) 输入一批数据时,使用数据或文件结束标志, 而不要用计数来控制。 (4) 交互式输入时,提供可用的选择和边界值。 (5) 当程序设计语言有严格的格式要求时,应保 持输入格式的一致性。 (6) 输出数据表格化、图形化。 输入、输出风格还受其他因素的影响,如输入/ 输出设备、用户经验及通信环境等。
计算机科学导论
3


2015-1-2
4.1 程序设计基础
(5) 绘制流程图。
(6) 编写程序。利用程序设计语言表示算法,编写代码。 (7) 调试并测试程序。调试程序包括编译和连接等操作。
程序员还要对程序执行的结果进行分析,只有能够得到正
确结果的程序才是所需的程序。 (8) 整理资料,交付使用。 高质量程序设计目标是结构化程度高、可读性好、效 率高、可靠性高、便于维护。
所关心的属性除了以上这些信息以外,更关心可能是书籍的
销售量和销售速度。 由此可以看出,同一个研究对象,由于所研究问题的侧重点 不同,就可能产生不同的抽象结果;即使对于同一个问题, 解决问题的要求不同,也可能产生不同的抽象结果,这些结
果的不同就表现在不同的数据和方法上。
2015-1-2
计算机科学导论
计算机科学导论
12
4.2.1 结构化程序设计方法
入口
入口

入口
A
真 S A
假 出口
S 真
A 真
B 出口
B
A
S 假
(a) 顺序结构
(b) 选择结构
(c) while循环
(d) do-while循环
2015-1-2
计算机科学导论
13
4.2.1 结构化程序设计方法
4.模块化方法
一个复杂的问题可以划分为多个简单问题的组合。 在自顶向下、逐步细化的过程中,把复杂问题分解 成一个个简单问题的最基本方法就是模块化。
9
4.2.1 结构化程序设计方法
2.结构化方法
结构化方法有助于在正式编写程序之前充
分理解问题的实质和实现方法,并且可以
在具体编码过程中提供指导。
2015-1-2
计算机科学导论
10
4.2.1 结构化程序设计方法
结构化方法通常遵循以下原则:
(1) 用户参与的原则
(3) 自上而下的原则 (4) 阶段成果文档化
2015-1-2
计算机科学导论
4
4.2 程序设计方法
程序设计初期,由于计算机硬件条件的限制,运算速度与 存储空间都迫使程序员追求高效率,编写程序成为一种技 巧与艺术,而程序的可理解性、可扩充性等要素则次之。
随着计算机硬件与通信技术的发展,计算机应用领域越来
越广泛,应用规模也越来越大,程序设计不再是一两个程 序员就可以完成的任务。在这种情况下,编写程序不再片
第4章 程序设计基础
第4 章
学习目标
程序设计基础
了解程序设计的基础知识、程序设计风格的重要性、 基本的查找和排序方法。 掌握结构化程序设计方法和面向对象程序设计方法的
思想、几种基本的数据结构。
2015-1-2
计算机科学导论
2
4.1 程序设计基础
程序设计是指用计算机语言对所要解决的问题中的数 据以及处理问题的方法和步骤所做的完整而准确的描述的 过程。程序设计步骤如下: (1) 确定要解决的问题。 (2) 分析问题。在着手解决问题之前,应该通过分析,充 分理解问题,明确原始数据、解题要求、需要输出的数据 及形式等。 (3) 选择计算方法。 (4) 确定数据结构和算法。算法是解题的过程。首先集中 精力于算法的总体规划,然后逐层降低问题的抽象性,逐 步充实细节,直到最终把抽象的问题具体化成可用程序语 句表达的算法。这是一个自上而下、逐步细化的过程。
对一个问题的抽象一般来讲应该包括两个方面:
数据抽象和代码抽象(或称为行为抽象)。
2015-1-2
计算机科学导论
19
4.2.2 面向对象的程序设计方法
例如,对一批书籍进行归纳、抽象。读者可能关心的是书籍 的学科种类、价格、出版社信息,而销售这批书籍的书店经 销商希望开发一个书籍的进货、销售情况的管理软件,则他
模块化便于问题的分析,模块体现了信息隐藏的概
念。模块常用子程序加以实现。
2015-1-2
计算机科学导论
14
4.2.2 面向对象的程序设计方法
1.面向对象的思想
OO(Object Oriented,面向对象)的程序设计把客观事
物看作具有属性和行为的对象,通过抽象找出同一类
对象的共同属性(静态特征)和行为(动态Байду номын сангаас征),形成类。 阿伦(Alan Kay,1940~)设计出了名震业界的Smalltalk 语言,被业界公认为“面向对象编程系列语言”的代 表作品。
函数程序设计语言因其简单的基本理论,使现代程序设 计的基本思想,如抽象、数据抽象、多态和重载等都得 到了最清楚的体现。因此,函数程序设计不仅是学习现 代程序设计思想的理想语言,而且为传统的命令式和面 向对象的程序设计语言提供了很有意义的视角。
2015-1-2
计算机科学导论
24
4.2.3 函数程序设计
1987年Joe Armstrong在Prolog基础上创建了 Erlang,经过了十年发展,于1998年发布开源 版本。Erlang是运行于虚拟机的解释性语言, 但是现在也包含有乌普萨拉大学高性能Erlang 计划(HiPE)开发的本地代码编译器,自 R11B-4版本开始,Erlang也开始支持脚本式解 释器。在编程范型上,Erlang属于多重范型编 程语言,涵盖函数式、并发式及分布式。顺序 执行的Erlang是一个及早求值,单次赋值和动 态类型的函数式编程语言。
2015-1-2
计算机科学导论
28
4.2.4 程序设计风格
3.语句构造
语句构造的原则是简单、直接,不能为了追求效
率而使代码复杂化。 为了便于阅读和理解,一行只写一条语句; 不同层次的语句采用缩进形式,使程序的逻辑结 构和功能特征更加清晰。 要避免复杂的判定条件,避免多重的循环嵌套; 表达式中使用括号以提高运算次序的清晰度等。
面追求高效率,而是综合考虑程序的可靠性、可扩充性、
可重用性和可理解性等要素。
2015-1-2
计算机科学导论
5
4.2.1 结构化程序设计方法
1965年,艾兹格· W· 迪科斯彻(Edsger Wybe Dijkstra,
1930~2002)提出了结构化的概念,它是软件发展的一个 重要的里程碑。结构化程序设计是以模块功能和处理过程 设计为主的详细设计的基本原则,采用自顶向下、逐步求 精及模块化的程序设计方法,使用三种基本控制结构构造
原有的类称为基类或父类,产生的新类称为派生类。
2015-1-2
计算机科学导论
22
4.2.2 面向对象的程序设计方法
6. 多态性
在收到外部消息时,对象通常要予以响应。不同 的对象收到同一消息可能产生完全不同的结果。
2015-1-2
计算机科学导论
23
4.2.3 函数程序设计
函数程序设计语言使用非常简单的计算模型或者程序观 点,一个程序是输入集合到输出集合的数学函数,执行 一个程序便是计算一个函数在给定输入的输出值。 函数程序的特点是清晰、简洁和易读等,这些特点使得 大型程序的开发更高效,维护更容易。
相关文档
最新文档