第一章如何用计算机解决问题第一节计算机解决问题的过程一、人解决问题的一般过程。观察、分析问题收集必要的信息解决问题判断、推理根据已有的知识、经验按照一定的方法和步骤问:请同学们思考,你打算利用计算机如何来完成这个任务呢?桌面小时钟的制作二、计算机解决问题观察桌面小时钟的构成要素和运行规律或状态,确定解决方法第一步:分析问题第二步:用自然语言描述计算方法step1、界面设计Step2、数据同步step3、状态切换step4、程序控制算法:简单地说,算法就是解决问题的方法和步骤。第三步:将算法编写成计算机程序原因:计算机读不懂算法,必须翻译成计算机的语言,这就是程序设计语言。PrivateSubForm_Activate()Me.BackColor=RGB(0,78,152)'使窗体的背景与桌面的颜色一致Me.MoveScreen.Width-Me.Width,0'将窗体移动到桌面的右上角EndSubPrivateSublblShow_Click()tmrClock.Enabled=NottmrClock.Enabled'切换时钟状态EndSubPrivateSublblShow_DblClick()End'结束程序的语句EndSubPrivateSubtmrClock_Timer()lblShow.Caption=Time()'Time是函数,调用它可以得到计算机的系统时间EndSub第四步:运行、调试程序,检验结果。第五步:问题得到解决总结:计算机解决问题流程图(过程)第二节算法描述与设计有一个牧羊人带着一只羊,一匹狼和一颗大白菜准备过河,他找到一只很小的船,每次只能带一样东西过去,可是如果让狼与羊单独在一起,狼会吃羊,让羊与白菜单独在一起,羊会吃白菜,牧羊人应如何过河?过河的方案:第一步:人和羊过河,人返回,留下羊;第二步:人和狼过河,人和羊返回,留下狼;第三步:人和菜过河,人返回,留下菜;第四步:人和羊过河。算法的概念:我们解决问题都需要遵循一定的方法和思路并正确的列出各个求解步骤。算法就是解决问题的方法和步骤。总结:我们看人在解决问题时,要先对问题进行分析思考,然后确定解决问题的方法和步骤,这种解决问题的方法和步骤就称为算法。算法是“灵魂”1.算法存在于人们生活中,如:上街购物、顾客付款、营业员找银等。2.刷牙的步骤:拿牙刷,挤牙膏,接水,刷牙,清理泡沫等。3.算法是尼克劳斯.沃斯(N.Writh)提出的,他指出:算法+数据结构=程序。(即算法不能单独构成程序,它必须和数据结构合二为一)算法的特征有穷性:执行有限步,每一部执行时间有限确定性:每一步都有确切的含义输入:有零个或多个输入输出:至少产生一个输出可行性:原则上能精确运行,用纸和笔做有限次运算后即可完成如何描述算法算法可以用多种方法来描述1、用自然语言来描述。2、用流程图来描述。3、用伪代码描述算法。1、用自然语言来描述算法。什么是自然语言。人们日常生活中使用的语言用自然语言表达算法,就是把算法的各个步骤,依次用人们熟悉的自然语言表示出来。例如:人大代表去化验科,护士指着前方一牌说:“非本科人员不得入内!”那人大怒“我就化验个血,还要本科文凭!”自然语言自然语言描述第一步:移项得ax=-b;第二步:若a不等于0,则x=-b/a,结束;第三步:若a=0,b=0,得x为任意值,结束;第四步:否则输出x无实数解,结束;例:求方程ax+b=0的解。自然语言的优缺点优点:通俗易懂,容易理解缺点:书写较烦、不确定性、对复杂的问题难以表达准确,有时候还有歧义,不能被计算机识别和执行2、用流程图来描述算法。什么是流程图?(也称程序框图)它是算法的一种图形化表示方法。程序框名称功能开始/结束算法的开始和结束输入/输出输入和输出信息处理计算与赋值判断条件判断流程线算法中的流向连接圈表示算法流向出口或入口连接点常用的“流程图”所用的基本符号流程图例:求方程ax+b=0的解。优点:形象、直观、容易理解3.用伪代码描述算法伪代码是介于自然语言和计算机程序语言之间的一种算法描述。伪代码是一种怎样的算法描述?输入a,bIfa=0thenifb=0then输出x为任意值else输出x无实数解endifElsex=-b/aEndif伪代码描述例:求方程ax+b=0的解。使用伪代码描述算法没有严格的语法限制,书写格式也比较自由,只要把意思表达清楚就可以了,它更侧重于对算法本身的描述。在伪代码描述中,表示关键词的语句一般用英文单词,其他语句可以用英文语句,也可以用汉语语句。伪代码的优缺点:用伪代码描述的算法简洁、易懂,修改起来也比较容易,并且很容易转化为程序语言代码。优点:简洁、易懂、修改容易缺点:不直观、错误不容易排查三种描述算法的比较自然语言优点通俗易懂缺点冗长,繁锁,缺乏直观性简洁性,容易产生歧义流程图优点形象、直观、更容易理解缺点需要一定数学知识伪代码优点简洁、易懂,修改起来比较容易,易转为程序语言代码缺点没有流程图直观,出现错误不便排查三种描述算法的比较小结用计算机程序解决问题的基本过程设计算法分析问题编写程序调试程序检测结果什么是算法?解决问题的方法和步骤就是算法算法描述的方法有几种?用自然语言来描述用流程图来描述用伪代码描述算法练习:说出下面流程图的各框名称开始框输入框处理框判断框处理框处理框处理框输出框结束框填空题1、算法就是解决问题的___________和_________。2、算法描述可以有多种表达方法,一般用_______、_______和_________描述。3、____是介于自然语言和计算机程序语言之间的一种算法描述。它也是专业软件开发人员描述算法的一种常用方法。4、_____是程序设计的“灵魂”,世界著名计算机科学家_____指出:____+数据结构=程序。课堂练习方法步骤自然语言流程图伪代码伪代码算法尼克劳斯.沃斯算法选择题:1、下面说法正确的是()A.算法+数据结构=程序B.算法就是程序C.数据结构就是程序D.算法包括数据结构2、下列不属于描述算法方式的是()A、自然语言B、伪代码C、流程图D、机器语言3、流程图是描述()的常用方法A、程序B、算法C、数据结构D、计算规则4、下列关于算法描述语言,错误的是()A、用流程图描述算法形象、直观B、自然语言描述的算法很容易转化为程序设计语言C、用伪代码编写的算法简洁易懂、容易修改D、自然语言描述的算法通俗易懂,但缺乏直观性和简洁性5、流程图中表示判断框的是()。A.矩形框B.菱形框C.圆形框D.椭圆形框ADBBB