计算机软件技术基础2-1程序设计语言.ppt
《计算机软件技术基础2-1程序设计语言.ppt》由会员分享,可在线阅读,更多相关《计算机软件技术基础2-1程序设计语言.ppt(62页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所第二章 程序设计语言 2.1 2.1 高级程序设计语言概述高级程序设计语言概述 2.2 2.2 高级程序设计语言实现计算的方式高级程序设计语言实现计算的方式2.3 2.3 高级程序设计语言的基本特征高级程序设计语言的基本特征 2.4 2.4 面向对象程序设计语言的基本特征面向对象程序设计语言的基本特征2.52.5 网络计算机时代的编程语言网络计算机时代的编程语言2.6 2.6 小结小结1合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.1 高级程序设计语言概述 程序的表达手段是程序设计语言。程序设计语言是人程
2、序的表达手段是程序设计语言。程序设计语言是人-机交换信息的媒体;是机交换信息的媒体;是表达软件(程序)的工具;是人表达软件(程序)的工具;是人-人交换信息的工具。软件的开发和使用,协人交换信息的工具。软件的开发和使用,协作开发、使用修改都要读程序,程序设计语言必须规范化和标准化。作开发、使用修改都要读程序,程序设计语言必须规范化和标准化。操作码操作数操作数备注000001001010000100101110二进制指令04HA1H2EH十六进制指令ADDAX2EH汇编指令最初的语言是机器语言。机器语言在内存中开辟两个区:数据区存放数据;指最初的语言是机器语言。机器语言在内存中开辟两个区:数据区存
3、放数据;指令区存放指令。令区存放指令。CPUCPU从指令区第一个地址开始逐条取出指令并释义执行,直到从指令区第一个地址开始逐条取出指令并释义执行,直到所有的指令都被执行完。一般的指令格式如下:所有的指令都被执行完。一般的指令格式如下:操作码 操作数 操作数表中列出了三种类型的指令:表中列出了三种类型的指令:2合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所 DATASEGMENT XX DB X YY DB?DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,XX C
4、MP AL,0 JGE BIGR MOV AL,0FFH MOV YY,AL HLT JE EQUT BIGR:MOVAL,01H MOVYY,AL HLTEQUT:MOVYY,AL HLTCODE ENDS ENDSTART;数据段开始;X值存入XX单元;YY单元留作存函数Y的值;以上是数据段;代码段开始;CS段中装入代码,DS段中装入数据;执行开始;将XX中的值转移到运算器AL;将运算器AL中的值与0比较;如果大于等于0就跳BIGR;X0)y=1 else if(x=0)y=0 else y=-1 cout x,y;用类用类VCVC编写的程序编写的程序 VCVC程序更接近数学公式。与机器的
5、运算器、寄存器和内存地址无关。程序更接近数学公式。与机器的运算器、寄存器和内存地址无关。高级语言是面向计算过程的,与解题的步骤有关。高级语言是面向计算过程的,与解题的步骤有关。4合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.2 高级程序设计语言实现计算的方式机器只知道根据机器语言指令来执行程序,高级语言程序必须通过翻译变成机器语言程序,这个工作一般由翻译程序自动完成的。把一种语言翻译成另一种语言的程序叫做翻译器(如C+翻成C)。把高级语言程序翻译成机器语言程序有两种做法:编译和解释,相应的翻译程序分别叫做编译器和解释器。5合肥工业大学合肥工业大学 计算机信息学院软件所计
6、算机信息学院软件所2.2.12.2.1 编译器工作原理编译器工作原理第一步第一步 词法分析。词法分析。一个高级语言程序是编译(程序)器的输入。编译器逐行扫描程序,首先是识别符号串:关键字、字面量、标识符(变量名、数据名)、运算符、注释行、特殊符号(续行、语句结束、数组等)这六类符号,分别归类等待处理。这个过程就是词法分析(Lexical Analysis)。第二步作语法分析第二步作语法分析(Syntax Analysis)。这时一个语句就作为一串记号(token)流由语法分析器处理。按照语言的文法检查每个语法分析树,判定是否为合乎语法的句子。如果是合法句子就以内部格式把这个语法树保存起来,否则
7、报错。这样直至检查完整个程序。第三步做语义分析第三步做语义分析(Semantic Analysis)。对各句子的语法树做检查:运算符两边类型是否相兼容;作哪些类型转换(例如实数向整数赋值要取整);是否控制转移到不该去的地方;是否有重名或者使语义含糊的记号等。如果有错转到出错处理,否则生成中间代码。6合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所第四步第四步 中间代码生成中间代码生成中间代码是向目标码即机器语言的代码过渡的一种编码,其形式尽可能和机器的汇编语言相似,以便下一步的代码生成。中间码不涉及具体机器的操作码和地址码。采用中间码的好处是可以在中间码上作优化。第五步第五步
8、 优化。优化。对中间码程序做局部优化和全局优化,使运行更快,占用空间最小。局部优化是合并冗余操作、简化计算,例如x:0;可用一条“清零”指令替换全局优化包括改进循环、减少调用次数和快速地址算法等。第六步第六步 代码生成。代码生成。由代码生成器生成目标机器的目标码(或汇编)程序,要作数据分段、选定寄存器等工作,然后生成机器可执行的代码。第七步第七步 连接加载:连接加载:高级语言源程序经编译后得到目标码程序,但它还不能立即装入机器执行,一般情况下它是不够完整的。如程序中用到abs(),sin()这些函数,可直接调用,不需求绝对值、求正弦的程序,已作为目标码存放在机器中。编译后得到的目标模块还需进行
9、连接连接程序(即Linker)找出需要连接的外部模块并到模块库中找出被调用的模块,调入内存并连接到目标模块上,形成可执行程序。把执行程序加载(Loading)到内存中合适的位置,即可执行。7合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所高级语言程序的解释执行高级语言程序的解释执行 对高级语言源程序采取解释执行的方式解释执行需要有一个解释器对高级语言源程序采取解释执行的方式解释执行需要有一个解释器(Interpreter)Interpreter),它将源代码逐句读入。先作词法分析,建立内部符号表;,它将源代码逐句读入。先作词法分析,建立内部符号表;再作语法和语义分析,即以中间
10、码建立语法树,并作类型检查。完成检查后把再作语法和语义分析,即以中间码建立语法树,并作类型检查。完成检查后把每一语句压入执行堆栈,压入后立即解释执行。每一语句压入执行堆栈,压入后立即解释执行。操作系统的命令、操作系统的命令、BASIC BASIC、VB VB、Prolog Prolog、LISP LISP、Java Java、Java Script Java Script、Post script Post script 都是解释执行的,各种应用软件提供的界面语言(一般都很小)都是解释执行的,各种应用软件提供的界面语言(一般都很小)多半是解释执行的。解释器不大,工作空间也不大,能根据程序执行情况
11、决定多半是解释执行的。解释器不大,工作空间也不大,能根据程序执行情况决定下一步做什么是它的优点,解释执行难于优化、效率较低,是该语言的缺点。下一步做什么是它的优点,解释执行难于优化、效率较低,是该语言的缺点。编译型语言由于可进行优化(有的编译器可作多次优化),目标码效率很编译型语言由于可进行优化(有的编译器可作多次优化),目标码效率很高,是目前软件实现的主要方式。语言编写的源程序,都需要进行编译、高,是目前软件实现的主要方式。语言编写的源程序,都需要进行编译、连接,才能生成可执行程序。编译时花费时间但程序的执行效率提高。连接,才能生成可执行程序。编译时花费时间但程序的执行效率提高。8合肥工业大
12、学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.3 高级程序设计语言的基本特征 高级程序设计语言从高级程序设计语言从20 20 世纪世纪50 50 年代以来己有一千多种,随着软件技年代以来己有一千多种,随着软件技术的发展不断地出现新版本,每一个新版本都增加新的机制。下面介绍术的发展不断地出现新版本,每一个新版本都增加新的机制。下面介绍程序设计语言最基本的特征。程序设计语言最基本的特征。2.3.1 2.3.1 变量、表达式、赋值变量、表达式、赋值用高级语言编程是为了对数据实施计算,将输入的数据经过表达式的计算得到输出数据。用高级语言编程是为了对数据实施计算,将输入的数据经过表达式的计
13、算得到输出数据。参与计算的数据、结果在编程时是不存在的。只能用变量表示它。如己知三角形三边长参与计算的数据、结果在编程时是不存在的。只能用变量表示它。如己知三角形三边长度求而积:度求而积:s:=0.5*(a+b+c)s:=0.5*(a+b+c);area:=area:=sqrt sqrt(s*(s-a)*(s-b)*(s-c)(s*(s-a)*(s-b)*(s-c);其中其中a,b,c,s,area a,b,c,s,area 是变量,是变量,0.5 0.5 是常量,是常量,“+”+”和和“*”“*”是运算符,是运算符,sqrt sqrt 是平方根是平方根函数,它们构成了表达式。函数,它们构成了
14、表达式。“:=”:=”是赋值号。是赋值号。表达式是常量、变量、函数调用或者由它们和运算符组成的序列。表达式中的变量都是表达式是常量、变量、函数调用或者由它们和运算符组成的序列。表达式中的变量都是有值的赋值号左端的变量在写程序时可以没值,即使有值,计算执行之后也会被赋成有值的赋值号左端的变量在写程序时可以没值,即使有值,计算执行之后也会被赋成新值。新值。用变量写程序的好处是通用,以上语句不仅可以算出三边长为用变量写程序的好处是通用,以上语句不仅可以算出三边长为3 3、4 4、5 5 的三角形面积,的三角形面积,任何三角形面积都可以算出(只要输入任何三角形面积都可以算出(只要输入a a、b b、c
15、 c的正确值即可)。一个计算只要有了明的正确值即可)。一个计算只要有了明确的数学表达式(也就是该计算的数学模型)编程是比较容易的确的数学表达式(也就是该计算的数学模型)编程是比较容易的程序中的一条语句对应着计算机的一条命令(用一条或多条指令来实现)。一个赋值语程序中的一条语句对应着计算机的一条命令(用一条或多条指令来实现)。一个赋值语句就是一条赋值命令。句就是一条赋值命令。9合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.3.2 2.3.2 程序的控制结构程序的控制结构 程序约定自上向下、自左向右地执行,即顺序地执行语句(或表达式)。程序约定自上向下、自左向右地执行,即顺
16、序地执行语句(或表达式)。但不仅限于此,计算机之所以能自动计算,它能通过判断将程序转到应该执但不仅限于此,计算机之所以能自动计算,它能通过判断将程序转到应该执行的地方。人们就是通过巧妙地安排控制转移,使计算机实施算法。行的地方。人们就是通过巧妙地安排控制转移,使计算机实施算法。1.1.最基本的程序控制语句最基本的程序控制语句无条件转移语句:在汇编语言时代就有了Jump 指令使执行跳转,对应的高级语言语句是无条件转移语句:goto loop;其中loop 是跳转到的语句的标号(数字或标识符)。条件转移语句:加上条件判断子句if(E)就是条件转移语句:If(E)goto loop;其中E 是条件(
17、布尔)表达式,求值结果是真、假值。如果为真转移到标号为l 的语句,为假则按顺序执行下一条语句。有了这两个语句再加上简单语句(赋值、调用、输入有了这两个语句再加上简单语句(赋值、调用、输入/出),就可以实现程序出),就可以实现程序的任何执行控制。的任何执行控制。10合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.2.结构化程序的控制结构结构化程序的控制结构 goto goto 语句相互交织使设计出的程序控制结构成为不可分解的一个整体。尽管语句相互交织使设计出的程序控制结构成为不可分解的一个整体。尽管算法设计精巧,但牵一发而动全身。程序一大,修改很困难。算法设计精巧,但牵一发
18、而动全身。程序一大,修改很困难。显式使用显式使用gotogoto 语句使得任何写错转移语句标号的小错误都会导致灭项之灾。语句使得任何写错转移语句标号的小错误都会导致灭项之灾。使程序控制逻辑是结构化的,显式使用使程序控制逻辑是结构化的,显式使用gotogoto 语句,程序依然难于阅读。语句,程序依然难于阅读。早期的编程语言是语句级的用简单准语句集合加早期的编程语言是语句级的用简单准语句集合加goto goto 构成复杂的程构成复杂的程序控制。然而显式地使用序控制。然而显式地使用goto goto 语句是极其危险的。这是因为:语句是极其危险的。这是因为:三种结构化的基本控制结构11合肥工业大学合肥
19、工业大学 计算机信息学院软件所计算机信息学院软件所出了错易于找出错误并修改出了错易于找出错误并修改易阅读导致易扩充、修改,大程序易于分析。易阅读导致易扩充、修改,大程序易于分析。程序控制结构清晰,是它用关键字控制程序块(语句组)。任何程序控制结构清晰,是它用关键字控制程序块(语句组)。任何控制转移不能进入这些控制块,除非入口。块中转出也不能直接控制转移不能进入这些控制块,除非入口。块中转出也不能直接转到程序其他处,只能转到出口。在出转到程序其他处,只能转到出口。在出/入口增加检查语句就使得入口增加检查语句就使得程序错误真正局部化。程序错误真正局部化。程序块级(语句组)控制采用语句括号使程序逻辑
20、与表示法结构程序块级(语句组)控制采用语句括号使程序逻辑与表示法结构完全一致。可直接编程。程序语言结构化以后,编程对流程图的完全一致。可直接编程。程序语言结构化以后,编程对流程图的依赖就很少了。依赖就很少了。NassiNassi-SchneldermannSchneldermann提出了结构化流程图(主要取消流线及箭提出了结构化流程图(主要取消流线及箭头),因没有直接用类似结构化编程语言的伪代码方便而没有流头),因没有直接用类似结构化编程语言的伪代码方便而没有流行起来。行起来。结构化控制结构的优点:结构化控制结构的优点:12合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所无假
21、块条件分支和嵌套if语句if(E)then ST if(E)then ST endifendifif(E1)then S1 elseifE2 then S2else if(E1)then S1 elseifE2 then S2else SmSm endifendif 无假块条件语句是正规条件语句的简化,很常用。嵌套语句在否定部分用关键无假块条件语句是正规条件语句的简化,很常用。嵌套语句在否定部分用关键字字elseifelseif,有的语言用,有的语言用elsifelsif。只有当所有条件均有。只有当所有条件均有假假时才执行时才执行elseelse块。逐块。逐个检查个检查mm个条件效率很低,有时
22、似无必要。个条件效率很低,有时似无必要。3.3.结构化编程语言的其他控制结构结构化编程语言的其他控制结构 结构化程序只需三种基本结构重复和嵌套。但为了方便编程,第三结构化程序只需三种基本结构重复和嵌套。但为了方便编程,第三代语言派生出许多结构。以下简略说明。代语言派生出许多结构。以下简略说明。(1)条件分支13合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所casecase语句语句 也叫分情形语句。根据条件变量也叫分情形语句。根据条件变量Z Z的值单独执行的值单独执行S1S1,S2S2,SnSn,执行完执行完SiSi自动跳自动跳到到endcaseendcase(C C语言例外
23、,它要加上语言例外,它要加上breakbreak才跳。否则执行才跳。否则执行SiSi+1+1到到SnSn)。)。casecase语句流程图语句流程图 14合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所(2 2)循环结构)循环结构do-until和for结构 do-untildo-until语句形式是语句形式是do S until Edo S until E,先执行再判断,若,先执行再判断,若E E为为真真不再循不再循环。正好和先判断再执行的环。正好和先判断再执行的do-whiledo-while语句是相反的。将它改成语句是相反的。将它改成do-do-whilewhile结构
24、十分容易。条件取反,先执行一次结构十分容易。条件取反,先执行一次S S块。块。do-untildo-until流程图流程图 15合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所for-dofor-do语句语句 以控制变量增减值或枚举集合值计数的循环。for-do是do-while的另一种变体结构,其书写格式有多种变体。for-dofor-do流程图流程图16合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所(3 3)顺序控制)顺序控制gotogoto loop loop多数语言作为历史遗留保留,不提倡使用,多数语言作为历史遗留保留,不提倡使用,JavaJava
25、取消取消了该语句。了该语句。breakbreakC/C+C/C+中用于跳出块到中用于跳出块到endcaseendcase(switch)(switch)。continuecontinue仅用于循环,立即结束本次循环,作下次循环。仅用于循环,立即结束本次循环,作下次循环。exitexit立即跳到末端出口。立即跳到末端出口。abortabort(STOPSTOP)强行停止本程序。强行停止本程序。delay XXdelay XX延迟延迟XXXX时间后继续执行。时间后继续执行。raise-exceptionraise-exception引发异常,处理异常。执行了引发异常,处理异常。执行了raisera
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件 技术 基础 程序设计语言
限制150内