第三章过程式程序设计语言 基本观点: 计算实现的模型如果按冯·诺依曼原理强制改变内存中的值叫命令(或译指 强制 Imperative式)的。由于强制改变值,程序状态的变化没有一定规 则,程序大了就很难査错,很难调试,不易证明其正确 组织程序的范型即:算法过程+数据结构(计算控制+计算对象) 3.1计算对象表示一值与类型 3.2计算对象实现一存储 3.3计算对象连接一束定 3.4计算组织-一程序控制 3.5计算组织一函数与过程 3.6计算组织--抽象与封装
第三章 过程式程序设计语言 基本观点: 计算实现的模型如果按冯·诺依曼原理强制改变内存中的值叫命令(或译指 令、强制Imperative式)的。由于强制改变值,程序状态的变化没有一定规 则,程序大了就很难查错,很难调试,不易证明其正确。 组织程序的范型即:算法过程+数据结构(计算控制+计算对象) 3.1 计算对象表示—值与类型 3.2 计算对象实现—存储 3.3 计算对象连接—束定 3.4 计算组织---程序控制 3.5 计算组织---函数与过程 3.6 计算组织---抽象与封装
3.1计算对象值与类型 类型是计算机可能实现的结构和约定对客观世界差异的刻划 同一类型的外延,即同一结构表示所有可能的值构成一个域 分类原则:同样表示结构,同样语义解释,同样的操作。 同类型值运算结果:同类型。 无符号整数: 二进制解释的值 整数:符号 植值 0000101010111010001010100001110111 浮点数:符号阶码 尾数 程序语言中:基元( primitive)类型:整型/实(定,浮)/字符/值/枚举 结构( structured)类型:元组/数组/记录(结构)/表串
类型是计算机可能实现的结构和约定对客观世界差异的刻划。 同一类型的外延,即同一结构表示所有可能的值构成一个域。 分类原则:同样表示结构,同样语义解释,同样的操作。 同类型值运算结果:同类型。 无符号整数: 二进制解释的值 整数:符号 值 3.1 计算对象-值与类型 0 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 1 1 浮点数: 符号 阶码 尾数 程序语言中:基元(primitive)类型:整型/实(定,浮)/字符/真值/枚举 结构(structured)类型:元组/数组/记录(结构)/表/串
3.1.1字面量、变量、常量 名字操纵值,名:字面量从名字即知类型字面值不变 变量符号名要声明类型值可变 常量符号名要声明类型值不变 ·基元值的名字是地址的别名,地址值在计算机中不恒定 操纵地址的名字是指针(地址变量) float * p,x=37.32, p=&x: (p)203C(x)117F 117F 37.32
3.1.1 字面量、变量、常量 • 名字操纵值, 名: 字面量 从名字即知类型 字面值不变 变量 符号名要声明类型 值可变 常量 符号名要声明类型 值不变 • 基元值的名字是地址的别名, 地址值在计算机中不恒定 • 操纵地址的名字是指针(地址变量) float *p, x = 37.32; p=&x; (p)203C (x)117F 117F 37.32
续 名值可分导致 按名按名取值:引用 reference 存值 左值 右值 int rint svar Rnt是引用类型的变量,即左值变量必须给一右值,因 而成Sva别名 y=x++;ⅹ既是右值也是左值
续 •名值可分导致 x = x + 1; 按名 按名取值: 引用reference 存—值 左值 右值 int & Rint = Svar Rint 是引用类型的变量,即左值变量必须给一右值,因 而成Svar别名 y = x ++ ; x 既是右值也是左值
3.1.2值是头等程序对象 程序语言中的值 字面量(整、实、布尔、字符、枚举、串 复合量(记录、数组、元组、结构、表、联合、集合、文件) 指针值 变量引用(左值、右值) 函数和过程抽象,数学对象参与运算的权利是一样的,值是 计算对象也要按一致性原则: 可出现在表达式中并求值 可作函数返回值 可单独存储 可以构成复杂的数据结构 可作函数参数
3.1.2 值是头等程序对象 程序语言中的值 • 字面量(整、实、布尔、字符、枚举、串) • 复合量(记录、数组、元组、结构、表、联合、集合、文件) • 指针值 • 变量引用(左值、右值) • 函数和过程抽象,数学对象参与运算的权利是一样的,值是 计算对象也要按一致性原则: – 可出现在表达式中并求值 – 可作函数返回值 – 可单独存储 – 可以构成复杂的数据结构 – 可作函数参数