2021-2022-1学期 20212422《计算机科学概论》第四周学习总结

本周内,我学习了《计算机科学概论》第八、九章的知识。第八章的知识主要聚焦了计算机的抽象数据类型与子程序,介绍了它们的属性与操作以及这些操作是如何实现的。第九章的内容主要是关于较高层次的程序设计语言以及面向对象设计的有关概念及操作方法。

第八章
抽象数据类型与子程序
以下为知识体系脑图

抽象数据类型
在计算机领域,能够实现复合结构的抽象的容器叫做抽象数据类型
(Abstract Data Type,ADT)
是属性(数据与操作)明确地与特定实现分离的容器
数据结构:一种抽象数据类型中的符合数据域的实现
容器:存放和操作其他对象的对象

(一)数据结构
1.栈
LIFO(意为后进先出),可在第一个位置插入元素(Push),也可以删除第一个元素(Pop)。
一种访问方式的说法为只能从一端访问;另一种访问方式的说法为删除的项总是在栈中时间最短的项目
整个LIFO行为都体现在了删除操作上

2.队列
FIFO(先进先出)队列中的项目从一端入,从另一端出;另一种说法是删除的项总是在丢列中时间最长的项目。
插入操作在队列尾部进行,而删除操作在队列头部进行

3.列表
列表有三个属性特征:项目是同构的,项目是线性的,列表是变长的
线性:每个项目除了第一个都有一个独特的组成部分在它之前,除了最后一个也都有一个独特的组成部分在它之后
列表可以被形象化为链式结构
链式结构(linked structure):一个将数据项和找到下一项位置的信息保存到同一容器的实现方法

4.树
分类一般发生在高层,随着不断向下的移动,标签会变得更加具体,每一个节点下方都可能会有许多的节点
这种分层体系叫做树
(1)二叉树(binary tree)
具有唯一起始点(根节点)的抽象复合结构,其中每个节点都可以有两个子女节点,根节点和每个节点之间有且只有一条路径

根(root):树中唯一的开始节点
叶节点(leaf node):没有子女的树节点

(2)二叉检索树

二叉检索树就类似于已排序的列表,节点与节点之间存在语义排序

·二叉检索树的构造
·输出二叉检索树中的数据

(二)图
图(graph):有一组节点和一组把节点相互连接起来的边构成的数据结构
顶点(vertex):图中的节点
边(弧):表示图中两个节点的连接的顶点对
无向图(undirected graph):其中的边没有方向的图
有向图(directed graph):其中的边是从一个顶点指向一个顶点(或同一个顶点)的图

1.创建图

2.图算法
(1)深度优先搜索
下图为英文语句解释

把一个顶点的所有相邻的顶点都放到栈内,就标记这个顶点被访问过

(2)广度优先搜索
下图为英文语句解释

在此种搜索中,栈不再是一个适合寻找最早路径的数据结构。它是按照元素出现的相反顺序来保存元素。

(3)单源最短路搜索
一种可以显示最短步数的算法
我们想检索离当前顶点最近的顶点,也就是说,于此顶点相连的边权值最小的顶点,我们称这种抽象容器为优先队列(priority queue),被检索的元素是队列中有最高优先度的元素。
此算法相较前两种较为复杂

(三)子程序
1.参数传递
参数列表:程序中两部分之间的通信机制
形参:列在子程序名后的括号中的标识符
实参:子程序调用中列在括号中的标识符

由于实参和形参是根据位置匹配的,所以它们的名字不必一致
当需要多次调动一个子程序而每次调用的实参不同时,这点非常有用。以这种方式传递的形参通常叫做位置形参。

2.值参与引用参数
值参:由调动单元传入实参的副本(写在留言板上)的形参
引用:由调动单元传入实参的地址(写在留言板上)的形参

第九章
面向对象设计与高级程序设计语言

一、面向对象方法
(一)面向对象
对象:在问题背景中相关的事物或实体
对象类或类:一组具有相似属性和行为的对象的描述
字段:表示类的属性
方法:定义了类的一种行为的特定算法

(二)设计方法
1.头脑风暴

2.过滤

3.场景

4.责任算法

5.总结
面向对象设计的重点是要转换的数据对象,结果生成的是对象的体系结果

二、翻译过程
(一)编译器
定义:把用高级语言编写的程序翻译成机器码的程序

(二)解释器
定义:输入用高级语言编写的程序,指导计算机执行每个语句指定的动作的程序

字节码:编译Java源代码使用的标准机器语言

第二代高级语言可以分为两种,一种是要编译的,一种是要解释的。用要解释的语言编写的程序通常比要编译的程序的运行速度慢很多

三、程序设计语言范型
(一)命令式范型
1.面向过程的范型
2.面向对象的范型

(二)声明式范型
1.函数式模型
2.逻辑编程

四、高级程序设计语言的功能性
(一)布尔表达式

布尔表达式:一个标识符序列,标示符之间由相容的运算符分隔,求得的值是true或false

(二)数据归类
强类型比:每个变量都有一个类型,只有这种类型的值才能储存到该变量中
数据类型:一组值以及能够应用与这种类型的值的基本操作集合的说明
1.数据类型
整数
实数
字符
布尔型
字符串

2.声明
把变量、动作或语言中的其他实体与标识符关联起来的语句,使程序员可以通过名字引用这些项目
保留字:一种语言中具有特殊意义的字,不能用它作为标识符
区分大小写:大写字母与小写字母被看作是不同的;两个拼写方法相同但大小写形式不同的标识符被看作是两个不同的标识符

(三)输入/输出结构

(四)控制结构

1.嵌套逻辑

2.异步处理
异步:不与计算机中的其他操作同时发生;换句话说,与程序的操作不同步

五、面向对象语言的功能性
(一)封装
封装:实施信息隐蔽的语言特性
对象(问题求解阶段):与问题背景相关的事物或实体
类(实现阶段):对象的模式
对象类或类(问题求解阶段):属性和行为相似的一组对象的说明
对象(实现阶段):类的一个实例

(二)类
实例化:创建类的对象

(三)继承
继承:类获取其他类的属性(数据字段和方法)的机制

(四)多态
多态:语言在运行时确定给定调用将执行哪些可能的方法的能力

以下为本章知识的脑图

总结
第八、九章的内容承接了第六、七章,知识仍旧十分抽象,在研读教材的过程中,我依然感到十分吃力,我希望在以后的每一堂课上都能够有所收获,而自己也能够慢慢地理解书中的这些内容。

posted @ 2021-10-14 19:58  20212422陈睿  阅读(156)  评论(1)    收藏  举报