当前位置: 首页 > news >正文

软考中级-程序设计语言

(1)解释器

解释源程序时不生成独立的目标代码,源程序和解释程序都参与到程序执行中。

(2)编译器

编译时生成独立的目标代码,运行时是运行与源程序等价的目标程序,源程序不参与执行。

阶段补充:

两者都可以用高级语言编写,且处理源程序时都会进行优化。

程序设计语言基本成分:数据、运算、控制、传输。

运行时变量值可以改变、常量值不能改变。

左结合/右结合:从左向右/从右向左运算。

程序中数据有类型的作用:便于分配存储单元、便于对数据对象进行检查、便于规定取值范围及可执行的运算。

运算优先级越高越先算。

(3)控制结构

顺序结构、循环结构、选择结构

(4)函数

函数定义有两部分:函数首部和函数体。

参数调用有两种形式:值调用和引用调用,值调用时实参将值传递给形参,参数可以是变量、常量和表达式;引用调用时,实参将地址传递给形参,因为参数必须有地址,所以参数不能为常量和表达式,但形参实参可以双向传递。

(5)编译、解释程序流程

  • 编译:词法分析、语法分析、语义分析、中间代码生成、优化、目标代码生成,下划线的两步可省略,但整个流程顺序不可更改。

  • 解释:词法分析、语法分析、语义分析,整个过程不可省略、不可更改顺序。

  • 符号表:会不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,从而辅助语义检查和代码生成。

  • 词法分析:将源程序看为从上到下、从左到右的多行字符串,按“单词”为单位识别,源程序为输出,以二元组记号流(单词种别+单词值)输出。主要作用是分析构成程序的字符以及由字符按照构成规则构成的符号是否符合规则。

  • 语法分析:输入记号流,输出语法树,作用是根据语法规则,将单词符号序列分解为各类语法单位。可以发现所有语法错误,如果构不成语法树,说明语法有误。

  • 语义分析:作用是进行类型分析和检查,检查源程序是否有静态语义错误,如整除取余只能对整数进行。动态语义错误在运行时才能发现。

  • 目标代码生成:该阶段工作与具体机器息息相关,寄存器的分配处于此阶段。

  • 动态语义错误:只有在程序运行时才能检查出来。

  • 中间代码:常见类型有后缀式、三地址码、三元式、四元式、树、图等;其生成与具体机器无关,可以将不同平台的高级语言程序翻译成同一种中间代码,从而跨平台;有利于提高与机器无关的优化和可移植性。

(6)正规式

(7)有限自动机

词法分析的工具,能够正确的识别正规式。

确定的有限自动机(DFA):对于每一个状态,在识别某一字符后,转移的状态是确定的。

不确定的有限自动机(NFA):转移后的状态是不确定的。

特殊状态含义:a,b(识别a或b);(什么都不需要识别就可以转移)

一个状态既可以是初态又可以是终态,识别成功时必须停留在终态。

(8)上下文无关文法

由开始符号组成的表达式按规则推导为由终结符号组成的表达式,有开始符号、产生式集合和终结符号组成。程序设计中大多数语法设计都可以用上下文无关文法表示。

(9)中缀、后缀表达式(逆波兰表达式)

符号在中(a+b)、符号在后(ab+),按优先级计算。

中缀转后缀如(优先级相同从右向左):

后缀转中缀时,将上述计算结果从左到右,遇到数字就入栈,遇到符号就出栈。

(10)语法树中序、后序遍历

中序遍历(左根右)得到中缀式,后序遍历(左右根)得到后缀式。

阶段补充:

对目标程序反编译无法得到源程序,只能转换成功能上等价的汇编程序。

脚本语言是动态语言,结构可改变,用解释方法实现,执行效率低。

编译时为变量分配的是逻辑地址、运行时分配的是物理地址。

正规集用正规式描述,用有限自动机识别。

c++程序执行前的流程:预处理、编译、汇编、链接

相关文章:

软考中级-程序设计语言

(1)解释器解释源程序时不生成独立的目标代码,源程序和解释程序都参与到程序执行中。(2)编译器编译时生成独立的目标代码,运行时是运行与源程序等价的目标程序,源程序不参与执行。阶段补充&#…...

