软考数据库第二章程序语言基础知识

本文详细介绍了程序设计语言的基础知识,包括编译程序和解释程序的区别、程序语言的数据成分和控制成分、编译过程的六个阶段,以及中缀、前缀与后缀表达式。此外,还讲解了传值调用和引用调用的概念。内容涵盖软考数据库第二章的重点,适合备考者复习使用。
摘要由CSDN通过智能技术生成

软考数据库第二章程序语言基础知识

笔记

2程序语言基础知识

本节主要考点
1、编译程序和解释程序
2、程序语言的数据成分和控制成分
3、编译程序的过程
4、中缀、前缀与后缀表达式

程序语言概述

1、低级语言和高级语言:
低级语言:机器语言和汇编语言。是一种面向机器的语言,其格式取决于计算机的机器指令。难以理解,程序可读性差,程序设计效率低。
高级语言:面向各类应用的程序语言。如Java、C、C++、Python、PHP、JavaScript等等。与人们使用的语言较为接近,便于理解,提高了程序设计的效率。
2、汇编、解释、编译:
高级程序语言必须进行翻译才能为计算机硬件所理解,常用的翻译方式有汇编、解释和编译。
用汇编语言编写的:需要汇编程序翻译成目标程序,然后执行目标程序。
用高级语言编写的:需要解释程序或编译程序进行翻译,然后再运行。

3、编绎程序和解释程序:
(1)解释程序(解释器):***要么直接解释执行源程序,要么将源程序翻译成某种中间代码后再加以执行。***它按源程序中语句的执行顺序,逐条翻译并立即执行相关功能。
(2)编译程序(编译器):***将源程序翻译成目标程序(目标代码),然后再在计算机上运行目标程序。***一般分为两个阶段:
编译阶段:把源程序翻译成目标程序。
运行阶段:执行目标程序。

4、编绎和解释的区别:
编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程。

一次编译多次执行,编译速度快

​ 解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。
简单来说,在解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。
5、编绎和解释的比较:

  • 编译比解释方式可能取得更高的效率。
  • 解释方式比编译方式更灵活
  • 解释方式可移植性好。
程序语言的数据成分

1)常量和变量:按照程序运行时数据的值能否改变,将程序中的数据分为常量和变量。
2)全局变量和局部变量:按数据的作用域范围,可将其分为全局变量和局部变量。系统为全局变量分配的存储空间在程序运行的过程中一般是不改变的,而为局部变量分配的存储单元是可以动态改变的。
3)数据类型
基本类型:整型、字符型、实型和布尔类型。
特殊类型:空类型。
用户定义类型:枚举类型。
构造类型:数组、结构、联合。
指针类型:type *。
抽象数据类型:类类型。

程序语言的控制成分
1)顺序结构
计算过程从所描述的第一个操作开始,按顺序依次执行后续的操作,
直到序列的最后一个操作。
2)选择结构
选择结构提供了在两种或多种分支中选择其中一个的逻辑。
3)循环结构
循环结构描述了重复计算的过程,通常由三部分组成:初始化、循环体和循环条件。

编译过程

​ 编译程序的作用是把某种高级语言书写的源程序翻译成与之等价的目标程序,其工作过程一般可以分为6个阶段:
在这里插入图片描述

1、词法分析
任务:对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个“单词”符号。“单词”符号是程序设计语言的基本语法单位,如关键字(保留字)、标识符、常数、运算符和标点符号、左右括号
等。
2、语法分析
任务:根据语言的语法规则,在词法分析的基础上,分析单词串是否构成短语和句子,即是否为合法的表达式、语句和程序等基本语言结构,同时检查和处理程序中的语法错误
如果源程序没有语法错误,语法分析后就能正确地构造出其语法树。

3、语义分析
任务:分析各语法结构的含义,检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。
语义分析的一个主要工作是进行类型分析和检查。一个数据类型一般包含两个方面的内容:类型的载体及其上的运算。例如:整除取余运算符只能对整型数据进行运算,如果运算对象为浮点数,则认为是一种类型不匹配的错误。
4、中间代码生成
任务:根据语义分析的输出生成中间代码。
常用的中间代码有:后缀式(逆波兰式)、四元式(三地址码)、树形表示。

5、代码优化
由于编译器将源程序翻译成中间代码的工作是机械的、按固定模式进行的,因此,生成的中间代码往往在时间和空间方面的效率较差。当需要生成高效的目标代码时,就必须进行优化。
优化过程可以在中间代码生成阶段进行,也可以在目标代码生成阶段
进行。
6、目标代码生成

  • 目标代码生成是编译器工作的最后一个阶段。
  • 任务:把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码和汇编指令代码。
  • 这个阶段的工作与具体的机器密切相关

7、符号表管理
符号表的作用是记录源程序中各种符号的必要信息,以辅助语义的正确性检查和代码生成,在编译过程中需要对符号表进行快速有效地查找、插入、修改和删除等操作。
8、出错处理
源程序中不可避免地会有一些错误,大致分为静态错误和动态错误。
(1)动态错误发生在程序运

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值