内容正文:
好,接着我们来学习第三章算法基础,我们共分为两个课时,我们第一课时讲算法,第二课时讲程序。首先我们来看一下本节课学习内容,计算机程序解决问题的过程。第二个算法的概念及其特征,第三个算法的描述方式,第四个算法的控制结构,都是围绕算法展开的,难度是四颗星,算比较难的。首先我们来看第一个计算机程序解决问题的过程,我们这里有个问题是利用计算机程序判断一个数是奇数还是偶数。书本上对于这章讲的题是一个路线问题,那个问题比较复杂,我这里选一个比较简单的问题,主要是理解这个解决问题的过程。那么怎么编写这个程序呢?有四步,第一步分析问题,第二步设计算法,第三步编写代码,第四步调试运行。首先分析问题,找出解决问题的关键,来判断一个数是奇数还是偶数。奇数能被2,奇数能不能被二整除,偶数能被二整,所以说奇数除以二的余数是一,偶数除以二的余数是0,我们就可以通过余数来判断它到底是接受了。第二步设计算法,给出解题步骤或者输入。首先输一个数。第二步求出这个数除以二的余数,你看百分号就是求余的意思。第三步判断它的余数是否等于一,如果等于一的话就是奇数,如果不等于一的话,它就输出偶数。这两等号代表判断左右是否相等,这就是我们的一个解题步骤。第三步我们要把这个解题步骤给它转换成具体的代码了。你看解题步骤输入求余判断是一是奇数,不是一,是偶数。这是我们的一个程序,你只需要大致理解它的意思就行了。我们这一第三章不讲编程了,你就知道编写代码是写出对应的代码。第四个,我们写完代码之后,我们要验证一下它是否正确,怎么办呢?我们要输两个数四次对吧?输13是奇数,数24是偶数对吧?也就是说这个代码是正确的。但是有时候我们可能输个13,它显示偶数,也就是说代码出现了问题。那这个时候我们要修改代码了,无论是运行代码还是调试我们的错误,我们都属于第四阶段叫调试运行。调试是改错,运行是运行,这是两个阶段。好,接下来我们来看这个两道题。第一个用计算机解决问题的步骤,正确的顺序是我们前面讲了分析问题、设计算法编写、程序调试运行对吧?应该是A先分析问题,然后设计解题步骤,然后把步骤转换成代码,然后再运行时代码看它对不对。第二个,他编写程序判断程序测试程序时发现错误,如图所示,出现了错误是吧?编写程序解决问题的哪一个步骤,他在测试程序时发现错误,也就是说它运行的这个程序,它不运行这个程序怎么能发现错误的,所以说答案选择B调试运行程序。接着我们来看第二个算法的概念及特征。算法就是有限步骤内解决问题的方法和步骤,也就是解题思路。我们同一个问题可能有很多种算法,每一种算法它就是一个解题思路。比如说我们基督同楼,从小学有抬腿法到了初中有方程法,到了我们变成有没举法解析。每一个方法其实它就是一个算法,它就代表了一种解题的思路,解题的步骤。那么这个方程法我就不多说了,我们主要讲这个枚举法和解析法考的时候它会让你判断,我们要现在要区分。第一种是枚举法,把所有可能的解全部列举出来,然后逐一判断每一个可能的解是否为正确的解。你比如说我们这个暴力破解密码,我们告诉你这个密码有四位,你就从0000一直试到9999,把每个可能性都试一遍,这叫暴力破解密码,它就属于枚举法。把每一个可能的解全部列举出来,还有求范围内符合条件的数。那么我们这个题使用面积法怎么试呢?很简单,你总共不是75 35个头吗?我把每一种可能性都列出来,当鸡是零的时候,兔子35的时候。当七是14的时候,兔子21的时候。当鸡是23的时候,兔子12的时候。当鸡是35的时候,兔子零的时候。每种可能性我全部列举出来了,然后一一判断他们的腿加起来是否等于我们的94,这就是最后找到我了我们这个结果,它是一种比较暴力破解的方法,全部列举,然后一一判断。第二个叫解析法,它的核心就是通过数学关公式解决问题。比如说公式求长、求面积、解方程。那么我们这题其实你也可以总结出来,公式兔的数量等于总对数减2乘总头数除以2,鸡的数量等于总头数减兔的数量,这就是它的一个公式。我们现在利用公式解它,它就属于解起码的一种解析法的一种。现在你要区分开来,解析法其实就是这个公式,枚举法穷举法关键就是这个举,这个举就是一个一个列举的意思一个一个列举的意思。接着我们来看一个算法的特性并不是你画了一个图,你写了一个问题的过程,它就是算法了。我们来看它符不符合这五个特性。第一个就有有穷性算法必须在有限步骤内完成一下。我们这个1234、56,它就六步就能完成,所以说它符合有穷性。那我们举个反例,比如说输出,所以五的倍数对吧?5的倍数是一个无穷无尽的列举的,所以你列举不完它就不符合有穷性。它就是个反例,你可以把它改成100以内5的倍数,那么它就是符合有穷性了。第二个叫确定性,每个步骤都有确定的定义,比如说系统等待若干秒,这就没确定的定义。到底等待若干秒,我看到我以为是0.5秒,他看到他以为是1.5秒,所以说他违反确定性,我们给他改成系统等待0.5秒,它就有明确的定义,它就符合了。第三个叫可行性,每个字步骤都可以在有限时间内完成,它跟有穷性要区分开来,有穷性是压根就完不成,而可行性是理论上可完成,但实际上需要花费很长时间。你比如说输的输出二的11次方,100亿次方一定有一个的结果,但是这个结果你可能需要几个月几年才能完成,它就没有任何意义了。因为它短时间内完不成。我们我们给他改成输出2的11次方的前十位,那么他可能几秒钟就计算完成了,就可行了。第三个叫零和多个输出算法可以没零个或多个输入算法可以没输入。你比如说我们这个可以让用户输这个数,也可以在系统中把这个数给它写死那个零后多数。第五个叫一个或多个输出,必须要有输出。因为我们算法的目的是要解决具体的问题,你运行的这个算法,但是最后没有任何的输出结果,我怎么判断你这个问题是否解决呢?所以说一个好的算法,它一定要有结果。但是我们五个特性,你要根据名字给它区分开来。接下来我们来看这个几道题。第一个根据圆的面积计算公式,人家都告诉你了公式对吧?输入半径、输出面积,所以说这咱肯定选解析法,解析法有公式。第二个玫瑰花说是一个四位数,即个位数字上数字的4次方之和等于该数本身。如1630等于一的4次方、加6的4次方、加3的4次方、加4的4次方。他想找出所有的门关锁,问你哪个算法最合适。首先我们找公式,因为解析法最简单的找不到公式,那人家只有举个例子,不用解析法,那么此就可以用枚举法了。你不是一个四位数吗?我就从一千开始试,判断一千是否符合这个条件,再判断1001,再判断1002,一直判断什么9999。你会发现我们这什么一一列举一一尝试,什么枚举法、枚举法。那除了这个玫瑰花束,那考之后还有可能考什么水仙花束。一个三位数,个位数的3次方,3次方之和等于该该变成五角星数,六个数都一样,都属于我们的枚举法,对于我们枚举法,我们来看第三个,下列关于算法描述正确的是。第一个数据的输入不可以是零个,可以是零,可以没输入,我们讲了第二个,一个算法的包含的计算步骤可以无限循环,不能无限循环,我们必须是有限步骤。第三个,每一步都可以在有限时间内完成,对可行性符合可行性。第四个,数据的输出可以是零个,不可以是零个。数据的输出算法是为了解决目的的,解决问题的,问题就一定有结果,有结果就一定有输出。所以说至少是一个答案应该选择C第二个,下一个问题中不能用算法描述的是哪一个,可以看一下。答案应该选择我们的A为什么呢?因为A求不出来结果,A是一个无限的,求所有自然数之和,所有的自然数之和对吧?你能列举完,列举不完,但是BCD你都可以求出准确的结果,所以说答案选择A第二个算法的描述方式。算法描述方有三种,自然语言、流程图或伪代码。自然语言它就是日常所使用的汉语、英语,你看它是通过有步骤的使用文字描述的输入一个数计算如果如果?它的特点就是通俗易懂,哪怕你大字不是一个,我给你描述出来,你也能懂第一步第二步。但是它不够清晰,特别是涉及到一些分支的时候,就不如我们流程图直观形象。那么流程图它是通过特定的图形来描述的,特定的图形你会发现我们这有平行四边形、有菱形、有矩形,对吧?你不可以随便用的,它是有有规定的。你比如说这个椭圆形圆这叫圆角矩形,它就代表开始结束框,它要么是开始,要么是结束,这个平行四边形它就代表输入,要么输入,要么输出。而这个处理框它就代表计算或负值。你比如说R等于2加3 2等于5,计算赋值这里也一样,二等于X除以二的余数,它也是一个计算。第四个叫判断框,表示判断的大于小于大于等于小于等于等于。我们这里判断二是否等于一,那它就是使用判断框,这是我们四个框,你要区分开来。然后我们这个流程图它的特点就是直观、形象、简洁、清晰。有几步,每个步骤做完之后,下一步该怎么走?我们通过流程图就可以很清晰的看出来。你像我们考点门口,他一般都摆流程图,为啥呢?因为它最直观形象,最简单清晰,考生一看,家长一看,他就知道我下一步该干嘛了。第三个就代码伪代码它是介于自然语言和编程语言之间的。它既有自然语言的文字,它又有编程语言的格式。所以说它是最接近代码的。因为它有编程语言的格式,但是得有一定门槛,对吧?你要是没有一定的编程基础,你看自然语言还看不太懂的,所以说我们最常考的就是流程图,流程图其他两个都不怎么卡那接下来我们来看这个两道题。第一个下列流程符号使用不正确的是哪一个?圆角矩形开始结束框,对这个矩形框表示计算和赋值,对吧?计算赋值,C菱形框表示判断,那也对最后一个平行四边形是什么?是输入输出。你这个明显用错了,你这个是负值,应该是矩形,所以说答案选择D第二个用流程图描算法,如图所示,派取3.14,那只能是圆,看到派肯定是圆。其能够实现的结果是输出YS等于3.14乘2乘2,那就是K2平方输出,最后一个输出S,所以说输入半径计算面积,输出半面积,大家应该选择我们的C,应该选择我们的C接着我们来看最后一个叫算法的控制结构。我们算法控制结构有三种,顺序选择和循环。你要能区分开来,并且你要知道这个程序怎么执行,还有一些填空的情况。我们一个来看顺序结构是最简单的,也是最基础的,是按照代码的先后顺序进行结构。谁先出现谁执行,谁自上而下一条线是它最简典型的特征。第二个叫选择结构,根据条件结果执行对应的代码,它最明显特征就是出现了分支,一个往左走,一个往右走,成立执行代码的一,不成立执行代码的二则出现分支。当然这个成立也有其他的描述方法,你比如说真是yes y two对吧?这个Y就是yes的缩写,这N就是no的缩写。成立不成立?考核中如果给个Y你就知道它的条件成立,给个N它就条件不成立。这有个循环结构,它出现了回路。也就是说在条当条件成立时,它会反复执行这个代码,直到条件不成立,它出现了回路。虽然说他也有这个分支,对吧,但是我们更看重他的回路。考的时候你要找他是自上而下一条线,那就选择顺序。他如果出现分支,而且没有回路,他就出现选择结构。它如果出现了回禄,他就选择循环结构,那我们看一个题来把这三个给它串一下。第一个,某景点的票价计算规则是单次购买五张以内,每张29元。五张以内也就是小于等于5,每张29,五张以上大于5的时候8折优惠乘0.8。涉及的算法如图所示,请回答下列三个题目。第一个,该算法是使用的控制结构,是让你使用算法控制结构,它出现的分支,而且它没有回路。Y是条件成立yes,n是条件不成立no所以说这一个选择我们的选择结构。第二个图中判断框应牵引的条件是啊,你看当条件成立时,我的价格等于票这个票票的数量乘以29。那什么时候乘以29呢?五张以内每张29,所以说这个地方应该是K小于等于五张以内。那五张以下,五张以外,他就不满足条件,他就打8折。第三个说输入K等于十则此时我们的价格的值是多少?我们按照程序的执行,K等于十满不满足这条件?不满足,所以说它会执行N这个分支,然后拿这个10乘以29再乘以点8,结果应该是我们的232,它应该选择我们的。那我们到此我们就结束了,就是理解问题过程分析、设计、编写调试,算法的概念、特性、描述方式、控制结构,这是我们本节课学习的内容程序。我们下节课讲公式法和穷举法枚举法,你要区分开来,解析法就是有公式,枚举法就是一个个式,那就讲到这里。