zoukankan      html  css  js  c++  java
  • 软件设计师-程序设计语言与语言处理程序基础

    重点

    一、编译过程

    编译型语言与解释型语言区别:https://zhidao.baidu.com/question/193596037.html

    这个解释真有趣

    二、文法定义

    三、语法推导树

    四、有限自动机

    有限自动机分确定有限自动机(DFA)和非确定有限自动机(NFA)

    例1

     例2

    不确定的意思是输识别一个字符串有可能有两个目的地

    例3

    答案
    对高级语言源程序进行编译(或解释)方式的翻译过程中,,词法分析采用有限自动机作为计算模型。有限自动机分为确定的有限自动机(DFA)和不确定的有限自动机 (NFA)。可将一个从NFA转换为等价的最小化DFA。
    题中的NFA的功能是识别空串以及b不能连续出现(即每个b后至少含有1个a.) 的a、b字符串,若是非空串,则以a结尾。
    选项A识别的是空串以及每个b后至少含有1个a的a、b字符串,若是非空串, 则以a结尾。
    选项B识别空串以及b不能连续出现且以b结尾的a、b字符串。
    选项C识别b不能连续出现且以b结尾的a、b字符串,不能识别空串。
    选项D识别b不能连续出现且以a结尾的a、b字符串,不能识别空串。

    例4

     例5

    分析题中所给自动机识别字符串的特点可知,该自动机识别的字符串必须以01结尾,而之前的0和1可以以任意方式组合,因此,正规式为(0丨1)*01。

    例 6  如何判断是否能为空?

    例 7

     

    五、正规式

    * 表示字符可以出现0到无限次

    六、 数据类型与程序控制结构

    七、表达式

    例1

    选D

    例2 后缀式

     

     例3 后缀式

    根据优先级补充括号:   a+(b-c)*d = (a+((b-c)*d))

     例4  

    先算的减号后算的乘号,所以*在-的里面

     例4 后缀式

    后缀式(逆波兰式)是波兰逻辑学家卢卡西维奇发明的一种表示表达式的方法。这种表示方式把运算符写在运算对象的后面,例如,把a+b写成ab+,所以也称为后缀式。
    借助栈可以方便地对后缀式进行求值。方法为:先创建一个初始为空的栈,用来存放运算数。对后缀表达式求值时,从左至右扫描表达式,若遇到运算数,就将其入栈,若遇到运算符,就从栈顶弹出需要的运算数并进行运算,然后将结果压入栈顶,如此重复,直到表达式结束。若表达式无错误,则最后的运算结果就存放在找顶并且是栈中唯一的元素。

    例5 中缀式

    八、传值与传址

    九、各程序语言特点

     

  • 相关阅读:
    iOS WKWebView与JS的交互
    iOS开发-APP图标、启动页、名字的设置
    [UIApplication sharedApplication].keyWindow和[[UIApplication sharedApplication].delegate window]区别
    iOS开发makeKeyAndVisible和makeKeyWindow区别
    iOS开发之微信第三方登录
    Xcode 10 Error: Multiple commands produce
    iOS开发WKWebView 返回H5上级页面
    iOS中nil、 Nil、 NULL和NSNull的区别
    iOS中dealloc原理
    HTTP原理及状态码汇总
  • 原文地址:https://www.cnblogs.com/buchizaodian/p/9016799.html
Copyright © 2011-2022 走看看