软考(软件设计师)考点总结 -- 程序设计语言基础

Posted 龙源lll

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软考(软件设计师)考点总结 -- 程序设计语言基础相关的知识,希望对你有一定的参考价值。

程序设计语言基本概念

程序运行时的用户内存空间一般划分为代码区、静态数据区、栈区、堆区。

程序设计语言的基本成分包括数据、运算、控制和传输等。(控制包括:顺序、选择、循环三种)

高级语言:

高级语言对底层操作进行了抽象和封装,其一条语句对应多条机器指令,使编写程序的过程更加符合人类的思维习惯。高级语言不依赖与具体的机器硬件

高级语言中常见的命名对象:变量、函数、数据类型

符号表: 在编译程序工作的过程中,需要不断收集、记录和使用源程序中一些语法符号的类型和特征等信息。这些信息一般以表格形式存储在系统中。

编译与解释

编译器与解释器是两种基本的高级语言处理程序。编译器对高级语言处理过程可以划分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。其中中间代码生成与代码优化并不是每个编译器都必须的。

两者的区别:
在编译方式下,机器上运行的是与源程序等价的目标程序,源程序与编译程序都不参加目标程序的执行过程;而是将程序翻译成目标代码
在解释方式下,解释程序与源程序要参加程序的运行过程中,运行程序的控制权在解释程序。在这个过程中不产生独立的目标代码。

编译过程:
在这里插入图片描述
词法分析: 输入源程序,对构成程序的字符串进行扫描分解,识别出一个个单词,删除无用的信息,报告分析时的错误,输出记号流。

语法分析: 语法分析器以单词符号作为输入,分析单词符号是否形成符合语法规则的语法单位,如表达式、赋值、循环等,按语法规则分析检查源程序是否有正确的逻辑结构。
语法分析方法: 分为自顶向下分析法与自底向上分析法,递归下降分析法与预测分析法属于自上而下分析法,移进-规约分析法属于自下而上分析法。

语义分析: 主要检查源程序是否存在语义错误,并收集类型信息共后面的代码生成阶段使用。
静态语义分析: 语法制导翻译,将语言结构的语义以属性的形式赋予代表此结构的文法符号,而属性的计算以语义规则的形式赋予文法的产生式。
动态语义分析: 运行时错误,如变量取零做除数、引用数组下标错误等。

中间代码: 由于源程序与目标程序的逻辑结构往往差别很大,想要一次翻译到位很困难,而用语法制导翻译往往会生成繁琐低效的目标代码,因此必须采用一些中间代码,将原程序先翻译成中间代码形式,以利于进行与机器无关的优化处理。
使用中间代码有助于提高编译程序的可移植性。常用的中间代码有:后缀式、三元式、四元式、树等形式。

代码优化: 对前阶段的中间代码变换或改造,目的是使生成的代码更高效,节省时间和空间。

目标代码生成: 编译器工作的最后阶段,把代码转换为特定机器上的绝对指令代码、可重定位指令或汇编指令代码,这个阶段与具体的机器密切相关。

文法

文法定义:
在这里插入图片描述

对于大多数程序设计语言的语法现象,用乔姆斯基的上下文无关文法描述。
在这里插入图片描述

语法推导树:
在这里插入图片描述

有限自动机NFA

在这里插入图片描述

例题:
在这里插入图片描述
答案:C,将选项带入即可

正规式:
在这里插入图片描述

例题:
在这里插入图片描述
(1)答案:D
样例推到A:S -> aA -> abS -> abaA -> ababS -> ababaA -> ababab
(2)答案:C

表达式:
在这里插入图片描述
答案:D

传值与传址

传值与传址:
传值与传址是函数调用时常采用的信息传递方式。传值是简法实参的值传递给被调用函数的形参,实参可以是常量、变量、表达式或函数调用。传址的实质是传送被调用函数的形参,实参必须要有地址。

在这里插入图片描述

案例:
在这里插入图片描述

各种程序语言及特点

在这里插入图片描述

脚本语言: 又被称为扩建的语言,或动态语言,是一种编程语言,通常以文本(ASCII)形式保存,只有在被调用式进行解释或编译。为了缩短传统的编写-编码-链接-运行过程而创建设计的计算机编程语言。脚本通常是解释运行,运行在解释器或虚拟机上,开发效率较高。

Python是一种脚本语言,一种弱类型语言。

软考历年真题及B站相关视频课件:
链接:https://pan.baidu.com/s/1e4d1-HGOzcEVHSK8Q0j_xA
提取码:acij

以上是关于软考(软件设计师)考点总结 -- 程序设计语言基础的主要内容,如果未能解决你的问题,请参考以下文章

软考(软件设计师)考点总结 -- 程序设计语言基础

软考(软件设计师)考点总结 -- 软件工程基础知识

软考(软件设计师)考点总结 -- 数据库技术

软考(软件设计师)考点总结 -- 数据结构与算法基础

软考(软件设计师)考点总结 -- 计算机网络基础

软考(软件设计师)考点总结 -- 操作系统基本原理