第六章 软件开发技术

自媒体运营教程 产品运营 145

学习目标:

1.理解软件的功能与开发流程 。

2.了解计算机程序设计的基本概念,程序设计语言的发展;数据结构和算法在程序设

计中的作用;软件工程的定义、主要内容和过程;软件开发常用的方法和技术

计算机是可以帮助人们完成工作的工具。但是,它又和我们见到的普通刀、锯有所不同,

计算机是一种特殊的工具,当计算机要执行指定的任务时,是通过执行内部的程序完成的。

计算机程序最基本的功能是把原始的数据转变成有意义的信息。程序指导计算机获取原始数

据,然后将数据转换为对于最终用户有用的信息。但是,程序的编写并不是简单的事情,学

习编程需要一段时间,需要懂得如何把你想要叫计算机做的事情教给计算机去做。这就需要

掌握和计算机交流的语言,需要学习有关程序设计的知识和方法。本章我们针对软件开发涉

及的主要技术进行介绍。

第一节 程序设计语言与解题过程

前面我们已经知道,计算机包括硬件系统和软件系统,硬件系统好比人的躯体,软件系

统好比人的灵魂。为了让计算机做更多的事,不仅要为它配备一套性能良好的硬件,还要为

其设计出一套套解决各式各样问题的软件,即计算机程序。

要设计出一个好的程序,首先必须了解利用计算机解决实际问题的过程,其次必须掌握

程序设计的基本技术,最后要熟练掌握某种程序设计语言。

一、计算机如何解题

我们看到,计算机可以画图,可以放影碟,可以玩游戏,诸如此类,不一而足。这是因

为计算机内部使用了不同的程序,才可以处理不同的问题。

1.程序

“程序”一词,从广义上讲可以认为是任何行动的方案或步骤,例如一场大型演唱会的

程序,大学新生报到的程序,电脑组装的程序等等。

计算机程序同日常生活中的程序含义基本上是相同的,表示的也是处理事务的顺序和步

骤。由于组成计算机程序的基本单位是指令,因此,计算机程序就是按照工作步骤事先编排

好的、具有特殊功能的指令序列。

使用计算机解决问题与人解决问题类似,必须将解题过程分为若干步骤。为了让计算机

代替人脑的部分功能,要教会计算机按照人所规定的步骤和顺序对数据进行处理。但用计算

机解题有其自身的特点。

首先,人类凭借自然语言进行思维。所谓自然语言就是人所使用的语言。由于国家或民

族不同,他们所使用的语言也是不同的,例如绝大多数的中国人使用汉语,英美国家的人使

用英语,俄罗斯人使用俄语,如此等等。计算机进行“思维”也要通过语言,这就是计算机

语言。控制计算机解题过程的算法必须以计算机能够“读懂”的形式表示出来。这种以计算机语言描述的算法就是程序。

其次,人解决问题的过程是一个“自适应”和“自动调节”的过程。也就是说,人在解

决问题之初,只要在脑海中形成一个初步的、“模糊”的方案,就可以着手处理;在处理过

程中,若发现方案有不妥或错误,可随时调整,直至问题解决。而计算机解决问题是一个完

全“机械”的过程,也就是说,计算机在解题前,必须输入一个包含完整的、确定的方法和

步骤的程序,不允许有丝毫的含糊;解题过程开始之后,严格按确定的方法和步骤执行,不

可能作任何修改;如发现错误,执行过程只能被迫停止,需修改程序,从头再来。

因此,确切地说,所谓程序,是用计算机语言对所要解决的问题中的数据以及处理问题

的方法和步骤所做的完整而准确的描述,描述的过程就称为程序设计。对数据的描述就是指

明数据结构形式;对处理方法和步骤的描述也就是算法设计。因而,数据结构与算法是程序

设计过程中密切相关的两个方面。从这个意义上讲,程序是建立在数据结构基础上使用计算

机语言描述的算法。发明 Pascal 语言的著名计算机科学家 Wirth 教授关于程序就提出了一个

著名公式:程序=数据结构+算法。这个公式很形象地说明了程序设计的主要任务。

2.程序设计过程

程序员和建筑师、作曲家以及作家一样,是富有创造性的人。有如建筑师通过图形、文

字构筑起高楼大厦,作家运用文学手段描写人物的个性和特征,作曲家用跳动的音符谱写动

听的旋律,程序设计者通过调动各种程序设计手段,先形成程序框架,然后翻译成最初的程

序版本,再反复修改,最后形成一个完美的程序。

对于程序设计的初学者来说,首先要学会设计一个正确的程序。一个正确的程序,通常

