任务3了解算法与程序设计语言3.3.1算法3.3.2程序设计语言的发展3.3.3几种程序设计语言介绍计算机求解问题的步骤(1)确定并理解问题;(2)寻找解决问题的方法与步骤,并将其表示成算法(Algorithm);(3)使用某种程序设计语言描述该算法(编程),并编译成目标程序和进行调试;(4)运行程序,获得问题的解答;(5)进行评估,改进算法和程序算法的概念计算机算法是问题求解规则(方法)的一种过程描述,在执行有穷步的运算后结束。算法不仅在计算某一类问题时可以应用,有时一些实际问题中也要应用算法。在用计算机求解一些问题时,必须根据问题的要求,设计出一种算法,以使计算机精确而有效地去求解该问题。算法是解决问题的方法与步骤例:有三个硬币,其中一个是伪造的,另两个是真的,伪币与真币重量略有不同。现在提供一座天平,如何找出伪币呢?分析:方法明确而有序按提供的条件进行操作任何人均可仿照进行(共享智能)开始C是伪币B是伪币A是伪币A=B?A=C?是否否是ABC关于算法的三方面问题如何确定算法(算法设计)?如何表示算法(算法表示)?如何使算法更有效(算法分析)?算法的特征(1)输入性。一个算法可以有多个输入,也可以没有输入(0个输入)。(2)输出性。一个算法必须有一个或多个输出。(3)确定性。算法的每个步骤必须有确切的定义,即每一步骤应该执行何种动作必须是相当清楚的、无二义性的。(4)有穷性。一个算法总是在执行了有穷步的操作后终止。(5)能行性。算法中有待执行的操作都是可执行的,即在计算机的能力范围之内,且在有限的时间内能够完成。算法的表示算法的表示可以多种形式。(1)自然语言。自然语言像英语、汉语等来描述算法的方法。(2)流程图。使用特定的图形符号来描述描述。(3)伪代码。一种介于自然语言和程序设计语言之间的文字和符号表达工具。(4)程序设计语言。使用某一种程序设计语言所提供的语言成分,根据语言的特点,并利用语言提供的各种工具和手段,遵照规定的语法规则,去实现算法这就是所谓的程序编码。文字(自然语言)描述“比较A与B的重量,若A=B,则C是伪造的;否则再比较A与C的重量,若A=C,则B是伪造的;否则A是伪造的。”缺点:容易产生歧义,很难“精确”地进行表达叙述冗长,很难清楚地表达算法的逻辑流程算法的流程图表示流程图由结点和有向边构成,它描述了算法所执行操作的顺序及执行操作的条件流程图符号:比文字描述简明,但当算法比较复杂时,理解困难,容易产生错误端点符处理判断预定义功能原始数据放在数组A中;令i=1确定A[i]到A[n]中最小整数的位置,设为jA[i]和A[j]交换位置i=i+1i=n?结束开始用流程图表示选择排序算法流程图使用的图形符号将原始数据放在数组A中;设置i的初值为1,循环执行下列操作,直到i=n:{确定A[i]到A[n]中最小整数的位置,设为j;交换A[i]和[j];i=i+1}使用伪代码描述“选择排序”算法使用伪代码描述算法伪代码(Pseudocode)是用来描述算法的一种语言,它既类似于自然语言,又使用与程序设计语言相似的方法描述算法优点:结构清晰,代码简单,可读性好,可以容易地以任何一种编程语言(Pascal,C,Java等)实现每个整数是A的一个元素:A[1],A[2],···,A[n]算法的基本要素(1)算法对数据的运算和操作在一般的计算机系统中,基本的运算和操作包括:自述运算、逻辑运算、关系运算、数据传输四类。(2)算法的控制结构算法的功能不仅取决于所选用的操作,还与算法的控制结构有很大关系。算法的控制结构指的是算法中各操作之间的执行顺序。一般情况下,一个算法可以由顺序、选择和循环3种基本控制结构组合而成。三种基本算法结构的图形表示(a)是顺序结构,其中的每个处理(A和B)顺序执行。(b)是选择结构。其中e为判决条件,进入选择结构,首先判断e成立与否,再根据判断结果,选择执行处理A或处理B后退出。循环结构分为两类。(c)称为“当型循环”;(d)称为“直到型循环”。循环结构中的处理A是要重复执行的操作,叫做“循环体”;e是控制循环执行的条件。当型循环是当条件e成立,就继续执行A,否则就结束循环;而直到型循环是重复执行A,直到条件e成立,循环结束。ABABAETrueFalseBEETrueFalseTrueFalse(a)(b)(c)(d)图3-4三种基本算法结构三种基本结构的共同特点(1)只有单一的入口和单一的出口;(2)结构中的每个都有执行到的可能;(3)结构内不存在永不终止的死循环。算法设计的目标(1)正确性。算法应满足具体问题的需求,这是算法设计最起码的目标。(2)可读性。一个算法设计完成后,并非仅供算法设计者个人使用,因此首先应让使用者能够理解、阅读与交流,其次才是机器执行。(3)健壮性。当输入的数据非法时,算法应当能够做出适当的反应或进行处理,从而避免产生不可预料的输出结果。(4)高效率。所谓效率,是指算法执行的时间。对于同一个问题如果有多个可供选择的算法,应尽可能选择执行时间短的算法,这样的算法无疑效率是较高的。(5)低存储量需求。算法的存储量需求是指算法执行过程中所需的最大存储空间。对于同一个问题如果有多个算法可供选择,应尽可能选择存储量需求低的算法。什么是程序设计语言?什么是程序?程序是为了用计算机解决某个问题而采用程序设计语言编写的一个指令序列什么是程序设计语言?语言的目的是用于通信程序设计语言用于人与计算机之间的通信程序设计语言是由人使用但计算机可以理解的一种语言程序设计语言用于编制程序,表达需要计算机完成什么任务和怎样完成任务,然后交给计算机去完成程序设计语言填补了人与计算机交流的鸿沟计算机硬件仅仅知道0和1有问题需要计算机解决的人交流的鸿沟计算机硬件仅仅知道0和1有问题需要计算机解决的人程序设计语言计算机中使用多种“语言”程序设计语言:主要用于描述算法机器语言、汇编语言、高级语言数据描述语言:主要用于描述数据(文档、音乐、图形、图像、视频等)的规范、结构和文件格式HTML、XML、MIDI、MP3、OpenGL、JPEG、MPEG、······脚本语言:用于编写嵌入在文档中的程序的程序设计语言VBA、VBScript、JavaScript计算机通信语言(通信协议):用于描述计算机-计算机之间的会话(请求-应答)的语法和语义HTTP、POP3、SMTP、FTP、Telnet、TCP、IP、······数据库语言:用于数据操作,如SQL语言······程序设计语言的发展要使计算机能够按人的意图工作,就必须使计算机懂得人的意图,接受人向它发出的命令和信息。计算机不懂人类的语言,人们要操纵计算机,就不得不使用特定的语言与之打交道,这种特定的语言就是计算机语言,又称为程序设计语言。计算机语言也有其自身的发展过程,其出现的顺序是:机器语言、汇编语言、高级语言。机器语言机器语言是计算机惟一能够直接识别和执行的一种计算机语言,它是以二进制代码的形式表示的机器指令。优点:计算机能直接识别、运行速度快、占用内存空间小。缺点:直观性差,难记、难写,非常容易出错;面向具体的机器,通用性差;需要人工分配内存,编程工作量大。B87F01BB210203D8B81F042BC3(计算1055-(383+545)的5条机器指令)机器语言用机器语言编程序,也就是直接使用二进制代码编写程序操作码操作数(或操作数的地址)1条机器指令操作数地址操作码汇编语言汇编语言是用一些便于人们记忆的符号来代替二进制数码,这些符号都是一些可以指明操作含义的英文单词(或其缩写),因此也叫助记符式语言。这种语言具有如下优缺点。优点:运行速度快,占用空间小;易学、易懂、易查错、易修改缺点:机器不能直接识别;面向机器,通用性差。汇编语言用助记符号来表示机器指令中的操作符与操作数将383传送到AX寄存器将545传送到BX寄存器将BX内容加AX内容,结果在BX中将1055传送到AX寄存器将AX内容减BX内容,结果在AX寄存器中B87F01BB210203D8B81F042BC3(计算1055-(383+545)的5条机器指令)机器语言程序MOVAX383MOVBX545ADDBXAXMOVAX1055SUBAXBX汇编语言程序高级语言高级语言,克服了低级语言的所有缺点。优点:接近于自然语言;能精确地描述解决问题的过程;不依赖于具体的计算机指令系统;不需人工分配内存;运行速度慢,片用内存空间大;计算机不能直接识别和运行尽管高级语言还有一定的缺点,但因为它的显著优点,所以才使计算机的推可能。目前,常用的高级语言有C语言、VC、VB、C#等。高级程序设计语言MOVAX383MOVBX545ADDBXAXMOVAX1055SUBAXBX汇编语言程序S=1055-(383+545)语言处理(翻译)程序(1)汇编语言的翻译用汇编语言编写的程序通常称为汇编语言源程序。这样的程序计算机是不能直接识别和执行的,必须用相应的翻译程序(称为汇编程序)将汇编语言源程序翻译成机器能够执行的机器语言程序(称为目标程序),这个翻译过程叫做汇编。汇编语言源程序目标程序可执行程序运行结果汇编程序汇编连接语言处理(翻译)程序(2)高级语言的翻译①编译方式:用相应语言的编译程序将源程序翻译成目标程序,再用连接程序将目标程序与函数库连接,最终生成可执行程序即可在计算机上运行。高级语言源程序目标程序可执行程序运行结果编译程序编译连接语言处理(翻译)程序(2)高级语言的翻译②解释方式:通过相应的解释程序将源程序逐句翻译成机器指令,并且是每翻译一句就执行一句。解释程序不产生目标程序,执行过程中某句有错误将立即显示出错误信息,以便用户修改后继续执行。高级语言源程序运行结果解释程序解释并执行程序设计语言:FortranFortran是英文“FORmulaTRANslator”的缩写,译为“公式翻译器”,它是世界上最早出现的计算机高级程序设计语言,广泛应用于科学和工程计算领域。FORTRAN语言以其特有的功能在数值、科学和工程计算领域发挥着重要作用。程序设计语言:Pascal与DelphiPascal是一个有影响的面向过程编程语言,由尼古拉斯·沃斯在1968年9月设计,在1970年发行,作为一个小型的和高效的语言,意图鼓励使用结构化编程和数据结构进行良好的编程实践。Delphi是一个集成开发环境(IDE),使用的核心是由传统Pascal语言发展而来的ObjectPascal,以图形用户界面(GraphicalUserInterface,简称GUI)为开发环境,通过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。程序设计语言:Basic,VisualBasic和VB.netBASIC是Beginner'sAll-purposesymbolicinstructionCode(初学者通用符号指令代码)的缩写,是国际上广泛使用的一种计算机高级语言,它的特点是简单、易学。1991年,VisualBasic1.0问世,它允许程序员在一个所见即所得的图形界面中迅速完成开发任务。1998年发布的VisualBasic6.0是传统VisualBasic中功能最全、应用最广的一个版本。微软后来开发了VB的继任者VisualBasic.NET,同时也是.NET平台的一部分。程序设计语言:JavaJava是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。随着Java芯片、J