软件设计师---程序设计语言

简介

考察概念题为主, 计算题偏少,分值3到6分
题号分布:20、21、22、48、49、50

编译程序和解释程序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
汇编语言–》汇编程序—》目标程序—》执行
高级语言—》解释程序
高级语言—》编译程序
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
解释后直接执行或者翻译为中间代码后执行
编译生成目标程序,独立执行

真题

在这里插入图片描述

B

在这里插入图片描述

C
在这里插入图片描述

在这里插入图片描述

A

在这里插入图片描述

A
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

C

程序设计语言基本成分

在这里插入图片描述
在这里插入图片描述


为数据合理分配存储单元的意义:
在这里插入图片描述


在这里插入图片描述

真题

在这里插入图片描述

B
在这里插入图片描述
重复=循环

在这里插入图片描述

A

在这里插入图片描述

C
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

B
在这里插入图片描述

在这里插入图片描述

B
在这里插入图片描述

在这里插入图片描述

C
隐式转换为整型变量
在这里插入图片描述
在这里插入图片描述
运算先得把数据类型统一,会把小数据范围向大数据范围对齐
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

B
在这里插入图片描述
变量存储在堆,常量存储在方法区的常量池中、

在这里插入图片描述

C

在这里插入图片描述

C
左结合,从左向右执行
右结合,从右向左执行
在这里插入图片描述
短路
在这里插入图片描述
对于A选项:必须得当X和Y都为真才行
在这里插入图片描述
对于B选项:如果Z为假,表达式还是真
在这里插入图片描述
C选项,当Y为真,表达式为真,和Z取值无关了
当Y为假,表达式的取值和Z有关。
D选项:X为假,则Z的取值决定表达式的值

在这里插入图片描述

B
对于A选项:
x为真,还得看后面括号内取值是否为真
在这里插入图片描述
对于B选项:
X为假,则表达式为假,和后面无关了
对于C选项:
逻辑或是左结合,应该是依据Y的值来决定是否算Z的值
对于D选项:
X为假,则表达式为假,不用算了

在这里插入图片描述

B
在这里插入图片描述

传值调用和传地址调用

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述


值调用:传递的是函数值,不改变实参
在这里插入图片描述


引用调用:传递的是实参地址,改变实参的值
在这里插入图片描述

代码实现

值传递不改变实参的值
注意传值调用实参可以是变量,常量和表达式
在这里插入图片描述
形参和实参是俩个变量
在这里插入图片描述


引用传递改变实参的值
注意传递的参数不能是常量和表达式
在这里插入图片描述
实参和形参是一个变量
在这里插入图片描述

指针实现

在这里插入图片描述


总结:在这里插入图片描述

VScode安装博文:VScode安装BUG
C++指针和引用的区别: 指针和引用的区别

真题

在这里插入图片描述

C
D选项中,需要传递地址,实参不能是任意的变量和表达式

在这里插入图片描述

C
A选项中,是将实参的值传递给形参
B选选项中,是实参可以是任意形式的表达式
D选项中,是把实参的地址传递给形参。

在这里插入图片描述

D
对于B选项,在这里插入图片描述
A,C都是应该将实参的.XXX传递给形参

在这里插入图片描述

C
在这里插入图片描述

在这里插入图片描述

A

在这里插入图片描述

B
传值调用:把实参的值传递给形参
传引用调用:把实参的地址传递给形参

在这里插入图片描述

C
在这里插入图片描述

在这里插入图片描述

C
在这里插入图片描述
D (传引用:初始值:r=a=5)
在这里插入图片描述

在这里插入图片描述

A
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

D

在这里插入图片描述

在这里插入图片描述\

B
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

D
在这里插入图片描述

在这里插入图片描述

D
在这里插入图片描述

在这里插入图片描述

B
引用调用:在这里插入图片描述
值调用:在这里插入图片描述

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

C
在这里插入图片描述

编译,解释程序翻译阶段

在这里插入图片描述

真题

在这里插入图片描述

C
在这里插入图片描述

在这里插入图片描述

C
对于D,中间代码的生成是可以省略的(和优化有关)

在这里插入图片描述

D

在这里插入图片描述

C,B
编译器生成目标程序,但源程序和目标程序不需要参与到控制当中
解释器不生成目标程序,参与控制