包括两个含义:一是书写正确,二是结果正确。书写正确是指程序在语法上正确,符合程序

语言的规则;而结果正确通常是指对应于正确的输人,程序能产生所期望的输出,符合使用

者对程序功能的要求。程序设计的基本目标是编制出正确的程序,但这仅仅是程序设计的最

低要求。

一个优秀的程序员,除了程序的正确性以外,更要注重程序的高质量。所谓高质量是指

程序具有结构化程度高、可读性好、时空效率高、可靠性高、便于调试维护等一系列特点。

毫无疑问,无论是一个正确的程序,还是一个高质量的程序,都需要通过精心设计才能达到

预期的目标。

对复杂程度较高的问题,想直接编写程序一般是不现实的,必须首先从问题描述入手,

经过对具体问题的分析,抽象出合适的数学模型并设计合适的算法,然后编写程序、调试和

运行直至得到正确结果。这一完整的过程称为程序设计。

那么,如何进行程序设计呢?程序设计的基本过程一般包含以下几个步骤:

(1)确定要解决的问题。接到任务后,首先对要处理的对象进行调查,了解其要求。然

后确定哪些任务由计算机完成,哪些任务手工完成,并对计算机要完成的任务,详细地给出

原始数据、处理后的结果及处理功能。

(2)分析问题,建立数学模型。由于程序是以数据处理的方式解决客观世界中的问题,

因此在程序设计之初,首先应该将实际问题用数学语言描述出来,形成一个抽象的、具有一

般性的数学问题,从而给出问题的抽象数学模型,然后制定解决由该模型所代表的数学问题

的算法。数学模型精确地阐述了问题所涉及的各种概念、已知条件、要求结果,以及已知条

件与要求结果之间的联系等信息。数学模型是下一步确定算法的基础。

(3)选择计算方法。根据特定的数学模型,选择适合计算机解决问题的方法。当同一问

题有多个解决方案时,可根据计算的速度、求值的精度、计算要求与计算机硬件性能的关系

进行选择。数学模型和算法的结合给出了问题的解决方案。

(4)确定数据结构和算法。解决方案确定后,要考虑数据的组织形式,也就是数据结构,

并设计与之相适应的算法。然后对算法进行描述。算法的初步描述可以采用自然语言,然后逐步转化为流程图或其他直观方式。要求描述方式简单明确,能够明显地展示设计者的思想,

是进行程序调试的重要参考。

(5)绘制流程图。根据已确定的算法,画出流程图或结构化流程图。这能使程序员保持

思路清晰,减少编程的错误。

(6)编写程序。使用计算机系统提供的某种程序设计语言,将已设计好的算法表达出来,

这个过程称为程序编制(编码)。编写的程序一般需要经过反复调试、修改才能得到可以运行

且结果“正确”的程序。

这一步应注意的是,要选择一种合适的语言来适应实际算法和所处的计算机环境,并要

正确地使用语言,准确地描述算法。

(7)调试并测试程序。调试程序就是对送入计算机的程序进行排错、试运行的过程,调

试的结果是得到一个能正确运行的程序。程序编写完成后必须经过科学的、严格的测试,才

能最大限度地保证程序的正确性。同时,通过测试可以对程序的性能作出评估。

(8)整理资料,交付使用。程序调试通过后,应将有关资料进行整理,编写程序使用说

明书,交付用户使用。

图 6.1 程序设计的流程。

由此可见,程序设计涉及四个方面的问题:数据结构、算法、编程语言以及隐含在程序

设计过程中的设计方法。这四个方面的知识都是程序设计人员所必须具备的,其中算法是至

关重要的一个方面。图 6.1 描述了程序设计的流程。

3.程序设计技术与基本原则

综上所述,程序设计过程是算法、数据结构和程序设计语言三者相结合与统一的过程。

要设计出一个好的程序,必须掌握程序设计的基本技术,熟练掌握某种程序设计语言。

对问题和算法的最初描述,无论是形式上还是内容上,离最终以计算机语言描述的算法

(程序)都有相当大的距离。如何从问题描述入手构造出解决问题的算法,如何组织好计算机

处理的数据,如何设计出结构和风格良好的高效程序,这涉及多方面的理论和技术,它们形

成了计算机科学的一个重要分支——程序设计方法学。

对于规模不很大的问题,程序设计的核心是算法和数据结构,只要构造出解决问题的高

效算法和数据结构,则完成剩下的任务已经不存在太大困难。如果问题规模大、功能复杂,

则有必要将问题分解成功能相对单一的一些小模块分别实现。这时,程序的组织结构和层次

