【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础

文章目录

  • 前言
  • 章节提要
  • 一、编译过程
    • 真题链接
    • 解释器与编译器特点与区别
    • 真题链接
  • 二、文法的定义以及语法推导树
    • 真题链接
  • 三、有限自动机与正规式
  • 四、表达式
    • 真题链接
  • 五、函数调用(传值与传址)
    • 传值调用与传址调用
    • 真题链接
  • 六、各种程序语言的特点
    • 真题链接

前言


本系列文章为观看b站视频以及b站up主@zst_2001系列视频所做的笔记,感谢相关博主的分享。如有侵权,立即删除。
视频链接:视频链接(注:文章中有关图片、以及网友的相关评论与总结等内容未标明出处均出自该视频,感谢大家的分享!)
b站up主页:b站up

章节提要

【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第1张图片
重点掌握:正规式、表达式、传值与传址

一、编译过程

【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第2张图片

  • 符号表
    (注:下图来自前言中up主视频)image
  • 编译方式与解释方式的过程
    (注:下图来自前言中up主视频)
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第3张图片 编译方式下,在机器上运行的目标程序完全独立于源程序
  • 语法分析过程
    (注:下图来自前言中up主视频)
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第4张图片
    语法分析阶段可以发现程序中的所有语法错误;编译正确的程序必然不包含语法错误;“除数为0”为动态语义错误,动态语义错误只有运行时才能发现
  • 语义分析过程
    (注:下图来自前言中up主视频)
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第5张图片
  • 中间代码
    (注:下图来自前言中up主视频)
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第6张图片
  • 目标代码生成过程
    (注:下图来自前言中up主视频)
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第7张图片
    目标代码生成阶段的工作与目标机器的体系结构密切相关

真题链接

  • 编译过程中,对高级语言程序语句的翻译主要考虑声明语句和可执行语句。对声明语句,主要是将所需要的信息正确地填入合理组织的 符号表 中;对于可执行语句,则是 翻译成中间代码或目标代码
  • 对于高级语言源程序进行编译或解释处理的过程中,需要不断收集、记录和使用源程序中一些相关的类型和特征等信息,并将其存入 符号表 中。
  • 解释方式不包含 目标代码生成阶段
  • 编译程序对C语言源程序进行语法分析时,可以确定 变量是否定义(或声明)
  • 编译程序分析源程序的阶段依次是 词法分析、语法分析、语义分析
  • 分配寄存器的工作在 目标代码生成 阶段进行。
  • 判断程序语句的形式是否正确属于 语法分析 阶段的工作。
  • 语法分析主要是分析 程序语句的结构是否合法
  • 词法分析 阶段的主要作用是分析构成程序的字符及由字符按照构造规则构成的符号是否符合程序语言的规定。
  • 对高级语言源程序进行编译的过程中,有穷自动机(NFA或DFA)是进行 词法分析 的适当工具。
  • 语法分析阶段的输入是 记号流
  • 若程序中的括号不配对,则会在 语法分析 阶段检查出错误。
  • 类型检查在 语义分析 阶段处理。
  • 若C程序表达式中引用了未赋初值的变量,则 可以编译并运行,但运行结果不一定是期望的结果
  • 某程序运行时陷入死循环,则可能的原因是程序中存在 动态的语义错误
  • 引入中间代码的好处:有利于进行与机器无关的优化处理
  • 常用的中间代码有 后缀式、三地址码、树 等。

解释器与编译器特点与区别

  • (注:下图来自前言中up主视频)
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第8张图片
  • 编译程序生成源程序的目标程序,而解释程序不生成目标程序
  • 编译程序不参与用户程序的运行控制,而解释程序则参与

真题链接

  • 将高级语言源程序翻译成目标程序的是 编译程序
  • 与编译器相比,解释器 参与运行控制,程序执行的速度慢

二、文法的定义以及语法推导树

【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第9张图片
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第10张图片
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第11张图片

真题链接

  • 大多数程序设计语言的语法规则用 上下文无关文法
  • 程序设计语言的大多数语法现象可用 上下文无关文法 描述。

三、有限自动机与正规式

【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第12张图片

  • (注:下图来自前言中up主视频)image
  • (注:下图来自《软件设计师教程》(第5版)(褚华、霍秋艳主编,清华大学出版社))【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第13张图片【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第14张图片
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第15张图片

正确答案:D、C
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第16张图片
1)对文法进行替换可分析出来答案为D。
2)可以使用代入法来判断。

【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第17张图片

正确答案:C
依次带入选项,判断是否能够从初态到达终点即可。

四、表达式

【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第18张图片

正确答案:D
画出如上图相应的树结构,即可求解。

真题链接

  • 表达式采用逆波兰表示时,利用 进行求值。

五、函数调用(传值与传址)

  • 程序的三种基本控制结构是 顺序、选择和重复(循环)

【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第19张图片
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第20张图片

传值调用与传址调用

  • (注:下图来自前言中up主视频)
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第21张图片
    传值过程
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第22张图片
    传址过程
    【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第23张图片
  • 程序中的数据都必须具有类型,其作用为:
    (注:下图来自前言中up主视频)image

真题链接

  • 在引用调用方式下进行函数调用是将 实参的地址传递给形参

六、各种程序语言的特点

  • 汇编语言是符号化的机器语言,一般情况下,用汇编语言编写的程序比高级语言效率更高

【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础_第24张图片

真题链接

  • 对于编译型语言处理过程为:预处理-编译-汇编-链接

你可能感兴趣的:(软件设计师-从小白到大牛,redis,数据库,缓存,python,c++,java,程序设计语言)