第三章 计算机软件

99
第第第 第第第第第 第第第 第第第第第

Upload: tori

Post on 22-Jan-2016

140 views

Category:

Documents


0 download

DESCRIPTION

第三章 计算机软件. 学习目标与要求. 1.了解什么是计算机软件和计算机软件技术 2. 了解操作系统的作用、功能、常用操作系统和实用程序的种类 3. 描述计算机语言程序及它们的执行过程 4. 了解计算机软件基础理论所包含的内容、算法和数据结构的概念. 计算机软件的内容. 从软件分支学科的内涵来讲,计算机软件所包含的内容可概括为: 软件基础理论和算法 构造计算机软件的方法学 各种软件开发技术以及与此相关的开发工具. 3.1 计算机软件及计算机软件技术. 3.1.1 计算机软件. 计算机软件. 程序. 文 档. 规程. 规则. 什么是计算机软件. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第三章  计算机软件

第三章 计算机软件第三章 计算机软件

Page 2: 第三章  计算机软件

学习目标与要求学习目标与要求1. 了解什么是计算机软件和计算机软件技术

2. 了解操作系统的作用、功能、常用操作系统和实用程序的种类

3. 描述计算机语言程序及它们的执行过程

4. 了解计算机软件基础理论所包含的内容、算法和数据结构的概念

Page 3: 第三章  计算机软件

计算机软件的内容计算机软件的内容 从软件分支学科的内涵来讲,计算机软件所

包含的内容可概括为:– 软件基础理论和算法

– 构造计算机软件的方法学

– 各种软件开发技术以及与此相关的开发工具

Page 4: 第三章  计算机软件

3.1 3.1 计算机软件及计算机软计算机软件及计算机软件技术件技术

Page 5: 第三章  计算机软件

3.1.1 3.1.1 计算机软件计算机软件

Page 6: 第三章  计算机软件

什么是计算机软件什么是计算机软件 一个完整的计算机系统有两个

基本组成部分:硬件和软件– 计算机硬件:组成计算机各种物

理设备的总称

– 计算机软件( Computer Software ):包含与数据

处理系统操作有关的程序、规程、规则以及相关

文档的智力创作。( ISO 的定义)

计算机软件示意图计算机软件示意图

计算机软件计算机软件

程序程序规程规程规则规则

文文档档

Page 7: 第三章  计算机软件

什么是计算机软件什么是计算机软件 软件的三层含义(从科学概念上讲):

– 个体含义,即上面所说的计算机系统中的程序、规程、规则及其文档

– 整体含义,指在特定计算机系统中所有个体含义下的软件的总体

– 学科含义,即指软件在研究、开发、维护以及使用中所涉及的理论、方法、技术所构成的学科,在这一意义上称为软件学

Page 8: 第三章  计算机软件

软件的分类软件的分类

从应用的角度出发,将软件分为:

– 系统软件

– 支撑软件

– 应用软件

Page 9: 第三章  计算机软件

系统软件系统软件 系统软件:给其他程序提供服务的程序集合

(如各种操作系统、编译程序) 系统软件的主要特征:

– 与具体的应用领域无关,而与计算机硬件系统有很强的交互性,要对硬件共享资源进行调度管理。

– 系统软件中的数据结构复杂,外部接口多样化,用户能够对它反复使用。

Page 10: 第三章  计算机软件

支撑软件支撑软件 支撑软件:用于支持软件开发与维护的软件。

– 人们常把 1970 年代中、后期发展起来的软件开

发环境作为支撑软件的代表,它主要包括数据库

管理系统、各种接口软件、网络软件和工具组件,

这些软件形成一个整体,协同支持各类软件的开

发与维护。

Page 11: 第三章  计算机软件

应用软件应用软件 应用软件:针对多种应用需求出现的用于

解决各种不同具体应用问题的专门软件。

按照应用软件的开发方式和适用范围,应

用软件可再分为:

– 通用应用软件

– 定制应用软件

Page 12: 第三章  计算机软件

主要通用应用软件类别和功能主要通用应用软件类别和功能类别 功能 部分流行的软件名称

文字处理 文本编辑、文字处理、桌面排版等

WPS 、 Word 、 Pagemaker 、 Acrobat Reader

电子表格 表格定义、计算和处理等

Excel 、 Lotus1-2-3 等

图形、图像 图像处理、几何图形绘制等

AutoCAD 、 Photoshop 等

网络通信 电子邮件、网络文件管理、远程计算、浏览等

Outlook Express 、 Mail 、 CC-mail 、 IE

简报软件 幻灯片、演讲报告制作等

Powerpoint 、 show partner

统计软件 统计、汇总、分析等 SPSS 、 SAS 、 BMDP

Page 13: 第三章  计算机软件

3.1.2 3.1.2 计算机软件的发展计算机软件的发展

Page 14: 第三章  计算机软件

计算机软件的发展 计算机软件的发展 计算机软件的发展与计算机应用和硬件的发展互相推

动和制约。软件的发展大致经历了三个主要阶段:( 1 )第一阶段( 1940 年代到 1950 年代中期) 从第一台计算机上的第一个程序开始到实用的高级语言程序

出现以前,是计算机软件发展初期。 应用领域较窄:主要是科学与工程计算。处理对象:数值数

