程序设计语言基本概念

程序运行时的用户内存空间一般划分为代码区、静态数据区、栈区、堆区。

程序设计语言的基本成分包括数据、运算、控制和传输等。(控制包括:顺序、选择、循环三种)

高级语言:

高级语言对底层操作进行了抽象和封装,其一条语句对应多条机器指令,使编写程序的过程更加符合人类的思维习惯。高级语言不依赖与具体的机器硬件

高级语言中常见的命名对象:变量、函数、数据类型

符号表: 在编译程序工作的过程中,需要不断收集、记录和使用源程序中一些语法符号的类型和特征等信息。这些信息一般以表格形式存储在系统中。

编译与解释

编译器与解释器是两种基本的高级语言处理程序。编译器对高级语言处理过程可以划分为:词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成。其中中间代码生成与代码优化并不是每个编译器都必须的。

两者的区别:
在编译方式下,机器上运行的是与源程序等价的目标程序,源程序与编译程序都不参加目标程序的执行过程;而是将程序翻译成目标代码
在解释方式下,解释程序与源程序要参加程序的运行过程中,运行程序的控制权在解释程序。在这个过程中不产生独立的目标代码。

编译过程:

词法分析: 输入源程序,对构成程序的字符串进行扫描分解,识别出一个个单词,删除无用的信息,报告分析时的错误,输出记号流。

语法分析: 语法分析器以单词符号作为输入,分析单词符号是否形成符合语法规则的语法单位,如表达式、赋值、循环等,按语法规则分析检查源程序是否有正确的逻辑结构。
语法分析方法: 分为自顶向下分析法与自底向上分析法,递归下降分析法与预测分析法属于自上而下分析法,移进-规约分析法属于自下而上分析法。

语义分析: 主要检查源程序是否存在语义错误,并收集类型信息共后面的代码生成阶段使用。
静态语义分析: 语法制导翻译,将语言结构的语义以属性的形式赋予代表此结构的文法符号,而属性的计算以语义规则的形式赋予文法的产生式。
动态语义分析: 运行时错误,如变量取零做除数、引用数组下标错误等。

中间代码: 由于源程序与目标程序的逻辑结构往往差别很大,想要一次翻译到位很困难,而用语法制导翻译往往会生成繁琐低效的目标代码,因此必须采用一些中间代码,将原程序先翻译成中间代码形式,以利于进行与机器无关的优化处理。
使用中间代码有助于提高编译程序的可移植性。常用的中间代码有:后缀式、三元式、四元式、树等形式。

代码优化: 对前阶段的中间代码变换或改造,目的是使生成的代码更高效,节省时间和空间。

目标代码生成: 编译器工作的最后阶段,把代码转换为特定机器上的绝对指令代码、可重定位指令或汇编指令代码,这个阶段与具体的机器密切相关。

文法

文法定义:

对于大多数程序设计语言的语法现象,用乔姆斯基的上下文无关文法描述。

语法推导树:

有限自动机NFA

例题:

答案:C,将选项带入即可

正规式:

例题:

(1)答案:D
样例推到A:S -> aA -> abS -> abaA -> ababS -> ababaA -> ababab
(2)答案:C

表达式:

答案:D

传值与传址

传值与传址:
传值与传址是函数调用时常采用的信息传递方式。传值是简法实参的值传递给被调用函数的形参,实参可以是常量、变量、表达式或函数调用。传址的实质是传送被调用函数的形参,实参必须要有地址。

案例:

各种程序语言及特点

脚本语言: 又被称为扩建的语言,或动态语言,是一种编程语言,通常以文本(ASCII)形式保存,只有在被调用式进行解释或编译。为了缩短传统的编写-编码-链接-运行过程而创建设计的计算机编程语言。脚本通常是解释运行,运行在解释器或虚拟机上,开发效率较高。

Python是一种脚本语言,一种弱类型语言。

软考历年真题及B站相关视频课件:
链接:https://pan.baidu.com/s/1e4d1-HGOzcEVHSK8Q0j_xA
提取码:acij

