计算机解决问题的基本过程姚跃春2014年11月选修一算法与程序设计主要内容计算思维计算算法思维算法123计算机解决问题的基本过程算法的描述体验编程计算不再只和计算机有关,它决定我们的生存。改变了什么?数学建模ACM国际大学生程序设计竞赛国际遗传工程的机器设计竞赛计算改变科学研究计算经济学年份诺贝尔经济学获得者诺贝尔经济学奖理论计算思想的影响1970萨缪尔森静态和动态经济理论以及经济科学分析√1975康托罗维奇库普曼斯资源最优分配理论模型√1980克莱因经济波动和经济政策中的计量经济模型和应用1981托宾金融市场分析及其支出决策、就业、生产和价格总体√1994豪尔绍尼纳什泽尔腾均衡分析中的非合作博弈理论模型√2013汉森罗伯特尤金拉尔斯资产价格的实证分析√计算思想在诺贝尔经济学奖理论中占70%以上的比例表诺贝尔经济学奖理论与计算思想影响计算社会学从你所遗留的数字印记里,将可以推断你的习惯,你的心智模式,你下一步可能干什么,你的好朋友会是谁智慧城市——IBM智慧城市运行解决方案通过预警分析系统,里士满市的犯罪率一年内就猛降了在IBM的帮助下,迈阿密-德戴县公立学校在教学成绩方面都取得显著的提高和进步。40%它正在改变科研、工作、生活、学习等它在改变世界!计算的本质什么是计算呢?例1:算数计算1+2+3=6例2:代数演算a2+2ab+b2=(a+b)2计算的本质1+2+3→(1+2)+3→3+3结合律加法规则,替换规则加法规则计算是基于规则的符号串变换→6图灵“计算机科学之父”和“人工智能之父”。什么是计算思维呢?运用计算机科学的思想、方法和技术进行问题求解的一些列思维活动。周以真微软全球副总裁计算机解决问题的过程游戏——猜价格这是一款价值在2000元以内的运动手环,您能在11次内准确猜出它的价格吗?计算机解决问题的基本过程问题的抽象第一步问题的符号化表示第二步构造求解问题的算法第三步算法的实现第四步构造求解问题的算法第三步计算思维的核心就是算法思维算法思维问题抽象符号化构造算法实现算法已知某商品价格p是在区间[pmin,pmax]中的整数,参与者可以给出n次报价,对每次报价主持人会给出高了、低了或者正确的提示。如果没有任何背景知识,怎样才能在给定次数内猜出价格?已知整数p∈[pmin,pmax],在给定次数m内,如何生成整数序列p1,p2p3,···,pn,使得pn=p并且n≤m,其中m是允许猜测的次数。[0,2000]P1=1000,高了,[0,1000];P2=500,低了,[500,1000];P3=750,低了,[750,1000];P4=875,低了,[875,1000];······问题抽象符号化构造算法实现算法初始:输入pmin、Pmax、m的值;步骤2:pn=(pmin+pmax)/2;步骤3:如果n>m,则输出失败,结束;步骤4:如果pn等于p,则输出成功,结束;步骤5:如果pn>p,则令pmax=pn,否则令pmin=pn;步骤6:n=n+1;步骤7:转到步骤2;步骤1:令n=1;算法:是求解某一问题所使用的一组定义明确的规则算法思维问题抽象符号化构造算法实现算法算法思维问题抽象符号化构造算法实现算法PrivateSubForm_Load()ConstpAsInteger=996DimpminAsIntegerDimpmaxAsIntegerDimmAsIntegerDimpnAsIntegerDimnAsIntegerpmin=InputBox(请输入最小价格)pmax=InputBox(请输入最大价格)m=InputBox(请输入可猜测次数)n=1DoUntilnmOrpn=ppn=(pmin+pmax)/2IfpnpThenpmax=pnElsepmin=pnEndIfn=n+1LoopShowIfnmThenPrint失败;ElsePrint成功,共猜测了&n;次,价格为&pn;元;EndIfEndSubDountil条件判断→什么时候不循环了需要执行多次的程序语句Loopif条件判断then满足条件执行的程序语句Else不满足条件执行的语句Endif→表示判断语句结束算法的描述自然语言描述流程图描述初始:输入pmin、Pmax、m的值;步骤2:pn=(pmin+pmax)/2;步骤3:如果n>m,则输出失败,结束;步骤4:如果pn等于p,则输出成功,结束;步骤5:如果pn>p,则令pmax=pn,否则令pmin=pn;步骤6:n=n+1;步骤7:转到步骤2;步骤1:令n=1;算法的描述伪代码描述Begininputpmin,pmax,mn=1Dountiln>morpn=ppn=(pmin+pmax)/2ifpn>pthenpmax=pnelseifpn<pthenpmin=pnn=n+1Loopifn>mthenPrint失败,结束elseprint成功,结束end算法的描述算法描述方式优势不足自然语言流程图伪代码①易理解①易引起歧义;②难清晰表现算法结构;③不易翻译成计算机程序设计语言①直观、形象;②结构清晰①修改稍麻烦①书写方便,容易修改;②容易转化为程序语言代码①不够直观,一旦出现逻辑错误也不便排查;算法的描述自然语言描述流程图描述伪代码描述输入pmin、Pmax、m的值inputpmin,pmax,m令n=1n=1pn=(pmin+pmax)/2pn=(pmin+pmax)/2如果n>m,则输出失败,结束Ifn>mthenPrint失败,结束如果pn等于p,则输出成功,结束Ifpn=pthenprint成功,结束如果pn>p,则令pmax=pn,否则令pmin=pnifpn>pthenpmax=pnelseifpn<pthenpmin=pnn=n+1n=n+1转到步骤2Dountilloopn=1pn=(pmin+pmax)/2n=n+1输入Pmin、pmax、m学习建议—脚踏实地2.如果自学,可以先选择一门容易上手的程序语言、编程软件,eg问题的抽象第一步问题的符号化表示第二步构造求解问题的算法第三步算法的实现第四步1.建立意识,带着计算机解决问题的思维模式去解决一些生活中可以解决的问题ScratchAppinventor3.可以从编写先小游戏开始,eg大数据时代——云计算有微软高管表示:云计算在未来5年的市场份额将会占到2千多亿美元大数据的核心是云计算大数据的将是算法分析师崛起的时代