据 工作方式:个体;编程语言:使用低级语言编程 人们对和程序有关的文档的重要性认识不足,重视编程技巧

Page 15: 第三章  计算机软件

计算机软件的发展计算机软件的发展( 2 )第二阶段( 1950 年代中期到 1960 年代后期) 出现了高级程序语言、操作系统、数据库管理系统、“软

件”术语等 “软件危机”:软件的复杂程度迅速提高,研制周期变长,正确性难以保证,可靠性问题尤为突出。解决危机的方法:– 提出结构程序设计方法– 提出用工程方法开发软件– 从理论上探讨程序正确性和软件可靠性问题。

研究内容:增加了并发程序,并着重研究高级程序设计语言、编译程序、操作系统以及各种支撑软件和应用软件。计算机系统的处理能力得到加强,设计和编制程序的工作方式逐步走向合作方式。

Page 16: 第三章  计算机软件

计算机软件的发展计算机软件的发展( 3)第三阶段( 1960年代迄今)

– 软件工程软件领域工作新的特点:

– 随着应用领域的不断拓广,出现了嵌入式应用软件、网络软件及分布式应用软件

– 软件工程发展迅速,形成了“计算机辅助软件工程”。除了开发各类工具与环境用以支持软件的开发与维护外,还出现了一些实验性的软件自动化系统

– 致力研究软件过程本身规律,研究各种软件开发规范与模型– 除了软件传统技术继续发展外,人们着重研究以智能化、自动化、集成化、并行化、开放化以及自然化为标志的软件开发新技术

– 注意研究软件理论,特别是探讨软件开发过程的本质

Page 17: 第三章  计算机软件

3.1.3 3.1.3 计算机软件技术计算机软件技术

Page 18: 第三章  计算机软件

计算机软件技术计算机软件技术 计算机软件技术:研制开发计算机软件所需的所有技

术的总称。 按照计算机软件分支学科的内容划分,计算机软件技

术主要包括:– 软件工程技术– 程序设计技术– 软件工具与开发环境技术– 系统软件技术– 数据库技术– 网络软件技术– 与实际工作相关的软件技术– 软件技术还渗透到计算机科学技术的其他领域

Page 19: 第三章  计算机软件

3.2 3.2 操作系统操作系统

Page 20: 第三章  计算机软件

操作系统概念 操作系统概念

操作系统( Operating System ,简称OS ):用于控制、管理、调配计算机的所

有资源。是给计算机配置的一种必不可少的系统软件。

Page 21: 第三章  计算机软件

3.2.1 3.2.1 操作系统的作用操作系统的作用

Page 22: 第三章  计算机软件

操作系统的作用操作系统的作用管理系统中的各种资源

为用户提供各种服务界面– 用户界面:也称用户接口或人机界面,是计算机系统实

现用户与计算机通信的软、硬件部分的总称。

– 图形用户界面( GUI):采用窗口、图符、菜单及指点

设备技术和多窗口系统等软件,并以直接操纵为主要使

用方法,使得用户能够灵活、方便、有效地使用计算机。

Page 23: 第三章  计算机软件

操作系统的作用操作系统的作用

计算机硬件计算机硬件

操作系统操作系统

其他系统软件其他系统软件

支撑软件支撑软件

应用软件应用软件

用户用户

操作系统的地位操作系统的地位

Page 24: 第三章  计算机软件

操作系统的作用操作系统的作用裸机:没有软件支持的计算机。操作系统是最接近计算机硬

件的系统软件,通过它管理计算机资源并在用户(或应用程序)与硬件之间提供一个接口。

自举:装载操作系统软件并启动执行的过程。计算机的 ROM

中固化了一小部分操作系统指令(基本 I/O系统,又称 BIOS),计算机加电后,自动执行 BIOS, BIOS 先把一部分程序从磁盘读入内存,然后再由读入的这部分程序装载其他所需的操作系统软件。这个过程称作为“自举”或“引导”。

命令:操作系统功能的表现形式。

Page 25: 第三章  计算机软件

3.2.2 3.2.2 操作系统的功能操作系统的功能

Page 26: 第三章  计算机软件

操作系统的功能 操作系统的功能 操作系统通过内部命令和外部命令提供五种主要功能:

– 任务管理– 存储管理– 文件管理– 设备管理– 作业管理

除此之外,操作系统一般还具有中断处理、错误处理等功能。操作系统的各个功能之间并不是完全独立的,它们之间存在着相互依赖的关系。

Page 27: 第三章  计算机软件

任务管理任务管理操作系统提供的任务管理有三种不同的方式:

– 进程:操作系统调度的基本单位,反映程序的一次执行过程(包括启动、运行并在一定条件下中止或结束)。

– 进程管理:对处理机资源进行管理。

– 多进程技术:如果一个进程因等待某一条件而不能运行下去时,就将处理机占用权转给另一个可运行进程。或者,当出现了一个比当前运行进程更重要的可运行进程时,后者应能抢占 CPU资源。操作系统按照一定的调度策略,通过进程管理来协调多道程序之间的关系,解决 CPU资源的分配和回收等问题,以使 CPU资源得到最充分利用。

Page 28: 第三章  计算机软件

