信息技术概论 教学 作者 骆耀祖 第 5 章 计算机软件开发_第1页
信息技术概论 教学 作者 骆耀祖 第 5 章 计算机软件开发_第2页
信息技术概论 教学 作者 骆耀祖 第 5 章 计算机软件开发_第3页
信息技术概论 教学 作者 骆耀祖 第 5 章 计算机软件开发_第4页
信息技术概论 教学 作者 骆耀祖 第 5 章 计算机软件开发_第5页
已阅读5页,还剩183页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

第5章计算机软件开发

羞束商学浣事商学院

Cf-心、—丫…品卜,。"*">,!

本章学习目标

本章介绍了程序设计的一些基本术语和原理

O通过本章的学习,读者应该掌握计算机的程序

设计基础、程序语言的数据类型、基本控制结构

,算法与数据结构、程序设计语言与翻译系统、

知道软件工程方法。本章重点是结构化程序设计

,理解面向对象及其应用场合;理解软件开发和

软件工程的概念。

圣泉高季浣辜商草院

I■乙:;I,^•­■

)内容提要H

□5.1程序设计的基本概念

□5.2C语言

□5.3算法与数据结构

□5.4面向对象程序设计的基本概念

□5.5软件工程方法

3

圣泉高季浣辜商草院

»<«<*«»*■C«ttM»ttirtniicriitCw-*»«*»>>—上♦••“¥,上■"一

5.1程序设计的基本概念

5.1.1程序设计语言概述

5.1.2高级语言与翻译系统

4

圣泉高季浣辜商草院

5.1程序设计基本概念

人们把需要计算机做的工作写成一定形式的

指令,并把它们存储在计算机内存中,让计算机

按顺序自动执行。这种可以连续执行的计算机指

令的集合被称为“程序”。计算机程序设计人员可

以选择各种各样的程序设计语言或程序开发工具

来开发软件。程序实际上是用计算机语言描述的

对某一问题的解决步骤,而编制程序就是为计算

机安排指令序列。

圣泉高季浣辜商草院

I■乙:;I,^•­■

5.1.1程序设计语言概述

迄今为止,程序设计语言有超过几百种之多

,可以将其分为五大类:机器语言、汇编语言、

第三代语言(ThirdGenerationLanguage,3GL)

、第四代语言(4GL)和第五代语言(5GL)。

6

圣泉高季浣奉商事院

・接

机器语言(由0和1构成的代码)]件

汇编语言(英文缩写的助记符)>作

计算机语

高级语言

1、采用比较接近人们习惯的自然语言

2、具有很大的通用性(即不受具体机器指令的约束)

3、面向算法编写程序

圣泉高季浣奉商事院

1.机器语言

每个计算机系统都有一套自己的指令系

统,指令系统中的每一条指令就称为机器

指令,而机器指令的集合就称为机器语言

O机器语言由计算机能识别和直接执行的

二进制代码组成。

机器语言的优点是可以被计算机直接理

解和执行,执行速度快,且占用内存少。

缺点是面向机器,通用性差。它要求程序

设计人员熟练掌握计算机的全部机器指令

,且要求对计算机硬件结构有很好的了解

O用机器语言编写的程序可读性很差,不

易于调试和维护。

圣泉高季浣辜商草院

I■乙:;I,^•­■

2.汇编语言

汇编语言是第二代程序设计语言。在汇编语

言中,采用了有助于记忆的符号(称为指令助记

符)来表示机器指令中的操作码和地址码。指令

助记符是一些有意义的英文单词的缩写和符号。

例如,用ADD表示力口法(addition)、用SUB表

示减法(subtract)、用MOV表示数据的传送(

move)、用JMP表示程序的跳转(jump)等等

O而操作数可以直接用十进制数书写,地址码可

以用寄存器名、存储单元的符号地址等表示。

圣泉高季浣辜商草院

I■乙:;I,^•­■

用汇编语言编写的程序称为汇编语言源程序

O因为计算机只能识别用二进制代码表示的机器

指令,而不能识别汇编语言源程序中的指令助记

符。因此必须将由汇编语言编写的源程序翻译成

由机蛰济言组感的目标程序,这个过程叫做汇编

o汇编的工作过程如图5J所示。

与机器语言相比,汇编语言有许多优点,程

序设计人员可以用汇编语言写出语句少、质量高

、执行速度快的程序。但是,汇编语言仍是一种

