C语言程序设计_2 第6章算法初步.ppt
《C语言程序设计_2 第6章算法初步.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计_2 第6章算法初步.ppt(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第6 6章章 算法初步算法初步6.1 算法的概念算法的概念6.2 算法的表示方法算法的表示方法6.3 结构化程序设计结构化程序设计退出退出6.1 算法的概念算法的概念6.1.1 6.1.1 6.1.1 6.1.1 什么是算法什么是算法什么是算法什么是算法 当我们要编写一个程序的时候,我们总要首先想好这个程序当我们要编写一个程序的时候,我们总要首先想好这个程序是干什么的?应该如何实现这些目标?应该先进行什么处理、后是干什么的?应该如何实现这些目标?应该先进行什么处理、后进行什么处理?所处理的数据的格式是是什么?遇到一些复杂的进行什么处理?所处理的数据的格式是是什么?遇到一些复杂的问题,我们可能
2、还需要考虑采用什么数学方法。这一切都涉及一问题,我们可能还需要考虑采用什么数学方法。这一切都涉及一个专业名词个专业名词“算法算法”。所谓算法,就是程序处理问题的步骤与方法。所谓算法,就是程序处理问题的步骤与方法。很多时候,程序设计者所面临的问题就是寻找一个合适的算法。很多时候,程序设计者所面临的问题就是寻找一个合适的算法。例如,一个熟练的程序员,要设计一个下例如,一个熟练的程序员,要设计一个下“五子棋五子棋”的游戏程序,的游戏程序,对他而言,对他而言,C语言的编程规则已经清楚。他所面对的核心问题是语言的编程规则已经清楚。他所面对的核心问题是寻找一种可以模拟人下棋的算法。因此,算法在软件设计中具
3、有寻找一种可以模拟人下棋的算法。因此,算法在软件设计中具有重要的地位。正如著名的计算机科学家沃思(重要的地位。正如著名的计算机科学家沃思(Nikiklaus Wirth)所指出的如下公式:所指出的如下公式:程序程序=数据结构数据结构+算法算法6.1.26.1.26.1.26.1.2算法的特性算法的特性算法的特性算法的特性 一一个个方方法法要要成成为为我我们们可可以以在在程程序序设设计计中中所所使使用用的的算算法法,需需要要具具备如下特征。备如下特征。1有穷性有穷性 一一个个算算法法要要在在有有限限的的步步骤骤内内解解决决问问题题(这这里里所所说说的的步步骤骤是是指指计计算算机机执执行行步步骤骤
4、)。计计算算机机程程序序不不能能无无限限地地运运行行下下去去(甚甚至至不不能能长长时时间间地地运运行行下下去去),所所以以一一个个无无限限执执行行的的方方法法不不能能成成为为程程序序设设计计中的中的“算法算法”。例如,求某一自然树例如,求某一自然树N的阶乘:的阶乘:N!=1*2*3*.*N 这这是是一一个个算算法法。因因为为对对任任何何一一个个自自然然数数而而言言,无无论论这这个个数数多多大大,总是有限的。用这个公式计算总是有限的。用这个公式计算N!总是需要有限的步骤。总是需要有限的步骤。但是,以下计算公式则不能作为算法,因为其计算步骤是无但是,以下计算公式则不能作为算法,因为其计算步骤是无限
5、的:限的:SUM=1+1/1+1/2+1/3+.+1/n+.事事实实上上有有穷穷性性是是指指合合理理的的范范围围之之内内,比比如如,设设计计了了一一个个算算法法是是有有限限的的,但但按按照照目目前前计计算算机机发发展展的的水水平平要要计计算算1000年年才才能能完完成成,这样的算法没有实际意义,可以不当作算法,可以视为无穷。这样的算法没有实际意义,可以不当作算法,可以视为无穷。实实际际上上,在在计计算算机机的的许许多多加加密密算算法法中中,可可以以解解密密的的方方法法不不是是不不存存在在,而而是是要要执执行行这这样样的的解解密密算算法法需需要要极极其其大大量量的的时时间间。这这样样就就实现了保
6、密。所谓保密就是让在一定的时间内信息不被他人知晓。实现了保密。所谓保密就是让在一定的时间内信息不被他人知晓。当当然然,计计算算机机技技术术的的进进步步回回对对算算法法有有影影响响。对对于于现现在在的的计计算算机机1000年年才才能能完完成成的的算算法法可可能能几几个个月月的的功功夫夫就就能能完完成成,到到那那时时某某些现在无穷性的方法将变成切实可行的算法。些现在无穷性的方法将变成切实可行的算法。2 确定性确定性 算算法法中中操操作作步步骤骤的的顺顺序序和和每每一一个个步步骤骤的的内内容容都都应应当当是是确确定定的的,不不应应当当是是含含糊糊不不清清的的。它它也也不不能能有有不不同同的的解解释释
7、存存在在,即即不不能能具具有有“二义性二义性”,不应当产生两种或多种以上的含义。,不应当产生两种或多种以上的含义。3 有零个或多个输入有零个或多个输入 输输入入就就是是从从外外界界取取得得必必要要的的信信息息。一一个个算算法法可可以以有有零零个个或或多多个个输输入入,例例如如:输输入入一一个个年年份份,判判断断其其是是否否是是闰闰年年。同同时时一一个个算算法法可以没有输入,例如:计算出可以没有输入,例如:计算出5!是多少。!是多少。4 有一个或多个输出有一个或多个输出 算算法法的的目目的的就就求求解解,“解解”就就是是我我们们想想要要得得到到的的最最终终结结果果。输输出出是是同同输输入入有有着
8、着某某些些特特定定关关系系的的量量。一一个个算算法法得得到到的的最最终终结结果果就就是输出。没有输出的算法是没有意义的。是输出。没有输出的算法是没有意义的。5 可执行性可执行性 一一个个算算法法应应当当是是可可以以由由计计算算机机执执行行的的,算算法法中中描描述述的的操操作作都都是是可以通过计算机的运行来实现。可以通过计算机的运行来实现。6.1.3 6.1.3 6.1.3 6.1.3 算法设计的要求算法设计的要求算法设计的要求算法设计的要求 什什么么样样的的算算法法是是好好的的算算法法呢呢?我我们们在在设设计计算算法法时时应应向向哪哪些些方方面面努力呢?一般包括以下这几个方面。努力呢?一般包括
9、以下这几个方面。1 正确性正确性 一一个个算算法法应应当当能能够够解解决决具具体体问问题题。其其“正正确确性性”可可分分为为以以下下几几个方面:个方面:l不含逻辑错误;不含逻辑错误;l对于几组输入数据能够得出满足要求的结果;对于几组输入数据能够得出满足要求的结果;l对于精心选择的典型、苛刻的输入数据都能得到要求的结果;对于精心选择的典型、苛刻的输入数据都能得到要求的结果;对于一切合法的输入都能输出满足要求的结果;对于一切合法的输入都能输出满足要求的结果;2 可读性可读性 算算法法应应该该可可以以用用能能够够被被人人理理解解的的形形式式表表示示。太太复复杂杂的的、不不能能被被程序员所理解的算法难
10、以在程序设计中采用。程序员所理解的算法难以在程序设计中采用。3 健壮性健壮性 健健壮壮性性指指算算法法具具有有抵抵御御“恶恶劣劣”输输入入信信息息的的能能力力。当当输输入入数数据据非非法法时时,算算法法也也能能适适当当的的作作出出反反应应或或进进行行处处理理,而而不不会会产产生生莫莫明明其其妙妙的的输输出出结结果果。例例如如,当当输输入入三三个个边边的的长长度度值值来来计计算算三三角角形形的的面面积积时时,一一个个有有效效的的算算法法在在三三个个输输入入数数据据不不能能构构成成一一个个三三角角形形时时,应应报报告告输输入入的的错错误误,应应返返回回一一个个表表示示错错误误或或错错误误性性质质的
11、的值值并并中中止止执行。执行。4 效率与低存储量的需求效率与低存储量的需求 高高效效率率和和低低存存储储量量是是优优秀秀程程序序员员追追求求的的目目标标。效效率率指指的的是是算算法法执执行行时时间间,对对于于一一个个问问题题如如果果有有多多个个算算法法可可以以解解决决,执执行行时时间间短短的的算算法法效效率率高高。存存储储量量需需求求指指算算法法执执行行进进程程所所需需要要的的最最大大存存储储空空间间。效效率率与与低低存存储储量量需需求求这这两两者者都都与与问问题题规规模模有有关关。占占用用存存储储量量最最小小、运运算算时时间间最最少少的的算算法法就就是是最最好好的的算算法法。但但是是,在在实
12、实际际中中,运运行行时时间间和和存存储储空空间间往往往往是是一一对对矛矛盾盾。要要根根据据具具体体情情况况选选择择更更优优先考虑哪一个因素。先考虑哪一个因素。6.2 算法的表示方法算法的表示方法 算算法法的的实实质质是是一一种种逻逻辑辑关关系系。对对于于这这样样一一种种关关系系,可可以以用用多多种种方方式式来来表表达达。常常用用的的有有自自然然语语言言、流流程程图图(传传统统的的流流程程图图和和结结构构化化的的流流程图)、伪代码、程图)、伪代码、N-S流程图、计算机语言等。流程图、计算机语言等。6.2.1 6.2.1 6.2.1 6.2.1 自然语言表示算法自然语言表示算法自然语言表示算法自然
13、语言表示算法 自然语言是相对于计算机语言而言的。就是指人们在日常生自然语言是相对于计算机语言而言的。就是指人们在日常生活中使用的语言,如汉语、英语、发语等。对于某些程序员来说,活中使用的语言,如汉语、英语、发语等。对于某些程序员来说,自然语言通俗易懂。但是,对于规模大、复杂的算法,使用自然自然语言通俗易懂。但是,对于规模大、复杂的算法,使用自然语言来描述,往往很冗长,不直观,而且容易发生歧义。比如对语言来描述,往往很冗长,不直观,而且容易发生歧义。比如对于以下这句话:如果于以下这句话:如果A大于大于B,就给它加就给它加1。在理解时就可能出现。在理解时就可能出现歧义,是给歧义,是给A加加1?还是
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计_2 第6章 算法初步 语言程序设计 _2 算法 初步
限制150内