由于笔记复制到CSDN样式失效,没有精力再重新完整的检查并设置一遍样式,有积分的可以前往下载word、pdf、有道云笔记版本。
需要说明的是,下载的内容与本篇分享内容一致,只有样式的区别【比如重点记忆、常考内容有颜色、字号、自重等样式,目录结构更完善,表格不是图片,等】
本章下载地址:
https://download.csdn.net/download/chengsw1993/85498697
如果发现文章存在读不通、显示异常等内容,请评论区告知以便修改,应该都是CSDN的markdown语法导致的。
上一篇:【软考-软件设计师精华知识点笔记】第一章 计算机网络概论
下一篇:【软考-软件设计师精华知识点笔记】第三章 数据结构
程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算过程进行描述、组织和推导。
低级语言:机器语言(计算机硬件只能识别0和1的指令序列)、汇编语言。
高级语言:功能更强,抽象级别更高,与人们使用的自然语言比较接近。
各程序设计语言特点:
例(2012年上半年):51、编译和解释是实现高级程序设计语言翻译的两种基本形式。以下关于编译与解释的叙述中,正确的是。
A.在解释方式下,对源程序不进行词法分析和语法分析,直接进行语义分析
B.在解释方式下,无需进行语法、语法和语义分析,而是直接产生源程序的目标代码
C.在编译方式下,必须进行词法、语法和语义分析,然后再产生源程序的目标代码
D.在编译方式下,必须先形成源程序的中间代码,然后再产生与机器对应的目标代码
答案:C
解析:在编译方式下,先将源程序翻译为等价的目标程序,源程序的翻译和目标程序的运行是完全独立的两个阶段;而解释方式下,对源程序的翻译和运行是结合在一起进行的,并不生成目标代码。
编译过程基本上可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等几个阶段,其中,中间代码生成和代码优化不是必须的。在词法、语法、语义分析方面,编译方式和解释方式没有区别。
数据成分:数据和数据类型
因此,在编程时,要改变参数值,就传址,不改变参数值,就传值。
编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语言或机器语言)。
编译程序工作过程分为6个阶段,如下图所示:
中间代码和目标代码生成:中间代码是根据语义分析产生的,需要经过优化链接,最终生成可执行的目标代码。引入中间代码的目的是进行与机器无关的代码优化处理。常用的中间代码有后缀式(逆波兰式)、三元式(三地址码)、四元式、树、图等形式。需要考虑三个问题(一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量)。
主要掌握上述三种表达式即可,其实就是树的三种遍历,一般正常的表达式是中序遍历,即中缀表达式,根据其构造出树,再按题目要求求出前缀或后缀式。
简单求法:后缀表达式是从左到右开始,先把表达式加上括号,再依次把运算符加到本层次的括号后面,最后去除所有括号。
例(2013年下半年):算术表达式a+(b-c) *d的后缀式是(22)(-、+、*表示算术的减、加、乘运算,字符的优先级和结合性遵循惯例)
(22) A.c-d*a B.abc-d*+ C.ab+c-d* D.abcd-*+
解析:a+(b-c)*d → (a+((b-c)*d)) → (a+((bc)-*d)) → (a+((bc)-d)*) → (a((bc)-d)*)+ → abc-d*+ ,答案B。
+表示正则闭包,*表示闭包
程序设计语言中语法是上下文无关的,语义上下文有关
自上而下语法分析:最左推导,从左至右。给定文法G和源程序串r。从G的开始符号S出发,通过反复使用产生式对句型中的非终结符进行替换(推导),逐步推导出r。
递归下降思想:原理是利用函数之间的递归调用模拟语法树自上而下的构造过程,是一种自上而下的语法分析方法。
自下而上语法分析:最右推导,从右至左。从给定的输入串r开始,不断寻找子串与文法G中某个产生式P的候选式进行匹配,并用P的左部代替(归约)之,逐步归约到开始符号s。
移进-规约思想:设置一个栈,将输入符号逐个移进栈中,栈顶形成某产生式的右部时,就用左部去代替,称为归约。很明显,这个思想是通过右部来推导出左部,因此是自下而上语法分析的核心思想。
例(2016年上半年):●移进-归约分析法是编译程序(或解释程序)对高级语言源程序进行语法分析的一种方法,属于(48)的语法分析方法。
A.自顶向下(或自上而下) B.自底向上(或自下而上) C.自左向右 D.自右向左
答案:B