前言
高级语言及其语法描述第2部分:数据类型与操作、数据结构、语句等知识
数据类型与操作
几乎所有高级语言都有的数据类型与操作
初等数据类型
标识符和名字
标识符是字母开头,由字母数字组成的字符串
---程序是一个大字符串,由空格或算符断开成表达式,表达式由标识符和算符组成
两者区别:标识符没有意义,名字有意义和属性.
举例:Jordan是标识符,当他与人绑定时表示篮球运动员,与国家绑定时代表国家
名字的内容
名字包含值和属性.
---在机器层面,没有名字,数据用地址和值表示---地址用于传递数据,值说明数据
---在高级语言中,名字表示数据,含有值和属性
名字的值和属性需要说明语句
数据结构
数组
注意:程序员在访问数组元素的时候,不必考虑数组元素在内存中是怎么存放的---通过下标就可以访问.程序员依赖已存在的逻辑,而具体实现是由写编译器的人完成.
数组地址的访问
和C语言中二维数组的访问方式相同
数组元素地址计算的推导
更一般的形式表达
内情向量
结构(记录)
---C语言中叫结构,Pascal语言中叫记录
定义:逻辑上说,记录(结构)由已知类型的数据组合在一起的一种结构
访问,存储.域的地址计算如下图
字符串、表格和栈
抽象数据类型
三要素:集合,运算,封装
语句与控制结构
表达式
算符的优先次序
语句
赋值语句:左值和右值
左值代表数据地址,右值代表数据的值---这点和汇编语言(机器层面)保持了一致.
思考题
答案:C //有C语言基础即能得出答案.因为只有a+5是只有值,不能取地址---用左值表示.
此外,E选项看起来有点像答案,但分析后*p可以出现在"="的左边或右边,所以既有左值也有右值
控制语句
说明语句
定义名字
简单句和复合句
小结
编译原理讲的是如何实现逻辑.
需求的实现依靠程序模型通过调用逻辑(函数)完成.逻辑依赖于底层实现.
语言的语法是已被编译器实现的逻辑.
可以自定义逻辑,举例:操作系统中的信号量,Qt中的信号与槽,他们由写框架的程序员在底层实现,被编写应用的程序员所使用.