版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五讲程序设计语言和编程环境北京大学
信息科学技术学院2023年9月30日第五讲程序设计语言和编程环境2023年8月7日2023/9/30北京大学2主要内容程序设计语言概述机器语言汇编语言高级语言及其程序的执行若干典型的高级语言介绍VC6.0编程环境2023/8/7北京大学2主要内容程序设计语言概述2023/9/30北京大学31、程序设计语言概述计算机硬件组成2023/8/7北京大学31、程序设计语言概述计算机硬件组成2023/9/30北京大学4程序是由若干条指令的顺序排列组成,是为信息处理任务而预先编制的工作执行方案。1、程序设计语言概述计算机指令的执行及程序2023/8/7北京大学4程序是由若干条指令的顺序排列组成,2023/9/30北京大学51、程序设计语言概述程序设计语言软件的基本组成部分是完成其功能的程序。程序描述了计算机处理数据、解决问题的过程,这是程序的实质。程序的描述形式却可以是多种多样的,可以用不同的方式表述,这就是程序设计语言。程序设计语言(也被称为“编程语言”,ProgrammingLanguage)是人们描述(编制)程序所使用的规范和方法(语言)。机器语言、汇编语言、高级语言2023/8/7北京大学51、程序设计语言概述程序设计语言2023/9/30北京大学62、机器语言机器指令采用二进制代码形式,它们符合具体计算机的指令系统,可以由计算机直接执行。因此机器指令实际上也是一种可以在程序设计中使用的语言,被称为“机器语言”。每一条机器指令包括两个主要方面:操作(指出计算机应做什么)被操作的对象(指出处理的数据或它的地址)下面给出了几条以二进制形式描述的Intel80386指令以及对它们的文字解释。2023/8/7北京大学62、机器语言机器指令采用二进制代码2023/9/30北京大学72、机器语言01000000把一个寄存器(EAX)的值加1
100010110000010100000000011110011000111110101101从某个内存单元取出数据,装入EAX寄存器2023/8/7北京大学72、机器语言010000002023/9/30北京大学82、机器语言从直接阅读的角度看,二进制代码简直是密码,难以理解和使用。因此也必然造成程序不易修改,无法由一种计算机环境移植到其他环境上。101010111010010101000100010110011001111010111101100110110100010100100000111110011010011101101101101000111000010110000001011111011000110110101101010011111010010101001010011110111001101110100111……用机器语言编程,不仅指令操作需要用规定的二进制代码描述,程序里的数据也要程序设计者自己安排存储位置。这使程序设计工作更加烦杂和容易出错。要检查和发现程序中的错误也是极端困难的。这一系列因素使得用程序开发工作的效率非常低,据统计,一个人一天平均只能够写出几条有效指令。
2023/8/7北京大学82、机器语言从直接阅读的角度看,2023/9/30北京大学93、汇编语言从人的思维方式而言,更适合于用概念描述事物,对于烦琐冗长的数字编码,由于它们不能与概念和概念之间的语义联系产生任何提示作用,则显然对设计思维没有任何帮助作用,纯粹是一种累赘。人们显然更希望用有帮助记忆作用的符号来书写程序,例如用“ADD”表示“加法”操作,用“JMP”表示“控制性转移”等。操作的对象(数据或数据的地址)最好也能用符号形式表示,例如用X、Y代表两个存储数据的容器。显然这样做比直接采用二进码方便得多。这就是“汇编程序设计语言”的基本想法。2023/8/7北京大学93、汇编语言从人的思维方式而言,更2023/9/30北京大学103、汇编语言汇编语言提供一组具有帮助记忆作用的“汇编指令”,每条汇编指令都和一条机器指令相对应,只是指令码和操作数都采用符号形式。…
…PUSHECXMOVERROR,0MOVECX,EAXCMPECX,0JMPFAILCALLFACT…
…2023/8/7北京大学103、汇编语言汇编语言提供一组具有2023/9/30北京大学113、汇编语言对于这种汇编语言形式写出的程序,计算机是不能直接执行的,必须在交给计算机执行之前先把它翻译成二进制的机器语言指令程序。把汇编语言程序翻译到机器语言的工作比较机械,可以用计算机来完成这个翻译工作。“汇编器”(Assembler)软件就是具有这种功能的软件,它能把用汇编语言书写的程序翻译成机器语言程序。
2023/8/7北京大学113、汇编语言对于这种汇编语言形式2023/9/30北京大学123、汇编语言在这里,我们又看到了“程序”和“数据”两个概念的相对性:对汇编器而言,它的输入“数据”是汇编语言程序,这种程序当作数据(是一系列的字符行)被加工处理。汇编器产生的结果是机器代码程序(具有二进符号串的形式),同时它也是即将在计算机上运行的真正的程序。2023/8/7北京大学123、汇编语言在这里,我们又看到了2023/9/30北京大学133、汇编语言从程序开发的角度来看,汇编语言与机器语言类似,仍然有许多缺点:汇编语言的描述机制层次太低,其基本描述单位仍然是指令,这种方式与人们描述计算过程的需要之间差距太大。汇编语言与计算机硬件的具体结构、指令系统联系过于紧密,这种情况造成的后果是在一种计算机上开发的程序极难搬到另一种不同结构的计算机上使用。如果想这样做,不仅工作量将非常大(与重写差不多),而且很容易引出程序错误,修改也非常困难。2023/8/7北京大学133、汇编语言从程序开发的角度来看2023/9/30北京大学143、汇编语言样例程序1计算表达式:135+22-1常用寄存器AX,BX,CX等可以用来保存中间结果;计算过程:MOVAX,135MOVBX,22ADDAX,BXSUBAX,1HLT2023/8/7北京大学143、汇编语言样例程序12023/9/30北京大学153、汇编语言样例程序2计算从1累加到100得到的和AX保存累加和,BX存放被加数,每加完一次增加1。通过一个循环来完成累加工作。计算过程:MOVAX,1MOVBX,2calc:CMPBX,101JEstopADDAX,BXINCBXJMPcalcstop:HLT2023/8/7北京大学153、汇编语言样例程序22023/9/30北京大学163、汇编语言样例程序3求一组数33,15,21,7,9,23,4,76,87,45中的最大值.总的思想是用一个存储单元保存到目前为止的最大值,将10个数逐一取出与最大值比较,如果该数比当前最大值更大,则将更新当前最大值.2023/8/7北京大学163、汇编语言样例程序32023/9/30北京大学173、汇编语言数组变量DATA存储给定的十个整数;BX记录当前计算的是第几个数,0-9;CX记录数组中当前没有被计算过的数,初值为10,每计算一个数,它的值减1,当它为0时,停止计算(循环计数);AX是16位寄存器,可以分成两个8位寄存器AH和AL使用,每次总是将一个数复制到AL中去.2023/8/7北京大学173、汇编语言数组变量DATA存储2023/9/30北京大学183、汇编语言MOVAL,0MOVBX,0MOVCX,10next:CMPDATA[BX],ALJLunchangedMOVAL,DATA[BX]unchanged:INCBXLOOPnext//CX减1HLTDATADB33,15,21,7,9,23,4,76,87,452023/8/7北京大学183、汇编语言MOVAL,02023/9/30北京大学194、高级语言及其程序的执行高级语言在对计算过程的描述方面,完全脱离了简单的指令方式,采用类似于数学公式的书写方式描述由一些数据计算出结果的过程,用一些更高级程序流程描述结构取代简单的跳转指令方式,以更好地满足书写程序的需要。在高级程序语言中也使用“变量”这个概念,在这里“变量”代表一种容器,用于存放程序中处理的数据。变量对应着存储器的若干字节(存储单元),但它们在存储器中的具体位置并不需要编程人员关心,这样就大大减轻了编程人员的负担。2023/8/7北京大学194、高级语言及其程序的执行高级语2023/9/30北京大学204、高级语言及其程序的执行高级语言中的变量采用字符串形式的名字,如x、len、Max、Number等。一方面名字可以帮助人们掌握变量所代表的信息含义,在程序里只要用变量的名字就可以读写访问它的存储单元里的数据。定义确定了变量的大小。xlenMaxNumber2023/8/7北京大学204、高级语言及其程序的执行高级语2023/9/30北京大学214、高级语言及其程序的执行高级语言中用于描述计算的结构采用类似于数学中代数运算公式的形式,这种结构被称为“表达式”。程序中基本的动作单位被称为“语句”,不同的语句实现不同的功能。高级语言里最基本语句就是“赋值语句”(AssignmentStatement),这种语句描述把通过计算得到的结果(值)赋给变量的动作。举例说:X=100; Y=2*SIN(1.047);Z=X*Y;2023/8/7北京大学214、高级语言及其程序的执行高级语2023/9/30北京大学224、高级语言及其程序的执行用高级语言书写的程序不可能直接在计算机上执行,与汇编语言程序一样,需要将它转换成机器语言指令程序。在计算机上将高级语言书写的程序转换成机器语言指令程序,有两种基本方法:编译(Compilation)方式解释(Interpretation)方式2023/8/7北京大学224、高级语言及其程序的执行用高级2023/9/30北京大学234、高级语言及其程序的执行编译方式是设法把高级语言程序(也称为“源程序”)翻译转换成为可以由计算机直接执行的机器语言指令程序,经连接装配后转变为“可执行程序”(ExecutableProgram)。人们实现了高级语言“编译器”(Compiler)完成这种翻译工作。编译器把高级语言程序看成是符合一定语法结构的符号串,对它进行加工变换。2023/8/7北京大学234、高级语言及其程序的执行编译方2023/9/30北京大学24
编译器对源程序的加工一般分为两个阶段:源程序首先被翻译成机器语言,这种翻译结果称为“目标码”(objectcode),目标码构成的程序片段称为目标模块。第二步,这些目标模块被与其他一些基本模块(通用目标程序模块,由编译软件或其他人提供)连接在一起,最终形成“可执行程序”(executableprogram),这样的程序就可以在计算机上实际运行了。第一个加工步骤称为“编译”(compiling),第二个步骤称为“连接”(linking)。4、高级语言及其程序的执行2023/8/7北京大学24编译器对源程序的加工2023/9/30北京大学25可执行的机器语言指令4、高级语言及其程序的执行解释(Interpretation)方式由一种称为“解释器”(Interpreter)软件实现。解释器在工作方式上与编译器不同,它不事先对源程序进行翻译,而是在执行时即时对源程序的语句进行分析和解释,实现源程序所描述的功能。2023/8/7北京大学25可执行的机器语言指令4、高级语言2023/9/30北京大学265、若干典型的高级语言的介绍第一个高级程序语言是FORTRAN语言,它是由美国IBM公司的科技人员在五十年代开发出来的。高级语言的开发成功是软件技术发展的一个重要里程碑。从那以后,人们设计并实现了许多高级程序语言。高级语言不但是程序开发的工具,也成为一种在人与人之间,在不同的计算机之间交流的工具。为了保证语言的通用性,国际标准化组织动用很多人力物力,对应用较广泛的一些语言提出了标准语言文本。这些工作进一步打通了交流渠道,推动了计算机应用的发展。FORTRAN、PASCAL、C/C++COBOL、BASIC、ADA、JAVA2023/8/7北京大学265、若干典型的高级语言的介绍第一2023/9/30北京大学275.1、FORTRANFORTRAN的名字是由英文FORmularTRANslation缩写而成,意思是“公式翻译”。在五十年代初期人们考虑的主要是如何有效地把数学公式描述的计算过程翻译成计算机程序,设计FORTRAN语言的主要目的是为了描述科学计算的算法。FORTRAN语言大约在1954年设计,它的编译器在1957年完成。后来这个语言还有很大的发展,成为在科学计算(数值计算)方面最主要的编程语言。2023/8/7北京大学275.1、FORTRANFORTR2023/9/30北京大学285.1、FORTRAN程序样例FUNCTIONFUNC1(N)ISUM=0DO10I=1,NISUM=ISUM+I*I10CONTINUEFUNC1=ISUMRETURNEND求1~N的平方和2023/8/7北京大学285.1、FORTRAN程序样例2023/9/30北京大学295.2、PASCALPascal语言是由著名瑞士计算机科学家N.Wirth(1984年图灵奖得主)设计的一种语言,1968年提出后被全世界广泛接受,成为一种对计算机科学技术发展有巨大影响的语言。这个语言的名字是为了纪念历史上著名的数学家和计算学科的先驱BlaisePascal(帕斯卡)。Pascal语言把许多好的东西结合在一个很简练的语言里,被计算机教育界广泛采用。从七十年代末往后的很长一段时间里,Pascal成为世界范围的计算机专业教学语言,多数教科书用Pascal给出程序例子,描述计算的算法。2023/8/7北京大学295.2、PASCALPascal2023/9/30北京大学305.2、PASCAL程序样例functionfunc1(N:integer):integer;varSUM,I:integer;beginSUM=0;forI:=1toNdoSUM:=SUM+I*I;FUNC1:=SUM;end求1~N的平方和2023/8/7北京大学305.2、PASCAL程序样例f2023/9/30北京大学315.3、C语言C是由美国贝尔实验室的DennisRetchie在1972年设计开发的,开发目的是想成为一种编制“系统程序”的工具语言。Retchie等人首先用自己发明的C语言编写了UNIX操作系统。以后C语言逐步发展成为开发系统软件的主要语言。许多常见的软件系统,例如,在中国使用很广泛的计算机辅助设计软件AUTOCAD,数学软件系统Mathematica等,以及许多语言编译系统本身,其软件系统的全部或者部分程序就是用C语言开发的。C语言已成为最重要的软件系统开发语言,由此可见C语言在计算机领域地位之重要。2023/8/7北京大学315.3、C语言C是由美国贝尔实2023/9/30北京大学325.3、C语言样例程序intmain(){intn;inti,sum=0;scanf(“%d”,&n);for(i=1;i<=n;i++)sum+=i*i;returnsum;}求1~N的平方和2023/8/7北京大学325.3、C语言样例程序int2023/9/30北京大学335.4、C++语言C++是在C语言基础上发展出的一种“面向对象”语言。它是由BjarneStroustrup在美国贝尔实验室开发的(1983)。C++是C语言的一个扩充,它一方面修正了C的一些弱点和不足,使用起来更方便可靠;另一方面,也是更重要的,这种语言以支持“面向对象”(Object-Oreinted,简称为OO)的程序设计方法为基本目标,提供了一套支持面向对象程序设计的机制,如“类”(class)、“对象”(object)等等。面向对象的方法被认为是开发复杂软件系统的一种有效途径,OO程序设计语言也已经被广泛接受。C++是目前使用最广泛的一种面向对象的程序设计语言。
2023/8/7北京大学335.4、C++语言C++是在2023/9/30北京大学345.5、COBOLCOBOL(COmmonBusinessOrientedLanguage,通用事务处理语言)语言是在美国国防部推动下,由政府机构和工业界联合开发的一种语言,1960年正式推出。它的主要设计目标是用于编制商业企业管理信息系统的处理程序和各种软件。COBOL语言采用一种类似英语的形式,对使用英语的人而言它的可读性较强,但这也带来程序罗嗦冗长的缺点。数据记录(DATARECORD)的概念是在COBOL语言中第一次引入的。COBOL语言曾经使用非常广泛,七十年代曾有人统计过,当时程序语言使用的情况是:将近一半的程序(以字符数计算)是用COBOL语言书写的。但目前的情况是COBOL语言已经走向衰败。
2023/8/7北京大学345.5、COBOLCOBOL(C2023/9/30北京大学355.6、BASICBASIC(Beginner‘sAll-purposeSymbolicInstructionCode,初学者的通用符号指令代码)语言可能仍然是世界上使用人数最多的语言。这个语言是由JohnKemeny和ThomasKurtz于1964年开发的,基本上是FORTRAN语言的一个缩减版本。设计者当时希望开发一个简单的交互式语言,用于学习程序设计。由于语言简单,BASIC语言可以在很低档的微机上实现,因此得到广泛普及,流行到世界的每个角落。可以说,无论国内还是国外,BASIC语言对于计算机的普及都发挥了重要的作用。2023/8/7北京大学355.6、BASICBASIC(2023/9/30北京大学365.7、ADAAda这个名字是纪念历史上第一位编程者——Ada夫人(生活在十九世纪中叶,是著名诗人拜伦的女儿),她被认为是第一个写程序的人,她曾经为计算机先驱者CharlesBabbage未完成的计算机写程序。Ada语言开发的目的是作为新一代的美国军用程序设计语言(1983-1995),作为所有与国防有关的程序和软件的统一语言标准。Ada的设计目标是针对那些装备在机电设备上和武器装备里的计算机控制、管理软件系统开发所使用的。这类系统现在被称为“嵌入式计算机系统”,是计算机的一个重要应用方面。Ada语言的设计也特别注意对复杂的大型和巨型软件系统的支持。Ada语言自1983年作为标准提出后,虽由美国国防部大力推行,也受到各国军方的重视,但不像预想的那样成功,其中一个原因是它太复杂。
2023/8/7北京大学365.7、ADAAda这个名字是2023/9/30北京大学375.7、ADA样例程序FUNCTIONfunc1(n:ININTEGER)RETURNINTEGERISsum:INTEGER=0;i:INTEGER;BEGINFORiIN1..nloopsum:=sum+i*i;endloop;returnsum;END;求1~N的平方和2023/8/7北京大学375.7、ADA样例程序FUNC2023/9/30北京大学385.8、JAVA1991年,SUNMicroSystem公司的JameGosling、BillJoe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件,1995年正式推出并更名为Java。Writeonce,runeverywhere.目前网络程序开发的主要语言特点面向对象便于网络开发简单易学2023/8/7北京大学385.8、JAVA1991年,SU2023/9/30北京大学395.8、JAVA样例程序publicintfunc1(intn){intsum=0;inti;for(i=1;i<=n;i++)sum=sum+i*i;returnsum;}求1~N的平方和2023/8/7北京大学395.8、JAVA样例程序pub2023/9/30北京大学40我们这门课程主要介绍C语言。2023/8/7北京大学40我们这门课程主要介绍C语言。2023/9/30北京大学416、VC6.0编程环境基本概念基本功能编程及调试过程示例2023/8/7北京大学416、VC6.0编程环境基本概念2023/9/30北京大学42VC++编程环境-基本概念
Project(工程):VC编程环境下,编写程序的工作是以Project为单位。在开始一个新程序时,要先建立一个Project,之后在程序编写过程中所有与这个程序有关的文件都会包含在这个Project中。编制的程序可以有各种不同类型,编程环境为每种类型的程序准备了一个模版,用来生成程序的最初框架。在我们这门课程里只介绍编写Win32ConsoleApplication类型的程序。这类程序的特点是:程序运行中会打开一个类似于DOS操作系统的界面,所有键盘输入都是通过DOS界面进行的,而所有输出都是输出到DOS窗口中。2023/8/7北京大学42VC++编程环境-基本概念2023/9/30北京大学43VC++编程环境-基本概念SourceFile(源程序)源程序是我们用高级程序设计语言书写的程序。源程序必须经过编译连接变成可执行程序(机器代码)才能运行。在下面的章节中,我们主要用介绍C语言编写源程序。2023/8/7北京大学43VC++编程环境-基本概念S2023/9/30北京大学44VC++编程环境-基本概念Compile(编译)把源程序变成机器目标代码的过程称为编译。不同的高级语言有不同的编译器。2023/8/7北京大学44VC++编程环境-基本概念C2023/9/30北京大学45VC++编程环境-基本概念Link(连接)各种高级语言都会提供一些常用的功能模块,我们自己编写的程序里会调用这些功能模块。同时要把我们写的程序装载到内存里运行,也需要加载一定的与环境相关的信息。所以将我们自己写的程序编译成机器代码后,还需要一个连接的过程以生成最后的可执行程序。2023/8/7北京大学45VC++编程环境-基本概念L2023/9/30北京大学46VC++编程环境-基本概念Build(编译并连接)编译并连接是把源程序编译,如果没有错误则连接,否则给出编译错误信息。2023/8/7北京大学46VC++编程环境-基本概念B2023/9/30北京大学47VC++编程环境-基本概念Debug(调试)当程序出错时,可用调试工具发现错处的代码,进行改正。所谓调试是指逐条执行或部分执行程序代码,并在执行过程中查看变量的值。当发现变量的值并非如我们预期或程序的执行逻辑并非我们预期时,就发现了错误,可以进行有针对性的改正。2023/8/7北京大学47VC++编程环境-基本概念D2023/9/30北京大学48VC++编程环境-基本概念Run(运行)启动一个可执行程序使其开始执行称为运行。2023/8/7北京大学48VC++编程环境-基本概念R2023/9/30北京大学49VC++编程环境–基本功能创建新工程编辑源程序编译
/连接运行调试2023/8/7北京大学49VC++编程环境–基本功能创2023/9/30北京大学50VC++编程环境-创建新工程
2023/8/7北京大学50VC++编程环境-创建新工程2023/9/30北京大学51VC++编程环境-创建新工程
2023/8/7北京大学51VC++编程环境-创建新工程2023/9/30北京大学52VC++编程环境-创建新工程
2023/8/7北京大学52VC++编程环境-创建新工程2023/9/30北京大学53VC++编程环境-创建新工程
2023/8/7北京大学53VC++编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 安徽粮食工程职业学院《中国历史文献学》2025-2026学年期末试卷
- 广东省揭阳市普宁市第一中学2023-2024学年高三上学期英语限时训练限时训练一 试题(学生版)
- 东华理工大学《临床血液学检验技术》2025-2026学年期末试卷
- 宿州航空职业学院《能源经济学》2025-2026学年期末试卷
- 厦门城市职业学院《卫生信息技术基础》2025-2026学年期末试卷
- 福建船政交通职业学院《电子商务》2025-2026学年期末试卷
- 厦门大学嘉庚学院《外贸函电》2025-2026学年期末试卷
- 中国医科大学《金融计量学》2025-2026学年期末试卷
- 阜阳幼儿师范高等专科学校《旅游政策法律法规》2025-2026学年期末试卷
- 九江学院《政府经济学》2025-2026学年期末试卷
- 高中语文整本书阅读《红楼梦》-赏析金陵十二钗之美 公开课一等奖创新教学设计
- DB32-T 4789-2024 固化粉煤灰应用技术规程
- 五年级下学期-长方体和正方体-物体浸没问题-专项应用题训练35题-后面带答案
- 邮政营业员复习题集
- 浙江省2024年中考数学试卷【附真题答案】
- 儿科误吸的应急预案
- 细节决定成败课件
- JJF(纺织) 027-2010 染色摩擦色牢度仪校准规范
- 电子信息系统机房设计规范标准
- 金融职务犯罪及几种常见罪名课件
- 维修改造加固工程监理质量评估报告
评论
0/150
提交评论