设计越来越显示出重要性,程序设计方法将起到重要作用。在这种情况下,程序设计过程实

际上成为算法、数据结构以及程序设计方法学三个方面相结合与统一的过程,这三个方面被

称为程序设计三要素。为了编写出高质量的程序,必须首先明确评价程序质量性能的如下一些准则:

(1)正确性:指程序具备且只具备程序设计规格说明书中所列举的全部功能。它是判断

程序质量的首要标准。

(2)可靠性:指程序在多次反复使用过程中,保持不失败的概率。

(3)简明性:要求程序简明易读。

(4)有效性:程序在计算机上运行需要使用一定数量的计算机资源,如 CPU 的时间、存

储器的存储空间。有效性就是在一定的软、硬件条件下,程序综合效率的反映。

(5)可维护性:程序的维护分为校正性维护、适应性维护和完善性维护。软件的可维护

性关系到程序的可用性,应特别予以关注。

(6)可移植性:程序与其所完成的任务有关,也与它的运行环境有关。程序的开发应尽

可能远离机器的特征,以提高它的可移植程度。

由于程序类别以及应用领域的不同,上述判别准则在评估程序整体性能质量时所占的比

重会有所不同,需要具体问题具体分析。

由此可知,程序设计涉及到多方面的内容。有些初学程序设计的人认为,进行程序设计

就是用计算机语言写出源程序,其实这仅仅是完成了程序的编码。事实上程序设计从问题分

析就开始了,它包括了从问题分析直到取得正确结果这样一个完整过程。忽视编码之前的阶

段,即不讲究问题的定义和分析及数据结构和算法的设计,其结果很可能是“事倍功半”,

很难对付日益复杂的程序设计问题,难于满足高质量程序的基本标准。

二、人和计算机交流的语言――计算机语言

语言是交流思想、传达信息的工具。要叫计算机做人交给的任务,就需要使计算机理解

人所设计的算法,这就需要用计算机能够理解的语言――计算机语言来描述算法。计算机语

言是人们设计的专用于人与计算机交流、进而计算机能够自动识别的语言。计算机语言描述

的算法就是计算机程序。

1.计算机语言的分类

程序设计语言是人与计算机之间进行信息交换的工具。人们利用程序设计语言编制程序,

然后送入计算机,计算机对程序进行解释或翻译,识别人的意图并按人的意图进行处理,达

到解决问题的目的。随着计算机技术的飞速发展,人们总是希望设计出来的语言方便使用,

于是不同风格的程序设计语言,从最低级的机器语言到汇编语言,再到高级语言,以及更高

级、智能化的语言不断涌现。

计算机语言作为在计算机上实现算法的工具,其语法应该满足能简洁明了地描述算法结

构、数据、控制操作流程等各方面的需要。从最初的机器语言发展到今天各种各样的高级语

言,主要原因是计算机硬件技术的飞速发展,使得计算机能够处理的问题规模和计算机的应

用领域不断扩大。此外也由于人们一直在追求更良好、优美的编程风格。这就使得计算机语

言的抽象程度越来越高,描述能力越来越强,越来越向专业化或通用化两个不同方向发展,

程序风格也越来越接近自然语言,使程序设计过程也越来越接近人类的思维过程。

几十年来,程序设计语言发展迅速,出现了各种各样的程序语言。

(1)按语言类型分类

按语言类型分类,程序设计语言有机器语言、汇编语言和高级语言。

机器语言:人们在设计计算机硬件时就为计算机设计了一些基本操作,每一种基本操作

叫一条指令,这种指令的功能用计算机的逻辑电路可以直接实现。计算机能直接执行的指令

叫机器指令。最初的程序设计直接使用机器指令,也称为机器语言。使用机器指令进行程序

设计要求设计者具有深入的计算机专业知识,对机器的硬件有充分的了解。这种程序的可读

性差,而且由于不同机器的机器指令不同,因此程序的可移植性差,所编写的程序只能在相同的硬件环境下使用,大大地限制了计算机的应用。

机器语言编写的程序是由二进制代码组成的序列。可以直接访问和使用计算机的硬件资

源。计算机能直接识别并执行这种程序,效率高,这是它的优点。

但机器语言处理问题的方式与人们的习惯有较大差距,例如使用机器语言实现两个整数

加法,首先要将一个加数放入一个被称为累加器的运算器中,然后将另一个加数与累加器的

内容相加(运算结果在累加器中),最后再把累加器中的内容放入存放运算结果的存储单元中。

很显然,用机器语言写出这个过程与直接书写 x=a+b 是大相径庭的。

