随堂练习
1.仔细阅读下面的算法: 第一步 n=1,S=1;
第二步 n=n+1,S=S×n; 第三步 n=n+1,S=S×n; 第四步 输出n,S。
问:最后输出的n,S的值各为多少? 2. 在例1 中,我们设计了一个算法,求出1+2+3+?+10的值,现在引入了变量并赋值,我们能不能将这个算法表述得更简洁、清楚一些,试一试。
想一想,前面我们学习了一些算法,你认为算法有哪些主要的特征?
新知
一般来说,一个有效的算法应该具有下面几个特征:
1. 有穷性 也就是说算法必须能在执行有限个步骤之后终止 ,即算法的步骤不能是无限的。
2. 可行性 算法的每一个步骤都是可执行的操作,即每一个步骤都可以在有限时间内完成。(也称为有效性)
3. 确切性 算法的每一步骤必须有确切的定义,不能存在歧义。
4. 输入项 一个算法有0个、一个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身给出了初始条件。
5. 输出项 一个算法必须有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的。
例5 设计一个算法,从输入的5个数中找出最大值。 分析 这个算法的思路很简单,如果将每一个数看成是一颗豆子,可以将找最大值的算法形象地称为“捡最大的豆子”:首先将第一颗豆子放入口袋中, 从第二颗豆子开始比较,如果正在比较的豆子比口袋中的还大,则将它捡起放入口袋中,同时丢掉原先口袋中的豆子,直到最后一颗豆子。 最后口袋中的豆子就是所有的豆子中最大的一颗。
解:算法为:
第一步 输入5个数a1,a2,a3,a4,a5; 第二步 M=a1
第三步 比较M,a2,如果M 第四步 比较M,a3,如果M 第五步 比较M,a4,如果M a4中的最大数) 第六步 比较M,a5,如果M a4,a5中的最大数) 第七步 输出M。 M即所求的最大值 上述算法中,第3、4、5、6步都要与上一步中得到的最大值M进行比较,得到新的最大值,并将它也记为M,M在整个过程中可以取不同的值,所以M是一个变量。 数学应用 小明有9枚一元的硬币,其中有一枚是假币,比真币略轻,你能用天平(不用砝码,天平的左右两个托盘都可以放物)将假币找出来吗?写出解决这个问题的算法。 分析 可以先取2枚,分别放在天平的左右两个托盘中,如果不平衡,则可以找出假币,如果平衡,则这2枚硬币都是真的,再依次与剩下的硬币一一比较,就能找出假币。 解:算法为: 第一步 从9枚硬币中任取2枚,分别放在天平的左右两个托盘中,如果天平的左右两边不平衡,则较轻的一边放的就是假币;如果天平的左右两边平衡,则这2枚硬币都是真的,就进行下一步; 第二步 取出左边托盘中的硬币,然后依次将剩下的硬币一一放在左边托盘进行称量,直到天平的左右两边不平衡,则较轻的一边放的就是假币。 想一想,用这种算法找出假币,最少要称几次,最多要称几次?还有没有其它解决这个问题的算法,使得称量的次数少一些呢? 实际上,我们也可以用下面的算法: 第一步 将9枚硬币平均分成3组,每组3枚; 第二步 将其中的2组分别放在天平的左右两个托盘中,如果天平的左右两边不平衡,则假币就在较轻的那一组中;如果天平的左右两边平衡,则这2组中的硬币都是真的,假币就在第3组中; 第三步 从含有假币的那一组的3枚硬币中任取2枚,分别放在天平的左右两个托盘中,如果天平的左右两边不平衡,则较轻的一边放的就是假币;如果天平的左右两边平衡,则余下的那一枚就是假币。 很显然,这种算法只要称量2次就可以解决问题,一般会比前一种算法的称量次数要少得多。 一般来说,解决一个问题的算法可能不止一种,这些算法有优有劣,从这些算法中找出好的算法,也是算法理论的一个重要课题。 随堂练习 1.试写出求解一元一次方程3x?1??2x?4的一个算法。 2.现有一只能装3kg的水的水桶和一只能装5kg的水的水桶,请你设计一个算法,从水塘里取出4kg的水。 习题 1. 设计一个算法,将任意输入的3个数按从小到大的顺序输出。 2. 写出两个分数相加的算法。 3. 设计一个算法,从输入的4个数中找出最小值。 4. 你知道什么是素数吗?请你设计一个算法,判断6499是否为素数。 5. 写出一个算法,计算两个正整数的最大公约数。 6. 你知道什么样的年份是闰年吗?请设计一个算法,判断某个年份是否为闰年。 第二节 命题逻辑与条件判断 在设计算法解决实际问题的过程中,我们常常要对某些条件进行判断,这就需要我们学习一些命题逻辑的知识。 新知 能够判断真假的陈述句叫做命题。我们把正确的命题称为真命题,并记它的值为“真”,错误的命题称为假命题,并记它的值为“假”,一个命题的值只有两种:“真”(有时也记为1)和“假”(有时也记为0),一个命题非真即假,不可能既真又假,也不可能不真不假。 例如: (1)2+3=5. (2)雪是黑的. 都能够判断真假,所以它们都是命题,其中(1)是真命题,它的值为“真”,(2)是假命题,它的值为“假”。 只有能够判断真假的陈述句才是命题,一切没有判断内容的句子,无所谓真假的句子,如感叹句,疑问句,祈使句等都不能成为命题。 命题可以分成两种类型:第一种类型是只用一个简单的陈述句表达的命题,它不能分解为更简单的陈述句,这样的命题称为简单命题,也称为原子命题;第二种类型是由联结词将简单命题合法联结后所构成的命题,称为复合命题。常用的联结词有:??且??;??或??;如果??,那么??等。 例1 下列句子中,哪些是命题,哪些不是命题,如果是命题,指出它是真命题还是假命题,是简单命题还是复合命题。 (1) 2>5。 (2) x+y=1。 (3) 如果一个三角形的两个底角相等,那么这个三角形是等腰三角形。 (4) 你吃过中饭了吗? (5) 火星上有生物。 (6) 禁止吸烟! (7) 我正在说谎。 (8) 平行四边形的两组对边平行且相等。 (9) 今天天气真好啊! (10) 在同一平面内的两条直线,或者平行,或者垂直。 分析 (1)、(3)、(5)、(8)、(10)是能够判断真假的陈述句,所以它们都是命题。其中(3)、(8)是真命题,(1)、(10)是假命题,(5)尽管到目前为止还无法确定真假,但就其本身而言是有真假的,之所以无法确定真假,是因为人类的认知水平还不够,所以我们认为(5)本身是个命题。(1)、(5)不能分解为更简单的陈述句,所以它们是简单命题,而(3)、(8)、(10)是由联结词将简单命题联结后所构成的,所以它们是复合命题。 (2)尽管也是陈述句,但是无法判断真假,(2)和(5)还有所不同,(5)就其本身而言是有真假的,但(2)本身就是没有真假的,因为不知x,y代表什么数。 (4)、(6)、(9)不是陈述句,都无所谓真假,所以都不是命题。 (7)是悖论,也不是命题。 解 (1)、(3)、(5)、(8)、(10)是命题,其中(3)、(8)是真命题,(1)、(10)是假命题,(5)到目前为止还无法确定真假,(1)、(5)是简单命题,而(3)、(8)、(10)是复合命题。 (2)、(4)、(6)、(7)、(9)都不是命题。 我们常用小写字母p,q,r,?等来表示命题,如
相关推荐: