1、 一个人想用船把狼、羊和一箱菜运送到河一个人想用船把狼、羊和一箱菜运送到河对面对面,但是有两个条件:但是有两个条件: (1)船一次只能运一样船一次只能运一样; (2)当人不在时,狼会吃羊,羊会吃菜。当人不在时,狼会吃羊,羊会吃菜。v第一步:运羊过河,回来v第二步:运菜过河,并运羊回来v第三步:运狼过河,回来v第四步:运羊过河将过河的方法描述出来: 一、算法的概念一、算法的概念1 1、算法就是解决问题的方法和步骤。解、算法就是解决问题的方法和步骤。解决问题的过程,就是实现算法的过程。决问题的过程,就是实现算法的过程。2 2、算法是程序设计的、算法是程序设计的“灵魂灵魂”。瑞士苏。瑞士苏黎世联邦工
2、业大学的黎世联邦工业大学的NiklausNiklaus Wirth Wirth指出指出:算法:算法+ +数据结构数据结构= =程序。程序。3 3、算法独立于任何具体的程序设计语言、算法独立于任何具体的程序设计语言,一个算法可以用多种程序设计语言来,一个算法可以用多种程序设计语言来实现。实现。 二、算法的特征二、算法的特征v有穷性:执行有限步之后结束,且每一执行有限步之后结束,且每一 步的执行时间也都是有限的步的执行时间也都是有限的v确定性:每一步都有确切的含义每一步都有确切的含义v输 入:有零个或多个输入有零个或多个输入v输 出:至少产生一个输出至少产生一个输出v可行性:原则上能精确运行,用纸
3、和笔原则上能精确运行,用纸和笔 做有限次运算后即可完成做有限次运算后即可完成三、算法的描述三、算法的描述v1、用自然语言来描述。v2、用流程图来描述。v3、用伪代码描述算法。1 1、用自然语言来描述。、用自然语言来描述。人们日常生活中使用的语言人们日常生活中使用的语言 第一步:运羊过河,回来第二步:运菜过河,并运羊回来第三步:运狼过河,回来第四步:运羊过河通俗易懂,但缺乏直观性,不简洁,且易产生歧义。练习一: 已知变量已知变量x x和和y y中分别中分别存放了数据,现在要交换存放了数据,现在要交换其中的数据。用自然语言其中的数据。用自然语言描述算法。描述算法。算法描述算法描述 第第1 1步:将
4、步:将x x中的数据送给变量中的数据送给变量m m,即,即 xmxm; 第第2 2步:将步:将y y中的数据送给变量中的数据送给变量x x,即,即 yxyx ; 第第3 3步:将步:将m m中的数据送给变量中的数据送给变量y y,即,即 mymy。 2 2、用流程图来描述、用流程图来描述直观易懂、逻辑关系清晰,不容易产生歧义。开始或结束开始或结束输入或输出输入或输出处理或运算处理或运算判判 断断连连 接接 线线开始开始结束结束第一步:运羊过河,回来第二步:运菜过河,并运 羊回来第三步:运狼过河,回来第四步:运羊过河开始开始结束结束运羊过河运羊过河, ,回来回来 运菜过河运菜过河, , 并运羊回
5、来并运羊回来运狼过河运狼过河, ,回来回来运羊过河运羊过河例:将过河的算法用流程图描述出来练习二练习二: 将交换两个变量交换两个变量的算法用流程图描述。开始开始结束结束xmyxmy 例:例: 任意输入一个实数到任意输入一个实数到变量变量X X,求下面函数的,求下面函数的Y Y值:值:Y=Y=X (X0)X (X0)2X (X0)2X (X0)N结束结束X大于大于0?开始开始输出输出Y输入一个实数到变量输入一个实数到变量XY判断框只能判断框只能有两个出口有两个出口Y=xY=2xY=Y=x (x0)x (x0) 0 (x=0) 0 (x=0)2x (x0)2x (xY?开始开始YN输入输入3个数到
6、变量个数到变量X,Y,ZXCYC输出输出CZC?YNZC3 3、用伪代码来描述、用伪代码来描述简单、易懂,容易修改,且容易转化为程序语言代码。例例 :用伪代码描述求解分段函数用伪代码描述求解分段函数 的算法的算法 思 考算法描述的比较算法描述的比较自然语言描述自然语言描述流程图描述流程图描述直观清晰直观清晰确定性确定性烦琐程度烦琐程度是否容易修改是否容易修改通俗易懂通俗易懂1、下面关于算法的描述,正确的是、下面关于算法的描述,正确的是( )A.算法不可以用自然语言表示算法不可以用自然语言表示 B.算法只能用框图来表示算法只能用框图来表示C.一个算法必须保证它的执行步骤是有限的一个算法必须保证它
7、的执行步骤是有限的D.一个算法可以有一个算法可以有0个或多个输入,个或多个输入,0个或多个输出个或多个输出2. 、下列程序框图中表示处理、计算的是、下列程序框图中表示处理、计算的是( ) A. B. C. D. 3. 当我们找到算法之后,可以使用以下方法来描述算法当我们找到算法之后,可以使用以下方法来描述算法( )A.自然语言、流程图、伪代码自然语言、流程图、伪代码 B.自然语言、机器语言、伪代码自然语言、机器语言、伪代码C.流程图、机器语言、高级语言流程图、机器语言、高级语言 D.高级语言、机器语言、伪代码高级语言、机器语言、伪代码4. 算法与程序的关系算法与程序的关系( )A.算法是对程序
8、的描述算法是对程序的描述 B.算法决定程序,是算法设计的核心算法决定程序,是算法设计的核心C.算法与程序之间无关系算法与程序之间无关系 D.程序决定算法,是算法设计的核心程序决定算法,是算法设计的核心5. 下列说法错误的是下列说法错误的是( )A.算法是程序设计的灵魂,由此可见算法的重要地位。算法是程序设计的灵魂,由此可见算法的重要地位。B.简单的说,算法就是解决问题的方法和步骤。简单的说,算法就是解决问题的方法和步骤。C.著名的计算机科学家尼克劳斯指出:著名的计算机科学家尼克劳斯指出:“算法算法+数据结构数据结构=程序程序”。D.一个问题的算法只能用一种程序设计语言实现。一个问题的算法只能用
9、一种程序设计语言实现。1、下列关于算法说法不正确的是、下列关于算法说法不正确的是( )A.算法独立于任何具体的语言,算法独立于任何具体的语言,BASIC算法只能用算法只能用BASIC语言来实现。语言来实现。B.解决问题的过程就是实现算法的过程。解决问题的过程就是实现算法的过程。C.算法是程序设计的算法是程序设计的“灵魂灵魂”。D.描述算法可以有多种表达方法。描述算法可以有多种表达方法。2. 下面是关于下面是关于“剥毛豆剥毛豆”的算法描述:的算法描述:检查篮中是否有剩余毛豆;检查篮中是否有剩余毛豆;若无,则算法结束;若无,则算法结束;若有,将毛豆剥壳,豆粒放入碗中,壳放若有,将毛豆剥壳,豆粒放入
10、碗中,壳放入垃圾箱;再回到入垃圾箱;再回到。该算法的表示方法是。该算法的表示方法是( )A.自然语言自然语言 B.伪代码伪代码 C.流程图流程图 D.程序设计语言程序设计语言3. 图形符号图形符号“ ”在算法流程图描述中表示在算法流程图描述中表示( )。A.处理或运算处理或运算 B.输入或输出输入或输出 C.判断判断 D.开始或结束开始或结束4. 下列叙述中错误的是下列叙述中错误的是( )A.程序通常包括指令和数据两大部分程序通常包括指令和数据两大部分B.设计程序时需要考虑的问题是数据的存储和计算的过程设计程序时需要考虑的问题是数据的存储和计算的过程C.算法的描述不能用自然语言来表示算法的描述不能用自然语言来表示D.使用计算机解决问题一般要经历分析问题、设计算法、编写程序、调试程序等使用计算机解决问题一般要经历分析问题、设计算法、编写程序、调试程序等几个步骤。几个步骤。5. 算法与程序的关系算法与程序的关系( ) A.算法是对程序的描述算法是对程序的描述 B.算法决定程序,是程序设计的核心算法决定程序,是程序设计的核心C.算法与程序之间无关系算法与程序之间无关系 D.程序决定算法,是算法设计的核心程序决定算法,是算法设计的核心