【软件设计师—基础精讲笔记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)之间的整数;含头不含尾。

三、总 结

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

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

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

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

目录
相关文章
|
5月前
|
Linux 开发工具 C++
技术笔记:RustGUI编程
技术笔记:RustGUI编程
|
1月前
|
存储 数据处理 开发者
深入浅出:Python编程基础与实战技巧
【9月更文挑战第32天】本文将引导读者从零开始,掌握Python编程语言的核心概念,并通过实际代码示例深入理解。我们将逐步探索变量、数据结构、控制流、函数、类和异常处理等基本知识,并结合实用案例,如数据处理、文件操作和网络请求,提升编程技能。无论您是初学者还是有一定经验的开发者,这篇文章都能帮助您巩固基础,拓展视野。
25 3
|
3月前
|
敏捷开发 算法 安全
【 第十章】软件设计师 之 软件工程概述
软件设计师 之 软件工程概述 备考资料
【 第十章】软件设计师 之 软件工程概述
|
自然语言处理 编译器 C语言
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(1)
语法分析阶段可以发现程序中的所有语法错误;编译正确的程序必然不包含语法错误;“除数为0”为动态语义错误,动态语义错误只有运行时才能发现。
149 0
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(1)
|
5月前
|
SQL 存储 NoSQL
数据库原理速览:核心知识集萃与复习指南
数据库原理速览:核心知识集萃与复习指南
48 2
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(2)
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础
43 0
【软件设计师-从小白到大牛】上午题基础篇:第七章 程序设计语言与语言处理程序基础(2)
|
6月前
|
设计模式 存储 算法
【软件设计师—基础精讲笔记7】第七章 面向对象技术
【软件设计师—基础精讲笔记7】第七章 面向对象技术
125 1
|
6月前
|
敏捷开发 算法 测试技术
【软件设计师—基础精讲笔记5】第五章 软件工程基础
【软件设计师—基础精讲笔记5】第五章 软件工程基础
101 2
|
6月前
|
算法
【软件设计师—基础精讲笔记9】第九章 算法设计与分析
【软件设计师—基础精讲笔记9】第九章 算法设计与分析
54 1
|
6月前
|
存储 移动开发 自然语言处理
【软件设计师—基础精讲笔记1】第一章 计算机组成与体系结构
【软件设计师—基础精讲笔记1】第一章 计算机组成与体系结构
85 2