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

本文详细解析了编译程序与解释程序的工作原理,探讨了程序设计语言的基本成分,如控制结构、数据类型、调用方式等。还介绍了编译器的工作阶段,包括词法分析、语法分析、语义分析和目标代码生成,以及程序异常处理和中间代码的概念。同时,文中涉及了PHP和Python等脚本语言的特性。
摘要由CSDN通过智能技术生成

1 编译程序和解释程序

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

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

2 程序设计语言基本成分

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

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

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

3 传值调用与传引用调用

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

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

全局变量的值会改变。

4 编译器的工作阶段

4.1 编译方式和解释方式

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

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

4.2 符号表

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

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

词法分析
输入:源程序;输出:记号流
词法分析阶段的主要作用是:
分析构成程序的字符;及由字符按照构造规则构成的符号是否符合程序语言的规定
有穷自动机是进行词法分析的适当工具。

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

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

目标代码生成
目标代码生成阶段的工作与具体的机器密切相关
寄存器的分配工作处于目标代码生成阶段
在这里插入图片描述
图片有个错误哈,语义分析那一项的“判断程序语句的结构是否合法”应为语法分析
语法分析包括对各条语句的结构进行合法性分析;分析程序中的句子结构是否正确

4.4 程序异常和错误

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

4.5 中间代码

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

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

5 正规式

正规集可以用正规式描述,用有限自动机识别。
星号*表示可以出现0次或者多次
在这里插入图片描述

6 有限自动机

有限自动机是词法分析的一个工具,它能正确地识别正规集

确定的有限自动机(DFA):对每一个状态来说识别字符后只有一个转移状态
不确定的有限自动机(NFA):对每一个状态来说识别字符后有一个以上的转移状态

7 中缀、后缀表达式

中缀式:a + b
后缀式(逆波兰式):ab+
后缀式利用栈进行求值
语法树的后缀式为后序遍历、中缀式为中序遍历

先逻辑与再逻辑或
例题:
在这里插入图片描述

8 杂记

自顶向下语法分析方法:递归下降分析法、预测分析法
自底向上语法分析方法:移进—归约分析法、LR分析法

标记语言:HTML、XML、WML
函数式编程语言:Lisp
脚本语言:python、PHP
脚本语言主要采用解释方式实现,不使用变量和函数

PHP更适合用来进行动态网页处理
python语言的特点包括跨平台、开源,支持面向对象程序设计,和动态编程


3.12已完结✨,后续会根据自己刷题更新小知识点。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

失舵之舟-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值