计算机软件技术基础2-1程序设计语言

上传人:宝路 文档编号:48107148 上传时间:2018-07-09 格式:PPT 页数:62 大小:581.07KB
返回 下载 相关 举报
计算机软件技术基础2-1程序设计语言_第1页
第1页 / 共62页
计算机软件技术基础2-1程序设计语言_第2页
第2页 / 共62页
计算机软件技术基础2-1程序设计语言_第3页
第3页 / 共62页
计算机软件技术基础2-1程序设计语言_第4页
第4页 / 共62页
计算机软件技术基础2-1程序设计语言_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《计算机软件技术基础2-1程序设计语言》由会员分享,可在线阅读,更多相关《计算机软件技术基础2-1程序设计语言(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 高级程序设计语言概述 oo程序的表达手段是程序设计语

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

4、 MOV DS,AX MOV AL,XX CMP AL,0 JGE BIGR MOV AL,0FFH MOV YY,AL HLT JE EQUT BIGR: MOVAL,01H MOVYY,AL HLT EQUT:MOVYY,AL HLT CODE ENDS ENDSTART ;数据段开始 ;X值存入XX单元 ;YY单元留作存函数Y的值 ;以上是数据段 ;代码段开始 ;CS段中装入代码,DS段中装入数据 ;执行开始 ; ;将XX中的值转移到运算器AL ;将运算器AL中的值与0比较 ;如果大于等于0就跳BIGR ;X0) y=1else if(x=0) y=0else y=-1cout x,y;

5、 用类用类VCVC编写的程序编写的程序 VCVC程序更接近数学公式。与机器的运算器、寄存器和内存地址无关。程序更接近数学公式。与机器的运算器、寄存器和内存地址无关。 高级语言是面向计算过程的,与解题的步骤有关。高级语言是面向计算过程的,与解题的步骤有关。 4合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.22.2 高级程序设计语言实现计算的方式高级程序设计语言实现计算的方式o机器只知道根据机器语言指令来执行程序,高级 语言程序必须通过翻译变成机器语言程序,这个 工作一般由翻译程序自动完成的。把一种语言翻 译成另一种语言的程序叫做翻译器(如C+翻成C )。把高级语言程序翻译

6、成机器语言程序有两种 做法:编译和解释,相应的翻译程序分别叫做编 译器和解释器。5合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.2.12.2.1 编译器工作原理编译器工作原理oo第一步第一步 词法分析。词法分析。一个高级语言程序是编译(程序)器的输入。编译器逐行扫描 程序,首先是识别符号串:关键字、字面量、标识符(变量名、数据名)、运算 符、注释行、特殊符号(续行、语句结束、数组等)这六类符号,分别归类等待 处理。这个过程就是词法分析(Lexical Analysis)。oo第二步作语法分析第二步作语法分析(Syntax Analysis)。这时一个语句就作为一串记号(

7、token )流由语法分析器处理。按照语言的文法检查每个语法分析树,判定是否为合乎 语法的句子。如果是合法句子就以内部格式把这个语法树保存起来,否则报错。 这样直至检查完整个程序。oo第三步做语义分析第三步做语义分析(Semantic Analysis )。对各句子的语法树做检查:运算符两 边类型是否相兼容;作哪些类型转换(例如实数向整数赋值要取整);是否控制 转移到不该去的地方;是否有重名或者使语义含糊的记号等。如果有错转到出错 处理,否则生成中间代码。6合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所oo第四步第四步 中间代码生成中间代码生成中间代码是向目标码即机器语言的

8、代码过渡的一种编 码,其形式尽可能和机器的汇编语言相似,以便下一步的代码生成。中间码 不涉及具体机器的操作码和地址码。采用中间码的好处是可以在中间码上作 优化。oo第五步第五步 优化。优化。对中间码程序做局部优化和全局优化,使运行更快,占用空间 最小。局部优化是合并冗余操作、简化计算,例如x : 0;可用一条“清零 ”指令替换全局优化包括改进循环、减少调用次数和快速地址算法等。oo第六步第六步 代码生成。代码生成。由代码生成器生成目标机器的目标码(或汇编)程序,要 作数据分段、选定寄存器等工作,然后生成机器可执行的代码。oo第七步第七步 连接加载:连接加载:高级语言源程序经编译后得到目标码程序

9、,但它还不能立 即装入机器执行,一般情况下它是不够完整的。如程序中用到abs ( ) , sin ( )这些函数,可直接调用,不需求绝对值、求正弦的程序,已作为目标码存 放在机器中。编译后得到的目标模块还需进行连接连接程序(即Linker) 找出需要连接的外部模块并到模块库中找出被调用的模块,调入内存并连接 到目标模块上,形成可执行程序。把执行程序加载(Loading)到内存中合适 的位置,即可执行。7合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.2.22.2.2高级语言程序的解释执行高级语言程序的解释执行 oo对高级语言源程序采取解释执行的方式解释执行需要有一个解释器