汇编语言:由于用机器语言编写程序非常不方便,难以记忆各种不同的二进制形式,因

此提出将每一条机器语言指令用一串有比较清晰含义的符号来代替,用符号进行程序设计,

这样的语言称为符号语言或汇编语言,其符号常常用英语的动词或动词的缩写表示。用汇编

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

汇编语言源程序与机器语言源程序相比,阅读和理解都比较方便,但计算机却无法识别

和执行了。由于汇编语言的符号命令和机器指令有很好的一一对应关系,于是人们设计了汇

编程序,汇编程序的任务是自动地将用汇编语言编写的源程序翻译成计算机能够直接理解并

执行的机器语言程序,即目标程序。再通过连接程序将目标程序中所需要的一些系统程序片

段(如标准库函数等)连接到目标程序中,形成可执行文件执行,获得所希望的结果。

汇编语言除了可读性比机器语言好外,同样也存在机器语言的缺点,尤其是描述问

题方式与人类习惯相差太远,而且通常仍要求编程者对计算机硬件有深入的了解。

高级语言:针对汇编语言的缺点,通过进一步抽象,产生了高级语言(也称为通用程序

设计语言)。与汇编语言等低级语言相比,高级语言的表达方式更接近人类自然语言,对各

种公式的表示也近似于数学公式,具有很高的可读性。而且高级语言不像汇编语言那样直接

针对计算机硬件编程,因此不依赖于计算机的具体型号,具有良好的可移植性。虽然高级语

言不如汇编语言效率高,但一般都有广泛的应用范围。而且,一条高级语言语句的功能往往

相当于很多条汇编语言的指令,程序编制相对比较简单。因此,在工程计算、定理证明和数

据处理等方面,人们常用高级语言来编制程序。

用高级语言编写的程序称为高级语言源程序,同汇编语言源程序一样,计算机也不能理

解和执行,于是,人们设计了各种编译程序和解释程序,用于将高级语言源程序翻译成计算

机能直接理解并执行的二进制代码的目标程序。

2)按用户要求分类

按用户要求,程序设计语言有过程式语言和非过程式语言之分。

过程式语言,也叫命令式语言或强制式语言,它是通过指明一系列可执行的运算及运算

的次序来描述计算过程的语言。过程式语言的主要特征是,用户可以描述一系列可顺序执行

的运算,以表示相应的计算过程。例如,FORTRAN,ALGOL60,COBOL,PASCAL,C

等都是过程式语言。

凡是不必指明计算过程的语言,都是非过程式语言。例如结构化查询语言 SQL,只要

用户给出查询范围、查询条件和查询对象,不必指明“如何去查询”的具体操作系列,便可

自动获得所需的查询结果。

对普通用户来说,在大多数情况下使用的是高级语言。微机中常用的高级语言主要有 3

类:面向过程的程序设计语言、面向问题的程序设计语言和面向对象的程序设计语言。

面向过程的程序设计语言。传统的程序设计高级语言几乎都是面向过程的程序设计语

言,在程序中需要将任务的每个步骤逐一编写出来,对问题的描述接近于问题求解过程,易

于掌握和书写。经常用的这类高级语言有 BASIC、FORTRAN、PASCAL、C 等。

面向问题的程序设计语言。是为了易于定义和解决某些问题而设计的一类与机器无关的程序设计语言,其主要有点是减少了程序员编写程序的工作量。例如,报表语言、判定语

言、机床控制专用语言、医学诊断专用语言、电路设计专用语言等,都是面向问题的程序设

相关影片资源迅雷下载推荐

致就差一个程序员的老板们(一)软件开发流程

软件开发当前已经脱离了单打独斗的时期,一个是时效慢,另一个是已经精细化:分工明确,流水线作业。以下是基本人员与职责,仅供参考:市场经理:市场调研,同行分析,可行性分析产品经理:需求调研,竞品分析,原型 ...

软件开发,致就差一个程序员的老板们(一)软件开发流程

计语言。

数据库语言属于面向问题的程序设计语言,编写程序时只要写清楚要调用数据库的什么

功能或对数据进行哪种操作即可,至于具体如何完成这种功能或操作,则由语言本身提供。

数据库语言提供数据(记录)的存储、管理和维护,以及诸如检索、插入等各种高效的常见

数据库操作,比较适用于管理信息系统。目前广泛使用的数据库语言有数据库查询语言 SQL

等。SQL 不仅具有丰富的数据查询功能,而且具有数据定义和数据控制功能,集查询、DDL、

DML 和 DCL 于一体,充分体现了数据库语言的特点和优点。

面向对象的程序设计语言。传统的高级语言,用户不仅要告诉计算机“做什么”,而