Sphinx : 高性能SQL全文检索引擎

Sphinx是一款基于SQL的高性能全文检索引擎,Sphinx的性能在众多全文检索引擎中也是数一数二的,利用Sphinx,我们可以完成比数据库本身更专业的搜索功能,而且可以有很多针对性的性能优化。 Sphinx的特点 快速创建索引:3分…...

ansible实战应用系列教程6:管理ansible变量

ansbile实战应用系列教程6:管理ansible变量 Ansible VariablesNaming VariablesDefining Variables在playbook中定义变量Defining Variables in Playbooks在playbooks中使用VariablesHost Variables and Group Variables使用group_vars和host_vars目录命令行定义全局变量Varia…...

java8新特性Stream流中anyMatch和allMatch和noneMatch的区别详解

1、anyMatch 判断数据列表中是否存在任意一个元素符合设置的predicate条件&#xff0c;如果是就返回true&#xff0c;否则返回false。 接口定义&#xff1a; boolean anyMatch(Predicate<? super T> predicate); 方法描述&#xff1a; 在anyMatch 接口定义中是接收 Pr…...

双网卡(有线和wifi)同时连接内网和外网

双网卡&#xff08;有线和wifi&#xff09;同时连接内网和外网 Win10技巧&#xff1a;如何修改有线/WiFi网络优先级&#xff1a;https://www.ithome.com/html/win10/253612.htm双网卡实现两个网络的自由访问&#xff1a;https://blog.51cto.com/ghostlan/1299090Linux服务器安…...

如何赋能智能运维,迈出数字化黑匣子第一步?

在当下大数据时代&#xff0c;诸多行业专家为企业智能运维绘出美好蓝图。在该蓝图中&#xff0c;互联网、云计算、大数据分析联合发力&#xff0c;企业在能“攻”能“守”中快速、可持续发展。何为“攻”&#xff1f;对支撑企业产品研发、生产、管理、营销等各业务链条的IT基础…...

消息称索尼计划为PS5推出两款蓝牙耳机,Find My蓝牙耳机用途广

根据国外科技媒体 Insider Gaming 报道&#xff0c;索尼计划进一步丰富 PlayStation 5 的配件生态&#xff0c;将会推出两款耳机&#xff0c;一款采用类似于 AirPods 的 TWS 设计&#xff0c;另一款则是无线头戴式耳机。 消息称 TWS 耳机的内部代号为“Project Nomad”&#…...

状态管理VueX

哈喽~大家好&#xff0c;这篇来看看状态管理VueX。 &#x1f947;个人主页&#xff1a;个人主页​​​​​ &#x1f948; 系列专栏&#xff1a;【专栏】 &#x1f949;与这篇相关的文章&#xff1a; SpringCloud Sentinel 使用SpringClou…...

i.MX8MP平台开发分享(clock篇)- PLL14xx驱动

专栏目录:专栏目录传送门 平台内核i.MX8MP5.15.71文章目录 clk_pll14xx_prepareclk_pll14xx_is_preparedclk_pll1443x_set_rateclk_pll14xx_round_rateclk_pll1443x_recalc_rate在前面的文章i.MX8MP平台开发分享(clock篇)- 各类clock的注册,我们提到VIDEO_PLL1,GPU_PLL等P…...

课程规范性要求

课程制作规范 图片规范 允许范围&#xff1a;CC协议 / 作者授权 / 网站代理授权书 图片大小要求&#xff1a;1600 x 1200 dpi 图片长宽比&#xff1a;4&#xff1a;3 每章节格式要求 Week number 本周目标 1.通过背景学习&#xff0c;了解四足机器狗mini pupper上的微型控…...

华为OD机试 - 优秀学员统计(Python)| 真题+思路+考点+代码+岗位

优秀学员统计 题目 公司某部门软件教导团正在组织新员工每日打卡学习活动,他们开展这项学习活动已经一个月了,所以想统计下这个月优秀的打卡员工。每个员工会对应一个 id,每天的打卡记录记录当天打卡员工的 id 集合,一共 30 天。 请你实现代码帮助统计出打卡次数 top5 的…...