软考(软件设计师)考点总结 -- 程序设计语言基础相关推荐

  1. 【中级软考—软件设计师】17程序设计语言与语言处理程序基础17.2 编译程序基本原理【**】:17.2.3正规文法 有限自动机

    编译程序基本原理 有限自动机 正规式 有限自动机例题 选C 正规式

  2. 软考-软件设计师 笔记九(多媒体基础)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  3. 软件设计师学习2——程序设计语言基础知识

    1.编译程序和解释程序: 用高级语言和汇编语言写的程序叫源程序,不能直接执行,用汇编写的需要一个汇编程序将其翻译成目标程序后才能执行.高级语言写的需要对应的解释程序或编译程序对其进行翻译 . 解释程序 ...

  4. excel 进行二叉树_软考 软件设计师考点整理:树与二叉树

    [考法分析] 1.本知识点的主要考查形式有:对数与二叉树的一些概念和特性的描述,判断其正误:对于特殊的二叉树(平衡树.哈弗曼树.满二叉树.排序树等)定义.特性的描述判断正误.或根据题干描述构造特殊的二 ...

  5. 软考-软件设计师 - 第5章 软件工程基础知识【附补充常考知识点】

    5.1 软件工程概述 5.1.1.计算机软件: (1)系统软件 (2)应用软件 (3)工程.科学软件 (4)嵌入式软件 (5)产品线软件 (6)Web应用 (7)人工智能软件 (8)开放计算 (9)网 ...

  6. 软考-软件设计师 笔记一(计算机组成与体系结构)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  7. 软考-软件设计师 笔记十(软件工程)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  8. 软考-软件设计师 笔记十二(数据流图)

    本栏博客目录 软考-软件设计师 笔记一(计算机组成与体系结构) 软考-软件设计师 笔记二(操作系统基本原理) 软考-软件设计师 笔记三(数据库系统) 软考-软件设计师 笔记四(计算机网络) 软考-软件 ...

  9. 软考软件设计师下午真题-面向对象的程序设计与实现-状态设计模式(2011年下半年试题六))Java代码讲解

    软考软件设计师下午真题-面向对象的程序设计与实现-状态设计模式(2011年下半年试题六))代码讲解 说明 Java代码 注释 说明 某大型商场内安装了多个简易的纸巾售卖机,自动出售2元钱一包的纸巾,且 ...

  10. 软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))Java代码讲解

    软考软件设计师下午真题-面向对象的程序设计与实现-生成器设计模式(2018年上半年试题六))代码讲解 说明 Java代码 注释 说明 生成器(Builder)模式的意图是将一个复杂对象的构建与它的表示 ...

最新文章

  1. hbase 默认目录_HBase 配置示例
  2. 【TCP/IP】一张图带你读懂TCP/IP协议
  3. struts 2 拦截器
  4. 前言_工作两年自我感触
  5. mysql5.0操作手册_MySQL 操作手册
  6. php查找存储引擎,php-如何找到MySQL临时表存储引擎
  7. 《SEO字典》解读meta robots标签
  8. 如何全面认识大数据分析的基础知识
  9. mysql 内置存储过程_数据库:mysql内置功能-存储过程
  10. 【知识点】关于axis的理解(python)
  11. word打开文档很久很慢_打开Word文档出现假死或超慢的原因及解决方法
  12. Metrics 入门教程
  13. 高并发解决方案——提升高并发量服务器性能解决思路
  14. Win7旗舰版电脑插耳机没声音怎么解决
  15. 使用artisan命令创建控制器
  16. 数据类型和运算符答案
  17. Kotlin实现RxBus3
  18. Gross Tumor Volume Segmentation for HNC Radiotherapy using Deep Dense Multi-modality Network
  19. ipsec.conf 各配置含义
  20. 设计模式 — 6大设计原则(依赖倒置和接口隔离原则)

热门文章

  1. 边玩游戏,边学CSS
  2. [奶奶看了都会]掘金自动签到-Java版本
  3. 2020国内互联网大厂薪资和职级汇总表
  4. 【模板】【bzoj2733】[HNOI2012]永无乡 Treap
  5. python实现冒泡,选择,插入排序(凑合着看)
  6. 移动端IM开发需要面对的技术问题
  7. 三分法解决凸(凹)函数极值问题​​​​​​​
  8. 【个人项目】东北大学软件学院2020级2021年夏季实训项目——东软颐养社区系统
  9. 京投银泰通过科达视频会议提升远程沟通效率
  10. English 杂文3