【软件设计师—基础精讲笔记10】第十章 程序设计语言基础

本文概述了编程语言的基础概念,区分了低级语言与高级语言,详细讲解了编译程序和解释程序的工作原理,以及Python语言的基础语法、数据类型和关键特性。涵盖了词法分析、语法分析、语义分析等编译过程的重要步骤。
摘要由CSDN通过智能技术生成

温馨提示:

        完整笔记已设置成专栏,欢迎各位点击右上角“订阅专栏”,收藏完整笔记。

目录

一、概述

1、基本概念

(1)低级语言和高级语言

(2)编译程序和解释程序

(3)程序设计语言

二、基础

1、汇编程序

2、编译程序

(1)词法分析

(2)语法分析

(3)语义分析

(4)中间代码生成

(5)代码优化

(6)目标代码生成

(7)符号表管理

(8)出错处理

3、解释程序

4、Python基础

(1)基础语法

(2)基本数据类型

(3)序列的切片

(4)常见函数

三、总 结


一、概述

1、基本概念

(1)低级语言和高级语言

低级语言:机器语言、汇编语言

高级语言:Java、C、C++、Python、

(2)编译程序和解释程序

  • 解释程序,是指可以直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。

  • 编译程序,是指将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

根本区别

在编译方式下,机器上运行的是与源程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示) 要参与到程序的运行过程中,运行程序的控制权在解释程序。

简单来说,在解释方式下,翻译源程序时不生成独立的目标程序,而编译器则将源程序翻译成独立保存的目标程序。

(3)程序设计语言

一般地,程序设计语言的定义都涉及语法、语义和语用等方面。

【1】语法是指由程序设计语言的基本符号组成程序中的各个语法成分(包括程序)的一组规则。

其中,由基本字符构成的符号 (单词) 书写规则称为词法规则,由符号构成语法成分的规则称为语法规则。

程序设计语言的语法可用形式语言进行描述。

【2】语义是程序设计语言中按语法规则构成的各个语法成分的含义,可分为静态语义和动态语义。静态语义指编译时可以确定的语法成分的含义,而运行时刻才能确定的含义是动态语义。

一个程序的执行效果说明了该程序的语义,它取决于构成程序的各个组成部分的语义。

语用表示了构成语言的各个记号和使用者的关系,涉及符号的来源、使用和影响。

语言的实现则有个语境问题。语境是指理解和实现程序设计语言的环境,包括编译环境和运行环境。

二、基础

1、汇编程序

汇编语言源程序由若干条语句组成,其中可以有三类语句: 指令语句、伪指令语句和宏指令语句。

(1) 指令语句。指令语句又称为机器指令语句,将其汇编后能产生相应的机器代码,这些代码能被 CPU 直接识别并执行相应的操作。

(2)伪指令语句。伪指令语句指示汇编程序在汇编源程序时完成某些工作,伪指令语句与指令语句的区别是:伪指令语句经汇 编后不产生机器代码,而指令语句经汇编后要产生相应的机器代码。另外,伪指令语句所指示的操作是在源程序被汇编时完成的,而指令语句的操作必须在程序运行时完成。

(3) 宏指令语句。在汇编语言中,还允许用户将多次重复使用的程序段定义为宏。宏的定义必须按照相应的规定进行,每个宏都有相应的宏名。在程序的任意位置,若需要使用这段程序,只要在相应的位置使用宏名,即相当于使用了这段程序。因此,宏指令语句就是宏的引用。

2、编译程序

(1)词法分析

词法分析阶段是编译过程的第一个阶段,这个阶段的任务是对源程序从前到后 (从左到右) 逐个字符地扫描,从中识别出一个个“单词”符号。

词法分析过程依据的是语言的词法规则。

【1】有限自动机+不确定的有限自动机

914db389e6324d76ae8b775b825ac5ed.png

【2】有限自动机正规式

3375b02886044a08a382a145396a9044.png

(2)语法分析

