程序设计语言和编程环境

上传人:沈*** 文档编号:228368097 上传时间:2023-08-21 格式:PPT 页数:65 大小:1.59MB
返回 下载 相关 举报
程序设计语言和编程环境_第1页
第1页 / 共65页
程序设计语言和编程环境_第2页
第2页 / 共65页
程序设计语言和编程环境_第3页
第3页 / 共65页
点击查看更多>>
资源描述
第五讲 程序设计语言和编程环境北京大学北京大学 信息科学技术学院信息科学技术学院20232023年年8 8月月1919日日2023/8/19北京大学2主要内容主要内容n程序设计语言概述n机器语言n汇编语言n高级语言及其程序的执行n若干典型的高级语言介绍nVC6.0编程环境2023/8/19北京大学31、程序设计语言概述n计算机硬件组成2023/8/19北京大学4程序程序是由若干条指令的顺序排列组成,是为信息处理任务而预先编制的工作执行方案。1、程序设计语言概述n计算机指令的执行及程序2023/8/19北京大学51、程序设计语言概述程序设计语言n软件的基本组成部分是完成其功能的程序。n程序描述了计算机处理数据、解决问题的过程,这是程序的实质。n程序的描述形式却可以是多种多样的,可以用不同的方式表述,这就是程序设计语言。n程序设计语言(也被称为“编程语言”,ProgrammingLanguage)是人们描述(编制)程序所使用的规范和方法(语言)。n机器语言、汇编语言、高级语言机器语言、汇编语言、高级语言2023/8/19北京大学62、机器语言n机器指令采用二进制代码形式,它们符合具体计算机的指令系统,可以由计算机直接执行。因此机器指令实际上也是一种可以在程序设计中使用的语言,被称为“机器语言机器语言”。n每一条机器指令包括两个主要方面:n操作(指出计算机应做什么)n被操作的对象(指出处理的数据或它的地址)n下面给出了几条以二进制形式描述的Intel80386指令以及对它们的文字解释。2023/8/19北京大学72、机器语言n01000000n把一个寄存器(EAX)的值加1n100010110000010100000000011110011000111110101101n从某个内存单元取出数据,装入EAX寄存器2023/8/19北京大学82、机器语言n从直接阅读的角度看,二进制代码简直是密码,难以理解和使用。因此也必然造成程序不易修改,无法由一种计算机环境移植到其他环境上。n101010111010010101000100010110011001111010111101n100110110100010100100000111110011010011101101101n101000111000010110000001011111011000110110101101n010011111010010101001010011110111001101110100111nn用机器语言编程,不仅指令操作需要用规定的二进制代码描述,程序里的数据也要程序设计者自己安排存储位置。这使程序设计工作更加烦杂和容易出错。要检查和发现程序中的错误也是极端困难的。这一系列因素使得用程序开发工作的效率非常低,据统计,一个人一天平均只能够据统计,一个人一天平均只能够写出几条有效指令。写出几条有效指令。2023/8/19北京大学93、汇编语言n从人的思维方式而言,更适合于用概念概念描述事物,对于烦琐冗长的数字编码,由于它们不能与概念和概念之间的语义联系产生任何提示作用,则显然对设计思维没有任何帮助作用,纯粹是一种累赘。n人们显然更希望用有帮助记忆作用的符号符号来书写程序,例如用“ADD”表示“加法”操作,用“JMP”表示“控制性转移”等。操作的对象(数据或数据的地址)最好也能用符号形式表示,例如用 X、Y代表两个存储数据的容器。显然这样做比直接采用二进码方便得多。这就是“汇编程汇编程序设计语言序设计语言”的基本想法。2023/8/19北京大学103、汇编语言n汇编语言提供一组具有帮助记忆作用的“汇编指令”,每条汇编指令都和一条机器指令相对应,只是指令码和指令码和操作数都采用符号形式操作数都采用符号形式。PUSHECXMOVERROR,0MOVECX,EAXCMPECX,0JMPFAILCALLFACT2023/8/19北京大学113、汇编语言n对于这种汇编语言形式写出的程序,计算机是不能直接执行的,必须在交给计算机执行之前先把它翻译翻译成二进制的机器语言指令程序。n把汇编语言程序翻译到机器语言的工作比较机械,可以用计算机来完成这个翻译工作。“汇编器汇编器”(Assembler)软件就是具有这种功能的软件,它能把用汇编语言书写的程序翻译成机器语言程序。2023/8/19北京大学123、汇编语言n在这里,我们又看到了“程序”和“数据”两个概念的相对性:n对汇编器而言,它的输入“数据”是汇编语言程序,这种程序当作数据(是一系列的字符行)被加工处理。n汇编器产生的结果是机器代码程序(具有二进符号串的形式),同时它也是即将在计算机上运行的真正的程序。2023/8/19北京大学133、汇编语言n从程序开发的角度来看,汇编语言与机器语言类似,仍然有许多缺点:n汇编语言的描述机制层次太低,其基本描述单位仍然是指令,这种方式与人们描述计算过程的需要之间差距太大。n汇编语言与计算机硬件的具体结构、指令系统联系过于紧密,这种情况造成的后果是在一种计算机上开发的程序极难搬到另一种不同结构的计算机上使用。如果想这样做,不仅工作量将非常大(与重写差不多),而且很容易引出程序错误,修改也非常困难。2023/8/19北京大学143、汇编语言样例程序1n计算表达式:135221n常用寄存器AX,BX,CX等可以用来保存中间结果;n计算过程:nMOVAX,135nMOVBX,22nADDAX,BXnSUBAX,1nHLT2023/8/19北京大学153、汇编语言样例程序2n计算从1累加到100得到的和nAX保存累加和,BX存放被加数,每加完一次增加1。通过一个循环来完成累加工作。n计算过程:nMOVAX,1nMOVBX,2ncalc:nCMPBX,101nJEstopnADDAX,BXnINCBXnJMPcalcnstop:nHLT2023/8/19北京大学163、汇编语言样例程序3n求一组数33,15,21,7,9,23,4,76,87,45中的最大值n总的思想是用一个存储单元保存到目前为止的最大值,将个数逐一取出与最大值比较,如果该数比当前最大值更大,则将更新当前最大值2023/8/19北京大学173、汇编语言n数组变量DATA存储给定的十个整数;nBX记录当前计算的是第几个数,;nCX记录数组中当前没有被计算过的数,初值为10,每计算一个数,它的值减,当它为时,停止计算(循环计数);nAX是16位寄存器,可以分成两个8位寄存器AH和AL使用,每次总是将一个数复制到AL中去2023/8/19北京大学183、汇编语言nMOVAL,0nMOVBX,0nMOVCX,10nnext:nCMPDATABX,ALnJLunchangednMOVAL,DATABXnunchanged:nINCBXnLOOPnext/CX减1nHLTnDATADB33,15,21,7,9,23,4,76,87,452023/8/19北京大学194、高级语言及其程序的执行n高级语言高级语言在对计算过程的描述方面,完全脱离了简单的指令方式,采用类似于数学公式的书写方式描述由一些数据计算出结果的过程,用一些更高级程序流程描述结构取代简单的跳转指令方式,以更好地满足书写程序的需要。n在高级程序语言中也使用“变量变量”这个概念,在这里“变量”代表一种容器,用于存放程序中处理的数据。变量对变量对应着存储器的若干字节(存储单元)应着存储器的若干字节(存储单元),但它们在存储器中但它们在存储器中的具体位置并不需要编程人员关心,的具体位置并不需要编程人员关心,这样就大大减轻了编程人员的负担。2023/8/19北京大学204、高级语言及其程序的执行n高级语言中的变量采用字字符串形式的名字符串形式的名字,如x、len、Max、Number等。一方面名字可以帮助人们掌握变量所代表的信息含义,在程序里只要用变量的名字就可以读写访问它的存储单元里的数据。定义确定了变量的大小。xlenMaxNumber2023/8/19北京大学214、高级语言及其程序的执行n高级语言中用于描述计算的结构采用类似于数学中代数运算公式的形式,这种结构被称为“表达式表达式”。n程序中基本的动作单位被称为“语句语句”,不同的语句实现不同的功能。高级语言里最基本语句就是“赋值语句”(AssignmentStatement),这种语句描述把通过计算得到的结果(值)赋给变量的动作。举例说:nX100;nY=2*SIN(1.047);nZ=X*Y;2023/8/19北京大学224、高级语言及其程序的执行n用高级语言书写的程序不可能直接在计算机上执行,与汇编语言程序一样,需要将它转换成机器语言指令程序。在计算机上将高级语言书写的程序转换成机器语言指令程序,有两种基本方法:n编译(Compilation)方式n解释(Interpretation)方式2023/8/19北京大学234、高级语言及其程序的执行n编译方式编译方式是设法把高级语言程序(也称为“源程序源程序”)翻译转换成为可以由计算机直接执行的机器语言指令程序,经连接装配后转变为“可执行程序可执行程序”(ExecutableProgram)。n人们实现了高级语言“编译器编译器”(Compiler)完成这种翻译工作。编译器把高级语言程序看成是符合一定语法结构的符号串,对它进行加工变换。2023/8/19北京大学24编译器对源程序的加工一般分为两个阶段:n源程序首先被翻译成机器语言,这种翻译结果称为“目标码目标码”(object code),目标码构成的程序片段称为目标模块。n第二步,这些目标模块被与其他一些基本模块(通用目标程序模块,由编译软件或其他人提供)连接在一起,最终形成“可执行程序可执行程序”(executable program),这样的程序就可以在计算机上实际运行了。n第一个加工步骤称为“编译编译”(compiling),第二个步骤称为“连接连接”(linking)。4、高级语言及其程序的执行2023/8/19北京大学25可执行的机器语言指令可执行的机器语言指令4、高级语言及其程序的执行n解释(解释(Interpretation)方式)方式由一种称为“解释器解释器”(Interpreter)软件实现。解释器在工作方式上与编译器不同,它不事先对源程序进行翻译,而是在执行时即时对源程序的语句进行分析和解释,实现源程序所描述的功能。2023/8/19北京大学265、若干典型的高级语言的介绍n第一个高级程序语言是FORTRAN语言,它是由美国IBM公司的科技人员在五十年代开发出来的。n高级语言的开发成功是软件技术发展的一个重要里程碑。从那以后,人们设计并实现了许多高级程序语言。n高级语言不但是程序开发的工具,也成为一种在人与人之间,在不同的计算机之间交流的工具。为了保证语言的通用性,国际标准化组织动用很多人力物力,对应用较广泛的一些语言提出了标准语言文本。这些工作进一步打通了交流渠道,推动了计算机应用的发展。nFORTRAN、PASCAL、C/C+nCOBOL、BASIC、ADA、JAVA2023/8/19北京大学275.1、FORTRANnFORTRAN的名字是由英文FORmularTRANslation缩写而成,意思是“公式翻译”。n在五十年代初期人们考虑的主要是如何有效地把数学公式描述的计算过程翻译成计算机程序,设计FORTRAN语言的主要目的是为了描述科学计算的算法。nFORTRAN语言大约在1954年设计,它的编译器在1957年完成。后来这个语言还有很大的发展,成为在科学计算(数值计算)方面最主要的编程语言。2023/8/19北京大学285.1、FORTRAN程序样例FUNCTIONFUNC1(N)ISUM=0DO10I=1,NISUM=ISUM+I*I10CONTINUEFUNC1=ISUMRETURNEND求求1N的平方和的平方和2023/8/19北京大学295.2、PASCALnPascal语言是由著名瑞士计算机科学家N.Wirth(1984年图灵奖得主)设计的一种语言,1968年提出后被全世界广泛接受,成为一种对计算机科学技术发展有巨大影响的语言。n这个语言的名字是为了纪念历史上著名的数学家和计算学科的先驱BlaisePascal(帕斯卡)。nPascal语言把许多好的东西结合在一个很简练的语言里,被计算机教育界广泛采用。从七十年代末往后的很长一段时间里,Pascal成为世界范围的计算机专业教学语言,多数教科书用Pascal给出程序例子,描述计算的算法。2023/8/19北京大学305.2、PASCAL程序样例functionfunc1(N:integer):integer;varSUM,I:integer;beginSUM=0;forI:=1toNdoSUM:=SUM+I*I;FUNC1:=SUM;end求求1N的平方和的平方和2023/8/19北京大学315.3、C语言nC是由美国贝尔实验室的DennisRetchie在1972年设计开发的,开发目的是想成为一种编制“系统程序”的工具语言。nRetchie等人首先用自己发明的C语言编写了UNIX操作系统。以后C语言逐步发展成为开发系统软件的主要语言。n许多常见的软件系统,例如,在中国使用很广泛的计算机辅助设计软件AUTOCAD,数学软件系统Mathematica等,以及许多语言编译系统本身,其软件系统的全部或者部分程序就是用C语言开发的。nC语言已成为最重要的软件系统开发语言,由此可见C语言在计算机领域地位之重要。2023/8/19北京大学325.3、C语言样例程序intmain()intn;inti,sum=0;scanf(“%d”,&n);for(i=1;i=n;i+)sum+=i*i;returnsum;求求1N的平方和的平方和2023/8/19北京大学335.4、C+语言nC+是在C语言基础上发展出的一种“面向对象”语言。它是由BjarneStroustrup在美国贝尔实验室开发的(1983)。nC+是C语言的一个扩充,它一方面修正了C的一些弱点和不足,使用起来更方便可靠;另一方面,也是更重要的,这种语言以支持“面向对象面向对象”(Object-Oreinted,简称为OO)的程序设计方法为基本目标,提供了一套支持面向对象程序设计的机制,如“类”(class)、“对象”(object)等等。n面向对象的方法被认为是开发复杂软件系统的一种有效途径,OO程序设计语言也已经被广泛接受。C+是目前使用最广泛的一种面向对象的程序设计语言。2023/8/19北京大学345.5、COBOLnCOBOL(COmmonBusinessOrientedLanguage,通用事务处理语言)语言是在美国国防部推动下,由政府机构和工业界联合开发的一种语言,1960年正式推出。n它的主要设计目标是用于编制商业企业管理信息系统的处理程序和各种软件。COBOL语言采用一种类似英语的形式,对使用英语的人而言它的可读性较强,但这也带来程序罗嗦冗长的缺点。n数据记录数据记录(DATARECORD)的概念是在COBOL语言中第一次引入的。nCOBOL语言曾经使用非常广泛,七十年代曾有人统计过,当时程序语言使用的情况是:将近一半的程序(以字符数计算)是用COBOL语言书写的。但目前的情况是COBOL语言已经走向衰败。2023/8/19北京大学355.6、BASICnBASIC(BeginnersAll-purposeSymbolicInstructionCode,初学者的通用符号指令代码)语言可能仍然是世界上使用人数最多的语言。n这个语言是由JohnKemeny和ThomasKurtz于1964年开发的,基本上是FORTRAN语言的一个缩减版本。设计者当时希望开发一个简单的交互式语言,用于学习程序设计。n由于语言简单,BASIC语言可以在很低档的微机上实现,因此得到广泛普及,流行到世界的每个角落。可以说,无论国内还是国外,BASIC语言对于计算机的普及都发挥了重要的作用。2023/8/19北京大学365.7、ADAnAda这个名字是纪念历史上第一位编程者Ada夫人(生活在十九世纪中叶,是著名诗人拜伦的女儿),她被认为是第一个写程序的人,她曾经为计算机先驱者CharlesBabbage未完成的计算机写程序。nAda语言开发的目的是作为新一代的美国军用程序设计语言(1983-1995),作为所有与国防有关的程序和软件的统一语言标准。nAda的设计目标是针对那些装备在机电设备上和武器装备里的计算机控制、管理软件系统开发所使用的。这类系统现在被称为“嵌入式计算机系统”,是计算机的一个重要应用方面。Ada语言的设计也特别注意对复杂的大型和巨型软件系统的支持。nAda语言自1983年作为标准提出后,虽由美国国防部大力推行,也受到各国军方的重视,但不像预想的那样成功,其中一个原因是它太复杂。2023/8/19北京大学375.7、ADA样例程序FUNCTIONfunc1(n:ININTEGER)RETURNINTEGERISsum:INTEGER=0;i:INTEGER;BEGINFORiIN1.nloopsum:=sum+i*i;endloop;returnsum;END;求求1N的平方和的平方和2023/8/19北京大学385.8、JAVAn1991年,SUNMicroSystem公司的JameGosling、BillJoe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件,1995年正式推出并更名为Java。nWriteonce,runeverywhere.n目前网络程序开发的主要语言n特点n面向对象n便于网络开发n简单易学2023/8/19北京大学395.8、JAVA样例程序publicintfunc1(intn)intsum=0;inti;for(i=1;i=0),要求出在第几年年末,这个点将被侵蚀。例如:给定X,Y坐标为(1.0,1.0),则输出:第1年年末。x,yxy2023/8/19北京大学62p房地产问题程序示例 3x,yxy2023/8/19北京大学63编程及调试过程n启动VCn创建新工程n编辑源代码n编译链接n运行:输入/输出2023/8/19北京大学64n学习安装VC6.0(课后,有条件的同学)n使用V6.0编程环境,进行编程。n完成编程网格练习n输入并运行程序示例1、2、3。上机练习(第1次上机)2023/8/19北京大学65p程序设计语言概述p不同的程序设计语言n机器语言n汇编语言n高级语言(Fortran、C、C+、Java,)pVC6.0编程环境小结小结
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!