ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

编译原理学习笔记——第二讲 高级程序设计语言概述

2021-01-15 18:00:37  阅读:165  来源: 互联网

标签:语句 语言 编译 3.2 3.5 概述 3.3 程序设计


编译原理学习笔记——第二讲 高级程序设计语言概述

1. 常用的高级程序设计语言

在这里插入图片描述


Alan J. Perlis:

  • A language that doesn’t affect the way you think about programming, is not worth knowing.

  • 相对机器语言或汇编语言,高级程序设计语言:
    1.更接近于数学语言和工程语言,更直观、自然和易于理解
    2.更容易验证其正确性、改错
    3.编写程序的效率更高
    4.更容易移植

2. 程序设计语言的定义

  • 标识符是语法概念,名字是语义概念

2.1 语法

  • 程序本质上是一定字符集上的字符串
  • 语法:一组规则,用它可以形成和产生一个合式(well-formed)的程序

  • 词法规则:单词符号的形成规则
  1. 单词符号是语言中具有独立意义的最基本结构
  2. 一般包括:常数、标识符、基本字、算符、界符等
  3. 描述工具:有限自动机

  • 语法规则:语法单位的形成规则
  1. 语法单位通常包括:表达式、语句、分程序、过程、
    函数、程序等;
  2. 描述工具:上下文无关文法

2.2 语义

  • 一组规则,用它可以定义一个程序的意义
  • 描述方法:
    自然语言描述
    二义性、隐藏错误和不完整性
  • 形式描述:
    操作语义、指称语义、代数语义

2.3 程序设计语言的基本功能

  • 程序,本质上说是描述一定数据的处理过程
  • 程序语言的基本功能:描述数据和对数据的运算

2.4 程序的层次结构

在这里插入图片描述

3. 高级程序设计语言的一般特性

3.1 高级语言的分类

1.强制式语言(Imperative Languge)/过程式语言

  • 命令驱动,面向语句
  • FORTRAN、C、Pascal,Ada

2.应用式语言(Applicative Language)

  • 注重程序所表示的功能,而不是一个语句接一个语句地执行
  • LISP、ML

3.基于规则的语言( Rule-based Language)

  • 检查一定的条件,当它满足值,则执行适当的动作
  • Prolog

4.面向对象语言(Object-Oriented Language)

  • 封装、继承和多态性
  • Smalltalk,C++,Java

3.2 程序结构

3.2.1 FORTRAN(第一个高级程序设计语言)

  • 一个程序由一个主程序段和若干辅程序段组成
  • 辅程序段可以是子程序、函数段或数据块
  • 每个程序段由一系列的说明语句和执行语句组成,各段可以独立编译
    虽是模块结构,但没有嵌套和递归
  • 各程序段中的名字相互独立,同一个标识符在不同的程序段中代表不同的名字

3.2.2 PASCAL(结构化程序设计语言代表)

  • PASCAL程序本身可以看成是一个操作系统调用的过程,过程可以嵌套和递归
  • 作用域:由“最近嵌套原则”来确定。
  • 一个PASCAL过程
    -

3.2.3 Java(面向对象的高级语言)

  • 类(Class)
  • 继承(Inheritance)
  • 多态性(Polymorphism)和动态绑定(Dynamic binding)

3.3 数据结构与操作

3.3.1 数据类型通常包括三要素

  • 用于区别这种类型数据对象的属性
  • 这种类型的数据对象可以具有的值
  • 可以作用于这种类型的数据对象的操作

3.3.2 初等数据类型

  1. 数值类型:整型、实型、复数、双精度
    运算:+,-,*,/等
  2. 逻辑类型:true、false
    布尔运算:∨,∧,┑等
  3. 字符类型:符号处理
  4. 指针类型
  5. 数组的存放方式:按行存放(C、Java)、按列存放(FORTRAN)

3.3.3 抽象数据类型(Abstract Data Type)

  • A set of data values and associated operations that are precisely specified independent of any particular implementation.
  • 抽象数据类型由数据集合、及其相关的操作组成,这些操作有明确的定义,而且定义不依赖于具体的实现。
  • 程序设计语言对抽象数据类型的支持
    Ada通过程序包(package)提供了数据封装的支持
    Smalltalk、C++和Java通过类(Class)对抽象数据类型提供支持

3.4 标识符与名字

  • 标识符:以字母开头的,由字母数字组成的字符串
  • 名字:标识程序中的对象
  • 绑定:
    编译过程中的绑定:静态绑定
    程序执行过程中的绑定:动态绑定

3.5 语句与控制结构

3.5.1 表达式

  • 表达式由运算量(也称操作数,即数据引用或函数调用)和算符(运算符,操作符)组成
  • 形式:中缀、前缀、后缀

3.5.2 赋值语句

对于A := B
名字的左值:该名字代表的存储单元的地址
名字的右值:该名字代表的存贮单元的内容

3.5.3 控制语句

1.无条件转移语句:

goto L

2.条件语句:

if B then S
if B then S1 else S2

3.循环语句

while B do S
repeat S until B
for i:=E1 step E2 until E3 do S

4.过程调用语句

call P(X1, X2, ... ,Xn)

5.返回语句

return (E)

标签:语句,语言,编译,3.2,3.5,概述,3.3,程序设计
来源: https://blog.csdn.net/weixin_44160079/article/details/112675109

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有