语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如“表达式”“语句”和“程序”等。语法规则就是各类语法单位的构成规则。通过语法分析确定整个输入串是否构成一个语法上正确的程序。如果源程序中没有语法错误,语法分析后就能正确地构造出其语法树:否则指出语法错误,并给出相应的诊断信息。

【1】上下文无关法

0af5c769bfcf4dc48fc5637d11fb76bf.png

【2】自顶向下语法分析方法

【3】自底向上语法分析方法

(3)语义分析

语义分析阶段分析各语法结构的含义,检查源程序是否包含静态语义错误,并收集类型信息供后面的代码生成阶段使用。只有语法和语义都正确的源程序才能翻译成正确的目标代码。 语义分析的一个主要工作是进行类型分析和检查。程序设计语言中的一个数据类型一般包含两个方面的内容:类型的载体及其上的运算。

(4)中间代码生成

常用的中间代码有后缀式、三元式、四元式和树等形式。

【1】后缀式(逆波兰式):把运算符卸载运算对象的后面。其优点:根据运算对象和运算符的出现次序进行计算,不需要使用括号,也便于用栈实现求值。

【2】树形表示

7a35e2f3604b469aa7d3336f2b85f52e.png

(5)代码优化

(6)目标代码生成

(7)符号表管理

(8)出错处理

14e3b7112d8649f0bcbe673d94c7a086.png

3、解释程序

解释程序在词法、语法和语义分析方面与编译程序的工作原理基本相同,但是在运行用户程序时,它直接执行源程序或源程序的中间表示形式。因此,解释程序不产生源程序的目标程序,这是它和编译程序的主要区别。

4、Python基础

(1)基础语法

【1】默认情况下,Python3源码文件以UTF8编码,所有字符都是unicode字符串。

【2】Python中单行注释以#开头;多行注释用三个单引号 ''' 或者三个双引号 """ 将注释括起来。

【3】Python中用import导入相应模块。

(2)基本数据类型

【1】Python3 中有六个标准的数据类型:

Number(数字):支持 int、float、bool、complex

String(字符串):用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。

List(列表):[] 定义,用逗号分隔开的元素列表

Tuple(元组):() 定义,元素之间用逗号隔开

Set(集合):使用大括号 { } 或者 set() 函数创建集合。创建一个空集合必须用 set() 而不是 { }

Dictionary(字典):用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合

其中:

  • 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

  • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

【2】可以使用type()函数来查询变量所指的对象类型,还可以用isinstance()来判断。

【3】序列(字符串、列表、元组)的截取方法:变量[头下标:尾下标];索引值以 0 为开始值,-1 为从末尾的开始位置。

(3)序列的切片

【1】基本语法(含头不含尾)

seq[start:end:step]

其中,seq表示待切片序列;start表示起始索引(包含);end表示结束索引(不包含),step表示步长(默认为1)。

【2】索引方式:正向索引、负向索引。

c964a72c60e34ca8a73aa6bd6b955b10.png

【3】切片应用

 lst=[1,2,3,4,5,6,7,8,9]
 print(lst[0:3])   # [1,2,3]
 print(lst[-3:-1]) # [7, 8]
 print(lst[-3:])   # [7, 8, 9]
 print(lst[:3:-1]) # [9, 8, 7, 6, 5]  ---步长为负时的结果,输出剩余的

(4)常见函数

range(1,9):[1,9)之间的整数;含头不含尾。

三、总 结

        笔记总结不易,如果喜欢,请关注、点赞、收藏。

 完整笔记下载地址:(后续完成后更新)

11eb0fc5d55d4abb81deb22185842ebc.png

基础精讲课件地址:(请关注、点赞、收藏后,私信我)

df12231e738740b3866b78174ca1bc21.png

基础精讲视频地址:(请私信我)

99f6b317b5644008b133aeccc439fb4e.png5293ad363103430e9c0ce2b62ba72694.png912d49928e70418f9dd7d76cd072bc1a.png

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ai安歌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值