面向机器的语言,通用性差。它要求程序设计人

员对计算机的嚷佳绩构织试算机的指令系统、小

C…PU存器的结构及存储器单元的寻址方式等

等有较详细的了解,并且要求程序设计人员具有

较高的编程技巧。

机器语言和汇编语言都属于低级语言。.

圭束尚季定事商草院

图5.1汇编程序的工作过程

源程序汇编目标程序

11

圣泉高季浣辜商草院

怜•・•■・*・C«0M»'M^VMUIO^I%,T't¥»L,f

3.高级语言

高级语言实际上包括了第三代、第四代、第五代语言,这里主

要是指第三代语言。

由于机器卷署和汇编语言的不足,带来了五十年代后期和六十

年代计算机高级语言的产生和发展。高级语言是一种接近人的自然语

言和数学语言的程序设计语言。用高级语言编写的程序表达直观,可

读性好,与具体机器无关,便于移植,通用性好。高级语言的诞生是

计算机技术的一次重大突破。语言的编译需要词法和语法理论的支持

0形式语言与自动机理论是高级语言语法分析的理论基础。

高级语言是按照一定的“语法规则”,由表达各种不同意义的“关

键字”和“表达式”组成。例如,用PRINT表示显示,用数学运算符

表示加号,用“*”表示乘号等。这些用英语单词表示的关键字和数学

符号简化了程序设计人员开发应用程序的过程。高级语言是面向算法

过程的语言。即不但要告诉计算机“做什么”,还要告诉计算机“怎么

做”。用高级语言编程时,程序设计人员可以应用自顶向下的程序设

计方法及结构化的程序控制结构(顺序结构、选择结构、循环结构)

来开发程序。

12

圣泉高季浣辜商草院

I■乙:;I,^•­■

4.第四代语言(4GL)

第四代语言是一种非过程化的语言。只需要说明所要

完成的加工和条件,给出输入数据并指明输出形式,就能

得到所需结果。第四代语言简单易学,用第四代语言编程

省时省力,用户无需很多程序设计知识就能开发应用程序

O

许多第四代语言主要应用于数据库领域。结构化查询

语言SQL(StructuredQueryLanguage)就是第四代语言

的代表。SQL是目前非常流行的关系型数据库管理系统的

标准语言,它具有数据查询、数据定义、数据操纵和数据

控制功能,可以用来执行如更新数据库中的数据,从数据

库中提取数据等操作。目前,大多数流行的关系型数据库

管理系统,如Oracle、Sybase>MicrosoftSQLServer

、Access等都采用了SQL语言标准。

13

圣泉高季浣辜商草院

I■乙:;I,

怜•・••・*・©・*■»41m****▼,♦«—•■,4〉,一,一

5.第五代语言(5GL)

第五代语言也是非过程化的语言,它们提供

了可视化的图形界面来生成源代码。通常第五代

语言使用第三代语言或第四代语言的编译程序来

转换得到相应的机器语言程序。有些面向对象的

开发工具和网页开发工具,如VisualBasic、

VisualC++、Java等就属于第五代语言。

14

圣泉高季浣辜商草院

I■乙:;I,^•­■

怜•・••・*・©・*■»41m****▼,♦«—•■,4〉,一,一

5.1.2高级语言与翻译系统

通常把用高级语言编写的程序也称为“源程序”

,把用二进制代码表示的程序称为“机器代码程序

”或者“目标程序:由于计算机只能识别和执行由

二进制代码组成的机器语言,因此,用高级语言

编写的源程序,必须经过一个“语言处理程序”将

它“翻译”成计算机能够接受的目标程序后,才能

被计算机执行。这种具有翻译功能的语言处理程

序可以分为两大类:编译程序(又称为编译器)

和解释程序(又称为解释器)。

圣泉高季浣辜商草院

I■乙:;I,^•­■

怜•・••・*・©・*■»41m****▼,♦«—•■“〉,■,一

编译程序是将高级语言源程序一次性地整体地编译成

目标程序(后缀为.OBJ的二进制文件),然后由“连接程

序”(Link)把目标程序与语言本身提供的各种库函数连

接起来成为一个可执行程序。语言的编译需要词法和语法

理论的支持。形式语言与自动机理论是高级语言语法分析

的理论基础。

在编译的过程中,编译程序首先检查源程序的语法,

并检查源程序是否正确地定义了将要处理的数据。此后编

