第1章程序设计与软件开发基础概述

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
9 / 46
第二节 算法与数据结构
(第一章 程序设计与软件开发基础概述)
算法具有5个特性:
●有穷性:对任何合法的输入值,算法中每个步骤由计算机执行的次数及时间 都是有限的。
●确定性:算法中每个步骤含义明确,无二义性。在任何条件下,相同的输 入,必有相同的输出。 ●可行性:算法中描述的操作都可通过有限次的基本运算来实现。 ●输入:一个算法应具有零个或多个输入。 (无输入情况:如求:1*2*3*4*5)。 ●输出:一个算法应具有一个或多个输入。
(第一章 程序设计与软件开发基础概述)
一、
数据结构的概念
程序:程序实质是完成既定任务的指令序列。而编写程序的工具是语言。 程序 = 数据结构 + 算法 + 程序设计方法 + 语言工具环境 算法是灵魂,是问题求解过程中的精确描述;数据结构是加工对象;语言是工 具;编程需要采用合适的方法。 数据:是对客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符 号的总称。 数据元素:是数据的基本单位,在程序中通常作为一个整体进行考虑和处理。一个数 据元素可由若干个数据项组成。数据项是数据的不可分割的最小单位。如一本 书的书目为一个数据元素,而书目信息中的每一项(如书名、作者名等)为一个 数据项。 数据对象:是性质相同的数据元素的集合,是数据的一个子集。 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。 结构:数据元素相互之间的关系称为结构。 数据的逻辑结构:数据元素间的逻辑上的联系称为数据的逻辑结构。数据结构中的元 素之间的关系集合,反映的是数据的逻辑结构。数据结构研究的内容着重于数 据的逻辑结构,因此经常把逻辑结构称为数据结构。 数据的存储结构:数据的逻辑结构在计算机存储设备中的映像称为数据的存储结构。
A
B
b
14 / 46
第二节 算法与数据结构
(第一章 程序设计与软件开发基础概述)
选择结构(或称选取结构,或称分支结构):
如下图所示,虚线框内是一个选择结构。此结构必包括一个判断框,根据给 定的条件p是否成立,而选择执行A框或B框。 注意:无论条件p是否成立,只能执行A框或B框之一,不可能既执行A框又执 行B框。A或B两个框中可以有一个是空的,即该空框不执行任何操作。
7 / 46
第二节 算法与数据结构
(第一章 程序设计与软件开发基础概述)
二、
数据结构的分类
根据数据元素之间关系的不同特性,数据结构有4类基本结构: 集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。 线性结构:结构中的数据元素之间存在一个对一个(简记为1:1)的关系。 树形结构:结构中的数据元素之间存在一个对多个(简记为1:N)的关系。 图状(网状)结构:结构中的数据元素之间存在多个对多个(简记为M:N)的关系。
4 / 46
第一节 基础知识回顾与软件工程
(第一章 程序设计与软件开发基础概述)
四、
软件工程
1、软件危机的表现 ●软件复杂性飞速增长,错误率大增 ●落后编程方式导致软件成本极高 ●手工开发周期长 ●维护工作量大 2、软件工程概念 软件工程是采用工程的概念、原理、技术和方法来维护和开发软件,把经时 间考验证明正确的管理技术和当前能够得到的最好的技术方法结合起来。 软件工程强调使用 生命周期的方法和各 种结构化分析与设计 技术,用系统的观点 来分解问题,然后再 分别解决各个子问题。
注意:在计算机中,数值数据是用补码方式表示的,而字符数据 是用ASCII码表示的。
3 / 46
第一节 基础知识回顾与软件工程
(第一章 程序设计与软件开发基础概述)
三、
编程语言
第一代语言又称“机器语言”,是计算机诞生和发展初期使用的语言,它是用二 进制形式编码的,由CPU可以识别的0、1序列构成指令码。 第二代语言是“汇编语言”,它开始于20世纪50年代初,是用助记符来表示每一 条机器指令。第一代语言和第二代语言都是低级语言。 第三代语言即“高级语言”,它起源于20世纪50年代中期,与人们的自然语言和 数学语言更接近,可读性强,编程方便。它告诉计算机怎么做。 如:BASIC,FORTRAN、COBOL、PASCAL、C等。C语言也是中级语言,它把 高级语言的基本结构和语句与低级语言的实用性结合起来。 第四代语言称为“非过程化语言”,又称为“面向对象的语言”。它告诉计算机做 什么。不必关心问题的解法和处理过程的细节描述,只要说明所要完成的 加工和条件,指明输入数据和输出形式,就能得到要的结果,其他工作由 系统来完成。如:C++、Visual C++、DELPHI等。 第五代语言,堪称智能性语言。PROLOG语言是第五代语言的代表,他广泛运用 于抽象问题求解、数据逻辑、公式处理、自然语言理解、专家系统和人工 智能的许多领域。
线性 逻辑结构
非线性
树 图 最常用的
数据结构
存储结构
顺序存储结构 链式存储结构 索引存储结构
散列存储结构 抽象运算:初始化、读取访问、插入、删除等
8 / 46
第二节 算法与数据结构
(第一章 程序设计与软件开发基础概述)
三、
算法概述
算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表 示一个或多个操作。算法解决的是“做什么”和“怎么做”的问题,程序中的操作语句 就是算法的体现。 计算机算法可分为两大类:数值运算算法、非数值运算算法。 数值运算算法:数值运算的目的是求数值解,如:求方程的根、函数的定积分等。 非数值运算算法:应用十分广泛,如:图书检索、人事管理、行车调度管理、排序 算法等。 常用算法: ●递推化算法(牛顿迭代法、二分法、梯形法、穷举法等); ●排序算法(选择法、冒泡法); ●查找算法(顺序查找、折半查找); ●有序数列的插入、删除操作; ●存储区的动态分配与释放,单向线性链表的建立、查找、插入、删除操作; ●初等数论问题求解的有关算法(最大公约数、最小公倍数、素数等); ●递归算法(求最大公约数、阶乘等); ●字符串的处理(字符和字符串的插入、删除、字符串的连接、比较等)。
系统需求
软件需求 需求分析
(2)、演化模型: 多次迭代逐步修正。 (3)、螺旋模型: 瀑布模型 பைடு நூலகம் 演化模型 + 风险分析。 (4)、喷泉模型: 主要用于面向对象开发过程,支持复用,具有迭 代和无间歇特征。
设计 编码 测试 运行
(5)、增量模型: 快速原型模型的一种。
6 / 46
第二节 算法与数据结构
1 1 1 2 3 4 1 1 的算法。 99 100
12 / 46
第二节 算法与数据结构
(第一章 程序设计与软件开发基础概述)
2、用流程图表示算法
用流程图表示算法,形象直观,比较清楚地显示出各个框之间的逻辑关系, 易于理解。但流程图占用篇幅较多,当算法较复杂时,画流程图既费时,又不 方便。但必须掌握。 美国国家标准化协会ANSI规定了一些常用的流程图符号,并已被世界各国 程序工作者采用:

起止框 输入输出框
判断框
处理框
流程线
连接点
注释框
三种基本结构:
为了解决程序设计混乱的问题,1966年提出了三种基本结构:顺序结构、选 择结构、循环结构,然后由这些基本结构按一定规律组成一个算法结构,整个 算法结构是由上而下将各个基本结构顺序排列起来的。使用这三种基本结构顺 序组成的算法结构,可以解决任何复杂的问题,并且是“结构化”的算法。
13 / 46
第二节 算法与数据结构
(第一章 程序设计与软件开发基础概述)
顺序结构:
a
顺序结构是程序设计中最简单的 一种基本结构。
如右图所示,形象地描述了一个 最简单的顺序结构:图中虚线框内是 一个顺序结构。其中A和B两个框是顺 序执行的,即在执行完A框所指定的 操作后,必然接着执行B框所指定的 操作。
11 / 46
第二节 算法与数据结构
(第一章 程序设计与软件开发基础概述)
四、
算法的表示方法
1、用自然语言表示算法: 自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。用自然 语言表示通俗易懂,但文字冗长,容易出现“歧义性”。除了简单问题外,一般 不用自然语言描述算法。 例 1.1 :用自然语言写出求 1 ...... 解:算法表示如下: S1:sign=1 /* 数值的符号 */ S2:sum=1 /* 累加和 */ S3:deno=2 /* 分母值 */ S4:sign=(-1)*sign S5:term=sign*(1/deno)/* 某一项的值*/ S6:sum=sum+term S7:deno=deno+1 S8:若deno≤100返回S4,否则转S9 S9:输出sum
第1章 程序设计与软件开发基础概述 《C语言程序设计》 龙昭华主编
第一节 基础知识回顾与软件工程 第二节 算法与数据结构
第三节 C语言介绍 第四节 常用C开发工具
1 / 46
第一节 基础知识回顾与软件工程
(第一章 程序设计与软件开发基础概述)
一、 各种进制之间数的转换
十进制转换成二进制:对于整数部分采用除2取余法,用2逐次去除十进制数, 直至商为0为止。先得到的余数为二进制的低位数,最后得到的余数为二进 制的最高位的数。 十进制数转换成八进制、十六进制:方法同转换成二进制,只是将2分别改成8 和16。 二进制、八进制、十六进制数转换成十进制数:使用按权展开、逐项相加的方 法。 二进制转换成八进制、十六进制:因为23=8、24=16,所以3位二进制对应一位 八进制,4位二进制对应一位十六进制。 八进制、十六进制转换成二进制:上面的逆过程,将1位八进制数转成3位二进 制数,将1位十六进制数转成4位二进制数即可。 例如: (10001)B = 1*2^4+1 =(17)D =(21)O =(11)H (20)D =(10100)B =(24)O =(14)H (2B)H = 2*16+11 =(43)D =(53)O =(101011)B
软件定义(分析) 软件开发 软件生命 淘汰 系统说明书 设计说明书 软件设计(建模、算法) 程序、系统 软件实现(编程、测试) 编制有关文档(用户手册、操作手册等、报告)
软件运行:维护
5 / 46
第一节 基础知识回顾与软件工程
(第一章 程序设计与软件开发基础概述) 3、软件开发模型 (1)、瀑布模型: 支持结构化软件开发。
10 / 46
第二节 算法与数据结构
(第一章 程序设计与软件开发基础概述)
算法的设计目标:
●正确性:设计的算法应当满足具有输入、输出和加工处理等明确的无歧义性 的描述的具体问题的需求。验证正确性通常有4个层次: ①程序不含语法错误; ②程序对于几组输入数据能够得出满足规格说明要求的结果; ③程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据能 够得出满足规格说明要求的结果; ④程序对于一切合法的输入数据能够得出满足规格说明要求的结 果。 一般情况至少通过第③层的验证。 ●可读性:算法主要是为了阅读与交流,其次才是机器执行。可读性好有助于 人对算法的理解;难懂的程序易于隐藏较多错误,难以调试和修改。 ●健状性:当输入非法数据时,算法也能适当地做出反应或进行处理,而不会 产生莫名其妙的输出结果。 ●效率与低存储量的需求:主要指算法执行时的最长时间与所需的最大存储空 间。
2 / 46
第一节 基础知识回顾与软件工程
(第一章 程序设计与软件开发基础概述)
二、
原码、反码、补码、ASCII码
原码:在原码中规定正数符号位为0,负数符号位为1,后面的数据位则表示该 数的绝对值。 如:[+15]原=0000000000001111B , [-15]原=1000000000001111B。 反码:在反码中规定正数的反码与原码相同;负数的反码由该负数的原码进行 计算:原码符号位不变,数据位按位取反(即0变为1,1变为0)。 如: [+15]反=0000000000001111B , [-15]反=1111111111110000B。 补码:正数的补码等于原码;负数的补码等于该负数的反码加1,即该数绝对 值的原码按位取反加1。如:[+15]补=[+15]原=0000000000001111B, [-15]补=1111111111110001B。 ASCII 码:无符号整型数据值即为ASCII码值。 标准ASCII码取值 0~127 。 扩展ASCII码取值 128~255 。如:字母A~Z的ASCII码值为65~90。
相关文档
最新文档