符号表

在这里插入图片描述
在这里插入图片描述

真题

在这里插入图片描述

A
C
在这里插入图片描述
声明语句====符号啥啥啥的。。

在这里插入图片描述

A
可以用排除法,把数据结构的排除就行

在这里插入图片描述

B
看到符号,类型,特性信息,选符号表

在这里插入图片描述

B
在这里插入图片描述

编译过程概述

在这里插入图片描述
在这里插入图片描述

词法分析

词法分析出题频率很低,多作为干扰选项来考
词法分析的输入、输入、和作用如下:
在这里插入图片描述
在这里插入图片描述

  1. 源程序可以简单地被看成是一个多行的字符串。
  2. 词法分析阶段是编译过程的第一个阶段,
  3. 这个阶段的任务是: 对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个“单词”符号。
  4. “单词”符号是程序设计语言的基本语法单位,如关键字(或称保留字)、标识符、常数、运算符和分隔符(如标点符号、左右括号)等。
  5. 词法分析程序输出的“单词”常以二元组的方式输出,即单词种别和单词自身的值。
  6. 词法分析过程依据的是语言的词法规则,即描述“单词”结构的规则。例如,对于某PASCAL源程序中的一条声明语句和赋值语句
    在这里插入图片描述
    在这里插入图片描述

语法分析

