1、第五讲 程序设计语言和编程环境北京大学北京大学 信息科学技术学院信息科学技术学院20222022年年6 6月月5 5日日2022-6-5北京大学2主要内容主要内容n程序设计语言概述n机器语言n汇编语言n高级语言及其程序的执行n若干典型的高级语言介绍nVC6.0编程环境2022-6-5北京大学31、程序设计语言概述n计算机硬件组成2022-6-5北京大学4程序程序是由若干条指令的顺序排列组成,是为信息处理任务而预先编制的工作执行方案。1、程序设计语言概述n计算机指令的执行及程序2022-6-5北京大学51、程序设计语言概述程序设计语言n软件的基本组成部分是完成其功能的程序。n程序描述了计算机处理
2、数据、解决问题的过程,这是程序的实质。n程序的描述形式却可以是多种多样的,可以用不同的方式表述,这就是程序设计语言。n程序设计语言(也被称为“编程语言”,Programming Language)是人们描述(编制)程序所使用的规范和方法(语言)。n机器语言、汇编语言、高级语言机器语言、汇编语言、高级语言2022-6-5北京大学62、机器语言n机器指令采用二进制代码形式,它们符合具体计算机的指令系统,可以由计算机直接执行。因此机器指令实际上也是一种可以在程序设计中使用的语言,被称为“机器语言机器语言”。n每一条机器指令包括两个主要方面:n操作(指出计算机应做什么)n被操作的对象(指出处理的数据或
3、它的地址)n下面给出了几条以二进制形式描述的 Intel 80386 指令以及对它们的文字解释。 2022-6-5北京大学72、机器语言n01000000n把一个寄存器(EAX)的值加1 n10001011 00000101 00000000 01111001 10001111 10101101n从某个内存单元取出数据,装入EAX寄存器2022-6-5北京大学82、机器语言 n从直接阅读的角度看,二进制代码简直是密码,难以理解和使用。因此也必然造成程序不易修改,无法由一种计算机环境移植到其他环境上。n10101011 10100101 01000100 01011001 10011110 10
4、111101n10011011 01000101 00100000 11111001 10100111 01101101n10100011 10000101 10000001 01111101 10001101 10101101n01001111 10100101 01001010 01111011 10011011 10100111nn用机器语言编程,不仅指令操作需要用规定的二进制代码描述,程序里的数据也要程序设计者自己安排存储位置。这使程序设计工作更加烦杂和容易出错。要检查和发现程序中的错误也是极端困难的。这一系列因素使得用程序开发工作的效率非常低,据统计,一个人一天平均只能够据统计,一个
5、人一天平均只能够写出几条有效指令。写出几条有效指令。 2022-6-5北京大学93、汇编语言n从人的思维方式而言,更适合于用概念概念描述事物,对于烦琐冗长的数字编码,由于它们不能与概念和概念之间的语义联系产生任何提示作用,则显然对设计思维没有任何帮助作用,纯粹是一种累赘。n人们显然更希望用有帮助记忆作用的符号符号来书写程序,例如用 “ADD” 表示“加法”操作,用“ JMP” 表示“控制性转移”等。操作的对象(数据或数据的地址)最好也能用符号形式表示,例如用 X、Y代表两个存储数据的容器。显然这样做比直接采用二进码方便得多。这就是“汇编程汇编程序设计语言序设计语言”的基本想法。 2022-6-
6、5北京大学103、汇编语言n汇编语言提供一组具有帮助记忆作用的“汇编指令”,每条汇编指令都和一条机器指令相对应,只是指令码和指令码和操作数都采用符号形式操作数都采用符号形式。PUSH ECXMOV ERROR, 0MOV ECX, EAXCMP ECX, 0JMP FAILCALL FACT2022-6-5北京大学113、汇编语言n对于这种汇编语言形式写出的程序,计算机是不能直接执行的,必须在交给计算机执行之前先把它翻译翻译成二进制的机器语言指令程序。n把汇编语言程序翻译到机器语言的工作比较机械,可以用计算机来完成这个翻译工作。“汇编器汇编器”(Assembler)软件就是具有这种功能的软件,
7、它能把用汇编语言书写的程序翻译成机器语言程序。 2022-6-5北京大学123、汇编语言n在这里,我们又看到了“程序”和“数据”两个概念的相对性:n对汇编器而言,它的输入“数据”是汇编语言程序,这种程序当作数据(是一系列的字符行)被加工处理。n汇编器产生的结果是机器代码程序(具有二进符号串的形式),同时它也是即将在计算机上运行的真正的程序。 2022-6-5北京大学133、汇编语言n从程序开发的角度来看,汇编语言与机器语言类似,仍然有许多缺点:n汇编语言的描述机制层次太低,其基本描述单位仍然是指令,这种方式与人们描述计算过程的需要之间差距太大。n汇编语言与计算机硬件的具体结构、指令系统联系过于
8、紧密,这种情况造成的后果是在一种计算机上开发的程序极难搬到另一种不同结构的计算机上使用。如果想这样做,不仅工作量将非常大(与重写差不多),而且很容易引出程序错误,修改也非常困难。 2022-6-5北京大学143、汇编语言样例程序1n计算表达式:135 22 1n常用寄存器AX, BX, CX 等可以用来保存中间结果;n计算过程:nMOV AX, 135nMOV BX, 22nADD AX, BXnSUB AX, 1nHLT 2022-6-5北京大学153、汇编语言样例程序2n计算从1累加到100得到的和nAX保存累加和,BX存放被加数,每加完一次增加1。通过一个循环来完成累加工作。n计算过程:
9、nMOV AX, 1nMOV BX, 2ncalc:nCMP BX, 101nJE stopnADD AX, BXnINC BXnJMP calcnstop:nHLT 2022-6-5北京大学163、汇编语言样例程序3n求一组数33,15,21,7,9,23,4,76,87,45中的最大值n总的思想是用一个存储单元保存到目前为止的最大值,将个数逐一取出与最大值比较,如果该数比当前最大值更大,则将更新当前最大值2022-6-5北京大学173、汇编语言n数组变量DATA存储给定的十个整数;nBX记录当前计算的是第几个数,;nCX记录数组中当前没有被计算过的数,初值为10,每计算一个数,它的值减,当
10、它为时,停止计算(循环计数);nAX是16位寄存器,可以分成两个8位寄存器AH和AL使用,每次总是将一个数复制到AL中去2022-6-5北京大学183、汇编语言nMOV AL, 0nMOV BX, 0nMOV CX, 10nnext:nCMP DATABX, ALnJL unchangednMOV AL, DATABXnunchanged:nINC BXnLOOP next /CX减1nHLTnDATA DB 33,15,21,7,9,23,4,76,87,452022-6-5北京大学194、高级语言及其程序的执行n高级语言高级语言在对计算过程的描述方面,完全脱离了简单的指令方式,采用类似于数
11、学公式的书写方式描述由一些数据计算出结果的过程,用一些更高级程序流程描述结构取代简单的跳转指令方式,以更好地满足书写程序的需要。n在高级程序语言中也使用“变量变量”这个概念,在这里“变量”代表一种容器,用于存放程序中处理的数据。变量对变量对应着存储器的若干字节(存储单元)应着存储器的若干字节(存储单元),但它们在存储器中但它们在存储器中的具体位置并不需要编程人员关心,的具体位置并不需要编程人员关心,这样就大大减轻了编程人员的负担。 2022-6-5北京大学204、高级语言及其程序的执行n高级语言中的变量采用字字符串形式的名字符串形式的名字,如 x、len、Max、Number 等。一方面名字可
12、以帮助人们掌握变量所代表的信息含义,在程序里只要用变量的名字就可以读写访问它的存储单元里的数据。定义确定了变量的大小。 xlenMaxNumber2022-6-5北京大学214、高级语言及其程序的执行n高级语言中用于描述计算的结构采用类似于数学中代数运算公式的形式,这种结构被称为“表达式表达式”。n程序中基本的动作单位被称为“语句语句”,不同的语句实现不同的功能。高级语言里最基本语句就是“赋值语句”(Assignment Statement),这种语句描述把通过计算得到的结果(值)赋给变量的动作。举例说:nX 100;nY = 2 * SIN(1.047);nZ = X * Y; 2022-6
13、-5北京大学224、高级语言及其程序的执行n用高级语言书写的程序不可能直接在计算机上执行,与汇编语言程序一样,需要将它转换成机器语言指令程序。在计算机上将高级语言书写的程序转换成机器语言指令程序,有两种基本方法:n编译(Compilation)方式n解释(Interpretation)方式2022-6-5北京大学234、高级语言及其程序的执行n编译方式编译方式是设法把高级语言程序(也称为“源程序源程序”)翻译转换成为可以由计算机直接执行的机器语言指令程序,经连接装配后转变为“可执行程序可执行程序”(Executable Program)。n人们实现了高级语言“编译器编译器”(Compiler)
14、完成这种翻译工作。编译器把高级语言程序看成是符合一定语法结构的符号串,对它进行加工变换。2022-6-5北京大学24 编译器对源程序的加工一般分为两个阶段:n 源程序首先被翻译成机器语言,这种翻译结果称为“目标码目标码”(object code),目标码构成的程序片段称为目标模块。n 第二步,这些目标模块被与其他一些基本模块(通用目标程序模块,由编译软件或其他人提供)连接在一起,最终形成“可执行程序可执行程序”(executable program),这样的程序就可以在计算机上实际运行了。n 第一个加工步骤称为“编译编译”(compiling),第二个步骤称为“连接连接”(linking)。
15、4、高级语言及其程序的执行2022-6-5北京大学25可执行的机器语言指令可执行的机器语言指令4、高级语言及其程序的执行n解释(解释(Interpretation)方式)方式由一种称为“解释器解释器”(Interpreter)软件实现。解释器在工作方式上与编译器不同,它不事先对源程序进行翻译,而是在执行时即时对源程序的语句进行分析和解释,实现源程序所描述的功能。 2022-6-5北京大学265、若干典型的高级语言的介绍n第一个高级程序语言是 FORTRAN 语言,它是由美国 IBM 公司的科技人员在五十年代开发出来的。n高级语言的开发成功是软件技术发展的一个重要里程碑。从那以后,人们设计并实现
16、了许多高级程序语言。n高级语言不但是程序开发的工具,也成为一种在人与人之间,在不同的计算机之间交流的工具。为了保证语言的通用性,国际标准化组织动用很多人力物力,对应用较广泛的一些语言提出了标准语言文本。这些工作进一步打通了交流渠道,推动了计算机应用的发展。 nFORTRAN、PASCAL、C / C+nCOBOL、BASIC、ADA、JAVA2022-6-5北京大学275.1、FORTRANnFORTRAN 的名字是由英文 FORmular TRANslation 缩写而成,意思是“公式翻译”。n在五十年代初期人们考虑的主要是如何有效地把数学公式描述的计算过程翻译成计算机程序,设计 FORTR
17、AN 语言的主要目的是为了描述科学计算的算法。nFORTRAN 语言大约在 1954 年设计,它的编译器在 1957 年完成。 后来这个语言还有很大的发展,成为在科学计算(数值计算)方面最主要的编程语言。2022-6-5北京大学285.1、FORTRAN 程序样例 FUNCTION FUNC1(N) ISUM = 0 DO 10 I=1, N ISUM = ISUM + I*I10 CONTINUE FUNC1 = ISUM RETURN END求求1N的平方和的平方和2022-6-5北京大学295.2、PASCALnPascal 语言是由著名瑞士计算机科学家 N. Wirth (1984年图
18、灵奖得主)设计的一种语言,1968 年提出后被全世界广泛接受,成为一种对计算机科学技术发展有巨大影响的语言。n这个语言的名字是为了纪念历史上著名的数学家和计算学科的先驱 Blaise Pascal(帕斯卡)。nPascal 语言把许多好的东西结合在一个很简练的语言里,被计算机教育界广泛采用。从七十年代末往后的很长一段时间里,Pascal 成为世界范围的计算机专业教学语言,多数教科书用 Pascal 给出程序例子,描述计算的算法。 2022-6-5北京大学305.2、PASCAL 程序样例function func1(N : integer) : integer;var SUM, I : int
19、eger;begin SUM = 0; for I := 1 to N do SUM := SUM + I * I; FUNC1 := SUM;end 求求1N的平方和的平方和2022-6-5北京大学315.3、C语言nC 是由美国贝尔实验室的 Dennis Retchie 在 1972 年设计开发的,开发目的是想成为一种编制“系统程序”的工具语言。nRetchie 等人首先用自己发明的 C 语言编写了 UNIX 操作系统。以后 C 语言逐步发展成为开发系统软件的主要语言。n许多常见的软件系统,例如,在中国使用很广泛的计算机辅助设计软件 AUTOCAD,数学软件系统 Mathematica 等
20、,以及许多语言编译系统本身,其软件系统的全部或者部分程序就是用 C 语言开发的。nC 语言已成为最重要的软件系统开发语言,由此可见 C 语言在计算机领域地位之重要。 2022-6-5北京大学325.3、C语言 样例程序int main ( ) int n; int i, sum = 0; scanf(“%d”, &n); for (i = 1; i = n; i+) sum += i*i; return sum; 求求1N的平方和的平方和2022-6-5北京大学335.4、C+语言nC+ 是在 C 语言基础上发展出的一种“面向对象”语言。它是由 Bjarne Stroustrup 在美国贝尔实
21、验室开发的(1983)。nC+ 是 C 语言的一个扩充,它一方面修正了 C 的一些弱点和不足,使用起来更方便可靠;另一方面,也是更重要的,这种语言以支持“面向对象面向对象”(Object-Oreinted,简称为OO)的程序设计方法为基本目标,提供了一套支持面向对象程序设计的机制,如“类”(class)、“对象”(object)等等。n面向对象的方法被认为是开发复杂软件系统的一种有效途径, OO 程序设计语言也已经被广泛接受。C+ 是目前使用最广泛的一种面向对象的程序设计语言。 2022-6-5北京大学345.5、COBOLnCOBOL(COmmon Business Oriented Lan
22、guage,通用事务处理语言)语言是在美国国防部推动下,由政府机构和工业界联合开发的一种语言,1960 年正式推出。n它的主要设计目标是用于编制商业企业管理信息系统的处理程序和各种软件。COBOL 语言采用一种类似英语的形式,对使用英语的人而言它的可读性较强,但这也带来程序罗嗦冗长的缺点。n数据记录数据记录(DATA RECORD)的概念是在COBOL语言中第一次引入的。nCOBOL语言曾经使用非常广泛, 七十年代曾有人统计过,当时程序语言使用的情况是:将近一半的程序(以字符数计算)是用 COBOL 语言书写的。但目前的情况是 COBOL 语言已经走向衰败。 2022-6-5北京大学355.6
23、、BASICnBASIC (Beginners All-purpose Symbolic Instruction Code,初学者的通用符号指令代码)语言可能仍然是世界上使用人数最多的语言。n这个语言是由 John Kemeny 和 Thomas Kurtz 于 1964 年开发的,基本上是 FORTRAN 语言的一个缩减版本。设计者当时希望开发一个简单的交互式语言,用于学习程序设计。n由于语言简单,BASIC 语言可以在很低档的微机上实现,因此得到广泛普及,流行到世界的每个角落。可以说,无论国内还是国外,BASIC 语言对于计算机的普及都发挥了重要的作用。 2022-6-5北京大学365.7
24、、ADAnAda 这个名字是纪念历史上第一位编程者Ada 夫人(生活在十九世纪中叶,是著名诗人拜伦的女儿),她被认为是第一个写程序的人,她曾经为计算机先驱者 Charles Babbage 未完成的计算机写程序。nAda 语言开发的目的是作为新一代的美国军用程序设计语言(1983-1995),作为所有与国防有关的程序和软件的统一语言标准。nAda的设计目标是针对那些装备在机电设备上和武器装备里的计算机控制、管理软件系统开发所使用的。这类系统现在被称为“嵌入式计算机系统”,是计算机的一个重要应用方面。Ada 语言的设计也特别注意对复杂的大型和巨型软件系统的支持。nAda语言自 1983 年作为标
25、准提出后,虽由美国国防部大力推行,也受到各国军方的重视,但不像预想的那样成功,其中一个原因是它太复杂。 2022-6-5北京大学375.7、ADA 样例程序FUNCTION func1 (n : IN INTEGER) RETURN INTEGER IS sum : INTEGER = 0; i : INTEGER;BEGIN FOR i IN 1.n loop sum := sum + i * i; end loop; return sum;END; 求求1N的平方和的平方和2022-6-5北京大学385.8、JAVAn1991年,SUN MicroSystem公司的Jame Gosling
26、、Bill Joe等人为在电视、控制烤箱等家用消费类电子产品上进行交互式操作而开发了一个名为Oak的软件,1995年正式推出并更名为Java。nWrite once, run everywhere.n目前网络程序开发的主要语言n特点n面向对象n便于网络开发n简单易学2022-6-5北京大学395.8、JAVA 样例程序public int func1(int n) int sum = 0; int i; for(i=1;i=0),要求出在第几年年末,这个点将被侵蚀。例如:给定X,Y坐标为(1.0,1.0),则输出:第1年年末。 x, yxy2022-6-5北京大学62p 房地产问题程序示例 3x, yxy2022-6-5北京大学63编程及调试过程n启动VCn创建新工程n编辑源代码n编译链接n运行:输入/输出2022-6-5北京大学64n学习安装VC6.0 (课后,有条件的同学)n使用 V6.0编程环境,进行编程。n完成编程网格练习n输入并运行程序示例1、2、3。上机练习(第1次上机)2022-6-5北京大学65p 程序设计语言概述p 不同的程序设计语言n 机器语言n 汇编语言n 高级语言(Fortran、C、C+、Java,)p VC6.0编程环境小结小结
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。