译程序会生成包含了源程序中可能的语法错误的一个列表

,该列表可以帮助程序设计人员对源程序代码进行必要的

调试和修改。常用的FORTRAN、COBOL.C等高级语言

几乎都属于编译型的高级语言,采用编译方式执行程序,

速度较快且占用内存较少。

图52显示了用编译方式执行一个源程序的过程。

16

圣束商尊浣辜商草院

」百用-幼’君迎/七.

囹52用编年万式执仃一个源程序的

—.3程

编译连接计算

17

解释程序也是用于将高级语言源程序翻译成机器语言

目标程序。但是,解释程序采取的是逐个语句翻译(解释

)的方法。它读取一个语句代码,并将该语句翻译成一个

或多个机器语言指令,然后立即执行这些指令。解释一句

执行一句,边解释边执行。图5.3显示了用解释方式执行

一个源程序的过程。

解释程序的优点是当解释某个语句发现了错误时会立

即停止解释执行,程序员可以在解释程序解释下一语句之

前更正代码或调试源程序。其缺点是解释方式不如编译方

式执行程序的速度快。此外,由于解释执行方式不产生目

标程序,如果下次又要执行该程序,则又要重复解释和执

行的过程。而以编译方式执行程序时,只需对源程序编译

一次,以后再次执行时只需直接执行已经编译好了的目标

程序就行了。

18

圣泉高季浣奉商事院

囹5.3用解释万式执仃一个源程序的

19

内容提要

□5.1程序设计的基本概念

□5.2C语言

□5.3算法与数据结构

□5.4面向对象程序设计的基本概念

□5.5软件工程方法

20

圣泉高季浣奉商事院

怜•・•■・*・C«0M»'%,♦«»¥»L,f

)5.2C语言e1

5.2.1C语言简介

5.2.2C语言的组成

5.2.3C程序的语句

5.2.4函数调用

21

圣泉高季浣辜商草院

»<«<*«»*■C«ttM»ttirtniicriitCw-*»«*»>>—上♦••“¥,上■"一

5.2C语言

5.2.1C语言简介

在展语言诞生以前,系统软件主要是用汇编语言编写的。由于汇

编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般

高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优

势),于是人们希望能有一种兼有汇编语言和高级语言特性的新语言

0

七十年代早期,美国贝尔实验室的DennisRitchie研制出了C语

言。后来又经多次改进,并出现了多种版本。C语言同时具有汇编语

言和高级语言的优点,其特点是:语言简洁、紧凑,使用方便、灵活

;运算符极其丰富,可移植性好,可以直接操纵硬件;生成的目标代

码质量和程序执行效率高。

80年代初,美国国家标准化协会(ANSI),根据C语言问世以

来各种版本对C语言的发展和扩充,制定了ANSIC标准,1989年再

次做了修订。目前,在微机上广泛使用的C语言编译系统有

MicrosoftC>TurboC>BorlandC等。虽然它们的基本部分都是

相同的,但还是有一些差异,所以要注意所使用的C编译系统的特点

和规定。

22

圣泉高季浣辜商事院

」古阂M,学ifirJ益业」生

七十年代早期,美国贝尔实验室的DennisRitchie研制出了

C语言。C语言同时具有汇编语言和高级语言的优点,其

特点是:语言简洁、紧凑,使用方便、灵活;运算符极其

丰富,可移植性好,可以直接操纵硬件;生成的目标代码

质量高,可移植性好(较之汇编语言),程序执行效率高

O

80年代初,美国国家标准化协会(ANSI),制定了ANSIC

标准(1989年再次做了修订)。目前,在微机上广泛使

用的C语言编译系统有MicrosoftC>TurboC、

BorlandC等。虽然它们的基本部分都是相同的,但还是

有一些差异,所以请注意所使用的C编译系统的特点和规

23

圣泉高季浣辜商草院

I■乙:;I,^•­■

1.C语言程序的总体结构

一个完整的C语言程序,是由一个main。函数(又

称主函数)和若干个其它函数结合而成的,或仅

由一个main。函数构成。

【例5.1】仅由main。函数构成的C语言程序。

