C语言程序设计第二章算法.ppt
《C语言程序设计第二章算法.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计第二章算法.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 C程序设计程序设计主讲人:袁丽主讲人:袁丽燕大里仁基础教学部第二章:算法第二章:算法程序的灵魂程序的灵魂1 什么是算法什么是算法2 算法的特性算法的特性3 算法的表示算法的表示4 结构化程序设计方法结构化程序设计方法一个程序主要包括两方面的信息:一个程序主要包括两方面的信息:u 对数据的描述:在程序中要指定用到哪些数据以及这些数据对数据的描述:在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式。即数据结构(的类型和数据的组织形式。即数据结构(data structure)data structure)u 对操作的描述:即要求计算机进行操作的步骤,也就是算法对操作的描述:即要求计算机
2、进行操作的步骤,也就是算法(algorithm)(algorithm)著名计算机科学家沃思提出的一个公式:算法+数据结构=程序 算法就是解决问题的思路。有好的算法,才会有好的程序。算法是程序的精髓。算法就是解决问题的思路。有好的算法,才会有好的程序。算法是程序的精髓。类比于我们平常用的汉语,我们都能看懂普通的文字,但不是每个会说普通话的人类比于我们平常用的汉语,我们都能看懂普通的文字,但不是每个会说普通话的人都能写出漂亮的文章。都能写出漂亮的文章。数据是操作的对象数据是操作的对象;操作的目的是对数据进行加工处理,以操作的目的是对数据进行加工处理,以得到期望的结果得到期望的结果 一个程序除了一个
3、程序除了算法和数据结构这算法和数据结构这主要要素外,还应当采用结主要要素外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表构化程序设计方法进行程序设计,并且用某一种计算机语言表示示 算法算法、数据结构数据结构、程序设计方法程序设计方法和和语言工具语言工具是一个程序设计是一个程序设计人员应具备的知识人员应具备的知识u算法是解决算法是解决“做什么做什么”和和“怎么做怎么做”的问题的问题u程序中的操作语句,是算法的体现程序中的操作语句,是算法的体现u不了解算法就谈不上程序设计不了解算法就谈不上程序设计一、什么是算法一、什么是算法 广义地讲:为解决一个问题而采取的方法和步骤,就称为
4、算法。广义地讲:为解决一个问题而采取的方法和步骤,就称为算法。例如:描述太极拳动作的图解,就是太极拳的算法。一首歌曲的例如:描述太极拳动作的图解,就是太极拳的算法。一首歌曲的乐谱,也可以称为该歌曲的算法。乐谱,也可以称为该歌曲的算法。计算机能执行的算法,为计算机算法。其可分为两大类别:计算机能执行的算法,为计算机算法。其可分为两大类别:数值运算数值运算算法和算法和非数值运算非数值运算算法。算法。对同一个问题,可以有不同的解题方法和步骤对同一个问题,可以有不同的解题方法和步骤为了有效地进行解题,不仅需要保证算法正确,还要考虑算法为了有效地进行解题,不仅需要保证算法正确,还要考虑算法的质量,选择合
5、适的算法的质量,选择合适的算法数值运算数值运算的目的是求数值解的目的是求数值解非数值运算非数值运算包括的面十分广泛,最常见的是用于事务管理领域包括的面十分广泛,最常见的是用于事务管理领域例例1 1、求、求1 1*2 2*3 3*4 4*5 5。例例2 2、有、有5050个学生,要求输出成绩在个学生,要求输出成绩在8080分以上的学生的学号和成绩。分以上的学生的学号和成绩。例例3 3、给出一个大于或等于、给出一个大于或等于3 3的正整数,判断它是不是一个素数。的正整数,判断它是不是一个素数。二、算法的特性二、算法的特性u有穷性有穷性:一个算法应包含有限的操作步骤,而不能是无限的。一个算法应包含有
6、限的操作步骤,而不能是无限的。有穷性往往指有穷性往往指“在合理的范围之内在合理的范围之内”。“合理限度合理限度”由人们的常识由人们的常识和需要判定。和需要判定。u确定性确定性:算法的每一个步骤都应当是确定的,不应当含糊和模棱算法的每一个步骤都应当是确定的,不应当含糊和模棱两可。也就是说算法的含义应当是唯一的,而不可以产生两可。也就是说算法的含义应当是唯一的,而不可以产生“歧义性歧义性”u有零个或多个输入有零个或多个输入:所谓输入是指在执行算法时需要从外界取得所谓输入是指在执行算法时需要从外界取得必要的信息。一个算法可以有两个或多个输入,也可以没有输入。必要的信息。一个算法可以有两个或多个输入,
7、也可以没有输入。u有一个或多个输出有一个或多个输出:算法的目的是为了求解,算法的目的是为了求解,“解解”就是输出。就是输出。但算法的输出并不一定就是计算机的打印输出或屏幕输出,一个算法但算法的输出并不一定就是计算机的打印输出或屏幕输出,一个算法得到的结果就是算法的输出,没有输出的算法是没有意义的。得到的结果就是算法的输出,没有输出的算法是没有意义的。u有效性有效性:算法中的每一个步骤都应当能有效地执行,并得到确定算法中的每一个步骤都应当能有效地执行,并得到确定的结果。的结果。三、算法的表示三、算法的表示 用自然语言表示算法用自然语言表示算法 用流程图表示算法用流程图表示算法 三种基本结构和改进
8、的流程图三种基本结构和改进的流程图 用用N-SN-S流程图表示算法流程图表示算法 用伪代码表示算法用伪代码表示算法 用计算机语言表示算法用计算机语言表示算法(1)用自然语言表示算法)用自然语言表示算法n用自然语言表示通俗易懂,但文字冗长,容易出现歧义性用自然语言表示通俗易懂,但文字冗长,容易出现歧义性n用自然语言描述包含分支和循环的算法,不很方便用自然语言描述包含分支和循环的算法,不很方便n除了很简单的问题外,一般不用自然语言除了很简单的问题外,一般不用自然语言(2)用流程图表示算法)用流程图表示算法流程图是用一些图框表示各种操作。流程图是用一些图框表示各种操作。x 0YN一个入口一个入口两个
9、出口两个出口 菱形框的作用是对一个给定的条件进行判断,根据给定的条件菱形框的作用是对一个给定的条件进行判断,根据给定的条件是否成立决定如何执行其后的操作。是否成立决定如何执行其后的操作。连接点(小圆圈)是用于将画在不同地方的流程线连接起来。连接点(小圆圈)是用于将画在不同地方的流程线连接起来。位置不够位置不够防止交叉防止交叉例、求例、求1 1*2 2*3 3*4 4*5 5。将该。将该算法用流程图表示。算法用流程图表示。开始开始1t2it*iti+1ii5Y结束结束N如果需要将最后结果输出如果需要将最后结果输出:开始开始1t2it*iti+1ii5YN输出输出t结束结束如果需要将最后结果输出如
10、果需要将最后结果输出:例、求例、求1 1*2 2*3 3*4 4*5 5。将该。将该算法用流程图表示。算法用流程图表示。例、例、判定判定2000200025002500年中的每一年是否闰年,将结果输出。年中的每一年是否闰年,将结果输出。将该将该算法用流程图表示。算法用流程图表示。开始开始year不能不能被被4整除整除2000yearNyear不能不能被被100整除整除Yyear是闰年是闰年Yyear不是闰年不是闰年Nyear不能不能被被400整除整除Yyear不是闰年不是闰年Nyear是闰年是闰年year+1yearyear2500NY结束结束1.1.通过以上几个例子可以看出流程图是表示算法的
11、较好的工具通过以上几个例子可以看出流程图是表示算法的较好的工具。2.2.一个流程图包括以下几部分一个流程图包括以下几部分:(1)(1)表示相应操作的框表示相应操作的框(2)(2)带箭头的流程线带箭头的流程线(3)(3)框内外必要的文字说明框内外必要的文字说明3.3.流程线不要忘记画箭头,流程线不要忘记画箭头,否则否则难以判定各框的执行次序难以判定各框的执行次序。(3)三种基本结构和改进的流程图)三种基本结构和改进的流程图1.1.传统流程图的弊端传统流程图的弊端n传统的流程图用流程线指出各框的执行顺序,对流程线传统的流程图用流程线指出各框的执行顺序,对流程线的使用没有严格限制的使用没有严格限制n
12、使用者可以毫不受限制地使流程随意地转来转去,使人使用者可以毫不受限制地使流程随意地转来转去,使人难以理解算法的逻辑难以理解算法的逻辑2.2.三种基本结构三种基本结构(1)(1)顺序结构顺序结构AB(2 2)选择结构)选择结构pYANBpYAN(3 3)循环结构)循环结构 当型循环结构当型循环结构p1YAN0 xx5输出输出t例例:将将5050名学生中成绩高于名学生中成绩高于8080分者的学号和成绩输出。将分者的学号和成绩输出。将该该算法用算法用N-SN-S图表示。图表示。1i输入输入ni、gii+1i直到直到i501igi 80是是输出输出ni,gi否否i+1i直到直到i50例例:将判定闰年的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 第二 算法
限制150内