软考中级-程序设计语言

news2025/2/24 8:27:03

(1)解释器

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

(2)编译器

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

阶段补充:

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

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

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

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

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

运算优先级越高越先算。

(3)控制结构

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

(4)函数

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

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

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

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

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

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

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

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

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

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

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

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

(6)正规式

(7)有限自动机

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

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

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

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

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

(8)上下文无关文法

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

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

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

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

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

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

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

阶段补充:

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/347881.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何选择最佳的 Node.js Docker 镜像

前言 选择一个Node.js的Docker镜像看起来像是一件小事,但是镜像的大小和潜在漏洞可能会对你的CI/CD流程和安全造成重大的影响。那我们如何选择一个最好Node.js Docker镜像呢?我们在使用FROM node:latest或只是FROM node时,很容易忽略他潜在的…

zlink 介绍

zlink 是一个基于 flink 开发的分布式数据开发工具,提供简单的易用的操作界面,降低用户学习 flink 的成本,缩短任务配置时间,避免配置过程中出现错误。用户可以通过拖拉拽的方式实现数据的实时同步,支持多数据源之间的…

Download android 12 source code and build img

sudo snap install curlThen follow https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/install repo:mkdir ~/bin PATH~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod ax ~/bin/repo由于首次同步需要下载约 60GB 数据&#x…

【动画图解】这个值取对了,ViewPager2才能纵享丝滑

前言 在前两篇文章中,我们通过一张张清晰明了的「示意图」,详细地复盘了RecyclerView「缓存复用机制」与「预拉取机制」的工作流程,这种「图解」创作形式也得到了来自不同平台读者们的一致认可。 而从本文开始,我们将正式进入Vi…

采用Spring配置文件管理Bean(1)

文章目录一、创建Maven项目二、创建杀龙任务类三、创建勇敢骑士类四、采用传统方式让勇敢骑士完成杀龙任务五、采用Spring容器让勇敢骑士完成杀龙任务1、创建日志属性文件2、创建Spring配置文件3、在Spring配置文件里创建Bean(1)创建杀龙任务Bean&#x…

VAmPI:一个包含了OWASP Top10漏洞的REST API安全学习平台

关于VAmPI VAmPI是一个包含了OWASP Top10漏洞的REST API安全学习平台,该平台基于Flask开发,该工具的主要目的是通过一个易受攻击的API来评估针对API安全检测工具的有效性,并帮助广大研究人员学习和了解API安全。 功能介绍 1、基于OWASP Top…

Spring入门学习

Spring入门学习 文章目录Spring入门学习Spring概述Spring FrameworkIOCIOC容器DIIOC容器的实现类①FileSystemXmlApplicationContext②ClassPathXmlApplicationContext基于XML管理bean入门案例创建类创建xml在Spring配置文件中配置bean测试Spring概述 Spring 是最受欢迎的企业级…

利用飞书来实现信息存储和在线远程预览

利用飞书来实现信息存储和在线远程预览 文章目录利用飞书来实现信息存储和在线远程预览1. 需求2. 实现方法2.1 创建表格2.2 创建飞书捷径2.3 客户端上传数据3. 实现远程预览1. 需求 在传统的远程监控和存储数据的项目中,我们需要一台有公网IP的服务器来存储设备发上…

75V的TVS二极管有哪些型号?常用的

瞬态抑制TVS二极管工作峰值反向电压最低3.3V,最高可达513V,甚至更高。很多电子工程师都知道,TVS二极管在实际应用选型过程中,第一步要确认的就是其工作峰值反向电压。2023年春节已过,东沃电子正月初八就开工了&#xf…

【JavaEE】多线程代码实例:单例模式与阻塞队列BlockingQueue

目录 单例模式: 什么是单例模式? 单例模式的实现方式: 饿汉模式: 懒汉模式: 基于并发编程对单例模式线程安全问题的讨论: 阻塞队列: 标准库中的阻塞队列: 自实现阻塞…

CPP2022-计算机类-期末考试

6-1 判断素数 分数 5 全屏浏览题目 切换布局 作者 李国瑞 单位 东北大学秦皇岛分校 设计一个函数,判断输入数据是否为素数,返回bool类型结果。 函数接口定义: bool prime(int num); 说明:num为正整数。 裁判测试程序样例&…

基于node.js+vue+mysql考研辅导学习打卡交流网站系统vscode

语言 node.js 框架:Express 前端:Vue.js 数据库:mysql 数据库工具:Navicat 开发软件:VScode 主要功能包括管理员:首页、个人中心、用户管理、每日打卡管理、考研学校管理、考研专业管理、直通车管理、学习教材管理、…

云平台搭建实例

嗨嗨,每天一更是不是很奈斯?我也觉得,昨天晚上我学校的老师借一天一千的设备,只能用七天,所以我拿出来给你们没有设备和刚用设备的看看吧。操作:首先我们将云平台安装好后,插上网线,…

手机截图如何提取文字?

在当今信息爆炸的时代,图文并茂已经成为了一个广告宣传的常用方式。然而,图片中的文字信息往往难以获取,尤其对于那些需要快速获取信息的人们来说,阅读图片中的文字会是一项繁琐且费时的任务。现在,我们有一个好消息要…

C语言的期末复习

🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 🙏作者水平很有限,如果发现错误,请留言轰炸哦!万分感谢&a…

数据结构:链表基础OJ练习+带头双向循环链表的实现

目录 一.leetcode剑指 Offer II 027. 回文链表 1.问题描述 2.问题分析与求解 (1) 快慢指针法定位链表的中间节点 (2) 将链表后半部分进行反转 附:递归法反转链表 (3) 双指针法判断链表是否回文 二.带头双向循环链表的实现 1.头文件 2.节点内存申请接口和链表初始化接口…

virtuoso数据库介绍

在国内,对海量 RDF 数据的管理有着迫切的实际需求; RDF:Resource Description Framework,是一个使用XML语法来表示的资料模型(Data model),用来描述Web资源的特性,及资源与资源之间的关系。 Virtuoso可以对…

今天正式上线!虹科汽车免拆诊断云展厅:感受精准修车魅力,畅享汽修领先技术

『虹科汽车免拆诊断云展厅』 2月15日正式上线! 在这里,您可以参观了解: 虹科Pico汽车示波器产品模型 全流程专业讲解的视频资料 产品功能和应用场景 全面详细的产品手册 还有虹科首席技术工程师在线连麦答疑!!&#xf…

硬核!2023最全Java面试八股文,覆盖市面上80%以上的面试考点

就目前大环境来看,跳槽成功的难度比往年高很多。一个明显的感受:今年的面试,无论一面还是二面,都很考验 Java 程序员的技术功底。这不马上又到了面试跳槽的黄金段,成功升职加薪,不成功饱受打击。当然也要注…

影像测量设备都有什么?有哪些影像仪器?

影像测量仪器是广泛应用于机械、电子、仪表的仪器。主要由机械主体、标尺系统、影像探测系统、驱动控制系统和测量软件等与高精密工作台结构组成的光电测量仪器。一般分为三大类:手动影像仪、自动影像仪和闪测影像仪。测量元素主要有:长度、宽度、高度、…