任务管理任务管理 分时的基本思想:将 CPU时间划分成许多小片(“时间片”),轮流去为多个用户程序服务。如果在时间片结束时该用户程序尚未完成,它就被中断,等待下一轮再处理,同时让另一个用户程序使用 CPU下一个时间片。由于 CPU速度很快,用户程序的每次要求都能快速响应。由此,每个用户都感觉好象自己在“独占”计算机一样,实际上是操作系统使用户轮流“分时”共享了 CPU。

并行处理:使用有多个处理器的计算机时,并行处理操作系统运用策略作出合理的调度,把多项任务分配给不同的 CPU同时执行,且保持系统正常有效地工作,可以充分利用计算机系统中提供的所有处理器,一次执行几条指令,以提高计算机系统的效率。

Page 29: 第三章  计算机软件

存储管理存储管理存储管理:管理内存资源的高效、合理使用。

– 执行处理程序时,计算机系统的程序和数据都是保存在内存中的。而内存的容量有限,因此,当多个程序共享有限内存资源时,必须合理地为它们分配内存空间,做到用户存放在内存中的程序和数据既能彼此隔离、互不侵扰,又能在一定条件下共享。当内存不够用时,还要解决内存扩充问题,把内存和外存结合起来管理,为用户提供一个容量比实际内存大得多的“虚拟存储器”。

Page 30: 第三章  计算机软件

文件管理文件管理文件管理任务:有效地支持文件的存储、检索和修改等操作、解决文件的共享、保密和保护问题,使用户程序能方便、安全地访问它所需要的文件。操作系统一般都含有功能很强的文件管理子系统。

Page 31: 第三章  计算机软件

设备管理设备管理 设备管理:对计算机系统中除了 CPU和内存以外的所有I/O设备的管理。进而言之,设备管理的对象除了进行实际 I/O操作的设备外,还包括诸如控制器、通道等支持设备。

设备管理任务:外部设备的分配、启动和故障处理,用户不必详细了解设备及接口的技术细节,就可以利用驱动程序对相应的设备进行操作。

采用技术:中断技术、通道技术、虚拟设备技术和缓冲技术

Page 32: 第三章  计算机软件

作业管理作业管理作业管理任务:为用户使用系统提供一个良好环境,让用户有效地组织自己的工作流程,使整个系统能高效地运行。

Page 33: 第三章  计算机软件

3.2.3 3.2.3 操作系统的类型操作系统的类型

Page 34: 第三章  计算机软件

