第5章如何让计算机读懂你_第1页
第5章如何让计算机读懂你_第2页
第5章如何让计算机读懂你_第3页
第5章如何让计算机读懂你_第4页
第5章如何让计算机读懂你_第5页
已阅读5页,还剩118页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第5章如何让计算机读懂你,电气与信息学院基础部,1,第5章如何让计算机读懂你,内容提要,2,第5章如何让计算机读懂你,走进我们的生活(一),清晨,手机闹铃叫醒了我们,来到食堂,享用早餐!,3,第5章如何让计算机读懂你,走进我们的生活(二),很多同学围在老师讲台的电脑前面,他们想找到老师昨天用的课件,后来发现文件已经被老师加上了密码,下课的铃声响起了,4,第5章如何让计算机读懂你,前面的场景引发我们的思考,也许这正是你每天大学生活的写照,你足不出户可以完成大部分想做的事情。你是否在上面的生活片段中,找到了计算机程序为我们服务的痕迹呢?,手机闹铃、打卡机,文件加密、qq聊天工具、微信。,5,第5章如何让计算机读懂你,我们身边的程序,当计算机“走出”办公室、实验室,进入寻常百姓家,摆上我们的书桌,放在我们的膝上,握在我们的手中时,它已经融入了我们的生活。它是一种信息手段,可帮助我们工作,但对于一个工具,我们要用它为我们创造更便捷的服务,有些时候,还要让它读懂我们的思想,为我们创造丰富多彩的生活。,6,第5章如何让计算机读懂你,实例一,利用3D动画制作软件设计的一款地铁车的模型,会说话的汤姆,7,第5章如何让计算机读懂你,实例二,生活中,计算机颠覆了人们传统的购物方式。商场、超市、书店当我们还往来于这些购物场所精挑细选时,一些走在网络时代前端的人们已经开始网上购物。你一定很熟悉它们:淘宝网,电子邮箱登陆,8,第5章如何让计算机读懂你,实例三,计算机正改变着我们的生活,同时也提升了我们生活的品质。电脑程序制作的完善使小朋友们可以身临其境感受到玩游戏的开心与幸福,可以看到比以往制作更精良的动画片。,这个简单得有些无聊的故事,却不经意间在孩子和年轻白领中迅速走红。灰太狼聪明能干有毅力,懒羊羊的处事方式和为人品质备受大家认同。,9,第5章如何让计算机读懂你,实例四,史上增长最快的游戏,两年下载5亿次,风靡全球的愤怒的小鸟。想想15年前的电影泰坦尼克号,15年后又重温了3D版的它这些都让我们享受到了国内外大片或奇异瑰丽、或逼真生动的恢宏巨制,这些都归功于设计精良的计算机程序,突飞猛进的计算机软件。,10,第5章如何让计算机读懂你,5.1简单游戏案例,如今,世界第一娱乐项目,可以说是游戏。电脑游戏也属于一种软件,这种软件更多的包含了视觉及听觉艺术的成分。离开了计算机软件技术,游戏中的逻辑和交互无法实现;放弃艺术内容,游戏会变的索然无味。,5.1.1你知道贪食蛇吗,“贪食蛇”是一个产生于70年代中后期的计算机游戏,该游戏在90年代由于一些手机将其引入而一时间再度流行起来。这一游戏简单,易行,操作方便,娱乐性强。游戏中,玩家操控一条细长的蛇爬行于一个带边界的平面之上,一路拾起触碰到的事物或其它类似的物件,并要避免触碰到自身或者包围着游戏区的“墙”。每次贪吃蛇吃掉一件事物,它的身体便增长一些,这让游戏的难度逐渐变大。,11,第5章如何让计算机读懂你,5.1.2贪食蛇其实很简单,是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。,对于贪食蛇游戏,站在玩家的角度看待软件的需求如下:游戏画面要精美,动作处理连贯。要有暂停功能,玩家可以在任意时间暂停,任意时间继续游戏。要有保存功能,玩家可以在重新开始游戏前,选择上一次保存的游戏。,贪食蛇游戏的需求分析,12,第5章如何让计算机读懂你,5.1.2贪食蛇其实很简单,(1)要有比较友好的界面界面要包括得分显示,游戏状态(运动,暂停,结束)游戏难易程度显示(容易,较难,困难)关于游戏(初玩者如何操作,游戏规则),(2)当游戏开始时,先应该产生一条蛇和随机产生一个食物,当按某个键时,蛇就开始移动,按照按键的方向运动。,(3)蛇可以运动,随着难易程序的不同,蛇的速度也不同;在界面里可以随机产生一个食物,但应该注意不能和蛇身体一致,然后当蛇移动后吃掉这个食物,然后蛇的身体应该相应地增加,同时界面中显示分数一栏,应该相应地增加分值;当蛇的移动的过程中头部碰到墙壁,游戏结束。,13,第5章如何让计算机读懂你,5.1.2贪食蛇其实很简单,(1)蛇是游戏的主角,蛇是要可以移动的。打印在屏幕上的蛇需要在玩家的控制下可以向不同方向移动。在蛇的移动过程中要求画面不可以出现闪烁,流畅的画面是游戏设计必须具备的。,(2)蛇身可以增长。蛇的结构是由一个一个点有序排列起来。蛇在吃到水果的时候蛇的身体可以加长。,(3)蛇可以死亡。当蛇触碰到墙壁或者虫子的时候,蛇死亡,游戏结束。,14,第5章如何让计算机读懂你,5.1.2贪食蛇其实很简单,蛇的移动在制定游戏区域内部,在外部就是游戏中的墙。墙需要由一张像素小的位图填充在墙的区域。,游戏设计的优劣,受背景选择的影响。一个好的背景可以使游戏增添色彩。背景色彩应该选用浅色,暗淡一些的颜色。,游戏中适当增加一些动画,如屏幕刷新的虫子可以闪烁。,2.墙的绘制,3.背景的设计,4.游戏中的动画,15,第5章如何让计算机读懂你,5.1.3你也能做出贪食蛇,系统设计:把需求转化为软件系统的最重要的环节。包括四方面内容:体系结构设计、模块设计、数据结构与算法设计、用户界面设计。一个好的软件必须有好的系统设计,一个好的系统设计可以节省大量的开发和维护时间。,体系结构:是软件系统最本质的东西,它是对复杂事物的一种抽象。良好的体系结构是普遍适用的,它可以高效地处理多种多样的个体需求。当人们提起“房子”,我们的头脑中立刻会出现房子的印象,而不是大地的印象。“房子”是人们对住宿或办公环境的一种抽象。,16,第5章如何让计算机读懂你,5.1.3你也能做出贪食蛇,程序模块设计:(1)初始化处理,蛇头位置与第一个点位置;(2)蛇运行模块,控制蛇的上下左右运行,并对蛇的运行状态进行判断,根据状态不同的子程序模块处理;(3)显示模块,根据对蛇和点的当前状态进行动画显示。,数据结构与算法设计:决定了程序的效率。数据结构与算法就是一类数据的表示及其相关的操作。从数据的表示观点来看,存储在数组中的一个有序整数表是一种数据结构。算法是解决一个问题所采取的方法和步骤。,保存功能:作为一个单独部分处理。保存功能与游戏关联比较少,只需要把当前状态的所要变量保存成文件形式,在继续游戏时候调用,对相应变量赋值即可。,17,第5章如何让计算机读懂你,5.1.3你也能做出贪食蛇,贪食蛇游戏的流程图,18,第5章如何让计算机读懂你,5.1.3你也能做出贪食蛇,(1)蛇的移动(2)蛇的头部方向的改变(3)食物的产生,可采用动画片设计的思想,通过连续切换有变化的图片,图片上的蛇就会动起来。确定出2个时时刻刻都在变化的点,蛇的头部,蛇的尾部。蛇的头部和尾部在时刻1的位置,到了时刻2蛇的头部要向前伸长一节,蛇的尾部也要向前伸长一节,同时时刻1的尾部也要消除掉。,19,第5章如何让计算机读懂你,5.1.3你也能做出贪食蛇,(1)蛇的移动(2)蛇的头部方向的改变(3)食物的产生,第二项蛇的头部方向的改变,就是在游戏和玩家交互的时候,当游戏玩家按下操控改变蛇头部的按键,此时蛇身会按玩家的意愿,做出相应的动作。要完成这一个,第一要接受玩家的按键,第二要做出相应的反应。,20,第5章如何让计算机读懂你,5.1.3你也能做出贪食蛇,(1)蛇的移动(2)蛇的头部方向的改变(3)食物的产生,第三项食物的产生,蛇的成长是依靠不断地吞掉食物一节一节生长的,游戏区域每吃掉一个食物要在游戏区域自动产生另一个食物,同时出现食物的位置是随机的。这个可以利用随机函数,注意到屏幕上的点是和矩阵联系在一起的,因此每个点都是有横纵坐标的,想要在屏幕上的某个点显示什么这就变的很容易了。,21,第5章如何让计算机读懂你,5.1.3你也能做出贪食蛇,游戏的退出,可以通过设置循环来完成,对于蛇身在某一瞬间的位置标识,我们采用一个一维的数组来标识出来,即用动态增长的数组来存储每一节蛇身的位置(包括蛇头和蛇尾),用存储单元空间存储当前蛇身某部位的位置来对整个蛇身的位置进行标识,因此每个存储空间的内容是一个点的坐标值(row,col),而蛇身以从左到右的方式进行编号,最左边是蛇的尾部,最右边是蛇的头部。,22,第5章如何让计算机读懂你,5.1.3你也能做出贪食蛇,三节蛇的数据结构,snake0.row,snake0.col是第0号蛇身也就是蛇尾的横坐标row和纵坐标col;依此类推,snake2.row,snake2.col则是第2号蛇身也就是蛇头的横坐标row和纵坐标col。,23,第5章如何让计算机读懂你,5.1.4每一个游戏都是相似的,(1)初始化游戏,游戏界面的绘制游戏速度的设置,食物产生,(2)While玩家不按退出键,(3)if玩家不按退出键,贪食蛇算法设计,(4)蛇身按照玩家按下的方向移动,(5)else蛇身按照默认方向(右)移动,(6)endif,(7)if蛇头碰到墙壁,(8)游戏结束,(9)endif,(10)if蛇头碰到自身,(11)游戏结束,(12)endif,(13)if蛇头碰到食物,(14)蛇身增长、分数增加、产生新食物,(15)endif,(16)endwhile,(17)游戏结束,24,第5章如何让计算机读懂你,5.1.4每一个游戏都是相似的,部分游戏程序设计代码,游戏初始化,包括蛇的初始长度,蛇初始行进的方向,游戏区域的显示。,25,第5章如何让计算机读懂你,5.1.4每一个游戏都是相似的,Voidloadgame()introw,col;snake_length=4;/蛇的初始长度direction=right_key;/蛇初始行进的方向for(row=0;rowmaxrow;row+)/定义screengridrowcol2维数组for(col=0;colmaxcol;col+)screengridrowcol=;for(inti=0;isnake_length;i+)/初始化蛇身每节的横、纵坐标值snakei.row=snake_start_rowsnakei.col=snake_start_col+I;,26,第5章如何让计算机读懂你,5.1.4每一个游戏都是相似的,/画游戏框架drawline(1,1);for(row=0;rowmaxrow;row+)gotoxy(1,row+2);coutscreengridrowcol;cout”|”;drawline(1,maxrow+2);showscore();/显示分数gotoxy(2,maxrow+5);cout”SNAKEGAMEleft:”left_key”Right:”right_key”UP:”up_key”Down:”down_key”Exit:x.”;/显示游戏的帮助信息:按键设置,27,第5章如何让计算机读懂你,5.1.4每一个游戏都是相似的,28,第5章如何让计算机读懂你,5.2初识程序,程序代码就是我们和计算机交流沟通所使用的语言。像我们和美国人交流要使用英语,和同学朋友交流要使用汉语,我们和计算机交流,就要使用计算机能听懂的语言,能通过这种表示,让计算机理解人的想法和意图,让计算机能懂我们的设计思路和设计的理念,通过和计算机的交流,让计算机为我们创造出更加精彩的设计效果。,29,第5章如何让计算机读懂你,5.2.1程序其实就在你身边,1.寻找学生本人所在的院系迎新人员,2.到达新生接待处,进行新生资格审查,3.出示自己的有效证件,领取宿舍房间号、报到证,4.到达后勤管理中心办理住宿手续,5.到财务处缴纳学费,办理户口迁移,校园一卡通等等,30,第5章如何让计算机读懂你,5.2初识程序,31,第5章如何让计算机读懂你,5.2.2让你认识计算机程序,计算机给我们的生活带来了巨大的改变,而计算机程序就是指导计算机一切行动的指令,它实实在在改变了我们的生活方式。下面我们来了解一下计算机程序的发展趣史。,32,第5章如何让计算机读懂你,5.2.2让你认识计算机程序,33,第5章如何让计算机读懂你,5.2.2让你认识计算机程序,从上面的计算机程序发展史可以了解到,计算机程序的发展给人类的生活带来了无数的惊喜。我们实际应用的计算机程序设计中,有些计算机程序只处理简单的任务,如:计算圆的面积、求100以内的奇数的和,求一元二次方程的解等等。而有些程序则可以处理复杂度较高的工作,例如:我们经常使用的操作系统、Word文字处理软件、图像处理Photoshop软件、还有我们迷恋的大型网络游戏、各种精彩的动漫制作等等,这些都是设计复杂的计算机程序来实现的。,34,第5章如何让计算机读懂你,5.2.2让你认识计算机程序,隐藏文件、备份文件、给计算机加密、给文件加密,安装杀毒软件或网络防火墙,35,第5章如何让计算机读懂你,5.2.2让你认识计算机程序,36,第5章如何让计算机读懂你,5.2.2让你认识计算机程序,#includevoidmain()intx,g,m,n=0;for(x=0;x=0,37,第5章如何让计算机读懂你,5.2.2让你认识计算机程序,38,第5章如何让计算机读懂你,5.2.2让你认识计算机程序,一个程序就像一个用汉语(程序设计语言)写下的鱼香肉丝的菜谱(程序),用于指导懂汉语和烹饪手法的人(体系结构)来做这个菜。通常,计算机程序要经过编译和链接而成为一种人们不易看清而计算机可解读的格式,然后运行。我们编写的程序是在用一种计算机能够听得懂的语言很详细地对计算机述说着做一件事情的基本做法和流程!那么,程序是用计算机的语言所编写的能让计算机帮助我们进行一些特定操作的语句。,正如我们掌握外语需要经历读、写和说一样,程序也需要经历写、读和执行算法这一过程。,39,第5章如何让计算机读懂你,5.2.3让我们来和计算机交流,1机器语言,2汇编语言,3高级语言,程序设计语言分为,40,第5章如何让计算机读懂你,5.2.3让我们来和计算机交流,Waterlilies.jpg图片,如系统里自带的图片要转化成这样一些数字:1111111111011000111111111110000000000000,机器语言是由0和1二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机的设计者通过计算机硬件结构赋予计算机的操作功能。其格式,操作码操作数,41,第5章如何让计算机读懂你,5.2.3让我们来和计算机交流,42,第5章如何让计算机读懂你,汇编语言,高级语言,MOVA,10ADDA,20HLT,A=10+20;,把10送入累加器A中20与累加器A中的值相加,结果存放入A中结束,停机,43,第5章如何让计算机读懂你,44,第5章如何让计算机读懂你,在所有的程序设计语言中,除了用机器语言编制的程序能够被计算机直接理解和执行外,其他的程序设计语言编写的程序都必须经过一个翻译过程才能转换为计算机所能识别的机器语言程序,实现这个翻译过程的工具是语言处理程序,即翻译程序。这种“翻译”通常有两种方式,即解释和编译。用高级语言编写的程序称为高级语言源程序。,45,第5章如何让计算机读懂你,1.解释方式,运行高级语言源程序的时候,解释程序进行逐句翻译,计算机逐句执行,并不产生目标程序,整个过程类似于“同声传译”。程序执行时,解释程序随同源程序一起参加运行,如下图所示。解释方式执行速度慢,但可以进行人机对话,对初学者来说非常方便。如早期的BASIC语言大多采用解释方式。,46,第5章如何让计算机读懂你,2.编译方式,编译方式的翻译工作由编译程序来完成。它对源程序进行编译处理后,产生一个与源程序等价的目标程序,所有这些程序还没有连接成一个整体,因此这时产生的目标程序还无法运行,需要使用连接程序将目标程序与其他程序段组装在一起,才能形成一个完整的可执行程序存放在计算机内。整个过程类似于“书面翻译”。,47,第5章如何让计算机读懂你,解释是在程序运行的时候进行的,会影响程序的运行速度,但不会产生额外的文件,而编译是在程序运行前进行的,程序运行速度不受影响,但会产生额外的可执行文件,而且源程序如果有改动的话,要重新进行编译以得到新的可执行文件。包括C语言等在内的大多数高级语言都采用编译方式,而BASIC语言则采用解释方式为主。,48,第5章如何让计算机读懂你,5.2.4探知各种程序语言的奥秘,(一)命令式程序设计语言机器语言和汇编语言是最早的命令式语言。命令式程序设计语言是基于动作的语言,最大的特点是其每行代码都是一条具体的指令,让计算机执行具体的操作,通过一系列指令的叠加完成复杂的任务。随着任务的逐渐复杂,早期的命令式程序设计语言编的越来越庞大,特别是跳转语句和其他非结构化分支结构的大量使用,使得程序变得杂乱无章,难以阅读和维护,质量严重下降,编程代价巨大。程序的流向就像一盘意大利面一样扭曲纠结,为了解决这个问题,计算机科学家们提出了结构化程序设计的概念。,49,第5章如何让计算机读懂你,1.结构化程序设计,自顶向下,从最上层总目标开始设计,逐步使问题具体化,逐步求精:对复杂的问题,设计子目标做过度,逐步细化,设计原则,模块化:是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。,50,第5章如何让计算机读懂你,BASIC语言比较简单,无论在学习方面还是在操作方面都是比较方便的,不仅仅有字符串的处理方式,还有一些简单的绘画功能和音乐功能,在整个执行的过程中,可以进行简单的人机对话,可以更加方便地进行中小型科学的计算,并且进行数据的处理。BASIC语言提供了一个结构化设计语言的基本功能。如Dowhile,for循环等等。BASIC语言具有更高效的图形功能,可以在屏幕上开设任意的窗口,将其绘制工作变得更加的容易。,常见的结构化程序设计语言,VB设计的时钟,51,第5章如何让计算机读懂你,C语言既具有高级语言的特点,又具有汇编语言的特点。其应用范围极为广泛,常用的一些领域:(1)Linux操作系统中的应用软件都是使用C语言编写的,安全性比较高。(2)用来编写系统软件、制作动画、绘制二维图形和三维图形等(3)嵌入式设备开发。手机、PDA等时尚消费类电子产品相信大家都不陌生,其内部的应用软件、游戏等很多都是采用C语言进行嵌入式开发的。(4)游戏软件开发。如扫雷、推箱子、贪吃蛇等,常见的结构化程序设计语言,C语言编写的图形输出,52,第5章如何让计算机读懂你,面向对象的程序设计是20世纪80年代初就提出的,它将大量的工作由相应的对象来完成,程序员在应用程序中只需说明要求对象完成的任务。面向对象的程序设计给软件的发展带来了以下益处:符合人们习惯的思维方法,便于分析复杂而多变化的问题。易于软件的维护和功能的增减。可重用性好,能用继承的方式减短程序开发所花的时间。与可视化技术相结合,改善了工作界面。,2.面向对象的程序设计,53,第5章如何让计算机读懂你,C+是在C语言的基础之上为支持面向对象的程序设计而研制的一种通用的程序设计语言。C+语言的主要特点表现在两个方面(1)全面兼容C,(2)支持面向对象的方法。C+既支持面向过程的程序设计,又支持面向对象的程序设计。C+语言功能强大,操作系统和office应用程序都是由C+编写的,还有如右图的扫雷小游戏等。,常见的面向对象程序设计语言,用C+编写的扫雷游戏,54,第5章如何让计算机读懂你,Java是伴随着Internet迅猛发展,使它成为了互联网上最受欢迎的开发与编程语言。一些著名的计算机公司纷纷购买了Java语言的使用权,如Microsoft,IBM,Novell,Apple等。微软总裁比尔盖茨感慨地说:“Java是长时间以来最卓越的程序设计语言”,他将微软整个软件开发的战略从PC单机时代向着以网络为中心的计算时代转移,而购买Java则是实施他的重大战略决策的具体行动。,常见的面向对象程序设计语言,55,第5章如何让计算机读懂你,Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。Java的主战场是企业环境的应用。Java的技术真正实现了跨平台。Java的移动之路。通过Java语言的应用,手机游戏图像更加丰富,更具吸引力。软件的动画效果软件最终的产品。,常见的面向对象程序设计语言,游戏超级马里奥,56,第5章如何让计算机读懂你,HTML即超文本标记语言,是WWW的描述语言。是为“网页创建和其他可在浏览器中看到的信息”设计的一种标记语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。,(二)标记语言和Web开发语言,HTML语言设计的网页,57,第5章如何让计算机读懂你,Web开发语言种类繁多,ASP是其中之一,可以与数据库和其它程序进行交互,是一种简单、方便的编程工具。常用于各种动态网站中。特点如下:(1)无需编译。(2)易于生成。使用常规文本编辑器(如WINDOWS下的记事本),即可进行全部的.asp页面的设计。(3)独立于浏览器。(4)源程序码不会外漏。ASP脚本在服务器上执行,传到用户浏览器的只是ASP执行结果所生成的常规HTML码,这样可保证辛辛苦苦编写出来的程序代码不会被他人盗取。,(二)标记语言和Web开发语言,用Asp编写设计的网页,58,第5章如何让计算机读懂你,SQL语言:结构化查询语言结构简洁,功能强大,简单易学。如今无论是像Oracle,SQLserver这些大型的数据库管理系统,还是VisualFoxPro,PowerBuilder这些计算机上常用的数据库开发系统,都支持SQL语言作为查询语言。SQL它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。,常见的面向对象程序设计语言,59,第5章如何让计算机读懂你,5.2.5让计算机懂你,今天,在座的同学,假设都去参加围棋挑战赛,而我们要挑战的人就是围棋九段高手常昊,如果有同学挑战成功,那可就名扬天下,成为新一代围棋国手了。大家思考,通常这个过比赛过程会是怎么样的?比赛的结果有哪些?,60,第5章如何让计算机读懂你,5.2.5让计算机懂你,我们可将过程简要地列出来。(1)确定挑战的人数;(2)挑战者和常昊对阵较量;(3)一旦挑战成功,挑战者就可以成为新一代围棋国手;步骤(2)(3)重复执行,直到最后一个挑战者。在挑战赛的过程中,我们看到步骤(2)(3)是要重复做的,所以我们应该怎么做?我们要把重复部分用循环结构来实现。那么这个步骤重复到什么时候结束呢?由学生讨论怎么确定循环的次数,很明显,已知的挑战者个数是判断循环结束的条件。,61,第5章如何让计算机读懂你,5.2.5让计算机懂你,62,第5章如何让计算机读懂你,5.2.5让计算机懂你,设计程序流程:求100以内的所有数的和,(1)设定一个变量sum表示和,初值为0;(2)再设定一个计数变量I,从1开始计数,同时它代表要相加的数;(3)I和sum相加,和保存在变量sum中;(4)I累加;(5)I大于100时输出sum的值,否则继续执行(3)和(4)。,63,第5章如何让计算机读懂你,5.2.5让计算机懂你,64,第5章如何让计算机读懂你,5.2.5让计算机懂你,#includevoidmain()inti=0,sum=0;for(i=0;i=100;i+)if(i%2=0)sum=sum+i;printf(0+2+4+6+8+.+100=%dn,sum);,65,第5章如何让计算机读懂你,5.2.5让计算机懂你,(1)测试目的是找出程序中的错误。测试只能证明程序有错,而不能确保程序的正确性。一个通过了某一测试的程序,也许还包含尚未发现的错误;这如同查病毒程序,只能查出机器中的某些病毒,不能确保机器中没有病毒。,测试程序,(2)测试方法测试是以程序通过编译,没有语法和连接上的错误为前提的。在此基础上,通过让程序试运行一组数据,看程序是否满足预期结果。这组测试数据应是以任何程序都是有错误的为前提精心设计出来的,称为测试用例。,66,第5章如何让计算机读懂你,5.2.5让计算机懂你,(1)写程序使用说明书程序运行需要的软硬件环境。程序的安装、启动方法。程序的功能。需要输入的数据类型、格式和取值范围。涉及文件数量、名称、内容、存放的路径等。一般,这些内容以Readme或Help形式提供。,编写程序文档,(2)写程序技术说明书程序技术说明书为了便于今后对程序的维护。内容包含:程序各模块的描述。程序使用硬件的有关信息。主要算法的解释和描述。各变量的名称、作用,程序代码清单。,67,第5章如何让计算机读懂你,5.2.6程序的控制结构,例5.5计算半径为10的圆的面积及周长#includevoidmain()floatr,s,p;r=10.0;s=3.1415*r*r;p=2*3.1415*r;printf(面积=%f,周长=%fn,s,p);,顺序结构是指程序按照语句的排列顺序,由上而下一个一个的顺序执行,一条语句只能且必须执行一次。,68,第5章如何让计算机读懂你,5.2.6程序的控制结构,根据条件判断,决定程序的执行次序,if-else结构的执行流程如右图所示。在执行时首先对表达式进行求值,若值为真,则执行if后的“语句1”;若值为假,则执行else后的“语句2”。,选择结构,一般形式为:if(表达式)语句1Else语句2,69,第5章如何让计算机读懂你,5.2.6程序的控制结构,例5.6输入一个数,判断该数是奇数还是偶数。#includeintmain(void)intnumber;printf(Enteranumber:);/*输入提示*/scanf(%d,运行结果1:Enteranumber:51Thenumberisodd.运行结果2:Enteranumber:1024Thenumberiseven.,70,第5章如何让计算机读懂你,5.2.6程序的控制结构,我们生活的每一天,星期一到星期日;每天度过的24小时;人造地球卫星的运动;还有我们大学生,每学期按周排课,每周一个循环,如每周一节计算机课,共计16周;运动会上1500米比赛,运动员绕着运动场一圈接着一圈跑步,直到跑完全程。,71,第5章如何让计算机读懂你,5.2.6程序的控制结构,类似这种在一段时间内会重复的事情就是循环,但不是简单的重复,每周的课表虽然一样,但学生每周学的内容却不尽相同,同样让计算机反复执行一些语句,只要几条简单的命令,就可以完成大量同类的计算,这就是循环的优势所在。循环结构是指从程序的某处开始有规律地反复执行某一段代码,并称此段代码为循环体。,72,第5章如何让计算机读懂你,5.2.6程序的控制结构,一般形式:for(表达式1;表达式2;表达式3),For语句,表达式1通常用来给循环控制变量赋初值,一般为赋值表达式;表达式2作为循环控制条件,一般是关系表达式或逻辑表达式;表达式3通常是控制循环变量变化的,一般为赋值表达式;语句为循环体,当有多条语句时,必须使用复合语句。For括号内3个表达式必须用两个分号(;)隔开,即使有部分表达式省略,也不能省略分号。,73,第5章如何让计算机读懂你,5.2.6程序的控制结构,执行过程是:计算表达式1,然后计算表达式2,若表达式2为真,则执行循环体;否则,退出for循环,执行for循环后的语句。如果执行了循环体,则循环体每执行一次,都计算表达式3,然后重新计算表达式2,依此循环,直至表达式2的值为假,退出循环。执行过程如图所示。,74,第5章如何让计算机读懂你,5.2.6程序的控制结构,例5.7求#includeintmain()inti,sum;sum=0;for(i=1;i=100;i+)sum=sum+i;printf(sum=%dn,sum);return0;,如果编程时不知道循环的次数,让程序执行者决定循环的次数,可增设一个变量来控制循环的终值,从而灵活计算,#includeintmain()inti,sum,n;printf(Entern);scanf(%d,75,第5章如何让计算机读懂你,5.2.6程序的控制结构,给定循环起点,如i=1,设定循环控制条件,如i=n只要满足i=n循环就继续,总结重复执行的工作,抽取出循环体,如语句“sum=sum+i,计数控制的循环包含如下几部分,改变循环控制变量,如i+,76,第5章如何让计算机读懂你,5.3算法描述与实例,大家平时熟悉的一些算法如:从老师那里学到的算数运算,加、减、乘、除;日常生活中,如你要喝茶,那么要先找到茶叶,烧一壶开水,然后将茶叶放到杯子里,然后将开水倒入杯中,然后等一段时间。再如,你要从哈尔滨去海南,中间可能有多种汽车换乘方案,是选速度最快的,还是选最省钱的,还是平衡的,制定的换乘方案就是算法。,77,第5章如何让计算机读懂你,5.3算法的描述与实例,人们使用计算机,要利用它来解决各种不同的问题,那么如何实现呢?确定解决问题的具体方法和步骤,再编制好一些让计算机执行的指令程序,交给计算机,让计算机按人们指定的步骤有效地工作。这些具体的方法和步骤,就是一个问题的算法。,78,第5章如何让计算机读懂你,5.3.2算法的举例,79,第5章如何让计算机读懂你,5.3.2算法的举例,试想一下,如果按照此方法,求1*2*3*100要写多少步呢?,99步!,80,第5章如何让计算机读懂你,改进算法,如果计算100!,只需将i=5改为i=80,则打印ni和gi,否则不打印S3:i+1iS4:若i=50,返回S2,否则,结束。,82,第5章如何让计算机读懂你,5.3算法的描述与实例,算法由操作与控制结构两个要素组成。操作:操作主要有:算术运算、关系运算、逻辑运算和数据传送等。控制结构:各操作之间的执行顺序为算法的控制结构,即顺序结构、选择结构、循环结构组合而成的,称为算法的三种基本结构。,著名计算机科学家Kunth曾把算法的性质归纳为以下五点:有限性任意一个算法在执行有限计算步骤后必须终止。可行性有限多个步骤应该在一个合理的范围内进行。确定性每一个计算步骤,必须是精确地定义,无二义性。输入一般都要求若干个输入信息,它们取自某一个特定的集合。输出一般有若干个输出信息,是计算的结果。,算法的性质归纳,5.3算法的表示,(a)起止(b)处理(c)连接(d)判断(e)输入/输出(f)流程方向,常用的流程图符号,常用的流程图符号,例5.1流程图,N-S流程图,顺序结构,选择结构,循环结构(a),循环结构(b),例5.1N-S流程图,1两个变量的值交换计算机处理问题时,经常要对两个变量的值进行交换。intx=1,y=2,t;t=x;x=y;y=t;printf(%d,%d,x,y);,5.3.4常用算法,2计算器和累加器日常工作和生活中,经常要进行某些统计,如统计某日的商品销售额、统计某类职称的人数等。N=N+1N为计数器变量Sum=Sum+xSum为累加器变量,5.3.4常用算法,例5.2计算1+2+3+100的和。#includeintmain()inti,sum=0;sum=0;for(i=1;i=100;i+)sum=sum+i;/累加器/printf(sum=%dn,sum);return0;,3枚举法根据题目的部分条件确定答案的大致范围,然后在此范围内对所有可能的情况逐一验证,直到所有情况验证完。若某个情况符合题目的条件,则为本题的一个答案;若全部情况验证完后均不符合题目的条件,则问题无解。,5.3.4常用算法,例我国古代的一道数学问题:百元买百鸡。鸡翁一,值钱五,鸡母一,值钱三,鸡雏三,值钱一。百钱买百鸡,问鸡翁、母、雏各几何?假设公鸡、母鸡、雏鸡分别有x、y、z只,根据已知条件,可写出两个方程的联立方程组:,4求最大值、最小值因为计算机同时只能对两个变量进行比较,所以求若干个数中的最大值。可在n个数中先假设第1个数为最大值的初值,依次同第2,3,n个数据逐一比较,一旦某个数大,马上替换最大值。将所有数比较完,最大值也就获得。,5.3.4常用算法,当然也可以先假设一个很小的数为最大值的初值,然后分别和第1,2,n个数比较。求最小值的方法同样,仅先假设一个较大的数为最小值的初值。,5.3.4常用算法,例5.4电视大奖赛选手得分程序,评分规则:去掉一个最高分和一个最低分,取平均值为选手得分,有10名评委打分。设最高分变量为Max、最低分变量为Min,总分变量为sum。,#includevoidmain()inta10;inti,sum=0,ave=0,max,min;printf(请输入10个数:n);for(i=0;i10;i+)scanf(%d,5.3.4常用算法,for(i=1;imax)max=ai;ave=sum/10;printf(max=%d,min=%d,ave=%dn,max,min,ave);,排序问题算法一:比较交换法,方法如下:,a(1),最小数,分别与,比较,a(2),次小数,分别与,比较,与此类推最后,a(9),a(10),次大数,最大数,编程时,利用外循环控制需要定位的数a(i)的下标,循环变量i从0到9;内循环控制从a(i)的下一个数到a(10)依次与a(i)比较,循环变量j从i+1到9,满足条件就交换。,for(i=0;iaj)/*如果a(i)比a(j)大,进行交换*/n=ai;ai=aj;aj=n;,交换两个下标变量的值,算法二:选择法选择法是对比较交换法的改进。,a(1),最小数,在,中找最小数的下标k,a(2),次小数,在,中找最小数的下标k,与此类推最后,a(9),a(10),次大数,最大数,选择法的交换次数要大大少于比较交换法,for(i=0;i10;i+)min=i/*设ai是最小值,即下标为i的元素最小*/for(j=i+1;j10;j+)/*比较一轮*/if(ajamin)/*如果aj比最小值还小*/min=j;/*记下新的最小值的下标*/if(min!=i/*如果min在循环中改变了就交换数据*/n=a(min);

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论