且要告诉计算机“怎么做”,也就是把每一步的操作事先都设想好,用高级语言编成程序,

让计算机按指定好的步骤去执行。近年来出现了“面向对象”的程序设计语言。所谓对象是

数据及相关方法的软件实体,可以在程序中用软件中的对象来代表现实世界中的对象。

面向对象语言提供了一系列语法,使编程者能够方便地按照人类思维的最一般规 律,

以与对所研究对象认知程度相同步的方式开发软件,是一种全新风格的语言。

目前计算机上流行的这类程序设计语言有 JAVA、C++、VB、VC、Delphi 等。

3)按应用范围分类

按应用范围,程序设计语言有通用语言和专用语言之分。

目标非单一的语言称为通用语言。如 FORTRAN,ALGOL60,COBOL,PASCAL,C

等都是通用语言。目标单一的语言称为专用语言,如自动数控程序工具语言 APT,就是专

门用于数控机床加工的语言。

4)按使用方式分类

按使用方式,程序设计语言有交互式语言和非交互式语言之分。

具有人—机交互作用的语言称为交互式语言。利用这种语言编写的程序在执行过程中会

向用户随时发出提示,警告等信息,用户可椐此采取相应措施。没有这种功能的语言为非交

互式语言。例如,BASIC、APL 就是交互式语言,而 FORTRAN、ALGOL60、COBOL、PASCAL,

C 等都是非交互式语言。

2.语言处理程序

对于用某种程序设计语言编写的程序,通常要经过编辑处理、语言处理、装配连接处理

后,才能够在计算机上运行。

编辑处理是指计算机通过编辑程序将人们编写的源程序送入计算机。编辑程序可以使用

户方便地修改源程序,包括添加、删除、修改等,直到用户满意为止。

语言处理程序是把用一种程序设计语言表示的程序转换为与之等价的另一种程序设计

语言表示的程序的程序。

在计算机软件中经常用到的语言处理程序是把汇编语言或高级语言“翻译”成机器语言

的翻译程序。被翻译的程序称为源程序或源代码,经过翻译程序“翻译”出来的结果程序称

为目标程序。

翻译程序有两种典型的实现途径,分别称为解释方式与编译方式。

(1)解释方式

解释方式是按照源程序中语句的执行顺序,逐句翻译并立即予以执行。即由事先放入计

算机中的解释程序对高级语言源程序逐条语句翻译成机器指令,翻译一句执行一句,直到程

序全部翻译执行完。解释方法类似于不同语言的口译工作。翻译员(解释程序)拿着外文版

的说明书(源程序)在车间现场对操作员作现场指导。对说明书上的语句,翻译员逐条译给操作员听;操作员根据听到的话(他能懂的语言)进行操作。翻译员每翻译一句,操作员就

执行该句规定的操作。翻译员翻译完全部说明书,操作员也执行完所需全部操作。由于未保

留翻译的结果,若需再次操作,仍要由翻译员翻译,操作员操作。

2)编译方式

先由翻译程序把源程序静态地翻译成为目标程序,然后再由计算机执行目标程序。这种

实现途径可以划分为两个明显的阶段:前一阶段称为生成阶段;后一阶段称为运行阶段。采

用这种途径实现的翻译程序,如果源语言是一种高级语言,目标语言是某一计算机的机器语

言或汇编语言,则这种翻译程序特称为编译程序。如果源语言是计算机的汇编语言,目标语

言是相应计算机的机器语言,则这种翻译程序特称为汇编程序。

编译方式类似于不同语言的笔译工作。例如,某国发表了某个剧本(源程序),我们计

划在国内上演。首先须由懂得该国语言的翻译(编译程序)把该剧本笔译成中文本(目的程

序)。翻译工作结束,得到了中文本后,才能交给演出单位(计算机)去演(执行)这个中

文本(目的程序)。在后面的演出(执行)阶段,并不需要原来的外文剧本(源程序),也

不需要翻译(编译程序)。

正像只懂中文的人与只懂英语的人交谈需要英语翻译,要与只懂日语的人交谈就需要日

语翻译一样,对不同的高级语言也需要不同的翻译程序。如果使用 BASIC 语言,需要在计

算机系统中装有 BASIC 语言的解释程序或编译程序;如果使用 C 语言,就需要在机器内装

有 C 编译程序。如果机器内没有装上汇编语言或高级语言的翻译程序,计算机是决不能够

理解用相应语言编写的程序的。相比较,在同样一篇外文文章情况下,逐句翻译比整篇翻译

