ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:110.92KB ,
资源ID:22449756      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22449756.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第1章 程序设计基础Word格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

第1章 程序设计基础Word格式.docx

1、前面已经提到,对同一个问题求解,当然允许有不同的算法,也允许存在不同的数据结构,而依不同算法编写的操作代码,其执行效率也就不一样。5.语言算法不仅要通过具体的语言来表述,还要采用合适的方法来表达,才能够形成程序。可以这样说,算法是程序的灵魂,是解决“做什么”和“怎样做”的问题。一个好的程序必须要有一个合理、高效的算法,数据结构是程序要处理的具体对象,语言是描述算法过程的工具。6.程序设计的方法程序设计方法分为两大类:面向过程的程序设计方法和面向对象的程序设计方法。面向过程的程序设计方法是将完成某项工作的每一个步骤和具体要求都考虑在内来设计程序,程序主要用于描述完成这项工作所涉及的数据对象和具体

2、操作规则,如先做什么、后做什么、怎样做、如何做。C语言是一种面向过程的程序设计语言。面向对象的程序设计方法是将任何事物都看成一个对象,它们之间通过一定的渠道相互联系,对象是活动的、相互对立的,是可以激发的,每个对象都是由数据和操作规则构成的。在进行程序设计时,主要针对一个个对象,所有数据分别属于不同的对象,并被封装在对象内,只要激发每个对象完成相对独立的操作功能,整个程序就会自然完成全部操作。1.2算法和结构化程序设计1.2.1算法的概念 做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。计算机算法:计算机能够执行的算法。 当设计一个程序时,通常先分析程序中需要的数据并对

3、数据进行描述,即数据结构设计,然后再根据功能要求设计解决问题的方法,即算法设计,最后用某种计算机语言将其描述出来;同时,为了保证程序有很高的正确性、可靠性、可读性、可理解性、可修改性和可维护性,在整个设计过程中,还必须采用科学的程序设计方法。因此,可以把程序表示为:程序=数据结构+算法+程序设计方法+语言工具和环境数据结构指的是数据的组织形式,并且必须是允许定义和使用的数据结构。根据数据的性质和结构,可以把数据定义为某种数据类型;同时利用规定的数据类型,还可以构建更复杂的数据结构,如链表、堆栈、树等。算法指的是解决问题的方法和步骤;程序设计语言是全部计算机指令(语句)的集合;按照程序设计语言的

4、词法、语法和语义规则设计的计算机指令(语句)序列就是一个程序,而程序也是计算机算法的体现。当设计和编写程序时,并不是简单地写一个程序,而是像一个工程,为了保证其质量,就必须采用科学的程序设计方法,程序设计方法的种类有很多,主要有结构化程序设计方法、面向对象程序设计方法等。算法设计是程序设计的主要步骤,没有高质量的算法就没有高质量的程序。算法(Algorithm)指的是解决问题的方法和步骤。一个算术问题的解题过程、一首乐谱、一份菜谱、一个工作计划等都是一个算法。人们在工作和生活中做每件事情都有其特定的步骤和方法。在现代,特别是计算机诞生之后,人们把计算机解题步骤称为计算机算法,本书谈到的算法,没

5、有特别说明,指的就是计算机算法。1.2.2算法的特性当设计和使用某个算法时,必然要考虑其是否可行。使用一个没有价值的算法是没有任何意义的。因而,算法具有若干约束特性,具有约束特性的算法才称其为算法。著名计算机科学家Knuth在其计算机程序设计艺术一书中详细描述了算法的5个特性:(1)有穷性:算法是一组有穷步骤序列,即一个算法必须在执行有穷步骤后结束。一个算法如果永远不能结束或需要运行相当长的时间才能结束,那么这样的算法是没有使用价值的。(2)确定性:算法中的每一个步骤都必须要有明确的定义,不能含糊、不能有歧义。如“请面向前方”就有歧义,因为“前方”在无任何参照物的参照下,可能是东、南、西、北等