批处理系统批处理系统(( Batch ProcessinBatch Processing Systemg System ))批处理系统:操作人员将待处理的计算任务(成批

地装入计算机,由操作系统将作业按规定的格式组织好存入磁盘的指定区域,然后按照某种调度策略选择一个或几个搭配得当的作业调入内存加以处理。

批处理优点:– 提高系统资源利用率

– 增大作业吞吐量

– 实现作业流程的自动化

Page 35: 第三章  计算机软件

分时处理系统分时处理系统(( Time-sharing Processing STime-sharing Processing S

ystemystem )) 分时处理系统:允许多个用户同时联机使用计算机。

一台分时计算机系统联有若干台终端,多个用户可以在各自终端上向系统发出服务请求,等待计算机的处理结果并决定下一步的处理。操作系统接收每个用户的命令,采用时间片轮转的方式处理用户的服务请求,使每个用户得以完成自己的任务。

主要目标:对用户响应的及时性。

Page 36: 第三章  计算机软件

实时系统实时系统(( Real Time SysteReal Time Systemm ))

实时系统:操作系统能够及时响应随机发生的外部事件,并在规定的时间范围内完成对该事件的处理。

实时系统的分类:– 实时控制系统– 实时信息处理系统

Page 37: 第三章  计算机软件

个人计算机操作系统个人计算机操作系统(( PC-Operating SystemPC-Operating System ))

为个人计算机安装的操作系统是一种联机交互的单

用户操作系统。由于个人计算机应用的普及,对于

提供方便友好的用户接口和文件系统的要求更为迫

切。实际上,目前提供的此类系统都支持多任务处

理,并且采用有效的方法把相关文件组织成目录和

文件。文件的传送、复制、删除,重命名等操作都

很方便。

Page 38: 第三章  计算机软件

高性能计算机操作系统高性能计算机操作系统高性能计算机系统:要求在任务管理、存储

管理和设备管理上具有比一般操作系统更强大的功能。此外,还应增强下列功能:

– 保障系统的安全性

– 记帐功能,记录各类用户作业占用 CPU的时间,以便核算用户使用计算机的费用

– 运行特殊的通信程序控制访问

Page 39: 第三章  计算机软件

网络操作系统网络操作系统网络操作系统( Network Operating System ):

在原来各自计算机的操作系统上,按照网络体系结

构的各个协议标准扩充其功能,包括网络管理、通

信、资源共享、系统安全和多种网络应用服务等。

网络操作系统一般包括两个部分:– 服务器部分

– 客户机部分

Page 40: 第三章  计算机软件

分布式操作系统分布式操作系统(( Distributed Operating SysDistributed Operating Sys

temtem))分布式操作系统:用来管理分布式系统中的所有资源,它负责全系统的资源分配和调度、任务划分、信息传输,控制协调等工作,并为用户提供一个统一的操作界面,用以使用系统资源。至于用户操作被指定在哪一台计算机上执行或使用哪一台计算机的资源,则是由操作系统完成的。此外,由于分布式系统更强调分布式计算和处理,因此对于多机合作和系统重构、健壮性和容错能力有更高的指标。

Page 41: 第三章  计算机软件

3.2.4 3.2.4 常用操作系统介绍常用操作系统介绍

Page 42: 第三章  计算机软件

WindowsWindows 操作系统操作系统Windows 操作系统是一种在微型计算机上运行的系统软件。由(美)微软公司开发,最初作为 DOS的图形化扩充而推出的。Windows 提供了多任务图形界面以及统一的应用程序接口,使得在 Windows 环境下运行应用程序的操作大为简化。

Windows 9x 。从 Windows 95 开始, Windows 均是机器字长 32位的单用户、多任务的操作系统。

– 单用户:一台计算机一次只允许一个用户使用。– 多任务:允许一个用户同时运行多个应用程序

Page 43: 第三章  计算机软件

WindowsWindows 操作系统操作系统Windows 9x

– 支持图形用户界面– 支持“即插即用”的系统配置方法– 提供通信软件,使用户的计算机系统联接到 Inte

rnet 上

Page 44: 第三章  计算机软件

WindowsWindows 操作系统操作系统Windows NT ( New Technology )和 NT 工

作站– 一个网络操作系统。网络中运行 Windows NT

的计算机作为服务器,它存储着诸多共享资源网络中除服务器外,还有供用户使用的客户机部分。客户机可以是一般的 PC 机,其上可以运行 NT客户机软件,也可运行 Windows 95或Wi

ndows 98 。

Page 45: 第三章  计算机软件

WindowsWindows 操作系统操作系统Windows NT ( New Technology )和 NT 工作站

– Windows NT 含有内置的网络功能,支持许多通讯协议,并且具有一个集中的安全系统,以监测各种系统资源。

– 与 NT 操作系统服务器版本相对应的是 NT 的工作站标准版,称为 NT Workstation ,它主要运行在点对点环境中,这个版本可提供多种管理软件和工具软件。

Page 46: 第三章  计算机软件

WindowsWindows 操作系统操作系统Windows 2000 与 2000 工作站

– Windows 2000 实际是 Windows NT 5.0 的一个新的名字,它在使用 Windows NT 的内核的同时增加了许多新的功能。如在即插即用方面,它支持 USB 设备,支持功率的调节和各种硬件编程接口等。在实用性、安全性和稳定性方面都有所超越。 Windows 2000 有以下几种不同的版本:

Windows 2000 Professional

Windows 2000 Server/Advanced Server

Windows 2000 Datacenter Server

Page 47: 第三章  计算机软件

WindowsWindows 操作系统操作系统Windows XP 和 Windows.NET

– Windows XP 是基于 NT 的内核,集成了其稳定性、安全

性及多媒体和网络功能,使微软的前台 OS 不再采用 9X

系列的内核。

– Windows.NET server 是以 XML 标准作为信息交换格式,

具有无线接入、语言支持的 OS新版本、其可靠性、安全

性和易操作性方面有了进一步提高。

Page 48: 第三章  计算机软件

UNIXUNIX 操作系统操作系统 UNIX 操作系统是(美) Bell 实验室开发的一种通用多用户交

互式分时操作系统。自 1970 年 UNIX 系统第一版问世以来,

以 UNIX 系统为基础已研制出许多新的操作系统软件。如微

型计算机、大型计算机上的各种 UNIX 系统的变种,以及用

于计算机网络及分布式计算机系统上的 UNIX 系统等。实际

上, UNIX 系统已成为国际上目前使用最广泛、影响最大的

主流操作系统之一。

Page 49: 第三章  计算机软件

UNIXUNIX 操作系统操作系统UNIX 系统的特色主要体现在以下方面:

– 结构简练。以树形目录结构的文件系统为基础,且将各种设备都定义为特殊文件,统一处理。

内核部分 外层应用子系统

– 功能强大– 易移植性好– 可伸缩性和互操作性强– 容纳新技术的能力强– 网络通信功能强

Page 50: 第三章  计算机软件

LinuxLinux 操作系统操作系统Linux 操作系统的原创者是芬兰的一名青年学者 Linus Torvolds,

他遵从可移植操作系统接口 POSIX 标准开发出 Linux 操作系统

的内核, POSIX 是 IEEE 定义的一套标准,具有与 UNIX 相似

的可移植操作系统服务功能。

Linux 操作系统的优势反映在网络服务器方面,其内核中包含

许多网络协议,已成为网络上最普遍的服务器架构模式。 Linu

x 操作系统作为一个多用户、多任务的操作系统,支持多工作

平台和多处理器。它不仅可提供多达 4TB 的文件系统,同时还

可支持多种其他的文件系统。

Page 51: 第三章  计算机软件

LinuxLinux 操作系统操作系统Linux 系统是一种“自由软件”。或者说,它属于一

种 GPL ( General Public License )软件。其源代码

向世人公开,吸引对该系统感兴趣的人们共同工作。

Page 52: 第三章  计算机软件

OS/2OS/2 操作系统操作系统OS/2 系统是 IBM公司于 1988 年推出的用于PC机

的操作系统。 OS/2 系统是一个多任务、图形用户

界面的操作系统,它提供应用程序间的保护,以确

保一个程序或数据不会覆盖其他的程序或数据。 O

S/2 系统还提供日志用以报告并跟踪软件的运行。

OS/2 系统具有较强的多媒体功能、增强的图形功能

以及较多的实用程序。但目前用 OS/2 设计的应用

程序尚不多见,因而它的应用受到较大的制约。

Page 53: 第三章  计算机软件

3.2.5 3.2.5 实用程序实用程序

Page 54: 第三章  计算机软件

实用程序实用程序 在计算机系统中,一般把用于完成某些与系统资源及文件管理相关

的程序称为实用程序(Utility Program)。一些工具性的实用程序其实就是操作系统的一部分,但也有一些实用程序是独立的程序。

实用程序种类 主要功能磁盘格式化 为在磁盘上存储文件做准备

文件管理 文件拷贝、移动、压缩、删除等磁盘碎片整理 重新存储磁盘上的内容,可使同一文件的不同段存储

在邻接位置文件卸载 删除一个不再需要的文件文件转换 把文件从一种格式转换到另一种格式

反病毒 保护计算机 系统不受病毒的侵扰

常用的实用程序

Page 55: 第三章  计算机软件

3.3 3.3 程序设计语言及语言处理程序设计语言及语言处理程序程序

Page 56: 第三章  计算机软件

3.3.1 3.3.1 程序设计语言分类程序设计语言分类

Page 57: 第三章  计算机软件

程序设计语言分类程序设计语言分类 程序设计语言按其级别可以划分为机器语言、汇编

语言和高级语言三大类。 机器语言

– 机器语言:使用计算机指令系统的程序语言。用机器语言编写的程序,全部都是二进制代码形式,可以被计算机直接执行。机器语言直接依赖机器的指令系统,不同类型甚至不同型号的计算机,其机器语言是不同的。机器语言不易记忆和理解,所编写的程序也难于修改和维护。

Page 58: 第三章  计算机软件

汇编语言汇编语言 汇编语言:用助记符来代替机器指令的操作码和

操作数,如用ADD表示加法,用SUB表示减

法等。这样就能使它的每条指令都有明显的符号

标识。用汇编语言编写程序与编写机器语言程序

相比,比较直观和易记忆,但汇编语言仍然是面

向机器指令系统的,还保留了机器语言的各项缺

点。

Page 59: 第三章  计算机软件

高级语言高级语言高级语言:又称算法语言,其表示方法接近解决问

题的表示方法,而且具有通用性,在一定程度上与机器无关。

高级语言的特点:易学、易用,易维护。人们可以更有效、更方便地用它来编制各种用途的计算机程序。

高级语言虽然接近自然语言,但和自然语言仍有很大差距。主要表现在语法规则极为严格。其主要原因是高级语言处理系统是执行程序的计算机,而自然语言的处理系统则是人。

Page 60: 第三章  计算机软件

3.3.2 3.3.2 程序语言中的数据成程序语言中的数据成分分

和控制成分和控制成分

Page 61: 第三章  计算机软件

程序语言基本成分程序语言基本成分高级语言种类千差万别,但是其基本成份都

可归纳为四种:– 数据成分

– 运算成分

– 控制成分

– 传输成分

Page 62: 第三章  计算机软件

数据成分数据成分 数据作为程序操作的对象,具有名称、类型、作用

域等特征。使用前要对数据的这些特征加以说明。数据名称由用户通过标识符命名,类型说明数据需占用存储单元的多少和存放形式,作用域说明数据可以使用的范围。以 C语言为例,其数据构造方式可分为基本类型和派生类型:

数据类型数据类型

基本类型基本类型

派生类型派生类型

算术类型算术类型

字符类型字符类型枚举类型枚举类型

整型整型实型实型 单精度单精度

双精度双精度

数组数组指针指针…………用户定义类型用户定义类型

Page 63: 第三章  计算机软件

数据成分数据成分 算术(或字符)数据类型:算术(或字符)变量的值是一

个数(或字符)。数值有范围和精度的要求。例如:int x; char c;

说明了 x为整型变量, c是字符型变量。枚举数据类型:枚举是为一组枚举值提供便于记忆的标识符。例如:

enum color (red, yellow,blue);color table;

定义了一种枚举类型 color ,并说明 table 是一个该类型的变量。变量 table的值只能是相应类型所枚举的值( red或 yellow或 blue)。

数组数据类型:数组是一组类型相同有序数据的集合。数组用数组名、数组类型和数组维数表来说明。例如:

int y[3];说明 y是一个整型数组,由3个整型变量元素 y[0]、 y[1]和 y[2]组成。

Page 64: 第三章  计算机软件

数据成分数据成分指针数据类型:指针是数据对象的地址,指针变量是存放某个数据对象地址的变量。例如,以下说明语句分别定义了整型变量 i和指针变量 p:

int i=3; int *p=&i; 这两个语句还说明了对 i和 P的初值设置。即整型变量 i的初值为 3,而指针变量 p存储了变量 i的地址,即 p 指针 “指向”变量 i 。必须指出,一般情况下指针变量和它所指向的数据对象是两种不同的数据,在运算时有不同的规则和限制。

用户定义类型:是由用户按应用要求和语言语法定义的数据类型。具有这种类型数据对象的成员可以是基本类型、派生类型等标准类型的数据,也可以是用户已经定义类型的数据。例如,C语言中的结构体、联合体均属此种用户定义的数据类型。

指针变量指针变量 pp

33

整型变量整型变量 ii

Page 65: 第三章  计算机软件

控制成分控制成分程序语言中控制成分的作用:提供一种基本框架,在此基本框架支持下,可以将数据和对数据的运算组合成程序。

(1) 顺序结构– 用来表示一个计算操作(或语句)的序列。从操

作序列的第一个操作开始,顺序执行序列后续的操作,直至序列的最后一个操作。

Page 66: 第三章  计算机软件

控制成分控制成分( 2 ) 条件选择结构

– 条件选择结构由一个条件( P )和两个供选择的操作 A 和 B 组成。在执行中,先计算条件表达式 P 的值,如果 P 的值为真,则执行操作 A;否则执行操作 B 。当条件选择结构中的 A或 B又由条件选择结构组成时,就呈现嵌套的条件选择结构形式。

Page 67: 第三章  计算机软件

控制成分控制成分( 3)重复结构

– 重复结构为程序描述重复计算过程提供控制手段,

重复结构有多种形式,最基本的形式为 while

型重复结构。

Page 68: 第三章  计算机软件

控制成分控制成分

AA

BB

AA BB

PP真真 假假

AA

PP假假

真真

顺序控制结构顺序控制结构 条件选择结构条件选择结构 WhileWhile 型重复结构型重复结构

Page 69: 第三章  计算机软件

3.3.3 3.3.3 语言处理系统语言处理系统

Page 70: 第三章  计算机软件

语言处理系统语言处理系统语言处理系统的作用:把用软件语言(包括汇编语言和高级语言)编写的各种程序变换成可在计算机上执行的程序,或最终的计算结果,或其他中间形式。语言处理系统包括:

– 翻译程序– 正文编辑程序:用于建立和修改源程序文件– 联接编辑程序:将多个分别编译或汇编过的目标程序和

库文件进行组合– 装入程序:将目标程序装入内存并启动执行

程序模块程序模块 11

…………

程序模块程序模块nn

正文正文编辑编辑

源程序源程序 11

…………

源程序源程序 nn

编译编译

目标程序目标程序 11

…………

目标程序目标程序 nn

联接联接编辑编辑 可执行目可执行目

标程序标程序

装入装入 执行执行 结结果果

库文件库文件

编辑、编译、装入和执行过程编辑、编译、装入和执行过程

Page 71: 第三章  计算机软件

翻译程序翻译程序翻译程序:程序语言处理系统随被处理的语言及其处理方法和处理过程的不同而异。但任何一个语言处理系统通常都包含一个翻译程序,它把一种语言的程序翻译成等价的另一种语言的程序。

– 源语言和源程序:被翻译的语言和程序– 目标语言和目标程序:翻译生成的语言和程序– 按照不同的翻译处理方法,可把翻译程序分为以下三类:

汇编程序( assembler ):从汇编语言到机器语言的翻译程序

解释程序( Interpreter ):按源程序中指令(或语句)的执行顺序,逐条翻译并立即执行相应功能的处理程序

编译程序 (Compiler) :从高级语言到机器语言或汇编语言的翻译程序

Page 72: 第三章  计算机软件

解释程序解释程序解释程序对源程序进行翻译的方法相当于两种自然

语言间的“口译”。解释程序对源程序从头到尾逐句扫描,逐句翻译,并且翻译一句执行一句。因而这种翻译方式并不形成机器语言形式的目标程序。

优点:– 实现算法简单– 易于在解释过程中灵活方便地插入所需要的修改和调试措施

缺点:– 运行效率低

应用:– 解释程序通常适合于交互方式工作的、或调试状态下运

行的、或运行时间与解释时间相差不大的语言

Page 73: 第三章  计算机软件

编译程序编译程序 编译程序对源程序进行翻译的方法相当于“笔译”。

在编译程序的执行过程中,要对源程序扫描一遍或几遍,最终形成一个可在具体计算机上执行的目标程序。

优点:– 通过编译程序的处理可以一次性地产生高效运行的目标

程序,并把它保存在磁盘上,以备多次执行缺点:

– 实现算法较为复杂 应用:

– 编译程序适合于翻译那些规模大,结构复杂,运行时间长的大型应用程序。

Page 74: 第三章  计算机软件

编译程序编译程序编译程序工作过程:

– 源程序的分析是经过词法分析、语法分析和语义分析三个步骤完成的。

– 目标程序的综合包括存储分配、代码优化、代码生成等几个步骤,目的是为程序中的常数、变量、数组等数据结构分配存储空间。

源程序分析 综合

符号表、常数表中间语言程序

目标程序

Page 75: 第三章  计算机软件

3.3.4 3.3.4 主要程序语言介绍主要程序语言介绍

Page 76: 第三章  计算机软件

FORTRANFORTRAN 语言语言FORTRAN : FORmula TRANslation (公式翻译)

的缩写,一种主要用于数值计算的面向过程的程序设计语言。

特点:接近数学公式、简单易用。在处理功能上,允许复数与双精度实数运算,由于具有程序定义机制、I/O的格式说明,允许布尔表达式,函数和子例程名作参数传递,扩充的字符处理等功能,使之也能应用于非数值运算领域。此外, FORTRAN语言还具有块IF结构, DO循环结构等,使写出的程序趋于结构化,是进行大型科学和工程计算的有力工具。

Page 77: 第三章  计算机软件

ALGOLALGOL 语言语言ALGOL ( ALGOrithmic Language )语言:分别于 1960 年和 1962 年发表的 ALGOL60报告及修改报告,已成为程序设计语言发展史上的里程碑,不但开拓了程序设计语言的研究领域,也为后来的软件自动化和软件可靠性研究奠定了基础。 ALGOL语言的语法和语义均有严格的描述。它的语法描述采用了特定的巴科斯形式化体系( BNF),结构清晰,理论严谨。在 ALGOL语言基础上发展的 ALGOL语言簇包括 ALGOL68、Simula、 PASCAL等。PASCAL 语言:具有丰富的数据类型和灵活的控制结构,编译效率高,强调程序的可靠性和易于验证性,被称为第一个结构化程序设计语言。 PASCAL 语言适用于数据处理、数值计算和系统软件开发,并曾经成为大学程序设计教学的优选语言。

Page 78: 第三章  计算机软件

JavaJava 语言语言Java 语言:由 SUN MicroSystem 公司于 1995年 5 月正式对外公布的一种面向对象的、用于网络环境的程序设计语言。特点:适用于网络分布环境,具有一定的平台独立性、安全性和稳定性。

Page 79: 第三章  计算机软件

CC 语言和语言和 C++C++ 语言语言C语言: 1972年至 1973 间由 AT & T公司 Bell实验室的 D.M.Ritchie 在 BCPL 语言基础上设计而成的,著名的 UNIX操作系统就是用 C语言编写的。

特点:语言与运行支撑环境分离、可移植性好、语言规模小因而相对简单、具有指针类型等, C语言本身简洁、高度灵活、程序运行效率高。此外,在C语言中,有不少操作直接对应实际机器所执行的动作,并在许多场合可以代替汇编语言。

Page 80: 第三章  计算机软件

CC 语言和语言和 C++C++ 语言语言 C++语言:以 C语言为基础发展起来的通用程序设计语言。 C

++内置面向对象的机制,支持数据抽象。最先由Be11实验室

的 B.stroustrup在 1980年代设计并实现,至今仍在不断发展。

C++语言是对 C语言的扩充,扩充的内容绝大部分来自其他著

名语言(如 Simula 、 ALGOL68 、 Ada 等)的最佳特性。由

于 C++ 语言既有数据抽象和面向对象能力,运行性能高,又

能与 C语言相兼容,使得数量巨大的 C语言程序能方便地在 C

++ 语言环境中重用。因而近年来 C++ 语言迅速流行,成为当

前面向对象程序设计的主流语言。

Page 81: 第三章  计算机软件

其他语言其他语言除了以上介绍的几种程序语言外,有影响的程序语

言还有:

– LISP语言:适用于符号操作和表处理,主要用于人工智

能领域

– PROLOG语言:一种逻辑式编程语言,主要用于人工智

能领域

– Ada 语言:类似于 PASCAL 语言,且易于控制并行任务

和处理异常情况。适于军用

Page 82: 第三章  计算机软件

3.4 3.4 计算机软件理论基础和计算机软件理论基础和算法算法

Page 83: 第三章  计算机软件

3.4.1 3.4.1 计算机软件理论基础计算机软件理论基础

Page 84: 第三章  计算机软件

计算机软件理论基础计算机软件理论基础计算机软件的理论基础:

– 数学

– 电子学

Page 85: 第三章  计算机软件

数值计算数值计算(( numerical computationnumerical computation ))

数值计算:研究使用计算机求解各种数学问题的数值方法,包括离散型方程和连续系统离散化的数值求解。在数值求解数学问题时,需要考虑误差、收敛性和稳定性等因素。数值计算的研究内容随着计算机发展和应用范围的扩大而不断扩大,从数学类型看,它包括数值逼近、数值微分与数值积分、数值代数、最优化方法、常(偏)微分方程数值解法、积分方程数值解法、计算几何,计算概率统计等。

Page 86: 第三章  计算机软件

离离散散数学数学(( discrete mathematicsdiscrete mathematics ))

离散数学:以离散结构为主要研究对象且与计算机

科学技术密切相关的一些现代数学分支的总称。一

般而言,离散数学主要包括集合论,逻辑学、抽象

代数、范畴论、图论、计算数论和组合学等。

Page 87: 第三章  计算机软件

计算理论计算理论(( theory of computationtheory of computation ))

计算理论:关于计算和计算机械的数学理论。 1936年,为了讨论对于每个问题是否都有求解的算法,该领域的科学家相继创造了递归函数论,提出了理想计算机和通用图灵机的概念,后者在很大程序上影响了 1946年出现的程序存储式计算机的设计理论。近代计算机的诞生使研究的焦点从理论可计算性转移到现实可计算性,产生了算法学和计算复杂性理论、自动机理论和形式语言理论等。

Page 88: 第三章  计算机软件

程序理论程序理论(( Theory of ProgramsTheory of Programs )) 程序理论:研究程序的语义性质、程序设计及开发方法的理论,

其基本问题是如何建立一个相对完善的理论框架,为软件的设计和开发方法提供理论依据,这个框架应能提供有效地描述程序规约的语言;应能定义可操作的变换方法以便能规约构造可执行的程序;应能给出验证程序与其规约之间一致性的机制。科学家的研究形成了的程序语义理论、程序逻辑理论、类型理论、程序验证理论、并发程序理论等。进入 1980年代后,随着超大规模集成电路技术的日臻成熟,并行和分布计算机系统得到迅速发展,特别是互联网的出现和广泛使用,大大促进了并行程序理论和网格计算理论的发展,使之成为程序理论的重要分支。

Page 89: 第三章  计算机软件

3.4.2 3.4.2 算法和数据结构算法和数据结构

Page 90: 第三章  计算机软件

算法和数据结构算法和数据结构要使计算机完成某一问题的解题任务,首先必须针对

该问题设计一个解题步骤,然后再据此编写程序。这

里所说的解题步骤就是“算法”,而程序则是对解题

对象和解题步骤用程序语言进行的一种描述。程序中

用具有一定结构的变量来表示问题的对象,用函数和

语句来实现解题的操作。因此“算法”和“数据结

构”是编写程序所要首先考虑的两个重要方面。

Page 91: 第三章  计算机软件

算法(算法( AlgorithmAlgorithm )) 什么是算法

算法与程序不同,它是问题求解规则的一种过程描

述。在算法中要精确定义一系列规则,这些规则指

定了相应的操作顺序,以便在有限的步骤内得到所

求问题的解答。

算法的设计一般采用由粗到细,由抽象到具体的逐

步求精的方法。

Page 92: 第三章  计算机软件

算法(算法( AlgorithmAlgorithm )) 什么是算法

例如,要对包含 n个整数元素的数组 A 进行排序。– 粗略的思路:① 从所有整数中选一个最小的,作为已排好序的第一个数;② 从剩下的未排序整数中选出最小的,放在已排好序列的最后一个数后面;③ 反复执行②,直到所有整数都放到已排好的序列中。

– 细化,需要考虑排好的序列存放在何处,如何“反复执行”等。– 用“伪代码”(一种介于自然语言和程序设计语言之间的文字和符号表达工具)描述的算法为:

for i=1 to n[选出 A[i]到 A[n] 中最小的元素,设为 A[j];交换 A[i] 和 [j];]

– 进一步细化以上步骤,具体给出如何从数组 A 中选最小的元素,如何对两个元素进行交换等,最终得到求解该问题精确描述的算法。有了算法作为依据,就可以用具体的程序代码编写出相应的程序。

Page 93: 第三章  计算机软件

算法(算法( AlgorithmAlgorithm )) 什么是算法

用 C 语言编写的函数模块 sort 如下:Void Sort ( int A [ ], int n)

{

int i, j, t ;

for( i=0 ; i<n-1;i++ {

j=i;

for (k=i+1;k<n ;k++)

if (A[k]<A[j]) j=k;

t=A[i];A[i]=A[j]; A[j]=t;

}

}

Page 94: 第三章  计算机软件

算法(算法( AlgorithmAlgorithm ))算法的性质

– 算法的基本性质: 确定性 有穷性 能行性 输入 输出

– 算法与程序的区别: 一个程序不一定满足有穷性 程序中的指令必须是机器可执行的,而算法中的运算

语句则无此限制

Page 95: 第三章  计算机软件

算法(算法( AlgorithmAlgorithm ))算法分析

– 分析一个算法的好坏,除其正确性外,还应考虑以下因素:

占用的计算机资源– 时间代价

– 空间代价

是否易理解、易调试和易测试等

Page 96: 第三章  计算机软件

数据结构数据结构(( Data StructuresData Structures ))数据结构:研究程序设计中计算机操作对象以及

它们之间关系和运算的一个专门学科。

研究数据结构一般包括三个方面的内容:– 数据的逻辑结构

– 数据的存储结构

– 在数据上定义的运算的集合

Page 97: 第三章  计算机软件

数据结构数据结构(( Data StructuresData Structures ))数据的逻辑结构

– 数据的逻辑结构是数据间关系的描述,它只抽象地反映数据元素间的逻辑关系,而不管其在计算机中的存储方式。

Page 98: 第三章  计算机软件

数据结构数据结构(( Data StructuresData Structures ))数据的存储结构

– 数据的存储结构实质上是它的逻辑结构在计算机存储器上的实现。

– 为全面地反映一个数据元素的逻辑结构,它在存储器中的映象应包括两方面的内容:

数据元素自身值 数据元素之间关系

– 链接表是以指针方式表示的“线性表结构”

学号、姓名……

学号、姓名……

学号、姓名……

infoinfo linklink infoinfo linklink infoinfo linklink

第第 11 个学生个学生 第第 22 个学生个学生 第第 nn 个学生个学生

学生表的链接结构学生表的链接结构

…………

Page 99: 第三章  计算机软件

数据结构数据结构(( Data StructuresData Structures ))数据的运算

– 对各种数据逻辑结构有相应的各类运算,每种逻辑结构都有一个运算的集合,常用的运算有:检索、插入、删除、更新、排序等。实质上,数据的运算定义在数据逻辑结构上,而其运算的具体实现要在存储结构上进行。