【中级软件设计师】上午题02-程序设计语言

上午题02-程序设计语言

  • 1 编译程序和解释程序
  • 2 程序设计语言基本成分
  • 3 传值调用与传引用调用
  • 4 编译器的工作阶段
    • 4.1 编译方式和解释方式
    • 4.2 符号表
    • 4.3 词法、语法、语义分析与目标代码生成
    • 4.4 程序异常和错误
    • 4.5 中间代码
  • 5 正规式

1 编译程序和解释程序

解释器:
翻译源程序时不生成独立的目标程序
解释程序和源程序要参与到程序的运行过程中

编译器:
翻译时将源程序翻译成独立保存的目标程序
源程序和编译程序不再参与目标程序的运行过程
在这里插入图片描述

2 程序设计语言基本成分

高级程序设计语言不依赖于具体的机器硬件
程序的三种基本控制结构:顺序、选择、循环(重复)

数据类型的作用:
①便于为数据合理分配存储单元
②便于对参与表达式计算的数据对象进行检查
③便于规定数据对象的取值范围及能够进行的运算

常量和变量
常量不可以修改,没有分配存储单元常量也有类型属性,比如const float PI = 3.14;
变量可以修改,有分配存储单元

3 传值调用与传引用调用

传值调用:
将实参的值传递给形参,实参可以是变量、常量和表达式。==
不可以实现形参和实参间双向传递数据的效果

传引用(地址)调用:
实参的地址传递给形参,形参必须有地址,实参不能是常量(值),表达式。
可以实现形参和实参间双向传递数据的效果,即改变形参的值同时也改变了实参的值。

全局变量的值会改变。

4 编译器的工作阶段

4.1 编译方式和解释方式

解释方式:词法分析、语法分析、语义分析
编译方式:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成

编译器和解释器都不可省略词法分析、语法分析、语义分析且顺序不可交换
编译器方式中中间代码生成和代码优化不是必要,可省略
即编译器方式可以在词法分析、语法分析、语义分析阶段后直接生成目标代码

4.2 符号表

不断收集、记录和使用源程序中一些相关符号的类型和特征等信息,并将其存入符号表中。
记录源程序中各个字符的必要信息,以辅助语义的正确性检查和代码生成。

4.3 词法、语法、语义分析与目标代码生成

词法分析
输入:源程序;输出:记号流
词法分析阶段的主要作用是:
分析构成程序的字符;及由字符按照构造规则构成的符号是否符合程序语言的规定

语法分析
输入:记号流;输出:语法树(分析树)
语法分析阶段可以发现程序中所有的语法错误
语法分析阶段的主要作用是:
对各条语句的结构进行合法性分析;分析程序中的句子结构是否正确

语义分析
输入:语法树(分析树)
语义分析阶段可以发现静态语义错误
不能发现动态语义错误,动态语义错误运行时才能发现
编译方式翻译C/C++源程序的过程中,类型检查在语义分析阶段处理。

目标代码生成
目标代码生成阶段的工作与具体的机器密切相关
寄存器的分配工作处于目标代码生成阶段
在这里插入图片描述

4.4 程序异常和错误

这里主要就是动态的语义错误是在运行的时候才能检测出来
死循环是动态语义错误。

4.5 中间代码

常见的中间代码有:后缀式、三地址码、三元式、四元式和树(图)等形式。

中间代码与具体的机器无关(不依赖具体的机器)。
不同的高级程序语言可以翻译成同一种中间代码。
中间代码可以跨平台。
因为与具体的机器无关,使用中间代码有利于进行与机器无关的优化处理提高编译程序的可移植性。

5 正规式

星号*表示可以出现0次或者多次
在这里插入图片描述


3.11已更新,未完待续✨

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode - 寻找数组的中心

先学习一下前缀和吧 LCR 012.寻找数组的中心LCR 012. 代码解析 在读题读到左侧元素之和等于右侧所有元素之和的时候,我觉得可以用前缀和,然后结合下面的示例,模拟了一下发现确实可以。 我的想法是搞两个数组,一个来存从左到右数…

Halcon测量专栏-圆弧测量

1.前言 1.1什么是圆弧 圆上任意两点间的部分叫做圆弧。由于圆弧有正反的特性,即为有顺时针方向和逆时针方向,在确定圆弧时,也需要确定圆弧的方向。 1.2halcon实现方式 针对圆弧的问题。1:它与圆是相似的,都具备中心…

视频监控汇聚管理系统EasyCVR平台RTMP推流异常是什么原因?

AI视频智能分析/视频监控管理平台EasyCVR能在复杂的网络环境中(专网、内网、局域网、广域网、公网等),支持设备通过4G、5G、WIFI、有线等方式接入,并将设备进行统一集中接入与视频汇聚管理,经平台接入的视频流能实现多…

王道机试C++第 5 章 数据结构二:队列queue和21年蓝桥杯省赛选择题Day32

目录 5.2 队列 1.STL-queue 课上演示: 基本代码展示: 2. 队列的应用 例:约瑟夫问题 No. 2 题目描述: 思路提示: 代码展示: 例:猫狗收容所 题目描述: 代码表示&#xff1…

