哈喽!大家好啊!!!我又来带着大家学习了,前面几次呢,我们把第一章的知识点学习完了。如果还有小伙伴没有学习到的呢,可以点击下面的连接去学习噢:
(1)https://blog.csdn.net/2303_79274306/article/details/140398388
(2)https://blog.csdn.net/2303_79274306/article/details/140415177
(3)https://blog.csdn.net/2303_79274306/article/details/140569724
大家如果想看一下软考都考啥的话,可以点击下面链接去看看噢:
那么,接下来我们废话不多说,就让我们开始第二章的学习吧!!!
第二章 程序设计语言基础知识
根据考试大纲,本节知识主要涉及软件设计师上午的单选题,本章大概考3分左右。
2.1程序设计语言概述
2.1.1程序设计语言的基本概念
该部分会考查大家一些相关语言的知识,这几年考察Python的试题比较多,大家如果不会的话可以提前去了解了解,我之后的时间呢也会出一些学习Python的文章!!!
- 程序设计语言是为了书写计算机程序而人为设计的符号语言,用于对计算机进行描述、组织和推导。
低级语言:机器语言(由0、1序列构成)、汇编语言。
高级语言:功能更强,抽象级别更高,与人们使用的自然语言比较接近。
- 各程序设计语言特点:
1.Fortran语言:科学计算,执行效率高;
2.Pascal语言:为教学而开发,表达能力强;
3.C语言:面向过程,指针操作能力强,且高效;
4.C++语言:面向对象,且高效;
5.Java语言:面向对象,中间代码,跨平台;
6.C#语言:面向对象,中间代码,.NET;
7.Python语言:面向对象,脚本语言,解释型语言;
8.JavaScript语言:脚本语言,广泛用于Web开发。
2.1.2程序设计语言的基本成分
(1)数据成分
指一种程序设计语言的数据和数据类型。数据分为常量(程序运行时不可改变)、变量(程序运行时可以改变)、全局量(存储空间在静态数据区分配)、局部量(存储空间在堆栈区分配)。数据类型有整型、字符型、单精度浮点型、双精度浮点型、布尔型、枚举型等。
(2)运算成分
指明允许使用的运算符及运算规则。包括算术运算、逻辑运算、关系运算、位运算等。
(3)控制成分
指明语言允许的数据传输方式。包括顺序结构、选择结构、循环结构(初始化+循环体+循环终止条件)
(4)传输成分
指明语言允许的数据传输方式。如赋值处理、数据的输入输出等。
(5)函数
它是一段具有处理独立功能的代码块。函数使用涉及三各概念:
- 函数定义
返回值类型 函数名(形参....)//函数首部
{
函数体:
}
- 函数声明
返回值类型 函数名(参数类型...)//函数声明
- 函数调用
函数名(实参...)://函数调用
- 函数调用的两种方式
传值调用:将实参的值传递给形参,形参的改变不会导致实参的改变。实参可以是合法的变量、常量或表达式。
引用调用:即传地址调用,将实参的地址传递给形参,即相当于实参存储单元的地址引用,因此形参的值改变的同时,实参的值也跟着改变。实参不能为常量,只能是合法的变量和表达式。
例题:
根据题意可以知道:x=a=8;m=b=5;
把值代入到hoo函数里可以得到:m=40;x=39;
我们又根据题意可以知道:
x为引用调用;m为传值调用;
所以,x=39;m=5
2.2语言处理程序基础
2.2.1汇编程序基本原理
- 汇编语言是为特定的计算机系统设计的面向机器的符号化的程序设计语言。
- 汇编程序将汇编语言所编写的源程序翻译成机器指令程序。汇编程序一般需要两次扫描源程序才能完成翻译过程。
第一次:检查语法错误,确定符号名字;建立符号表;
第二次:产生目标程序。
2.2.2编译程序基本原理
- 编译程序的功能是把某高级语言书写的源程序翻译成与之等价的目标程序(汇编语言或机器语言)。编程程序工作过程分为6个阶段:
1.词法分析:这个阶段的任务是从左到右一个字符一个字符地扫描源程序,从而识别出一个个”单词“符号。
2.语法分析:语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等。语法分析程序判断源程序在结构上是否正确。
3.语义分析:它的任务是对结构上的正确的源程序进行上下文有关性质的审查和类型审查。如类型匹配、除数不为0等。又分为静态语义错误(在编译阶段能找出来)和动态语义错误(只能在运行时找出来)。
4.中间代码(非必须):中间代码时根据语义分析产生的,需要经过优化连接,最终生成可执行的目标代码。引入中间代码的目的时进行与机器无关的代码优化处理,有助于提高可移植性。常用的中间代码有后缀式(逆波兰式)、三元式(三地址码)、四元式、树和图等形式。
5.代码优化(非必须):当需要生成高效的目标代码时,就进行优化。所依据的原则是程序的等价变换原则。
6.目标代码生成:把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,这个阶段的工作与具体的机器密切相关。需要考虑三个问题(一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码的访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量)。
这上面一大堆的字,大家可千万不要死记硬背啊。我对这一大段话的理解就是,你要去造一个3D的物体,你就要先从点(词法分析)开始;到线(语法分析);再到面(语义分析);最后就是把它组合起来(目标代码生成),就成了一个3D的物体。当然这只是帮助你去理解它,每个步骤是如和操作的你也要知道,考试也经常会考的!!!
- 中间代码生成的后缀式
前缀式:+ab
中缀式:a+b
后缀式:ab+
- 掌握以上三种表达式即可,其实就是树的三种遍历(第三章会讲),一般正常的表达式是中序遍历,即中缀式,根据其构造出一棵树,再按照题目要求求出前缀式和后缀式。
- 后缀式即逆波兰式,式逻辑学家卢卡西维奇发明的一种表示表达式的方法。这种表示方式把运算符写在运算对象的后面,例如:把a+b写成ab+。这种表示法的优点是根据运算对象和运算符的出现次序进行计算,不需要使用括号。
- 后缀式简单求法:按照运算的优先顺序依次将运算符写在运算对象的后面,例如:把a+b写成ab+。