程序设计方案与软件开发基础概述.ppt
《程序设计方案与软件开发基础概述.ppt》由会员分享,可在线阅读,更多相关《程序设计方案与软件开发基础概述.ppt(46页珍藏版)》请在三一办公上搜索。
1、第1章 程序设计与软件开发基础概述,第一节 基础知识回顾与软件工程第二节 算法与数据结构第三节 C语言介绍第四节 常用C开发工具,1/46,C语言程序设计 龙昭华主编,第一节 基础知识回顾与软件工程,(第一章 程序设计与软件开发基础概述),2/46,一、各种进制之间数的转换,十进制转换成二进制:对于整数部分采用除2取余法,用2逐次去除十进制数,直至商为0为止。先得到的余数为二进制的低位数,最后得到的余数为二进 制的最高位的数。十进制数转换成八进制、十六进制:方法同转换成二进制,只是将2分别改成8 和16。二进制、八进制、十六进制数转换成十进制数:使用按权展开、逐项相加的方 法。二进制转换成八进
2、制、十六进制:因为23=8、24=16,所以3位二进制对应一位 八进制,4位二进制对应一位十六进制。八进制、十六进制转换成二进制:上面的逆过程,将1位八进制数转成3位二进 制数,将1位十六进制数转成4位二进制数即可。例如:(10001)B=1*24+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,二、原码、反码、补码、ASCII码,第一节 基础知识回顾与软件工程,3/46,(第一章 程序设计与软件开发基础概述),原码:在原码中规定正数符号位为0,负数符号位为1,后面的数据位则表示该
3、 数的绝对值。如:+15原=0000000000001111B,-15B。反码:在反码中规定正数的反码与原码相同;负数的反码由该负数的原码进行 计算:原码符号位不变,数据位按位取反(即0变为1,1变为0)。如:+15反=0000000000001111B,-15B。补码:正数的补码等于原码;负数的补码等于该负数的反码加1,即该数绝对 值的原码按位取反加1。如:+15补=+15原=0000000000001111B,-15B。ASCII 码:无符号整型数据值即为ASCII码值。标准ASCII码取值 0127。扩展ASCII码取值 128255。如:字母AZ的ASCII码值为6590。注意:在计算
4、机中,数值数据是用补码方式表示的,而字符数据 是用ASCII码表示的。,三、编程语言,第一节 基础知识回顾与软件工程,4/46,第一代语言又称“机器语言”,是计算机诞生和发展初期使用的语言,它是用二 进制形式编码的,由CPU可以识别的0、1序列构成指令码。第二代语言是“汇编语言”,它开始于20世纪50年代初,是用助记符来表示每一 条机器指令。第一代语言和第二代语言都是低级语言。第三代语言即“高级语言”,它起源于20世纪50年代中期,与人们的自然语言和 数学语言更接近,可读性强,编程方便。它告诉计算机怎么做。如:BASIC,FORTRAN、COBOL、PASCAL、C等。C语言也是中级语言,它把
5、 高级语言的基本结构和语句与低级语言的实用性结合起来。第四代语言称为“非过程化语言”,又称为“面向对象的语言”。它告诉计算机做 什么。不必关心问题的解法和处理过程的细节描述,只要说明所要完成的 加工和条件,指明输入数据和输出形式,就能得到要的结果,其他工作由 系统来完成。如:C+、Visual C+、DELPHI等。第五代语言,堪称智能性语言。PROLOG语言是第五代语言的代表,他广泛运用 于抽象问题求解、数据逻辑、公式处理、自然语言理解、专家系统和人工 智能的许多领域。,(第一章 程序设计与软件开发基础概述),四、软件工程,第一节 基础知识回顾与软件工程,5/46,2、软件工程概念 软件工程
6、是采用工程的概念、原理、技术和方法来维护和开发软件,把经时间考验证明正确的管理技术和当前能够得到的最好的技术方法结合起来。,1、软件危机的表现 软件复杂性飞速增长,错误率大增 落后编程方式导致软件成本极高 手工开发周期长 维护工作量大,软件工程强调使用生命周期的方法和各种结构化分析与设计技术,用系统的观点来分解问题,然后再分别解决各个子问题。,(第一章 程序设计与软件开发基础概述),3、软件开发模型,第一节 基础知识回顾与软件工程,6/46,(1)、瀑布模型:支持结构化软件开发。,(2)、演化模型:多次迭代逐步修正。,(3)、螺旋模型:瀑布模型+演化模型+风险分析。,(4)、喷泉模型:主要用于
7、面向对象开发过程,支持复用,具有迭代和无间歇特征。,(5)、增量模型:快速原型模型的一种。,(第一章 程序设计与软件开发基础概述),第二节 算法与数据结构,7/46,一、数据结构的概念,程序:程序实质是完成既定任务的指令序列。而编写程序的工具是语言。程序=数据结构+算法+程序设计方法+语言工具环境 算法是灵魂,是问题求解过程中的精确描述;数据结构是加工对象;语言是工 具;编程需要采用合适的方法。数据:是对客观事物的符号表示,是所有能输入到计算机中并被计算机程序处理的符 号的总称。数据元素:是数据的基本单位,在程序中通常作为一个整体进行考虑和处理。一个数 据元素可由若干个数据项组成。数据项是数据
8、的不可分割的最小单位。如一本 书的书目为一个数据元素,而书目信息中的每一项(如书名、作者名等)为一个 数据项。数据对象:是性质相同的数据元素的集合,是数据的一个子集。数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。结构:数据元素相互之间的关系称为结构。数据的逻辑结构:数据元素间的逻辑上的联系称为数据的逻辑结构。数据结构中的元 素之间的关系集合,反映的是数据的逻辑结构。数据结构研究的内容着重于数 据的逻辑结构,因此经常把逻辑结构称为数据结构。数据的存储结构:数据的逻辑结构在计算机存储设备中的映像称为数据的存储结构。,(第一章 程序设计与软件开发基础概述),二、数据结构的分类,第二节
9、算法与数据结构,8/46,根据数据元素之间关系的不同特性,数据结构有4类基本结构:集合:结构中的数据元素之间除了“同属于一个集合”的关系外,别无其他关系。线性结构:结构中的数据元素之间存在一个对一个(简记为1:1)的关系。树形结构:结构中的数据元素之间存在一个对多个(简记为1:N)的关系。图状(网状)结构:结构中的数据元素之间存在多个对多个(简记为M:N)的关系。,(第一章 程序设计与软件开发基础概述),三、算法概述,第二节 算法与数据结构,9/46,算法:是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表 示一个或多个操作。算法解决的是“做什么”和“怎么做”的问题,程序中的
10、操作语句 就是算法的体现。计算机算法可分为两大类:数值运算算法、非数值运算算法。数值运算算法:数值运算的目的是求数值解,如:求方程的根、函数的定积分等。非数值运算算法:应用十分广泛,如:图书检索、人事管理、行车调度管理、排序 算法等。常用算法:递推化算法(牛顿迭代法、二分法、梯形法、穷举法等);排序算法(选择法、冒泡法);查找算法(顺序查找、折半查找);有序数列的插入、删除操作;存储区的动态分配与释放,单向线性链表的建立、查找、插入、删除操作;初等数论问题求解的有关算法(最大公约数、最小公倍数、素数等);递归算法(求最大公约数、阶乘等);字符串的处理(字符和字符串的插入、删除、字符串的连接、比
11、较等)。,(第一章 程序设计与软件开发基础概述),算法具有5个特性:,第二节 算法与数据结构,10/46,有穷性:对任何合法的输入值,算法中每个步骤由计算机执行的次数及时间 都是有限的。确定性:算法中每个步骤含义明确,无二义性。在任何条件下,相同的输 入,必有相同的输出。可行性:算法中描述的操作都可通过有限次的基本运算来实现。输入:一个算法应具有零个或多个输入。(无输入情况:如求:1*2*3*4*5)。输出:一个算法应具有一个或多个输入。,(第一章 程序设计与软件开发基础概述),算法的设计目标:,第二节 算法与数据结构,11/46,正确性:设计的算法应当满足具有输入、输出和加工处理等明确的无歧
12、义性 的描述的具体问题的需求。验证正确性通常有4个层次:程序不含语法错误;程序对于几组输入数据能够得出满足规格说明要求的结果;程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据能 够得出满足规格说明要求的结果;程序对于一切合法的输入数据能够得出满足规格说明要求的结 果。一般情况至少通过第层的验证。可读性:算法主要是为了阅读与交流,其次才是机器执行。可读性好有助于 人对算法的理解;难懂的程序易于隐藏较多错误,难以调试和修改。健状性:当输入非法数据时,算法也能适当地做出反应或进行处理,而不会 产生莫名其妙的输出结果。效率与低存储量的需求:主要指算法执行时的最长时间与所需的最大存储空 间。,(第
13、一章 程序设计与软件开发基础概述),四、算法的表示方法,第二节 算法与数据结构,12/46,1、用自然语言表示算法:自然语言就是人们日常使用的语言,可以是汉语、英语或其他语言。用自然语言表示通俗易懂,但文字冗长,容易出现“歧义性”。除了简单问题外,一般不用自然语言描述算法。,(第一章 程序设计与软件开发基础概述),例 1.1:用自然语言写出求,的算法。,解:算法表示如下:S1:sign=1/*数值的符号*/S2:sum=1/*累加和*/S3:deno=2/*分母值*/S4:sign=(-1)*signS5:term=sign*(1/deno)/*某一项的值*/,S6:sum=sum+termS
14、7:deno=deno+1S8:若deno100返回S4,否则转S9S9:输出sum,2、用流程图表示算法,第二节 算法与数据结构,13/46,用流程图表示算法,形象直观,比较清楚地显示出各个框之间的逻辑关系,易于理解。但流程图占用篇幅较多,当算法较复杂时,画流程图既费时,又不方便。但必须掌握。美国国家标准化协会ANSI规定了一些常用的流程图符号,并已被世界各国程序工作者采用:,三种基本结构:,为了解决程序设计混乱的问题,1966年提出了三种基本结构:顺序结构、选择结构、循环结构,然后由这些基本结构按一定规律组成一个算法结构,整个算法结构是由上而下将各个基本结构顺序排列起来的。使用这三种基本结
15、构顺序组成的算法结构,可以解决任何复杂的问题,并且是“结构化”的算法。,(第一章 程序设计与软件开发基础概述),顺序结构:,第二节 算法与数据结构,14/46,顺序结构是程序设计中最简单的一种基本结构。如右图所示,形象地描述了一个最简单的顺序结构:图中虚线框内是一个顺序结构。其中A和B两个框是顺序执行的,即在执行完A框所指定的操作后,必然接着执行B框所指定的操作。,(第一章 程序设计与软件开发基础概述),选择结构(或称选取结构,或称分支结构):,第二节 算法与数据结构,15/46,如下图所示,虚线框内是一个选择结构。此结构必包括一个判断框,根据给定的条件p是否成立,而选择执行A框或B框。注意:
16、无论条件p是否成立,只能执行A框或B框之一,不可能既执行A框又执行B框。A或B两个框中可以有一个是空的,即该空框不执行任何操作。,(第一章 程序设计与软件开发基础概述),循环结构(或称重复结构):,第二节 算法与数据结构,16/46,循环结构即反复执行某一部分的操作,分为当型(while型)循环结构和直到型(until型)循环结构两类。,当型(while型)循环结构:如右图所示,虚线框内是一个while型结构。它的功能是当给定的条件p成立时,执行A框操作,执行完A后再判断条件p是否成立,如果仍然成立,再执行A框,如此反复执行A框,直到某一次p条件不成立为止,此时不执行A框,而是从b点脱离循环结
17、构。,(第一章 程序设计与软件开发基础概述),直到型(until型)循环结构:,第二节 算法与数据结构,17/46,如右图所示,虚线框内是一个until型结构。它的功能是先执行A框,然后判断给定的条件p是否成立,如果条件p成立,再执行A框,然后再对条件p作判断,如果条件p仍然成立,又执行A框,如此反复执行A框,直到某一次p条件不成立为止,此时不执行A框,而是从b点脱离本循环结构。,(第一章 程序设计与软件开发基础概述),三种基本结构的共同特点:,第二节 算法与数据结构,18/46,只有一个入口只有一个出口结构内的每一部分都有机会执行到结构内不存在“死循环”(无终止的循环),(第一章 程序设计与
18、软件开发基础概述),其他结构:,第二节 算法与数据结构,19/46,事实上,基本结构不一定只限于上面三种,只要具有上述基本结构的4个特点的结构都可以作为基本结构。人们可以运用三种基本结构定义自己派生的基本结构,并由这些基本结构组成结构化程序。如下两图所示。,(第一章 程序设计与软件开发基础概述),例 1.2:用流程图表示出求,第二节 算法与数据结构,20/46,的算法。,解:,(第一章 程序设计与软件开发基础概述),3、用NS盒流程图表示算法,第二节 算法与数据结构,21/46,既然用基本结构的顺序组合可以表示任何复杂的算法结构,那么,基本结构之间的流程线就属多余的了。1973年美国两学者I.
19、Nassi和B.Shneiderman提出了一种新的流程图形式,并以他们的名字命名为NS结构化流程图。这种流程图完全去掉了带箭头的流程线,全部算法写在一个矩形框内,在该框内还可以包括其他的从属于它的框,即由一些基本的框组成一个大框。这种NS流程图十分适合结构化程序设计,因而很受欢迎。,三种基本结构对应的NS流程图符号:,顺序结构 选择结构 当(while)型循环结构 直到(until)型循环结构,(第一章 程序设计与软件开发基础概述),例 1.3:用NS流程图表示求素数的算法。,第二节 算法与数据结构,22/46,解:素数是指除了1和该数本身之外,不能被其他任何整数整除的数。实际上,若要判断一
20、个正整数m是否为素数,只要将2到 间的每一个整数去除m,若有一个能整除m,则m不是素数,若其间的所有整数都不能整除m,则m为素数。,(第一章 程序设计与软件开发基础概述),例 1.4:用NS流程图表示出判定20002500年中的每一年是否闰年,输出结果的算法。,第二节 算法与数据结构,23/46,解:,闰年的条件:能被4整除,但不能被100整除的年份都是闰年。如:1996年、2004年是闰年。能被100整除,又能被400整除的年份是闰年。如:1600年、2000年是闰年。不符合这两个条件的年份不是闰年。,(第一章 程序设计与软件开发基础概述),4、用伪代码表示算法,第二节 算法与数据结构,24
21、/46,(第一章 程序设计与软件开发基础概述),用流程图和NS图表示算法,直观易懂,但画起来比较费事,在设计一个算法时,可能要反复修改,而修改流程图是比较麻烦的。因此,流程图适宜表示一个算法,但在设计比较复杂的算法过程中使用不是很理想。为了设计算法时简便,常常用伪代码表示。伪代码表示算法的优点:伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。它如同一篇文章,自上而下的写下来,每一行(或几行)表示一个基本操作。它不用图形符号,因此书写方便、格式紧凑,也比较好懂,便于向计算机语言(即程序)过渡。伪代码的书写格式比较自由,可以随手写下来,容易表达出设计者的思想,易于修改。伪代码表示算法
22、的缺点:用伪代码写算法不如流程图或NS图直观,可能还会出现逻辑上的错误。,例 1.5:用伪代码表示“打印20002500年中的每一年是否闰年”的算法。,第二节 算法与数据结构,25/46,解:用伪代码表示的算法如右边所示:,(第一章 程序设计与软件开发基础概述),5、用计算机语言表示算法,第二节 算法与数据结构,26/46,要完成一项工作,包括设计算法和实现算法两部分。前面讲的只是描述算法,要得到运算结果,必须实现算法。实现算法的方法不止一种:计算器、心算、笔算等,我们这里将的是使用计算机来实现算法。但是计算机无法识别流程图、自然语言、伪代码等,只有将算法使用计算机语言编写程序才能被计算机执行
23、。计算机语言程序实际上仍然只是描述了算法,并未实现算法,只有运行程序才能实现算法。本书所讲的C语言程序设计,实际上就是使用C语言来描述具,体算法,上机运行就是实现用C所描述的算法。有关C语言的使用规则正是我们即将要学习的内容。例 1.6:用C语言表示“打印x绝对值”的算 法。解:用C语言表示的算法如右边所示:,main()int x=10;if(x0)printf(“%d”,x);else printf(“%d”,x);,(第一章 程序设计与软件开发基础概述),五、结构化程序设计方法,第二节 算法与数据结构,27/46,(第一章 程序设计与软件开发基础概述),一个结构化程序就是用高级语言表示的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 方案 软件 开发 基础 概述
链接地址:https://www.31ppt.com/p-6393166.html