安防视频监控汇聚平台EasyCVR使用RTMP推流出现异常的原因排查与解决

AI视频智能分析/视频监控管理平台EasyCVR能在复杂的网络环境中(专网、内网、局域网、广域网、公网等),支持设备通过4G、5G、WIFI、有线等方式接入,并将设备进行统一集中接入与视频汇聚管理,经平台接入的视频流能实现多…

大数据开发 hadoop集群 2.hadoop框架入门

自从我学会了寻找,我就已经找到 ——史铁生 —— 24.3.10 内容简介 Hadoop入门: ①概念 ②环境准备 ③hadoop生产集群搭建 ④常见错误的解决方案 ①概念:1.Hadoop是什么 2.Hadoop发展历史 3.Hadoop…

【Linux】线程封装_互斥

欢迎来到Cefler的博客😁 🕌博客主页:折纸花满衣 🏠个人专栏:题目解析 🌎推荐文章:【LeetCode】winter vacation training 目录 👉🏻线程封装Thread.cpp 👉&am…

骨传导耳机哪个牌子好?五大热门品质机型盘点,体验超赞!

在蓝牙耳机中,骨传导耳机凭借不入耳佩戴更健康等优点,迅速成为当下的热门款式,但随着骨传导耳机市场的品牌日渐增多,以及市场上不专业的骨传导耳机泛滥成灾的问题,有很多消费者在选择骨传导耳机的时候,都出…

【算法】Hash存储——开放寻址法

模拟散列表 维护一个集合,支持如下几种操作: I x,插入一个整数 x; Q x,询问整数 x是否在集合中出现过; 现在要进行 N次操作,对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 N&am…

代码随想录 贪心算法-中等题目-序列问题

376.摆动序列 376. 摆动序列 中等 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 。第一个差(如果存在的话)可能是正数或负数。仅有一个元素或者含两个不等元素的序列也视作摆动序列。 例如, [1, 7…

spring boot 访问 static public 目录下的静态资源报404解决办法

1.前提是你没有修改spring boot 默认拦截路径,跟默认访问资源的目录。 在idea 设置中 把 compiler 下的 Buid project automatically 勾选上

开源的java视频处理库介绍

本文将为您详细讲解 Java 开源的视频处理库,以及它们的特点、区别和应用场景。Java 社区提供了多种视频处理库,这些库可以帮助您在 Java 应用程序中实现视频的录制、编辑、转换和播放等功能。 1. JCodec 特点 - 基于 Java 的视频编解码库。 - 支…

ChatGpt只能看,但无法发送消息的解决办法

这几天发现chatgpt没法发送消息了,我以为是网络问题,又过了几天还是不能发,我以为是梯子的问题,可给我急坏了,于是我用无痕模式发现可以访问额. 但是无痕模式毕竟不是长久之计,于是找到了一个方法 1.首先把电脑缓存全清除了 第一种方法: 快捷键是 : ctrlshiftdel (这会吧浏览…

分支需求管理方式

此文为上一篇文章的后续 我们来回顾一下,现在,你的小组负责的系统,有主干分支,每次新的需求,你都从主干(formal)拉取分支(dev-日期-需求名)进行修改,自测通过后,合并至测试分支(test)进行提测&a…

Python高级二

一、异常 1、定义 异常是在程序执行过程中出现的错误或意外情况。当程序遇到异常时,它会中断当前的执行流程,并尝试找到相应的异常处理机制来解决问题。 2、常见异常类型 SyntaxError:语法错误,通常是代码书写不符合Python语法规则…

VSCode单机活动栏图标无法收起

如果活动栏为展开状态,单击活动栏图标可以正常收起,但无法通过再次单击打开,解决方案如下: 设置->工作台->外观: Activity Bar:Icon Click Behavior: 切换为默认的toggle

C++ 作业 24/3/11

1、提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数&#xff08;要求使用C风格字符串完成&#xff09; #include <iostream>using namespace std;int main() {string str;cout << "please enter str:&…

【Flutter 面试题】如何理解Flutter中的Widget、State、Context ,他们是为了解决什么问题?

【Flutter 面试题】如何理解Flutter中的Widget、State、Context &#xff0c;他们是为了解决什么问题&#xff1f; 文章目录 写在前面解答补充说明完整代码示例运行结果如下详细说明 写在前面 &#x1f64b; 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff…

svg简单教程

推荐查看这个视频 一小时讲完SVG 简介 scalable 英 /ˈskeɪləbl/ 美 /ˈskeɪləbl/ adj. &#xff08;计算机&#xff09; 可扩展的&#xff1b;可改变大小的&#xff0c;可缩放的&#xff1b;可攀登的&#xff1b;可称量的&#xff1b;可去鳞的 vector 英 /ˈvektə/ 美…

CTP-API开发系列之五:SimNow环境介绍

CTP-API开发系列之五&#xff1a;SimNow环境介绍 CTP-API开发系列之五&#xff1a;SimNow环境介绍SimNow模拟测试环境第一套第二套登录关键字段可视化终端常见问题 CTP-API开发系列之五&#xff1a;SimNow环境介绍 如果你要研发一套国内期货程序化交易系统&#xff0c;从模拟测…
最新文章