软考《软件设计师》第六章:程序设计语言

第六章:程序设计语言

考点1. 编译与解释(★★★)

  1. 解释程序(解释器):直接解释执行源程序(程序不独立),解释程序(控制权)和源程序都要参与到程序的运行过程,边解释边执行,执行效率较低

  2. 编译程序(编译器):将源程序翻译成目标语言程序(独立程序),源程序和编译程序都不再参与目标程序的执行过程,执行效率较高。

  3. 编译过程

    在这里插入图片描述

    1. 词法分析阶段:依据语言的词法规则将源程序逐个字符扫描,识别出一个个“单词”符号
    2. 语法分析阶段:依据语言的语法规则将单词符号序列分解成各类语法单位。如“表达式”、“语句”等
    3. 语义分析阶段:进行源程序类型分析并产生代码和检查是否包含静态语义错误
    4. 中间代码生成:根据语义分析的输出生成中间代码,常有树、后缀式、三地址码(四元式)
    5. 目标代码生成:把中间代码变换成特定机器上的绝对指令代码、可重定位的指令代码或汇编指令代码,与具体机器密切相关
    6. 符号表:记录源程序中各个符号的必要信息,辅助语义的正确性检查和代码生成,可以贯穿编译所有阶段

考点2. 文法(★★)

  1. 概念: 一个形式文法是一个有序四元组G=(V,T,S,P)

  2. V(非终结符):大写字母,可以推导

  3. T(终结符):小写字母

  4. S(起始符):最开始

  5. P(产生式):用终结符替代非终结符的规则。形如α→β

  6. 文法的分类

    在这里插入图片描述

  7. 文法与语法树的推导:例:文法G=({a, b}, {S, A}, S, P),其中:S→aAS|a;A→SbA|SS|ba。请构造句型aabAa的推导树。S → aAS; S → a; A → SbA;A → SS; A → ba

    在这里插入图片描述

考点3. 正规式(★★★★)

  1. 对于字母表∑,其上正规式及其表示的正规集定义

    1. ε是一个正规式,它表示集合L(ε)={ε}
    2. 若a是∑上的字符,则a是一个正则式,它所表示的正规L(a)={a}
    3. 若正规式 r 和 s 分别表示正规集L®=L(s),则
      1. r|s是正规式,表示集合L®∪L(s)
      2. r·s是正规式,表示集合L®L(s)
      3. r是正规式,表示集合(L®)
      4. ®是正规式,表示集合L®
    4. 仅由有限次地使用上述三个步骤定义的表达式才是∑上的正规式。闭包运算符“*”具有最高的优先级,连接运算“.”具有次高优先级,或运算符“|”具有最低优先级
  2. 常见正规式的含义

    在这里插入图片描述

考点4. 有限自动机(★)

  1. 字符串判断:一个有限自动机所识别的语言是从开始状态到终止状态所有路径上的字符串的集合

    1. 下图所示的有限自动机中,s0是初始状态,s3为终止状态,该自动机不能识别()

      1. A.abab B.aaaa C.babb C.abba

      在这里插入图片描述

      1. 对于A:其识别路径为s0→s1→s2→s1→s2,字符串结束时的状态不是终止状态,所以该自动机不能识别“abab”
      2. 对于B:其识别路径为s0→s1→s3→s3→s3,字符串结束时的状态是终止状态,所以该自动机可以识别“aaaa”
      3. 对于C:其识别路径为s0→s2→s1→s2→s3,字符串结束时的状态是终止状态,所以该自动机可以识别“babb”
      4. 对于D:其识别路径为s0→s1→s2→s3→s3,字符串结束时的状态是终止状态,所以该自动机可以识别“abba”
    2. 有限自动机转正规式

      1. 采用带入的方法
      2. 判断正规式的范围是否和有限自动机的范围相同

考点5. 表达式(★★★)

  1. 前缀表达式(+ab):把运算符写在运算对象的前面(语法树的先序遍历)
  2. 中缀表达式(a+b):把运算符写在运算对象的中间(语法树的中序遍历)
  3. 后缀表达式(ab-):又叫做逆波兰式,把运算符写在运算对象的后面(语法树的后序遍历)
  4. 例如:表达式(a - b) * ( c + 5)的后缀式是
    1. 画树:先画括号内的树,最后画括号外的树
    2. 遍历:先遍历左子树(从左到右在到上),后遍历右子树(从左到右在到上),最后遍历根节点

考点6. 传值与传址(★★★★)

  1. 比较

    在这里插入图片描述

  2. 例题

    在这里插入图片描述

考点7. 多种程序语言特点(★★★)

  1. 结构化程序设计语言
    1. Fortran语言:第一个高级程序设计语言,科学计算,执行效率高
    2. Pascal语言:表达能力强,Delphi
    3. C语言:通用,指针操作能力强,高效
    4. COBOL:数据处理领域最为广泛的程序设计语言,高级编程语言
    5. PROLOG:逻辑式语言,间接性,表达能力强,建造专家系统、数据库、自然语言理解、智能知识库等
  2. 面向对象程序设计语言
    1. C++:C语言基础上增加了类机制,高效,与C兼容,经常用来开发操作系统
    2. Java:中间代码,跨平台,通用的程序设计语言
    3. Python:解释型程序设计语言,胶水语言,通用的脚本语言
  3. 脚本语言:解释性语言
  4. PHP:服务器端脚本语言,制作动态网页
  5. Ruby:简单快捷、面向对象、脚本语言
  6. 函数式语言
    1. Lisp:函数式程序语言,符号处理,人工智能

视频来源 软件设计师

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

流年师兄要努力りゅう

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

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

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

打赏作者

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

抵扣说明:

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

余额充值