6、的任何一方。(3)大于等于0个输入:在算法执行过程中可以有0个或若干个输入数据,即算法处理的数据既可以不从外部输入(内部生成),也可以从外部输入。少量数据适合内部生成,而大量数据一般需要从外部输入,所以多数算法中要有输入数据的步骤。(4)大于等于1个输出:算法在执行过程中必须要有1个以上的输出操作,即算法中必须要有输出数据的步骤。一个没有输出步骤的算法是毫无意义的。(5)可行性:算法中的每一步骤都是可实现的,即在现有计算机上是可执行的。如:当B是一个很小的实数时,A/B在代数中是正确的,但在算法中却是不正确的,因为它在计算机上无法执行,而要使A/B能正确执行,就必须在算法中使B满足条件:|B|

7、,其中是一个计算机允许的小的实数。一个问题可有若干个不同的可行算法。在不同的算法中有好算法,也有差算法,如:针对同一问题,执行10分钟的算法要比执行1小时的算法好得多。目前,评价算法质量主要有4个基本标准:正确性、可读性、通用性和高效性。一个好的算法应满足运行结果正确、可读性好、可适用一类问题的解决并执行速度快、运用时间短、占用内存少标准。当然,高效性和可读性往往是矛盾的,可读性要优先于高效性。目前,在计算机速度比较快、内存比较大的情况下,高效性已处于次要地位。1.2.3算法的描述对于算法,需要选择一种合适的描述工具进行描述。常用的描述工具有自然语言、流程图、N-S图、伪代码等。1用自然语言描

8、述算法用自然语言描述算法就是选择某种日常使用的语言(如汉语、英语)来描述算法。使用自然语言描述算法的优点是描述自然、通俗易懂而且灵活多样,但缺点是容易产生歧义;因此,在算法设计中应少用或不用自然语言描述算法。通常是在设计初步算法时适当采用自然语言描述,然后还需用其他描述工具细化算法描述。【例1-1】输入两个数a、b的值,然后交换两数的值。算法描述如下。S1:输入两个数a、b的值;S2:使a的值赋给c;S3:使b的值赋给a;S4:使c的值赋给b;S5:输出a、b的值。【例1-2】输入两个正整数m和n,求两数的最大公约数。输入正整数m、n的值;若m小于n,则交换两个数的值;求解m整除n的值,并赋给

9、r;使n的值赋给m;使r的值赋给n;S6:当r的值不等于0,转S3继续执行; 否则执行S7;S7:输出两数的最大公约数的值m。【例1-3】输入一个年份,判定其是否为闰年。闰年判定的条件为:能被4整除但不能被100整除的年份是闰年;或者能被100整除又能被400整除的年份是闰年。输入一个年份y;若y不能被4整除,则输出“y不是闰年”;若y能被4整除,但不能被100整除,则输出“y是闰年”;若y既能被100整除,又能被400整除,则输出“y是闰年”;否则输出“y不是闰年”。2用流程图描述算法流程图是采用一些框图来描述算法的一种工具。美国国家标准化协会ANSI和国际标准化组织ISO公布的标准(ISO

10、580785)规定了流程图采用的一些框图,如图1-1所示。其优点是描述简洁、清晰和直观,缺点是由于转移箭头可以无约束使用,所以会影响算法的可靠性。流程图由以下几部分组成。图1-1 流程图中常用框图开始结束框:表示流程图的起点或终点,即开始或结束,框中给出开始或结束说明。处理框:表示各种处理功能,框中给出处理说明或一组操作。输入/输出框:表示数据的输入或输出,框中给出输入或输出数据说明。判断框:表示一个逻辑判断,框中给出判断条件说明或条件。一般情况有两个出口,分别表示条件的成立或不成立(真或假、是或否),但在执行过程中只有一个出口被激活,如图1-2所示。图1-2 判断框流程线:表示算法的执行方向