10、(对高级语言源程序采取解释执行的方式解释执行需要有一个解释器( Interpreter ) Interpreter ) ,它将源代码逐句读入。先作词法分析,建立内部符号表;再,它将源代码逐句读入。先作词法分析,建立内部符号表;再 作语法和语义分析,即以中间码建立语法树,并作类型检查。完成检查后把作语法和语义分析,即以中间码建立语法树,并作类型检查。完成检查后把 每一语句压入执行堆栈,压入后立即解释执行。每一语句压入执行堆栈,压入后立即解释执行。oo操作系统的命令、操作系统的命令、BASIC BASIC 、VB VB 、Prolog Prolog 、LISP LISP 、Java Java 、J

11、ava Script Java Script 、 Post script Post script 都是解释执行的,各种应用软件提供的界面语言(一般都很小)都是解释执行的,各种应用软件提供的界面语言(一般都很小) 多半是解释执行的。解释器不大,工作空间也不大,能根据程序执行情况决多半是解释执行的。解释器不大,工作空间也不大,能根据程序执行情况决 定下一步做什么是它的优点,解释执行难于优化、效率较低,是该语言的缺定下一步做什么是它的优点,解释执行难于优化、效率较低,是该语言的缺 点。点。编译型语言由于可进行优化(有的编译器可作多次优化),目标码效率很编译型语言由于可进行优化(有的编译器可作多次优化

12、),目标码效率很 高,是目前软件实现的主要方式。语言编写的源程序,都需要进行编译、高,是目前软件实现的主要方式。语言编写的源程序,都需要进行编译、 连接,才能生成可执行程序。编译时花费时间但程序的执行效率提高。连接,才能生成可执行程序。编译时花费时间但程序的执行效率提高。8合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2 . 3 2 . 3 高级程序设计语言的基本特征高级程序设计语言的基本特征 高级程序设计语言从高级程序设计语言从20 20 世纪世纪50 50 年代以来己有一千多种,随着软件技年代以来己有一千多种,随着软件技 术的发展不断地出现新版本,每一个新版本都增加新的

13、机制。下面介绍术的发展不断地出现新版本,每一个新版本都增加新的机制。下面介绍 程序设计语言最基本的特征。程序设计语言最基本的特征。 2 .3 .1 2 .3 .1 变量、表达式、赋值变量、表达式、赋值用高级语言编程是为了对数据实施计算,将输入的数据经过表达式的计算得到输出数据用高级语言编程是为了对数据实施计算,将输入的数据经过表达式的计算得到输出数据 。参与计算的数据、结果在编程时是不存在的。只能用变量表示它。如己知三角形三边。参与计算的数据、结果在编程时是不存在的。只能用变量表示它。如己知三角形三边 长度求而积:长度求而积:s:= 0.5*( a +b+c ) s:= 0.5*( a +b+

14、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 是平方根是平方根 函数,它们构成了表达式。函数,它们构成了表达式。“:=”:=”是赋值号。是赋值号。表达式是常量、变量、函数调用或者由它们和运算符组成的序列。表达式中的变量都是表达式是常量、变量、函数调用或者由它们和运算符组成

15、的序列。表达式中的变量都是 有值的赋值号左端的变量在写程序时可以没值,即使有值,计算执行之后也会被赋成有值的赋值号左端的变量在写程序时可以没值,即使有值,计算执行之后也会被赋成 新值。新值。用变量写程序的好处是通用,以上语句不仅可以算出三边长为用变量写程序的好处是通用,以上语句不仅可以算出三边长为3 3 、4 4 、5 5 的三角形面积的三角形面积 ,任何三角形面积都可以算出(只要输入,任何三角形面积都可以算出(只要输入a a、b b 、c c的正确值即可)。一个计算只要有了的正确值即可)。一个计算只要有了 明确的数学表达式(也就是该计算的数学模型)编程是比较容易的明确的数学表达式(也就是该计

16、算的数学模型)编程是比较容易的程序中的一条语句对应着计算机的一条命令(用一条或多条指令来实现)。一个赋值语程序中的一条语句对应着计算机的一条命令(用一条或多条指令来实现)。一个赋值语 句就是一条赋值命令。句就是一条赋值命令。9合肥工业大学合肥工业大学 计算机信息学院软件所计算机信息学院软件所2.3.2 2.3.2 程序的控制结构程序的控制结构程序约定自上向下、自左向右地执行,即顺序地执行语句(或表达式)程序约定自上向下、自左向右地执行,即顺序地执行语句(或表达式) 。但不仅限于此,计算机之所以能自动计算,它能通过判断将程序转到应该。但不仅限于此,计算机之所以能自动计算,它能通过判断将程序转到应该 执行的地方。人们就是通过巧妙地安排控制转移,使计算机实施算法。执行的地方。人们就是通过巧妙地安排控制转移,使计算机实施算法。1.1.最基本的程序控制语句最基本的

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号