°/*仅由main。函数构成的C语言程序示例7

。main()

0{printf(fifiThisisaCprogramAn55);

0}

程序运行结果为:

。ThisisaCprogram.

24

圣泉高季浣奉商事院

【例5.2】

【例52】由main。函数和1个其它函数max()构成

的C语言程序。

intmax(intx,inty)

{return(x>y?x:y);}

main()

{intnum1,num2;

printf(£1nputthefirstintegernumber:");

£fi,5

scanf(%d5&num1);

printf(ulnputthesecondintegernumber:

scanf(fifi%d55,&num2);

£fi,5

printf(max=%d\n5max(num1,num2));

}

25

圣泉高季浣奉商事院

程序运行情况:

Inputthefirstintegernumber:6^-1

Inputthesecondintegernumber:9^--1

max=9

由上面的程序可知:函数是C语言程序的基本单位

omain。函数的作用,相当于其它高级语言中的

主程序;其它函数的作用,相当于子程序。

26

圣泉高季浣奉商事院

一个C语言程序,总是从main。函数开始执行,而

不论其在程序中的位置。当主函数main。执行完

毕时,亦即程序执行完毕。习惯上,将主函数

main。放在最前面。

27

圣泉高季浣奉商事院

2.函数的一般结构

任何函数(包括主函数main。)都是由函数说明和函数体两

部分组成。其一般结构如下:

[函数类型]函数名(函数参数表)函数说明部分

(说明语句部分;

执行语句部分;函数体部分

函数说明由函数类型(可缺省)、函数名和函数参数表三部

分组成,其中函数参数表的格式为:

数据类型形参[,数据类型形参2……]

28

圣泉高季浣辜商草院

I■乙:;I,^•­■

怜41m4〉,一,一

5.2.2C语言的组成

1.C语言的数据类型

c语言的数据类型可分类如下:

(1)基本类型:分为整型、实型(又称浮点型)、字

符型和枚举型四种。

(2)构造类型:分为数组类型、结构类型和共用类型

三种。

(3)指针类型。

⑷空类型。

C语言中的数据,有常量和变量之分,它们分别属

于上述这些类型。

29

圣泉高季浣辜商草院

I■乙:;I,^•­■

怜41m4〉,一,一

2.常量和变量

在程序运行过程中,其值不能被改变的量称

为常量。常量的类型有:整型常量、实型常量、

字符常量和符号常量。常量的类型,可通过书写

形式来判别。

在程序运行过程中,其值可以被改变的量称

为变量。变量有两个要素:

(1)变量名。每个变量都必须有一个名字——

变量名,变量命名遵循标识符命名规则。

(2)变量值。在程序运行过程中,变量值存储

在内存中。在程序中,通过变量名来引用变量的

值。

30

圣泉高季浣辜商草院

I■乙:;I,^•­■

3.语句

程序是由一行行的语句(statement)所组成的

o语句是由关键字(Keyword)、标识符

(Identifier)及特殊符号所组成的,是程序最小的

可执行单元,将这些可执行单元组合起来,可以

构成程序块、子程序、函数、模块、类…等更高

等的可执行单元。

31

圣泉高季浣奉商事院

4.关键字

关键字(Keyword)是由英文字母所组合而成的,C语

言的关键字共有32个,根据关键字的作用,可分其为数据

类型关键字、控制语句关键字、存储类型关键字和其它关

键字四类。

(1)数据类型关键字(12个):char,double,enum,float,

int,long,short,signed,struct,union,unsigned,void

(2)控制语句关键字(12个):break,case,continue,

default,do,else,for,goto,if,return,switch,while

(3)存储类型关键字(4个):auto,extern,register,static

(4)其它关键字(4个):const,sizeof,typedef,volatile

关键字又称为保留字,

是由C内部定义的,其用途在指示程序如何运作。其用法C

都有所规定,必须遵循这些规定,否则会产生错误。

32

圣泉高季浣辜商事院

JHj垢讷,学在I益业j'i-

5.标识符

除了c预先定义的关键字之外,可以自己定义新字,

例如:DoJt_Yourself>M$、kj…,这些自己定义出来

的字称为标识符。定义标识符时,必须合乎C的规定,C

对于定义标识符的规定如下:

(1)标识符由英文字母、中文字、数字及下划线构成。

(2)标识符的第一个字符必须是英文字母、中文字、或是下

划线,例如以下都是正确的标识符:A、x、CD、sun、

加油站、—计数器…。

(3)标识符的第二个以后的字符可以是英文字母、中文字、

下划线或是数字,例如:A钱、每个_500_元、_520_…

O

(4)若标识符的第一个字符是下划线(J,则标识符中必须含

有英文字母、中文字、或数字,例如_、_、…都不

能当作标识符。33

圣泉高季浣辜商事院

垢讷dj-I君:迎i'h

6.特殊符号

c所使用的特殊符号很多,在键盘上,除了英

文字母之外,其它符号c几乎都会使用到,例如十

、一、*、/这几个符号分别表示算术运算的加减

乘除。

34

圣泉高季浣奉商事院

5.2.3C程序的语句

了解语句的组成元素之后,下面介绍c语言

中常见的语句种类。

与其它高级语言一样,c语言也是利用函数

体中的可执行语句,向计算机系统发出操作命令

O按照语句功能或构成的不同,可将C语言的语

句分为五类。

35

圣泉高季浣奉商事院

1.空语句

空语句仅由一个分号构成。显然,空语句什

么操作也不执行。

2.变量声明语句

程序所使用的可变数据(称为“变量

”(variable))都需要先声明才可以使用。例如,要

用X来存放整数类型的数据,要先利用以下语句

声明变量X:

intX;

语句中的int是关键字,而X则是定义的变量的

标识符。

36

圣泉高尊浣辜商事院

3.表达式语句

表达式语句由表达式后加一个分号构成。最

典型的表达式语句是,在赋值表达式后加一个分

号构成的赋值语句。例如,"num=5”是一个赋值

表达式,而“num=5广却是一个赋值语句。

在外观上,赋值语句跟数学的方程式类似,

例如:

X=123;

但赋值语句不是数学的方程式。在数学的方

程式中,上面的X及Y称为未知数,而程序语言则

将上面的X及Y称为变量,变量是一个可存放数据

的地方,如图5,4所示。37

圣泉高尊浣辜商事院

阂iflr'>'£•套出14上.

图5.4变量与数据的存储

-----------此变量叫X"

▼------

X=123X123——此位置存放X的值

38

圣泉高季浣奉商事院

对“X=123”语句来说,是把等号右边的数据

存放到等号左边的变量X所对应的存储单元中。

这个语句中的M=n号,和数学上的等号的意义是

大不相同的,例如:A=A+2这个语句在数学上

是不成立的,而在计算机程序里,却是合法的,

相反的,AX2=30这个式子在数学上是成立的,

但是在C程序语言里面却是错误的,因为在C程序

语言里面,号左边必须是一个变量名称,而

不能是算术表达式。

39

圣泉高季浣辜商草院

I■乙:;I,^•­■

怜41m4〉,一,一

图5.5表示了“X=Y+10”的运算过程。

因此,A=A+2这个语句的含意是:将变量A的

存储单元中所存放的数据取出来加上2之后,再存

回A的存储单元的意思。

41

圣泉高季浣奉商事院

怜•・•■・*・C«0M»'%,♦«»¥»L,f

)4.控制语句.尊

1966年,C.BOhm和G.Jacopini发表了关于程序结构的重要

论文《带有两种形成规则的图灵机和语言的流程图》(Flow

Diagrams,TuringMachinesandLanguageswithOnlyTwo

FormationRules)给出了任何程序的逻辑结构都可以用顺序结构、

选择结构和循环结构这三种结构来表示的证明。在C语言中,实现顺

序、选择和循环三种基本结构只有9条控制语句。

(1)选择结构控制语句

if()〜else〜,switch()~

(2)循环结构控制语句

do〜while。,for()〜,while。〜,break,continue

(3)其它控制语句

goto,return

在C语言中,输入输出操作均由标准库函数(不是C语言的组成

部分)来实现。学习C语言,不仅要学习这9条控制语句和各种运算

符,而且要学习并掌握常用标准库函数的使用。

42

圣泉高季浣辜商草院

I■乙:;I,

怜41m****▼,♦«—•■,4〉,一,一

)5.复合语句

复合语句是由大括号括起来的一组(也可以是1条)

语句构成。例如:

main()

{……}/*复合语句。注意:右括

号后不需要分号。7

}

43

圣泉高季浣奉商事院

怜•・•■・*・C«0M»'%,♦«»¥»L,f

5.2,4函数调用

在程序的开发中,引用既有的程序(别人开发

好的程序或自己过去所开发的程序),不只可以缩

短程序开发的时程,也可以提升程序的品质。

函数调用语句由一次函数调用加一个分号(

语句结束标志)构成。例如:

printf(nThisisaCfunctionstatement.");

以上语句会在DOS窗口显示MThisisaCfunction

statement",其中printf是函数名称。

44

圣泉高季浣辜商草院

I■乙:;I,^•­■

怜•・••・*・©・*■»41m****▼,♦«—•■“〉,■,一

内容提要

□5.1程序设计的基本概念

□5.2C语言

□5.3算法与数据结构

□5.4面向对象程序设计的基本概念

□5.5软件工程方法

45

圣泉高季浣辜商草院

»<«<*«»*■*»>>—上♦••“¥,上■"一

5.3算法与数据结构

5.3.1算法概述

5.3.2数据结构的基本概念

5.3.3最简单的数据结构••线性表

46

圣泉高季浣辜商草院

5.3算法与数据结构

算法与数据结构是计算机程序的两个最基本

的概念。在谈到算法与数据结构二者的关系时,

瑞士著名计算机科学家尼可莱・沃思(Nikiklaus

Wirth)在1976年曾提出这样一个公式:

算法+数据结构=程序

准确地说,一个程序规定了某个数据结构上

的一个算法。

算法是程序的核心,它在程序设计乃至在整

个计算机科学中都占据重要地位。

47

圣泉高季浣奉商事院

_liFf为I,甘ih.I.住11Pi'h

5.3.1算法概述

计算机解题一般可分解成若干操作步骤。通

常把完成某一任务的操作步骤称为求解该问题的

算法。程序就是用计算机语言描述的算法。由于

组成计算机程序的基本单位是指令,因此计算机

程序就是按照工作步骤事先编排好的具有特殊功

能的指令序列,其中每条指令表示一个或多个操

作。

韦氏新世界词典将“算法”定义为:解决某种问

题的任何专门的方法。

48

圣泉高季浣辜商草院

I■乙:;I,^•­■

)欧几里德算法

给定两个正整数m和n求它们的最大公因子(即能

同时整除m和n的最大正整数)的步骤如下:

(1)以n除m并令所得余数为r,r必小于n;

(2)若r=0算法结束,输出结果n,否则继续步骤3

9

(3)将n置换为m,r置换为n并返回步骤1继续进

行;

欧几里德算法既表述了一个数的求解过程,同时又

表述了一个判定过程。该过程可以判定m和n是

互质的,即除1以外m和n没有公因子这个命题

的真假。

49

圣泉高季浣辜商事院

冲•・•*«・*・C・InE?-«用ii!t,学*每*业¥,1,一

)1.算法的性质

(1)有穷性:一个算法必须总是(对任何合法的输入值)

在执行有限步之后结束。换言之,任何算法必须在有限时

间内完成。

而且每一步都可在合理的有穷时间内完成。

(2)确定性:算法中的每个步骤都必须有明确的定义,不

允许存在多义性和模棱两可的解释。

(3)能行性:算法中描述的每步操作都应是可执行的。例

如,当B=0时A/B就无法执行,不符合能行性的要求。

(4)输入:一个算法必须有。个(自动生成初始数据)或多

个输入。

(5)输出:一个算法必须产生一个或多个输出信息。

50

圣泉高季浣辜商草院

I■乙:;I,^•­■

怜•・••・*・©・*■»41m****▼,♦«—•■,4〉,一,一

2.算法的描述

算法是对解题过程的精确描述。在将算法转

化为高级语言源程序之前,通常先采用文字或图

形工具来描述算法。文字工具如自然语言、伪代

码等,图形工具如传统流程图、N—S流程图等。

51

圣泉高季浣奉商事院

怜•・•■・*・C«0M»'%,♦«»¥»L,f

(1)自然语言

自然语言是人们日常所用的语言,使用自然

语言不用专门训练,所描述的算法也通俗易懂。

然而其缺点也是明显的:首先是由于自然语言的

歧义性容易导致算法执行的不确定性;其次是由

于自然语言表示的串行性,因此当一个算法中循

环和分支较多时就很难清晰地表示出来;此外,

自然语言表示的算法不便转换成用计算机程序设

计语言表示的程序。

52

圣泉高季浣辜商草院

I■乙:;I,^•­■

(2)传统流程图

ANSI(AmericanNationalStandardsInstitute

)颁布了流程图的标准,这些标准规定了用来表示程

序中各种操作的流程图符号。例如,流程图只能使用

图5.6所给出的五种基本控制结构。通常,在流程图中

用流程线(带箭头的实线)来连接大部分图框,这些

流程线表示了程序的执行顺序。

流程图可以很方便地表示顺序、选择和循环结构

,因此可以表示任何程序的逻辑结构。另外,用流程

图表示的算法不依赖于任何具体的计算机和计算机程

序设计语言,从而有利于不同环境的程序设计。流程

图对算法的描述优于其他语言,直观形象,易于理解

,已经为世界各国的程序设计人员普遍使用。

53

圣泉高季浣辜商草院

」声各,匹每迎

怜•・••・*・©・*■»:1»741m****▼,♦«—•■,4Y〉i,一,一

1

V—

1LA_1_B|A2一

Y

①顺序型②选择型:

----

<?)口⑤多情况选择型

----V丫(CASE型)

③先判定型循环④后判定型循环

(DO-WHILE)(DO-IMTIL)

羞束高季浣辜商事院

(3)N—S流程图

N-S流程图又称为结构化流程图,于1973年

由美国学者I.Nassi和B.Shneiderman提出。

与传统流程图不同,N—S图不用带箭头的流程线

来表示程序流程的方向,而用一系列矩形框来表

示各种操作,全部算法写在一个大的矩形框内,

在大框内还可以包含其它从属于它的小框,这些

框一个接一个从上向下排列,程序流程的方总是

从上向下。如图57所示。

N—S结构化流程图比较适合于表达三种基本

结构,适于结构化程序设计,因此很受程序员欢

迎。

55

圣泉高季浣辜商草院

I■乙:;I,^•­■

P/彳

BA1A

②选择型

⑤多分支选择理

S(CASE型)

DO-UNTILP

③WHILE重复型④IMIL重复型

56

(4)伪代码

伪代码,是指不能够直接编译运行的程序代

码,它是用介于自然语言和计算机语言之间的文

字和符号来描述算法和进行语法结构讲解的一个

工具。它表面上很像高级语言的代码,但又不像

高级语言那样要接受严格的语法检查。它比真正

的程序代码更简明,更贴近自然语言。它书写方

便、格式紧凑、易于理解,便于转化为计算机语

言算法(即程序)。

57

圣泉高季浣辜商草院

」声各,匹每迎

怜•・••・*・©・*■»:1»741,'m;****▼•,1♦«—•■,4Y〉i,一,一

0求解超时工资算法的伪代码

MAINMODULE:〃主模块

CALLinitialization〃初始化

CALLProcess〃处理

CALLWrap-UP〃打印输出

END

PROCESSMODULE:〃处理模块

DOWHILENotEOF〃开始循环

CALLReadaRecord〃读入一个记录

CALLCalculate//计算

CALLAccumulateTotals〃累加到总和

ENDDO

RETURN

CALCULATEOVERTIMEPAYMODULE:〃计算超时工资模块

IFOvertimeHours>0THEN〃如果超时工作

OvertimePay=OvertimeHours*1.5*PayRate

〃超时工资=超时小时数*1.5*超时工作每小时报酬

ELSE//否则

OvertimePay=0〃超时工资为0

ENDIF

RETURN

58

圣泉高季浣奉商事院

)3.算法实例

【例5.1】求1+2+3+…+100之和,分别用传统流

程图、N—S流程图及自然语言描述其算法,并将

该算法转化为C语言源程序。

设变量X表示加数,Y表示被加数。

59

圣泉高季浣奉商事院

怜•・•■・*・C«0M»'%,♦«»¥»L,f

(a)传统流程图(b)N-S流程图60

圣泉高季浣辜商草院

_[白爸)一MU.J'•'

(1)采用图形工具描述算法如图5.8所示。

(2)采用自然语言描述算法如下:

将1赋值给X

将2赋值给Y

将X与Y相加结果存放在X中

将Y加1结果存放在Y中

若Y小于或等于100转到步骤3继续执行,否则算

法结束,结果为X

61

圣泉高季浣奉商事院

怜•・•■・*・C«0M»'%,♦«»¥»L,f

(3)将上述算法转化H语言源程序:

main()

{intX,Y;

X=1;

Y=2;

while(Y<=100)

{

X=X+Y;

Y=Y+1;

};

MM

printf(%d5X);

}

62

圣泉高季浣辜商草院

【例5.2】汉诺塔问题

AB

温馨提示

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

最新文档

评论

0/150

提交评论