软考-第2章 程序设计语言基础-慧考版
2026/9/11 22:04:27 网站建设 项目流程

编译程序基本原理

对象A可以给对象B发送消息,那么表明对象A可以调用对象B的方法,那么对象A可以看见对象B。

高级语言源程序中的错误分为两类:
语法错误和语义错误,其中语义错误又可分为静态语义错误和动态语义错误。
语法错误是指语言结构上的错误,
静态语义错误是指编译时就能发现的程序含义上的错误,
动态语义错误只有在程序运行时才能表现出来。

编译程序中语法分析器接受以单词为单位的输入,并产生有关信息供以后各阶段使用。算符优先法、LR分析法和递归下降法是几种常见的语法分析技术。LR分析法主要有SLR(1)、LR(0)、LR(1)和LALR(1)等4种,其中LR(1)的分析能力最强,LR(0)的分析能力最弱。

静态检查的阐述:“编译器必须检查源程序是否符合源语言规定的语法和语义要求。”由此看来,静态检查其实就是语义分析了。

各阶段处理错误总结
(1) 词法分析阶段处理的错误:非法字符、单词拼写错误等
(2) 语法分析阶段处理的错误:标点符号错误、表达式中缺少操作数、括号不匹配等有关语言结构上的错误
(3)静态语义分析阶段处理的错误:运算符与运算对象类型不合法等错误
(4)目标代码生成阶段(执行阶段)处理的错误:动态语义错误,包括陷入死循环、变量取零时做除数、引用数组元素下标越界等错误。

所谓静态绑定是指在程序编译过程中,把函数(方法或者过程)调用与响应调用所需的代码结合的过程。
动态绑定是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用相应的方法。

解释程序也称为解释器,它或者直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行;
而编译程序(编译器)则是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。
这两种语言处理程序的根本区别是:
在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;
而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。
简单来说,在解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。

在对源程序进行编译的过程中,常生成与源程序等价的中间代码:以利于进行优化,
常见的中间代码有后缀式、三地址码和树等。

常用的中间代码的表达形式有语法树、后缀式、三地址码等。

符号表的作用是记录源程序中各个符号的必要信息,以辅助语义的正确性的检查和代码生成,在编译过程中需要对符号表进行快速有效的查找、插入、修改和删除等操作。符号表的建立可以始于词法分析阶段,也可以放到语法分析和语义分析阶段,但符号表的使用有时会延续到目标代码的运行阶段。编译过程中,在确认源程序的语法和语义之后,就可对其进行翻译,同时改变源程序的内部表示。对于声明语句,需要记录所遇到的符号的信息,因此应进行符号表的填查工作。对于可执行语句,需要翻译成中间代码或目标代码。

程序设计语言基本成分

词法分析遵循的是构词规则,语法分析遵循的是语法规则,中间代码生成遵循的是语义规则,并且语义规则可以定义一个程序的意义。

编译器的工作方式及特点是:先翻译后执行,用户程序运行效率高但可移植性差。
解释器的工作方式及特点是:边翻译边执行,用户程序运行效率低但可移植性好。

程序设计语言基本概念

C/C++

编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行 文件格式的要求链接生成可执行程序。
源代码(.c/.c++)-->预处理(.i)-->编译-->汇编(.s / .o)-->链接-->可执行 文件

Java

Java 关键字 this 只能用于方法方法体内。当一个对象创建后,Java 虚拟机(JVM)就会给这个对象分配一个引用自身的指针,这个指针的名字就是 this。 因此,this 只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能 出现 this,这在“Java 关键字 static、final 使用总结”一文中给出了明确解释。 并且 this 只和特定的对象关联,而不和类关联,同一个类的不同对象有不同的 this。 主要用于以下方面:
1.this 表示调用者(对象),在方法内使用成员变量时候。
2.调用用类中的其他方法(编译器自动添加)。
3.用构造器调用其他构造器。

Python

Python属于解释型而非编译型程序设计语言。

列表是个有序的数据集合,可以随时添加或者删除元素。
元组与列表类似,但元组里面的元素不可变。
集合里面的元素是无序的。
字符串是由独立的字符组成,字符类型不可变。

Matplotlib是Python的绘图库,可以绘制直方图、条形图、散点图等图形。
TensorFlow Matplotlib PyTorch Keras

脚本语言是为了缩短传统的编写—编译—链接—运行过程而创建的计算机编程语言。此命名起源于一个脚本“screenplay”,每次运行都会使对话框逐字重复。早期的脚本语言经常被称为批处理语言或工作控制语言,一个脚本通常是解释运行而非编译。脚本语言也能实现函数定义和调用,例如早期的BASIC。

在Python3中对结构化异常的处理语法为:
try:
可能发生异常的程序块
raise Exception1("主动抛出的异常")
except Exception1:
指定一个异常的处理
except (Exception2,Exception3,...,Exceptionn):
指定多个异常的处理
except:
所有其他异常的处理
else:
没有出现异常时的处理
finally:
无论是否出现异常都要进行的处理
但是没有try catch的语法结构。

Python不支持char类型、byte类型

使用 pip install + 要安装的模块名称是安装模块的语法

x.append( )是在x元素后面追加括号的内容。

y=x+[4,5,6]表示两个数组的合并,结果为[1,2,3,4,5,6]。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询