语法分析阶段可以发现程序中所有的语法错误
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
作用:

  1. 在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”“语句”和“程序”等。
  2. 如果源程序中没有语法错误,语法分析后就能正确地构造出其语法树;否则指出语法错误,并给出相应的诊断信息。
    (为了确定这一行语句的结构有没有问题
    典型的错误例子如下:
    在这里插入图片描述少写分号
    在这里插入图片描述括号不匹配,少分号
    在这里插入图片描述变量b没有声明
    在这里插入图片描述少赋值符号

语义分析

在这里插入图片描述
在这里插入图片描述

  • 静态语义检查错误
  • 类型分析和检查
    典型的错误例子如下:
    在这里插入图片描述

在这里插入图片描述

赋类型不匹配错误


在这里插入图片描述

在这里插入图片描述


在这里插入图片描述
还是类型不匹配


注意区分点:
在这里插入图片描述
动态语义错误需要运行才能检查出来。

目标代码生成

一般作为干扰选项出现(考察语法分析多一些)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

小结

在这里插入图片描述

真题

在这里插入图片描述

C
对于A:
词法分析的输入是源程序,把他看成多行的字符串,然后从上到下,从左到右进行扫描,识别出一个个单词和符号。
对于C,发现所有静态语义错误

在这里插入图片描述

A
对于B,是在语义分析阶段来确定的。
在这里插入图片描述类型不匹配错误。
对于C,语法分析只能确定循环结构是否写对,括号少没少,有没有结束分号
在这里插入图片描述少了循环体的结束括号
对于D,也只能看循环条件中分号少没少,结构对不对
对于A:在这里插入图片描述

在这里插入图片描述

A

在这里插入图片描述

D
在这里插入图片描述

在这里插入图片描述

D
在这里插入图片描述

在这里插入图片描述

B
词法分析:扫描字符,识别单词
语法分析:判断语句形式是否正确
语义分析:判断类型是否匹配,除法和取余是否分母是否合规

在这里插入图片描述

C

在这里插入图片描述

B

在这里插入图片描述

C

在这里插入图片描述

A

在这里插入图片描述

A,B

在这里插入图片描述

B

动态语义错误

在这里插入图片描述

其中静态语义错误是分母是小数,可以检查出
动态语义错误比如:分母为0,则只有执行才能检查出来

真题

在这里插入图片描述

D
在这里插入图片描述
没赋值的变量,他的值是内存中的垃圾值

在这里插入图片描述

A
在这里插入图片描述
编译正确的程序必然不包含静态语法错误(这里题干将的语义错误包含静态的动态,所以错了)
除数为0只能在运行阶段检查出来(动态语义错误)

在这里插入图片描述

D
对于C,错在报告的是语义错误(动态语义错误)

在这里插入图片描述

C
在这里插入图片描述
死循环,动态语义错误,运行才能检测出来

在这里插入图片描述

D
循环体为空,且死循环,导致后面的代码无法被执行
在这里插入图片描述

中间代码生成阶段

在这里插入图片描述
在这里插入图片描述
常见的中间代码:

  1. 后缀式
  2. 三地址码
  3. 三元式
  4. 四元式

真题

在这里插入图片描述

D

在这里插入图片描述

D

在这里插入图片描述

B

在这里插入图片描述

D

在这里插入图片描述

B (三地址码的实现方式是四元式)
对于C
六个阶段都和符号表有相关性
在这里插入图片描述

在这里插入图片描述

B
对于C,不需要依据运行程序的机器特性
在这里插入图片描述

正规式

是词法分析的工具
在这里插入图片描述

                 *的取值范围是【0,无穷大】,然后把*去取值,看符不符合题目要求

在这里插入图片描述
在这里插入图片描述

真题

在这里插入图片描述

B
在这里插入图片描述

在这里插入图片描述

B

在这里插入图片描述

B
注意看m是大于等于0,n是大于等于1(之前读题错了)

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

咋一看全是以b结尾的
其实题意就是:所有以b为结尾的字符串集合(符合所有用b结尾的字符串的集合)
在这里插入图片描述
对于A,不能满足aab(a连续出现的形式)
对于b,不能满足bab形式
对于c,不能满足bab形式

有限自动机

在这里插入图片描述

在这里插入图片描述

确定和不确定有限自动机的区别在于:

  1. 给一个数字或者字母它只有一条路可以跑,那就是确定,
  2. 反之是不确定,
  3. 例如上面的图给个a,它很明显有两条路可以跑,所以是不确定有限自动机
    在这里插入图片描述
    其中a,b表示,可以识别a或识别b
    在这里插入图片描述
    给定字符1,s0状态可以跑自己,也可以从s0转移到s1,所以是不确定自动机(给一个数字或者字母它有多条路可以跑)


在这里插入图片描述
一个状态既可以是初态,又可以是终态
可以存在多个终态
转移状态:指出去的箭头 (例如,下图中,q1识别了0之后,从q1转移到q0)
识别成功的依据是:路跑的通,并且跑完后的终点是终态(重点)

在这里插入图片描述

解释一下︰路跑的通是指根据那个顺序能够跑的通,例如上图中给的顺序是010这是可以跑通的,如果给的顺序是011就跑不通了,因为第一个数字0是q0跑自己的路,第二个数字1是q0跑到q1,第三个数字1是指q1能够有这条1的出路,但是q1只有0这条出路,所以跑不通,同时必须满足跑完最后的终点是终态,例如上面的010是可以跑通,但是跑完后的终点是q0,在上面图中q1才是终态,所以这个顺序是错的; 如果0101就可以正确识别,这个串就是合法的。
在这里插入图片描述
识别aab最后也是不合法的,最后不是终态。。



特殊符号–》ε :表示空(不用识别字符,可以直接跳过)
在这里插入图片描述
00可以正确识别。

真题

在这里插入图片描述

A

在这里插入图片描述

D
在这里插入图片描述
对于C:可以识别01001,(这样的话,01串的0后面是0,(有俩连续的0))
对于B,不一定是偶数,直接1就奇数
对于A直接一个1结束。

在这里插入图片描述

B

在这里插入图片描述

C

在这里插入图片描述

C

在这里插入图片描述

A
认真读题,说的是不正确的(其中,本体初态和终态是一致的)
对于A选项,baa,就是连续的a
对于D,识别空串,初态直接到终态,对了

在这里插入图片描述

A

对于识别a
在这里插入图片描述
排除B,C
对于识别ba
排除D

在这里插入图片描述

D
如果识别1,则直接结束,排除A,B
结尾必为1

在这里插入图片描述

B

在这里插入图片描述

C

在这里插入图片描述

A

在这里插入图片描述

A

在这里插入图片描述

C
识别000,排除A
识别01…10排除D(0111…100),B(0011…10)

在这里插入图片描述

B

在这里插入图片描述

D
对于C和B
在这里插入图片描述
对于A
在这里插入图片描述

在这里插入图片描述

D
对于M1的A节点,0有俩分支,所以M1是不确定自动机
而M2是确定自动机
排除A,B

在这里插入图片描述

D

在这里插入图片描述

A
观察自动机的特点:必须以01结束
排除B
对于C
在这里插入图片描述
自动机可以到终点再往回走,再回来?他是这意思,姑且这么认为。
对于D
自动机可以是:101101,但正规式无法满足

在这里插入图片描述

A
aa为例来排除
在这里插入图片描述

在这里插入图片描述

B
自动机可以表示0100000
排除C
在这里插入图片描述

上下文无关文法

可能用上下文有关文发来迷惑大家

主要考察:

  1. 终结符号
  2. 推导过程
  3. 大多数程序设计语言用无关文法描述
  4. 推到题,根据文法推导选项
    在这里插入图片描述

在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

真题

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

A
做题方法:先把上下文法的表达式写出来,其表达式如下:
在这里插入图片描述
一般小写符号是终结符号,不能再往下推理了
在这里插入图片描述
对于A
在这里插入图片描述推导的句子不是以a开头
对于D,abcd不能往下再推到了,所以是终结符号集
对于C
在这里插入图片描述
对于B,
在这里插入图片描述

在这里插入图片描述

B

在这里插入图片描述

B

在这里插入图片描述

B

在这里插入图片描述

C
对于AB选项
在这里插入图片描述
看出,推导的既有0也有1,所以排除
对于CD
在这里插入图片描述
在这里插入图片描述
所以01相同

在这里插入图片描述

B
注意解题的思路(主要是凑符号,按照符号来凑
通过文法构造得到ABCD四个选项
对于A,前面的2无法构造
在这里插入图片描述
对于B
在这里插入图片描述
符合

在这里插入图片描述

A
注意:默认从第一个大写字母E开始
在这里插入图片描述
对于B
在这里插入图片描述
推不出来
关于CD可以排除,应为C中有数字,D有除号
虽然推理C为:
在这里插入图片描述但C和2不同(变量和数字)

在这里插入图片描述

A
在这里插入图片描述

中缀,后缀表达式转换(较高频)

回顾之前的中间代码表示:
在这里插入图片描述 这里面就包括后缀式
后缀式又叫逆波兰式

在这里插入图片描述

中缀式转后缀式

在这里插入图片描述

  1. 中缀式转后缀式就是把符号位放在最后,并做为一个新的整体ab?,替换原来的中缀式a?b,
  2. 运算符优先级相同,是从右向左运算。(更正,大部分情况应该是从左往右
  3. 后缀式转中缀式使栈

中缀式转后缀式的具体流程如下:
将3+4转换为34+在这里插入图片描述
得到:在这里插入图片描述(从此34+就是一个整体了)
将34+/5转换为34+5/在这里插入图片描述

得到在这里插入图片描述
将2x34+5/转换得到234+5/x
得到在这里插入图片描述
最后转换负号:在这里插入图片描述

得到:在这里插入图片描述

后缀式转中缀式


将后缀转中缀(使用栈)或(ab?转a?b)

  1. 数字就入栈
  2. 碰到运算符,弹栈(弹俩个数字),第一个数字再表达式右边,第二个数字再表达式左边,和表达式结合为整体再入栈
  3. 想快就用公式:ab?转a?b
    在这里插入图片描述
    在这里插入图片描述4代替b的位置,3代替a的位置
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    得到:在这里插入图片描述
    入栈减号时:在这里插入图片描述
    得到中缀表达式(或者用ab?转a?b也行)这种的快,如下图所示:
    在这里插入图片描述

讲解视频

语法树中序、后序遍历

根据语法树推导出中缀式,后缀式
在这里插入图片描述
求解方法:
在这里插入图片描述



中序遍历:左根右(得到中缀式)
在这里插入图片描述
得到中缀式,
再转后缀式:在这里插入图片描述(用之前中缀转后缀的公式计算)

其中求中缀式的过程(中序遍历如下)
在这里插入图片描述



后序遍历:左右根(得到后缀式)
在这里插入图片描述

得到后缀式,
其中求后缀式的过程(后序遍历如下)

在这里插入图片描述


一些例子
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述这是中缀式计算过程
在这里插入图片描述

在这里插入图片描述后缀式计算过程

再用之前后缀转中缀栈的方式验证:
在这里插入图片描述
再用之前中缀式转后缀式的方法验证:

。。。。有小bug…(是从左往右,之前有误)
在这里插入图片描述
所以正确的是:
在这里插入图片描述

真题

在这里插入图片描述

D
优先级在这里插入图片描述
计算过程如下:在这里插入图片描述

在这里插入图片描述

B
逆波兰式就是后缀式
C
在这里插入图片描述

在这里插入图片描述

D
在这里插入图片描述
要点1:a?b转ab?
要点2,:转出来的以后都看成是一个整体

在这里插入图片描述

C
在这里插入图片描述

在这里插入图片描述

B
在这里插入图片描述

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

A

在这里插入图片描述

D
在这里插入图片描述

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

B
二叉树中序遍历(别忘了整体括号
对于ABCD
在这里插入图片描述

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

B
二叉树后序遍历
在这里插入图片描述

在这里插入图片描述

C
中序遍历
在这里插入图片描述

在这里插入图片描述

C
后序遍历
在这里插入图片描述

在这里插入图片描述

C
中序
在这里插入图片描述

杂题精选

考的偏,考的点很奇怪的题目

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

C
脚本语言是动态语言,动态语言都是解释性语言(python)
对于B脚本语言是解释语言,不生成目标程序
在这里插入图片描述

在这里插入图片描述

A
在这里插入图片描述
对于C算术加减运算有意义,乘除没有意义
无论指针变量指向的变量是那种类型,指针变量的长度是固定的

在这里插入图片描述

B
在这里插入图片描述

在这里插入图片描述

D
在这里插入图片描述
PHP是脚本语言

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

B
在这里插入图片描述

在这里插入图片描述

A
在这里插入图片描述
在这里插入图片描述
A
在这里插入图片描述

在这里插入图片描述

D在这里插入图片描述

在这里插入图片描述

C
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

B在这里插入图片描述

在这里插入图片描述

B
在这里插入图片描述
在这里插入图片描述
语法分析

  1. 自顶向下:递归下降,预测分析
  2. 自底向上:算符优先,LR分析法,移进-归约分析法

在这里插入图片描述

C

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

B
在这里插入图片描述

在这里插入图片描述

B
在这里插入图片描述

在这里插入图片描述

A
在这里插入图片描述
JAVA既是编译型,又是解释型。

在这里插入图片描述

A
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

C
在这里插入图片描述
区别于之前的语法分析法

在这里插入图片描述

CD
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

A

在这里插入图片描述

A
在这里插入图片描述

在这里插入图片描述

B
是解释性脚本语言,不生成目标程序。。

在这里插入图片描述

C
在这里插入图片描述

在这里插入图片描述

B

总结

后缀式,自动机,引用调用,值调用,上下文无关文法,正规式,

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
软件设计师是一种专业人员,负责开发和设计各种软件应用程序。在学习软件设计的过程中,视频资料是非常重要的学习资源之一。CSDN(中国软件开发网)是一个专业的IT技术社区,提供了丰富的软件设计师视频资料。 CSDN的视频资料给软件设计师提供了多种学习和成长的机会。首先,它们能够帮助软件设计师快速了解新兴技术和最新的行业趋势。软件工程不断发展,新的编程语言、框架和工具不断涌现,通过CSDN的视频资料,软件设计师可以迅速掌握这些新技术,并将其应用到实际项目中。 其次,CSDN的视频资料提供了丰富的教学内容和实战案例。这让软件设计师能够从专家和行业大牛的实际经验中汲取经验和灵感。例如,他们可以学习到如何进行软件需求分析、系统设计和数据库设计等关键技能。同时,通过观看实战案例,软件设计师可以了解到如何解决实际问题,提高自己的解决问题的能力。 另外,CSDN的视频资料还提供了大量的软件设计师面试技巧和职业发展建议。软件设计师不仅要具备扎实的技术能力,还要具备良好的沟通和团队合作能力。通过学习CSDN的视频资料,软件设计师可以了解到如何准备面试、如何展示自己的技术能力以及如何规划自己的职业发展。 综上所述,CSDN提供了丰富的软件设计师视频资料,对软件设计师的学习、技术提升和职业发展都有着重要的影响。软件设计师可以通过观看CSDN的视频资料,快速掌握新技术,提高解决问题的能力,并在职业发展中取得更大的成功。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值