算法与程序设计问题1:大家知道计算机系统的基本构成由硬件与软件组成,但是其灵魂是什么?问题2:程序是计算机的灵魂,但计算机的灵魂是谁赋予的?只有掌握了编程,才成为计算机的主人,今天我们就要学习程序是如何来解决实际问题的。•计算机解决问题的三个阶段:1、分析问题2、寻找算法(解决问题的途径和方法)3、用计算机处理一、什么是算法算法:解决问题的方法与步骤例1、考大学:填报名单,交报名费,拿到准考证,按时参加考试,得到录取通知书,到指定学校报到注册例2、泡茶问题:泡茶问题•要想泡茶喝,但当时的情况是:开水没有,烧水壶要洗,茶壶和茶杯要洗;火已经生好了,茶叶也有了。请你设计一种最佳算法来完成泡茶工作。•提示:•泡茶前要做的事情有:洗水壶(2)、洗茶壶(2)、洗茶杯(1)、灌凉水(0.5)、拿茶叶(0.5)、烧开水(10)。泡茶最佳算法洗水壶(2)灌凉水(0.5)烧开水(10)泡茶喝洗茶壶洗茶杯拿茶叶农夫、狼、山羊和蔬菜过河问题•一个农夫带着一条狼、一头山羊和一篮蔬菜过河,但只有一条小船,并且每次只能让农夫带一样东西过河。农夫在场的情况下一切相安无事,一旦农夫不在,狼会吃羊,羊会吃蔬菜。问聪明的农夫如何能安全地将这三样东西带过河。农夫、狼、山羊和蔬菜过河问题程序是计算机的灵魂,算法才是程序设计的灵魂!算法怎么表示?•(1)自然语言:就像写文章时所列的提纲一样,有序地用简洁的语言加数学符号来描述。•(2)流程图•(3)计算机语言•(程序设计语言如QBASIC、VB、PASCAL、C、C++、Java等。)闰年问题•我们通常所说的一年为365天,其实是个约数,准确的数字应该是365.2422日。那么一年365天,就与实际一年相差了0.2422日,这样四年之后就比实际的一年少了1天。为了弥补这个差值,历法规定,4年设一闰。那么如何判断一年是否为闰年呢?•提示:•1、能被4整除但不能被100整除•2、能被400整除•只要满足上述条件之一的,就是闰年闰年问题(算法)•输入年份n•如果n能被4整除但不能被100整除,或者n能被400整除,•那么输出n是闰年•否则输出n不是闰年自然语言表达如下:闰年问题开始输入变量n的值(nmod4=0andnmod100<>0)Or(nmod400=0)结束输出n是闰年!Y输出n不是闰年!N程序流程图判断闰年问题•s=InputBox("请输入年份:")•n=Val(s)•IfnMod400=0Or(nMod4=0AndnMod100<>0)Then•MsgBoxs+"年是闰年!"•Else•MsgBoxs+"年不是闰年!"•EndIfVB程序语言程序的三种基本结构顺序结构分支结构循环结构流程图示例1、顺序结构流程图•晓明每天早上起来按图所示流程图做上学前的准备工作:刷牙,洗脸喝水吃早饭背书包上学结束开始交换数据:输入两个数a和b的值,编写程序,交换a和b的值,并输出a和b的值。顺序结构开始输入a、b的值c=ab=ca=b输出a、b的值结束流程图:开始、结束框输入、输出框处理框a=inputbox(“请输入a”)b=inputbox(“请输入b”)c=aa=bb=cPrinta,bEnd2、分支结构流程图•如图所示的流程图片断,是反映某班体育课下课的流程:YN下节是电脑课?去电脑教室去其它教室下课了结束开始分支结构•电费收缴问题:•50度及以下时,单价为0.53元;51度以上,单价为0.56元;要求程序能根据输入的电度数,求出电费。请写出算法。开始YDianfei=dushu*0.53流程图:输入电的度数dushu如果dushu<=50NDianfei=50*0.53+(dushu-50)*0.56输出dianfei的值结束判断框x=inputbox(“输入度数”)Ifx>50Theny=x*0.53Elsey=50*0.53+(x-50)*0.56EndIfprint(y)EndYN存储空间满了?不能拍照了取景拿出相机结束按下快门开始3、循环结构流程图•如图所示的流程图,是反映用数码相机拍照的流程:返回循环结构•求1+2+3·········+100•请你写出这个算法。开始s=0i=1i<=100结束输出s的值NS=s+iY流程图:s=0Fori=1to100s=s+inextiPints•算法有何特征?•确定性:算法中的每一步必须是明确的,不可以有“多义性”或“歧义性”。•有效性:算法中的每一步必须是计算机能够有效执行,并且能得到有效结果的。•有穷性:算法中的步骤应是有限的。