的效率低,但一种语言的翻译程序类型不是由使用者来决定,而是由系统软件的生产者决定

的。

3. 对程序设计语言的基本要求

对自然语言而言,它们是人们在长期生活中自然形成的,无所谓优劣,而对计算机语言

来说,它们是人为创造的,就有优劣高低之分了。

(1)软件的质量要求

由于计算机语言用于编程,形成软件,所以为了讨论计算机语言的优劣,我们先讨论一

下对软件的质量要求。对软件可以提出以下 10 条基本要求。

①可理解性。主要指软件的用途即软件的功能,软件各部分之间、各子系统之间的分工

与相互关系是十分清楚的,当用户按规定调用软件的某部分时,软件应能按用户的要求作出

明确的响应,解决用户的问题。

②完整性。完整性要求软件自成体系,即解题过程中所需的全部环节(如输入、编辑、

分析计算或绘图、输出等)软件应该全部具备。完整也意味着软件的“健壮性”,即软件应

具有容错能力——自动排除错误和恢复工作的能力。

③简明性。简明性要求软件在应用过程中一目了然,知道是否出了问题;问题出在什么

地方和怎么解决问题;简明性的另一层含义是指用软件书写的程序有最少的指令行数。

④可移植性。可移植性即兼容性。即软件在任一类型的计算机配置下都能方便而有效地

操作。广义地谈,应在任何硬件配置和操作系统下都能正常有效地运行。

⑤可维护性。一个易于维护的软件产品,为了满足新的要求,应该是很容易修改的。

⑥可测试性。可测试性好的软件,能够比较容易地确定测试的准则,对它的技术性能作

出评价。

⑦人机界面是否友好。提供的界面是否方便,是否有图形化的菜单等。

⑧可靠性。主要指在软件整个生命期内,能否按照设计的要求,满意地实现所需要的功

能,换句话说,原设计的功能是否能正确实现,运行中会有多少隐藏的错误出现,错误出现的后果是什么,等等。

⑨结构性。主要指软件的是模块化的程度,是否符合结构化原则。追求高可靠性、高运

行效率可能会使结构性能变差。

⑩效率。指完成给定功能需要的资源。资源主要指存储空间,CPU 时间。

2)对程序设计语言的一般要求

根据上述对软件质量的 10 项要求,对用以编写、开发软件的语言。可以提出以下基本

要求:

①用户界面好;

②对硬件、软件环境要求低;

③对硬件资源的利用程度高;

④代码质量高,代码质量依据结构化程度,可读性,易维护性,目标程序的运行速度,

可靠性等等;

⑤用途广泛(计算、管理、控制……);

⑥容易调用其他软件;

⑦自身发展快。

如果一种程序设计语言,能在上述 7 个方面都有较好的得分,那就是一种比较理想的语

言。

第二节 数据结构与算法基础

计算机发展初期,主要用于数值计算,处理的是数值数据,数据量小,结构简单,形式

统一。随着计算机技术的发展,计算机应用领域的扩大,越来越多的非数值数据需要处理,

数据的概念也被大大推广,数字、字符、图像、声音都属于数据的范畴。与数值数据相比,

非数值数据的结构比较复杂,其计算机表示也比较麻烦。这时,为数据选择一种好的结构是

非常重要的。只有对数据内部的结构关系以及数据在计算机内如何存储和操作进行深入的研

究,才能设计出高效可靠的程序,实现对数据的有效处理。而对数据在计算机中的存储和表

示的研究产生了数据结构。此外,前面我们已经讲过,利用计算机解决问题时,就要编制计

算机程序,而编写程序要依据一定方法。也就是说,编写程序要先有解决问题的算法。算法

就是解决问题的办法,是对特定问题求解步骤的详细描述。

在这一节里,我们将介绍有关数据结构和算法的基本知识。

一、数据结构

一个水平很高的厨师,如果不给他好原料或原料乱七八糟,也很难做出色、香、味俱佳

的菜肴。对于程序来讲,数据就是原料。程序进行的工作总是以数据为处理对象的。只有将

复杂、松散、无组织的数据,按照问题的要求组织好,才有利于设计出简明、高效的程序来。

也就是说程序设计离不开数据结构。

1. 数学模型

前面讲到,用计算机解决实际问题,首先必须抽象出一个适当的数学模型,用这个数学

模型能得出该问题的精确或近似解。建立实际问题的数学模型是计算机应用必须首先进行的

工作,也是一项很重要的工作。寻求数学模型的实质是分析问题,从中提取决定事物性质或

变化规律的关键因素,并找出这些因素之间的关系,再用数学语言加以描述。一个问题是否

