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

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


一、概述

1、基本概念

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

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

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

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

  • 解释程序,是指可以直接解释执行源程序,或者将源程序翻译成某种中间代码后再加以执行。
  • 编译程序,是指将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

根本区别

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

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

(3)程序设计语言

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

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

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

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

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

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

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

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

二、基础

1、汇编程序

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

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

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

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

2、编译程序

(1)词法分析

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

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

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

【2】有限自动机正规式

(2)语法分析

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

【1】上下文无关法

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

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

(3)语义分析

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

(4)中间代码生成

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

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

【2】树形表示

(5)代码优化

(6)目标代码生成

(7)符号表管理

(8)出错处理

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】索引方式:正向索引、负向索引。

【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)之间的整数;含头不含尾。

三、总 结

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

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

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

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

目录
相关文章
|
4月前
|
存储 算法 安全
【第六章】软件设计师 之 数据结构与算法基础
软件设计师 之 数据结构与算法基础 备考资料
【第六章】软件设计师 之 数据结构与算法基础
|
7月前
|
C语言 开发者
【C 言专栏】C 语言中的模块化编程思想
【5月更文挑战第3天】本文探讨了C语言中的模块化编程思想,阐述了其概念和实现方式,如函数和头文件。模块化编程能提升代码可读性,便于维护和复用,增强程序可靠性。实践中应合理划分模块,明确接口,保持独立性和内聚性。以计算器程序为例说明模块化应用,并展望了未来发展趋势。模块化编程是构建高质量C程序的关键,有助于提高开发效率。
183 3
【C 言专栏】C 语言中的模块化编程思想
|
7月前
|
存储 算法 程序员
【软件设计师】通俗易懂的去了解算法的特性和要求
【软件设计师】通俗易懂的去了解算法的特性和要求
|
7月前
|
敏捷开发 算法 测试技术
【软件设计师—基础精讲笔记5】第五章 软件工程基础
【软件设计师—基础精讲笔记5】第五章 软件工程基础
111 2
|
7月前
|
设计模式 存储 算法
【软件设计师—基础精讲笔记7】第七章 面向对象技术
【软件设计师—基础精讲笔记7】第七章 面向对象技术
135 1
|
7月前
|
算法
【软件设计师—基础精讲笔记9】第九章 算法设计与分析
【软件设计师—基础精讲笔记9】第九章 算法设计与分析
60 1
|
7月前
|
存储 移动开发 自然语言处理
【软件设计师—基础精讲笔记1】第一章 计算机组成与体系结构
【软件设计师—基础精讲笔记1】第一章 计算机组成与体系结构
90 2
|
7月前
|
网络协议 安全 网络安全
【软件设计师—基础精讲笔记4】第四章 网络与信息安全
【软件设计师—基础精讲笔记4】第四章 网络与信息安全
107 1
|
7月前
|
存储 自然语言处理 算法
【软件设计师—基础精讲笔记6】第六章 结构化开发方法
【软件设计师—基础精讲笔记6】第六章 结构化开发方法
262 0
|
7月前
|
存储 分布式数据库 数据库
【软件设计师—基础精讲笔记3】第三章 数据库系统
【软件设计师—基础精讲笔记3】第三章 数据库系统
104 0
下一篇
DataWorks