2024软件设计师备考讲义——(3)

程序设计语言

一、程序语言基础

1.基本概念

  • 低级语言:机器语言、汇编语言
  • 高级语言:
    • Fortran 科学计算,执行效率高
    • Pascal 为教学开发,表达能力强
    • Prolog 逻辑性程序设计语言
    • C语言 指针操作能力强,可以开发系统级软件,高效
    • C++ 面向对象,高效
    • Java 面向对象,中间代码,跨平台
    • C# 面向对象,中间代码,.net架构
    • Python 面向对象解释型语言

2.分类

  • 命令式和结构化:Fortran、Pascal、C
  • 面向对象:C++、Java、C#、Python、Smarttalk
  • 函数式:Scala、LISP、APL、Haskell、Scheme
  • 逻辑性:Prolog

3.成分

  • (1)数据成分:数据类型、变量、常量、全局/局部变量
  • (2)运算成分:运算符
  • (3)控制成分:顺序结构、选择结构、循环结构
  • (4)传输成分:允许数据传输的方式,如赋值处理、输入输出等
  • (5)函数:函数首部、函数体
    • 值调用:传递值
    • 引用调用:传递引用

二、语言处理程序

1.编译程序原理

  • 词法分析:读取源程序的字符流
  • 语法分析:输入的是记号流
  • 语义分析
  • 中间代码生成
    • 前缀表达式+ab、中缀表达式a+b、后缀表达式ab+
  • 代码优化
  • 目标代码生成

2.文法

字母表、字符、字符串集合及运算

  • 字母表∑ = {a,b} a和b是字符

  • 字符串的长度 |abc| = 3

  • 空串ε

  • 连接 字符串S和T的连接表示为S·T,连接号可省略

  • 是指包括ε在内的所有字符串任意组合 ∑={a,b} , ∑={aa,bb,ab,ba,aaa...}

  • 字符串的方幂,把字符串a自身连接n次得到的串,成为a的n次方幂

  • 字符串集合运算

    • 或(合并):A∪B = {α|α∈A或α∈B}
    • 积(连接):AB={αβ|α∈A且β∈B}
    • 幂:A的n次幂=A*A^(n-1) n>0 并规定A^0 = {ε}
    • 正则闭包+:A+ = A^1∪A^2∪A^3∪A^n∪.... 不包含空串ε
    • 闭包*:A* = A^0∪A+
  • 文法G是一个四元组,G=(V,T,P,S)

    • V 非终结符 不是语言的组成部分,不是最终结果,可以推导其他元素
    • T 终结符 是语言的组成部分,是最终结果,不能再推导其他元素
    • S 起始符 是语言的开始符号
    • P 产生式 用终结符代替非终结符的规则,a->b
  • 乔姆斯基文法分类

    • 0型文法:短语文法
    • 1型文法:上下文有关文法
    • 2型文法:上下文无关文法
    • 3型文法:等价于正规式

3.正规式

正规式 正规集
ab 字符串ab构成的集合
a丨b 字符串a、b构成的集合
a* 由0个或者多个a构成的字符串集合
(a丨b)* 所有字符a和b构成的串的集合
a(a丨b)* 以a为首字符的a、b字符串的集合
(a丨b)*abb 以abb结尾的a、b字符串的集合

4.有限自动机

  • 是一个识别装置的抽象概念,能准确识别正规集
  • 分为确定有限自动机DFA和不确定有限自动机NFA
  • 输入一个字符能得出唯一后继就是DFA,得出多个后继则是NFA

5.语法分析方法

  • 自上而下的语法分析:从左到右,递归下降的思想

    复制代码
    给定文法G和源程序串r,从G的开始符号出发,
    反复使用产生式对句型中的非终结符进行替换(推导),
    逐步推导除r
  • 自下而上的语法分析:从右往左,移进-规约的思想

    复制代码
    从给定的输入串r开始,
    不断寻找字串与文法G中某个产生式的候选式进行匹配,
    并用产生式的左部代替(规约)之,逐步规约到开始符号
相关推荐
天才测试猿7 小时前
功能测试详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
海姐软件测试9 小时前
面试时,如何回答好“你是怎么测试接口的?”
测试工具·面试·职场和发展·postman
互联网杂货铺15 小时前
Web自动化测试之Selenium详解
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
程序员杰哥17 小时前
2025最新软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·功能测试·面试·职场和发展·测试用例
爱编程的小赵18 小时前
蓝桥杯备赛:一道数学题(练思维(同余的应用))
职场和发展·蓝桥杯
Tom Boom20 小时前
1.11.信息系统的分类【DSS】
人工智能·算法·机器学习·职场和发展·分类·数据挖掘·系统架构
邴越20 小时前
回文子序列问题解题模板
算法·leetcode·职场和发展
独行soc1 天前
2025年渗透测试面试题总结-长某亭科技-安全服务工程师(一面)(题目+回答)
科技·安全·面试·职场和发展·红蓝攻防·护网·2025
BingLin-Liu1 天前
蓝桥杯备考:动态规划dp之最大子段和
职场和发展·蓝桥杯·动态规划
我不是彭于晏丶2 天前
蓝桥杯 Excel地址
职场和发展·蓝桥杯·excel