11、,且一定为单向线。注释框:表示对流程图某一部分的解释、说明。一般绘制在侧面,如图1-2所示。虚线:表示被注释的范围,如图1-1所示。连接:表示流程线的断点(去向或来源),在图中给出断点编号,如图1-3所示。图1-3 连接示意图1966年,Bohra和Jacopini提出了三种基本结构:顺序结构、分支结构和循环结构。(1)顺序结构。顺序结构是一种最简单、最基本的结构。在这种结构中,各程序块按照出现的顺序依次执行,如图1-4所示,表示A框执行完后立即执行B框;它只有一个入口a和一个出口b。(2)分支结构。也称为选择结构,是根据给定的条件判断在两条可能的路径中选择哪一条,如图1-5所示,若条件P为真

12、时执行A框处理,为假时执行B框处理;当然,A、B框可为空,但不能同时为空。在执行时,只可能执行A框或者执行B框,不可能既执行A框又执行B框;但是无论走哪一路径,都在b口结束。 图1-4 顺序结构 图1-5分支结构(3)循环结构。循环结构也称为“重复处理结构”,包括当型循环结构和直到型循环结构。当型循环结构是在满足给定条件时反复执行某一程序块A,否则不执行。如图1-5(a)所示,先判断条件P,当P为真时执行A框,A框处理完后再判断条件P,当P为真时再执行A框,循环往复,直到判断条件P为假时为止。直到型循环结构是先执行程序块A,直到满足给定条件时,不再执行。如图1-5(b)所示,先执行A框,A框处

13、理完后再判断条件P,当P为假时再执行A框,如此循环往复,直到判断条件P为真时为止。从图中可以看出,循环结构也只有一个入口a和一个出口b。图1-5 循环结构在这三种基本结构中,有以下4个共同特征。 只有一个入口。 只有一个出口。 结构中的每一部分都有机会被执行到。 结构内不存在“死循环”。现已证明,由上述三种基本结构顺序组成的算法结构可以解决任何复杂的问题。例1-1例1-3用流程图表示,分别如图1-6图1-8所示。图1-6 【例1-1】流程图 图1-7 【例1-2】流程图图1-8 【例1-3】流程图3用伪代码图描述算法伪代码也称过程描述语言(Program Design Language,PDL

14、),是介于自然语言和高级程序设计语言之间的一种文字和符号描述工具,它不涉及图形,和写文章一样,一行一行、自上而下地描述算法,书写方便,格式紧凑,言简意赅。【例1-4】把【例1-3】用伪代码表示。BEGIN(开始) 输入年份y if y 不被4整除 print y:“不是闰年” else if y 不被100整除“是闰年” if y 不被400整除 end ifEND(结束)上述是用不同的描述工具描述算法,但要真正被计算机执行,还需要用计算机语言编写出算法。用高级语言表示结构化算法的程序就是一个结构化程序,如下面的例1-5就是用C语言编写的一个结构化程序。【例1-5】把【例1-1】用c语言实现。

15、void main() int a,b,c; printf(“Please input a,b:”); scanf(“%d %d”,&a,&b); c=a; a=b; b=c; printf(“a=%d b=%dn”,a,b);1.2.2 简单算法举例【例1-6】求12345。最原始方法: 步骤1:先求12,得到结果2。 步骤2:将步骤1得到的乘积2乘以3,得到结果6。 步骤3:将6再乘以4,得24。 步骤4:将24再乘以5,得120。 这样的算法虽然正确,但太繁。改进的算法: S1: 使t=1 S2: 使i=2 S3: 使ti, 乘积仍然放在在变量t中,可表示为tit S4: 使i的值+1,即i+1i S5: 如果i5, 返回重新执行步骤S3以及其后的S4和S5;否则,算法结束。用C语言表示:void main() int i,t; t=1;i=2;while(i0,有两个不同的实根。 (4) 当b2 - 4ac0,有两个共轭复根。6、【例4-18】求s=a+aa+aaa+aaaa+aaa的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。7、【例4-20】求Fibonacci数列的前40个数。该数列的生成方法为: F1=1,F2=1,Fn=Fn-1+Fn-2(n3),即从第3个数开始,每个数等于前2个数之和。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1