能用计算机得出解答或得出的解答是否正确,首先取决于数学模型的正确与否。

前人在数学模型的建立上已经做了很多工作。例如:求解桥梁结构中应力的数学模型为线性方程组;预报人口增长的数学模型为微分方程;图书馆书目检索的数学模型为带索引的

线性表;数据通讯的二进制编码的数学模型为扩充二叉树;城市之间的最优交通线路的数学

模型为边带权的图等等。对于那些新出现的或情况发生了变化的复杂问题,建立相应的数学

模型仍是一项艰巨的任务。

数学模型大致可分为数值计算和非数值计算两大类。许多实际问题抽象的结果是数学方

程,可以用解析法求出精确解,或者用模拟法求出近似解。但是,随着科学技术的飞速发展,

计算机的应用范围不断扩大,已不再局限于单纯的数值计算,更多地应用于控制、管理及数

据处理等非数值计算的处理工作。因此,对于不同的处理对象,要想设计出高质量的程序,

就必须研究如何组织数据和处理数据,根据问题的要求及数据元素之间的特性,确定相应的

组织存储和操作运算,这些都是数据结构研究的内容。那么到底什么是数据结构呢?

2. 数据结构

我们首先通过自动查询电话号码这样一个例子来认识数据结构。

为了实现电话号码查询,可以按照客户向电信局申请电话号码的先后次序建立一个电话

号码表,存储到计算机中。在这种情况下,由于电话号码表是没有任何规律的,查找时只能

从第一个号码开始逐一进行。我们也可以把电话号码表根据每个用户姓名的第一个拼音字母

的顺序进行排列,这样根据姓名的第一个字母就可以缩小查找范围,从而减少了查找所需的

时间。

在上述例子中,我们感兴趣的是如何提高查找效率。为了解决这个问题,我们是对待处

理的数据进行了一定的排序组织,从而提高了数据处理的效率。

再比如我们要设计一个人机对弈的程序。由于对弈的过程是随机的,为了使计算机能灵

活对弈,就必须将所有可能发生的情况以及相应的对策都考虑周全。在决定对策时,不仅要

看当时的棋局,还要考虑对方的应对以及自己取胜的可能性。因此,计算机操作的对象(数

据元素)是对弈过程中每一步的棋盘状态(格局)。数据元素之间的关系由比赛规则决定,

通常不是线性的,是一个树型结构。问题要求在一个庞大的树型搜索空间里寻找出比较好的

应对策略。这也是一个如何组织存储以及如何进行操作的问题。数据结构就是研究这类非数

值处理的问题。

下面我们介绍一些数据结构的基本概念。

所谓数据,是指客观事物的名称、数量、特征、性质的描述形式(即编码),是计算机所

能处理的一切符号的总称。数据既是计算机加工的对象,又是计算机的产品(计算结果)。

例如,利用数值分析方法解代数方程的程序,其处理对象是整数和实数;编译程序或者

文字处理程序的处理对象是字符串。因此,对计算机科学来讲,数据的含义很广泛,图形、

图象、色彩和声音等都可以通过编码而归于数据的范畴。

邀请

产业观察|懂“软件开发”不再吃香?这场“烧脑大会”透露了云计算的未来 软件定义汽车2-汽车软件开发与方法
  • 商城软件

  • 微商软件

  • 电商软件

  • 课程软件

  • 软件开发

  • 运营学院

  • 营销学习

第六章 软件开发技术-第1张图片-90博客网

创业运营社群

每天分享1-5个创业赚钱知识,每天分享1-5个内部资料。扫一扫立即进群。

第六章 软件开发技术-第2张图片-90博客网

软件开发合作

本站创始人私人微信,13年互联网开发经验,数千家企业系统开发,微信扫一扫添加为好友。

精彩点评 1 个评论
  • 第六章 软件开发技术-第3张图片-90博客网 今早我梦醒了坎 2022-8-19 13:34
    转发了
    我要点评

相关推荐

第六章 软件开发技术-第4张图片-90博客网

开源仿真软件的开发和利用

1 开源软件协议 常见的开源软件协议如下:具有传染性的GPL协议: 基于GPL协议软

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-08-18 第六章 软件开发技术-第5张图片-90博客网

2022年8月程序员笔记本电脑推荐

全文字数4000+,包含了一些主观意识,不想看个人废话的,可以直接拉到第三部分,直接

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-09-01 第六章 软件开发技术-第6张图片-90博客网

Windows开发者套件2023详细测评

本文使用Windows Dev Kit 2023编写购买为什么买这玩意刚公布的时候就看上了,低廉的价

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-11-14 第六章 软件开发技术-第7张图片-90博客网

