读书心得:
通过学习《计算机科学概论》的第四部分程序设计层,我从第八章了解到列表、栈、队列、树和图都是有用的抽象复合结构。每种结构都有自己特定的属性和确保这些属性的操作。所有抽象复合结构都有插人和删除元素的操作。列表和树还有在结构中查找元素的操作。
列表和树有着同样的属性:元素可以被插入、删除和检索。元素可以被插入栈中,但是删除和返回的元素是最后一个被插入栈中的元素,也就是在栈中停留时间最短的那个元素。元素可以被插入队列,但是删除和返回的元素是第一个被放入队列的, 也就是在队列中停留时间最长的那个元素。
列表、栈、队列和树都仅仅是容器结构,但是图则更加复杂。一个丰富的数学算法可以被应用到图的信息中。我们已经探讨过其中的三种:广度优先搜索、深度优先搜索和单源最短路搜索。
子程序声明使得子算法可以独立实现。一个子程序可能会有值返回,在这种情况下,子程序被调用的方式是用它的名字和参数的表达式。子程序也可能是没有返回值的(空),在这种情况下,调用程序用子程序的名字作为声明。子程序发送和接收到的数据通过使用参数列表来传输。参数可能是引用参数或值参。当实参为值参时,通过发送实参的拷贝至子程序的方式来传递;当实参为引用参数时,则通过发送实参的地址至子程序完成传递。
我从第九章了解到面向对象设计的重点是确定问题中的对象,并根据对象的属性和行为把它们抽象(分组)成类。下面是面向对象分解的四个阶段。
- 集体讨论:在这个阶段中,为确定问题中的类进行第一轮讨论。
- 过滤:在这个阶段中,将检查提出的类。
- 场景:在这个阶段中,将确定每个类的责任。
- 责任算法:在这个阶段中,将为每个责任编写算法。
汇编器可以把汇编语言程序翻译成机器码。编译器可以把用高级语言编写的程序翻译成汇编语言(再被翻译成机器码)或机器码。解释器则不仅翻译程序中的指令,还会立即执行它们,不会输出机器语言代码。
存在多种高级程序设计语言的模型,被分类为命令式(面向过程和面向对象)或者声明式(功能或逻辑)。命令式模型描述了被执行的处理过程。声明式模型描述了被执行的是什么,而不是怎样被完成。面向过程模型基于要完成的任务体系结构的概念;面向对象的模型基于交互对象的概念。函数式模型基于函数的数学概念;而逻辑模型则是基于数学逻辑。
布尔表达式是关于程序状态的断言。程序用布尔表达式来判断执行哪部分代码(条件语句)或是否重复执行某段代码(循环语句)。
程序中的每个变量都有自己的数据类型。所谓强类型化,指的是变量是给定类型且只有类型相符的值才能被存入变量。把一个值存入变量叫作给这个变量赋值(赋值语句)。
面向对象的程序用以下结构刻画:
- 封装:实施信息隐蔽的语言特性,用类结构实现。
- 继承:允许一个类继承另一个类的属性和行为的语言特性。
- 多态:语言具备的消除同名操作的歧义的能力。