算法与程序设计一、算法及其描述方法第一节算法与程序计算机系统硬件系统软件系统系统软件应用软件★软件的重要组成部分是:程序想一想:什么是程序?什么是程序计算机的任何动作都是在执行人给它的指令。人们针对某一需要而为计算机编制的指令序列称为程序。程序指示计算机如何去解决问题或完成任务的一组可执行的指令。那么,什么是算法呢?讨论:用没有刻度的3毫升量杯和5毫升量杯如何量出1毫升的水?请写出自己的解决步骤。参考算法二参考算法一算法是在有限步骤内求解某一问题所使用的具有精确定义的一系列操作规则。简而言之,算法是指解决问题的具体方法和步骤。说明:算法不是唯一的,针对同一问题的算法可以有多种。一个完整的算法有三个部分:输入、处理、输出。算法与程序的关系是什么呢?算法是程序的灵魂,是解决问题的步骤。程序代码只是实现的手段。例题:某学校要进行学生电脑编程竞赛,竞赛将评出10名获奖者,分为一、二、三等奖。奖项设置一等奖获得人数要少于二等奖人数,二等奖人数要少于三等奖人数。问一二三等奖人数各为多少?分析:1.已知竞赛将评出10名获奖者。2.一等奖获得人数要少于二等奖人数,二等奖人数要少于三等奖人数设计算法:1.X+y+z=10Xyz2.10以内的整数,逐个拿来试一试。满足条件的n组数,即结果3.编写程序。4.调试程序。使用电脑解决问题的一般过程1.分析问题2.设计算法(设计出解决某一问题的有限个求解步骤)3.编写程序4.运行程序算法的特征1.有穷性:一个算法必须保证执行有限步骤之后结束。2.确定性:算法的每一步骤必须有确切的含义。3.可行性:算法的每一步骤都能有效地执行,并得到确定的结果。4.输入:有0个或多个输入。5.输出:有1个或多个输出,没有输出的算法毫无意义。下一页例1:判断下列算法是否符合算法的特征①s=1②将s的值增加1③重复步骤②解答:该算法的步骤②将被重复执行无穷次,不符合有穷性返回例2:判断下列算法是否符合算法的特征①L=10②输出L/自然数解答:自然数没有具体指明是哪个数,不符合算法的确定性返回例3:判断下列算法是否符合算法的特征①x=-2②计算x的平方根解答:x是负数,没有平方根,该算法不可行,不符合算法的可行性。返回例4:写出算法:计算半径为2的圆的面积解答:①R=2②S=3.14*R*R③输出面积S说明:该算法中在执行时已包含计算所需的初始数据,不必另外提供数据,因此没有输入,即有0个输入。返回例5:写出算法:从键盘输入圆的半径,计算其面积解答:①输入圆的半径R②S=3.14*R*R③输出面积S说明:该算法中计算面积所需的初始数据半径R待定,需要在算法执行时从键盘输入。返回请画出例6的流程图解答:①输入圆的半径R②S=3.14*R*R③C=2*3.14*R④输出面积S,周长C例6:求从键盘输入的任意半径的圆的面积和周长开始结束S=3.14*R*R输入R输出面积S、周长CC=2*3.14*R例6:求从键盘输入的任意半径的圆的面积和周长解答:①输入圆的半径R②S=3.14*R*R③C=2*3.14*R④输出面积S,周长C说明:通过前两个例子可以知道,算法可能有1个或多个输出。返回参考算法一:①将3毫升的量杯装满②将3毫升量杯中的水注入5毫升量杯③将3毫升的量杯装满④将3毫升量杯中的水注入5毫升量杯,注满后3毫升量杯中剩余1毫升水。返回参考算法二:①将5毫升的量杯装满②将5毫升量杯中的水注入3毫升量杯,注满后5毫升量杯中剩余2毫升水③将3毫升量杯倒空④将5毫升量杯中剩余的2毫升注入3毫升量杯⑤将5毫升量杯装满⑥将5毫升量杯中的水注入3毫升量杯,注满后5毫升量杯中剩余4毫升水⑦将3毫升量杯倒空⑧将5毫升量杯中的水注入3毫升量杯,注满后5毫升量杯中剩余1毫升水返回二、算法的描述1、用自然语言描述算法例题:鸡兔同笼问题一个笼子里有鸡和兔,现在只知道里面一共有a个头,b个脚,鸡和兔各有多少只?试设计一个求解的算法,并用自然语言描述出来。1、用自然语言描述算法1)分析问题设所求的鸡数是x,兔数是y,已知笼子里的头数是a,脚数是b,依题意得到如下的方程组:x+y=a2x+4y=b解方程组得:x=2a-b/2y=b/2-a1、用自然语言描述算法2)设计算法①输入a和b的值;②求x=2a-b/2;③求y=b/2-a;④输出x和y的值;⑤结束。鸡兔同笼流程图开始输入a,b的值求x=2a-b/2求y=b/2-a输出x,y的值结束3、用程序代码描述算法Inputa,b①输入a和b的值;鸡兔同笼②求x=2a-b/2;③求y=b/2-a;④输出x和y的值;⑤结束。x=2a-b/2y=b/2-aprintx,y算法描述语言有:1、自然语言2、流程图3、伪代码二、算法的描述算法的表示方法优缺点:1.自然语言(通过文字来描述解决问题的过程)优点:容易理解。缺点:书写烦琐,具有不确切性,容易引起歧义,造成误解;对较复杂的问题,用自然语言难以表达准确;计算机不能直接识别和执行。2.流程图(用图形符号来描述算法)必须要有一组统一规定、含义确定的专用符号;优点:用流程图表示算法比较直观、形象;缺点:计算机不能识别和执行。3.程序代码使用程序设计语言描述算法。下一页流程图中的符号的用途图形符号符号名称说明流线起始、终止框表示算法的开始或结束开始框:一流出线结束框:一流入线输入、输出框框中标明输入输出的内容只有一流入线和一流出线处理框框中标明进行什么处理只有一流入线和一流出线判断框框中标明判定条件并在框外标明判定后的两种结果的流向一流入线两流出线(T和F)流线表示从某一框到另一框的程序运行流向返回例7:请画出例5的流程图解答:①输入圆的半径R②S=3.14*R*R③输出面积S例5:写出算法:从键盘输入圆的半径,计算其面积开始结束S=3.14*R*R输入R输出S课堂练习1:物理老师想编写一个描述小球做平抛的运动轨迹程序(小球运动时间限定在(1-100秒),你能否帮助先用流程图描述一下解体的方法?描课堂练习2:描述S=1+2*2+3*3+……直到呢S10000算法4、分别用自然语言和流程图表示算法:求边长为a的正方形及其内切圆所夹阴影部分的面积a课堂练习3:课堂练习1:开始结束i=1,n=0i1000是否i=i*iN=n+ii=i+1