40 岁从零开始学习软件开发,四年后我成了首席研发

有人曾对我说:“如果你 35 岁时还是个程序员,那就应该开始为你的下半生寻找其他出路

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-08-19 第六章 软件开发技术-第8张图片-90博客网

一张图了解互联网软件项目敏捷迭代开发流程

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-08-19 第六章 软件开发技术-第9张图片-90博客网

2022年软件开发趋势的22个预测

云,容器,编程,数据库,人工智能,机器学习,DevOps,软件架构,软件开发,网络,应

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-08-19 第六章 软件开发技术-第10张图片-90博客网

北京的软件开发外包公司报价单,软件定制开发收费标准和费用明细

某公司找我们做的软件定制开发,其中软件一共包括两部分,分别是公司内部使用的业务系

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-10-29 第六章 软件开发技术-第11张图片-90博客网

各国软件开发者薪资水平统计:中国排第 19,PHP/JavaScript 最低

IT之家 7 月 17 日消息,智能招聘平台 CodeSubmit 统计分析了 20 多个国家的软件开发

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-08-19 第六章 软件开发技术-第12张图片-90博客网

最受欢迎的软件开发模式

软件开发中使用的一个过程或一组方法称为软件开发方法。每种方法都有自己的一套优点和

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-08-19 第六章 软件开发技术-第13张图片-90博客网

软件系统开发费用明细,包括人员结构和项目工期明细

这是某公司做软件定制开发的费用明细,费用大概62万,工期4个月,前后有9个人参与到该

软件开发网友 ⋅ 阅读 ⋅ 评论 ⋅ 2022-08-19 第六章 软件开发技术-第14张图片-90博客网 admin TA还没有介绍自己。 + 关注

相关分类

  • 小程序开发
  • APP开发
  • 软件开发
  • 游戏开发
  • 网站建设
  • 公众号开发
  • 商业模式

热门关注

  • 1

    软件开发报价明细

  • 2

    定制开发一款APP的流程

  • 3

    专业解读 软件开发.Net:最容易入门的程序

  • 4

    衡量软件产品质量的 14 个指标

  • 5

    什么是最常用的软件开发方式?据说99.9%都

  • 6

    应用层软件开发的一些总结

  • 7

    基础软件开发平台概述

  • 8

    分享几个成为优秀软件测试人员必须拥有的技

欢迎光临运营知识网! 快捷登录 注册

关于我们

共生运营网每天更新最实用的网络营销,小程序营销,app运营相关运营知识。共生运营网是一家集软件开发、营销推广、招商运营、运营知识分享为一体的移动互联网服务商,公司凭借专业的技术力量,先进的思维理念,强大的服务团队,已成为国内移动互联网服务知名企业。 关于我们 | 企业文化 | 渠道合作 | 联系我们

网站地图

    运营知识
  • APP运营
  • 网站运营
  • 微信营销
  • 软文营销
  • 抖音营销
  • 微商营销
    公司业务
  • 系统开发
  • 全网招商
  • 私域系统
  • 开发价格
  • 微商系统
  • 新闻营销
    旗下平台
  • 共生网络
  • 私域流量
  • 网红平台
  • 中国文化
  • 营销论坛
  • 企业新闻
第六章 软件开发技术-第15张图片-90博客网

微信扫码
进入高端人脉群
获取所需人脉

第六章 软件开发技术-第16张图片-90博客网

微信扫码
添加站长微信
免费教社群营销

声明:本站内容由网友分享或转载自互联网公开发布的内容,如有侵权请反馈到邮箱 1415941@qq.com,我们会在3个工作日内删除,加急删除请添加站长微信:15314649589

Copyright @ 2022-2044 杭州共生网络 www.gongshengyun.cn Powered by Discuz!
商业洽谈 文章投递 寻求报道
电话咨询: 15924191378
关注微信第六章 软件开发技术-第17张图片-90博客网

相关影片资源迅雷下载推荐

软件开发需要学习哪些基础知识?软件开发三个阶段

软件开发需要学哪些?软件开发要学的东西还是蛮多的,大致需要学习以下知识:1、计算机基础:操作系统、计算机组成原理、计算机网络、数据库原理、数据结构等;2、选择几门计算机语言:软件开发分为java、c++、 c# ...

软件开发,软件开发需要学习哪些基础知识?软件开发三个阶段

企业网站建设与开发最低只要299元起,包含域名服务器,需要的联系QQ345424724,电话15516990022,18530226930

标签: 软件开发 第六章 软件开发技术

抱歉,评论功能暂时关闭!