信息系统项目管理师_2024年软考学习应考交流_信息系统项目管理师考试

 找回密码
 马上注册

QQ登录

只需一步,快速开始

查看: 1546|回复: 0
打印 上一主题 下一主题

程序语言基础知识

[复制链接]

该用户从未签到

升级  30.8%

跳转到指定楼层
楼主
发表于 2006-3-3 08:56:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
<h3 style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">?<span lang="EN-US"><p></p></span></span></h3><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>主要知识点?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">了解程序语言的种类、特点和适用范围,掌握汇编、编译、解释系统的基本原理,以及程序语言的数据结构和控制结构。特别是编译系统形式的基础知识,应当下功夫掌握。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>程序语言概述?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">低级语言又称面向机器语言,它是特定的计算机系统所固有的语言。用机器语言编制出来的<span lang="EN-US">,</span>程序可读性很差,程序员难以修改和维护,于是人们考虑改用助记符号来表示机器指令中操作码和操作数,这就是汇编语言。汇编语言仍然是一种和计算机的机器语言十分接近的语言,它的书写格式在很大程度上取决于特定计算机的机器指令。它是一种低级语言,这对于人们抽象思维和交流十分不便。在这个基础上,高级语言就发展起来了。目前已有许多流行较广的高级语言,如<span lang="EN-US">Fortra</span>、<span lang="EN-US">Cobol</span>、<span lang="EN-US">ascalC</span>、和<span lang="EN-US">C++</span>等。这类语言与人们的自然语言比较接近,大大提高了程序设计的效率,便于人们进行交流。<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">计算机只能理解和执行机器语言。程序语言要在计算机上运行,必须有一个程序,使机器能够理解用程序语言书写的用户程序,这就是所谓的语言处理程序。它可以分为两大类:解释程序和翻译程序。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>程序语言基础知识?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">程序语言种类繁多,在应用上各有不同的侧重面。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">Fortran</span><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">是第一个被广泛用于科学计算的高级语言。?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">Algol</span><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">是另一个早期研制出来的高级语言。它有严格的文法规则,用巴科斯范式<span lang="EN-US">BNF</span>来描述语言的文法。<span lang="EN-US">Algol</span>是一个分程序结构的语言。?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">Cobal</span><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">是一种面向事务处理的高级语言。?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">ascal</span><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">语言提供的为数不多而又相当紧凑的机制使得这个语言具有相当强的表达能力。?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">C</span><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">是一种通用程序设计语言。<span lang="EN-US">C</span>作为一种较低级的语言,提供了指针和地址操作的功能。<span lang="EN-US">C</span>提供书写结构良好的程序所需的控制结构。<span lang="EN-US">C</span>与<span lang="EN-US">UNIX</span>操作系统紧密相关,<span lang="EN-US">UNIX</span>操作系统及其上的许多软件都是<span lang="EN-US">C</span>编写的。?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">还有几种特殊而又重要的程序语言:?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">(1)</font></span><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">面向对象的</font><font size="3"><span lang="EN-US">C++?<br/>C++</span>是在<span lang="EN-US">C</span>语言的基础上发展起来的与<span lang="EN-US">C</span>兼容的语言。主要增加了类功能,成为面向对象的程序设计语言。面向对象程序语言至少包含以下几个重要概念:?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">①对象是人们要进行研究的任何事物,它包括状态<span lang="EN-US">(</span>用数据来描述<span lang="EN-US">)</span>和操作<span lang="EN-US">(</span>用来改变对象的状态<span lang="EN-US">)</span>两方面。面对对象语言把状态和操作封装于对象体之中,并提供一种访问机制,使对象状态的具体表示和操作的具体实现都是隐蔽的。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">②类是面向对象语言必需提供的用户定义的数据的类型,它将具有相同状态、操作和访问机制的多个对象抽象成一个对象类。在定义了类以后,属于这种类的一个对象叫作类实例或类对象。<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">③继承是面向对象语言的另一个必备要素。类与类之间可以组成继承层次,一个类的定义<span lang="EN-US">(</span>称为子类<span lang="EN-US">)</span>可以定义在另一个已定义类<span lang="EN-US">(</span>称为父类<span lang="EN-US">)</span>的基础上。子类可以继在父类中的属性和</font><span lang="EN-US"><br/></span><font size="3">操作,也可以定义自己的属性和操作。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">(2)</span><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">逻辑型语言<span lang="EN-US">rolog?<p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">逻辑型语言是一类以形式逻辑为基础的语言。<span lang="EN-US">rolog</span>是这类语言的代表。<span lang="EN-US">rolog</span>建立在关系理论和一阶谓词理论基础上,具有和传统的命令型程序设计完全不同的风格。<span lang="EN-US">rolog</span>程序由一些称为事实和规则的<span lang="EN-US">Horn</span>子句组成。具有很强的推理功能,适用于书写自动定理证明、专家系统、自然语言理解等问题的程序。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">(3)</font></span><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">函数型语言</font><font size="3"><span lang="EN-US">LISP?<br/></span>函数型程序语言是一类以</font></span><font size="3"><span lang="ZH-TW" style="FONT-FAMILY: 宋体;">γ</span><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;">演算为基础的语言。<span lang="EN-US">LISP</span>是典型的函数型程序语言。函数是一种对应规则<span lang="EN-US">(</span>映射<span lang="EN-US">)</span>,它使其定义域中每一个值和值域中唯一的值相对应。?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">函数型程序设计语言的优点之一是对表达式中出现的任何函数都可以用其他函数来代替,只要这些函数调用产生相同的值。由于用函数程序设计语言书写的程序是利用自变量的值来计算函数的值的,它没有副作用。这些特点有助于程序模块化的实现。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>程序语言的数据类型?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">不同程序语言所提供的数据类型不尽相同。数据是程序操作的对象,具有名称、类型、存储类、作用域和生存期等属性,使用时要为它分配内存空间。数据名称由用户可通过标识符命名:类型说明数据占用内存的大小和存放形式,存储类说明数据在内存中的位置和生存期;作用域说明数据可以使用的范围;生存期说明数据占用内存的时间。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">数据从不同角度可分成不同的类别。按数据的作用域大小,可分为全局量和局部量;按生存期可分为自动生存期、静态生存期和动态生成期;按程序运行时数据的值是否能改变可分为常量和变量。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">数据按类型可分为<span lang="EN-US">4</span>种:<span lang="EN-US">Void</span>、标量<span lang="EN-US">(Scalar)</span>、函数和聚合<span lang="EN-US">(Aggregate)</span>。标量又可分为算术、枚举和指针;聚合类型可分为数组、结构体和共用体。?</font><span lang="EN-US"><br/></span><font size="3">数据按其构造方式又可分为基本类型和派生类型。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>程序语言的控制结构?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">程序语言中控制结构为将数据和数据上的运算组合成程序提供了基本框架。可计算问题的程序都可用顺序、选择和循环这<span lang="EN-US">3</span>种控制结构来描述。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>汇编程序基础知识?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">汇编语言是为特定的计算机中计算机系统设计的面向机器的语言。汇编语言中的语句可分成两大类:一类是与机器指令相对应的可执行汇编语句;另一类汇编语句称为汇编控制语句<span lang="EN-US">(</span>亦称伪指令<span lang="EN-US">)</span>。用汇编语言编写的源程序,要通过汇编程序将它民机器语言程序,才能被计算机理解执行。经过汇编程序的工作,可执行汇编语句被转化成对应的机器指令;而伪指令并不翻译成机器指令,它们的作用是控制汇编程序工作。伪指令主要用来告诉汇编程序做一些除了翻译机器指令外必须做的工作。?<span lang="EN-US"> <p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">汇编程序的功能是将汇编语言所编写的源程序翻译成由机器指令和其他信息组成的目标程序。汇编程序的基本工作包括两项:一是将每一条可执行汇编语句转换成对应的机器指令;二是处理源程序中出现的伪指令。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>解释程序基础知识?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">解释程序是一种语言处理程序,它直接执行源程序或源程序的内部形成。它并不产生目标程序,它是它和编译程序的主要区别。?<span lang="EN-US"> <p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">高级语言实现语言处理<span lang="EN-US">4</span>种方案:<span lang="EN-US">?<p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">第<span lang="EN-US">1</span>种,源程序被直接解释执行。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">第<span lang="EN-US">2</span>种,先将源程序翻译成高级中间代码,然后再扫描高级中间代码,对高级中间代码进行解释执行。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">第<span lang="EN-US">3</span>种,也是一种解释程序的实现方案,与第<span lang="EN-US">2</span>种方案的解释程序不同点在于,首先将源程序转化成和机器代码十分接近的低级中间代码,然后再解释执行这种低纸中间代码。这类系统具有良好的可移植性。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">第<span lang="EN-US">4</span>种,是普通的编译程序。在编译程序方案下,高级语言编写的源程序被最终翻译成机器语言表示的目标程序。这类系统的目标执行效率最高。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">一般说来,建立在翻译基础上的系统在执行速度上都优于建立在解释执行基础上的系统。翻译系统的缺点是其复杂性,这使得它的开发和维护费用都大。相反,解释系统比较简单,可称植性较好,适合于以交互方式执行程序,其缺点是执行速度慢。?<span lang="EN-US"> <p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">解释系统的结构可分成两部分。第<span lang="EN-US">1</span>部分包括通常用的词法分析程序以及语法和语义分析程序,它的作用仍是把源翻译成中间代码,中间代码的设计常采用逆波兰表示形式。第<span lang="EN-US">2</span>部分是解释部分,用来对第<span lang="EN-US">1</span>部分所产生的中间代码进行解释执行,完成真正的解释工作。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><font size="3"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><br/>编译程序基础知识?<span lang="EN-US"><p></p></span></span></font></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">编译程序的功能是把某高级语言书写的源程序翻译成与之等价的低级语言<span lang="EN-US">(</span>汇编语言或机器语言<span lang="EN-US">)</span>的目标程序。其过程很复杂,可分成<span lang="EN-US">6</span>个阶段;?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">①词法分析阶段是编译过程的第<span lang="EN-US">1</span>个阶段。词法分析所依据的是语言的词法规则,即描述单词结构的规则。词法规则可用<span lang="EN-US">3</span>型文法<span lang="EN-US">(</span>正规文法<span lang="EN-US">)</span>或正规式来描述,有限自动机能识别正规文法所定义的语言和正规式所表示的集合。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">②语法分析阶段。在词法分析的基础上将单词符合序列分解成各类语法单位。语法分析所依据的是语言的语法规则,即描述程序结构的规则。?</font><span lang="EN-US"><br/></span><font size="3">词法分析和语法分析本质上都是对源程序的结构进行分析。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">③语义分析阶段是审查源程序有无语义错误,为代码生成阶段收集类型信息。比如语义分析的一个工作是进行类型审查,审查每个算符是否具有语言规范允许的运算对象。?<span lang="EN-US"> <p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">④中间代码生成阶段。在进行了上述的语法分析和语义分析阶段工作之后,有的编译程序将源程序变成一种内部表示形式,这种内部表示形式叫做中间语言或中间代码。所谓<span lang="EN-US">"</span>中间代码<span lang="EN-US">"</span>是一种简单、含义明确的记号系统。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">语义分析和中间代码生成所依据的是语言的语义规则。一般采用语法指导翻译规则和中间代码生成规则。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">⑤代码优化阶段是对前阶段产生的中间代码进行变换或进行改造,目的是使生成的目标代码更为高级,即省时间和省空间。?<span lang="EN-US"><p></p></span></font></span></p><p style="MARGIN: 0cm 0cm 0pt;"><span style="FONT-FAMILY: 宋体; mso-fareast-language: ZH-CN;"><font size="3">⑥目标代码生成阶段。是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。这是编译的最后阶段,它的工作与硬件系统的结构和指令的含义有关。<span lang="EN-US"> <p></p></span></font></span></p><span style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-font-kerning: 1.0pt; mso-fareast-language: ZH-CN; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-bidi-language: AR-SA;">编译过程的<span lang="EN-US">6</span>个阶段的任务,再加上表格管理和出错处理的工作可分别由几个模块或程序完成,它们分别称作词法分析程序、语法分析程序、语义分析程序、中间代码生成程序、代码优化程序、目标代码生成程序、表格管理程序和出错处理程序。</span>
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 顶 踩
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

小黑屋|手机版|Archiver|信息系统项目管理师_软考交流平台. ( 鄂ICP备11002878号-1  公安备案号:42011102001150

GMT+8, 2025-7-5 18:25

Software by Discuz! X3.2

© 2001-2013 SKIN BY DSVUE

快速回复 返回顶部 返回列表