布林线(BOLL)计算公式详解,开口收口代表什么

布林带&#xff0c;英文名称BOLL&#xff0c;是John Bollinger在上世纪八十年代创建的&#xff0c;由中轨、上轨、下轨三条线组成。 一、布林线计算公式详解 布林线中轨是简单移动平均线&#xff0c;一般软件上自带的布林带中轨是20日均线&#xff0c;上轨是中轨加上2个标准差…...

模糊的照片能修复吗?

用照片记录生活&#xff0c;虽然不一定拍得好&#xff0c;但这也是生活应该有的样子。而我们拍得不好&#xff0c;常见就是拍出了模糊的照片&#xff0c;这可能是因为没有对焦或者是手抖了一下&#xff0c;就成了模糊的照片。更多时候未能及时发现&#xff0c;等到想分享一下才…...

【Java|多线程与高并发】详解start()方法和run()方法的区别

文章目录前言1.start()方法和run()方法2.不能两次调用start()方法3.线程的执行是随机的start()方法和run()方法的执行顺序不一定相同4.run()方法由JVM调用public Thread(Runnable target)中的target前言 本篇文章主要讲解以下几个问题: start()方法和run()方法的区别与联系为…...

mysql 一些有意思的sql语句,备忘

### 批量插入 INSERT INTO 表名 &#xff08;字段列表&#xff09; VALUES &#xff08;字段对应的值&#xff09;,&#xff08;字段对应的值&#xff09;,&#xff08;字段对应的值&#xff09;,&#xff08;字段对应的值&#xff09;, js 代码示例: function batchAddOrde…...

hive自定义函数

hive自定义函数 hive内置的函数满足不了所有的业务需求&#xff0c;可以考虑自己定义函数 UDF&#xff1a;一对一输出(upper) UDTF&#xff1a;一对多输出 (lateral view explode) UDAF&#xff1a;多对一输出(count, max, min) 自定义UDF 用java实现一个UDF 引入依赖 …...

数仓理论【范式】【维度建模】

数仓理论 1 范式理论 1.1 范式概念 数据建模要遵循一定的规则&#xff0c;在关系建模中&#xff0c;这种规则就是范式 采用范式结构&#xff0c;可以有效的降低数据的冗余性 范式在获取数据时&#xff0c;需要通过join拼接出数据 范式有第一范式(1NF)&#xff0c;第二范式…...

卷积神经网络

卷积神经网络1. 卷积神经网络边缘检测示例Padding卷积步长三维卷积单层卷积网络简单卷积网络示例池化层卷积神经网络示例2. 深度卷积网络经典网络残差网络残差网络为什么有用1 x 1 卷积谷歌Inception 网络介绍Inception 网络迁移学习数据扩充&#xff08;数据增强&#xff09;3…...

解决Qt提示xxx.so not found( using -rpath or -rpath-link)问题

问题描述: 在QtCreator中交叉编译的时候突然出现了以下动态库找不到的问题: 我这里是aarch64,其他环境类似即可。 /usr/lib/gcc-cross/aarch64-linux-gnu/7/../../../../aarch64-linux-gnu/bin/ld: warning: libwrap.so.0, needed by /home.../../nfsdir///libpulsecommo…...

Blazor 托管模型 BlazorWebAssembly和Blazor Server

BlazorWebAssembly 应用 BlazorWebAssembly 应用使用基于 WebAssembly 的 .NET 运行时在浏览器中直接执行。 BlazorWebAssembly 应用的工作方式类似于 Angular 和 React 等前端 JavaScript 框架。 但不是编写 JavaScript&#xff0c;而是编写 C#。 .NET 运行时与应用、应用程序…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码&#xff0c;写上注释 当然可以&#xff01;这段代码是 Qt …...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...

C++ 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

dify打造数据可视化图表

一、概述 在日常工作和学习中&#xff0c;我们经常需要和数据打交道。无论是分析报告、项目展示&#xff0c;还是简单的数据洞察&#xff0c;一个清晰直观的图表&#xff0c;往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server&#xff0c;由蚂蚁集团 AntV 团队…...