2019-2020-1学期 20202410《计算机科学概论》第四周学习总结

2019-2020-1学期 20202410《计算机科学概论》第四周学习总结

在之前有关程序设计层的学习中,我们已经从机器语言到汇编语言再到伪代码来表示算法,从使用简单变量的算法到使用数组的算法。而现在我们将进一步谈论抽象和抽象容器,关于子程序语句的内容,以及面对对象设计与高级程序设计语言。

第8章 抽象数据类型与子程序

一、抽象数据类型

抽象数据类型:属性(数据和操作)明确地与特定实现分离的容器。

在此之前,我们需要了解一下观察数据的三个方面:

应用(或用户)层:是特定问题中的数据的视图。

逻辑(或抽象)层:是数据值(域)和处理它们结构的操作的抽象视图。

实现层:明确表示出了存放数据项的结构,并用程序设计语言对数据的操作进行编码。

此外,还有一些概念——

数据结构:一种抽象数据类型中地复合数据域地实现。

容器:存放和操作其他对象地对象。

二、栈

栈是一种抽象符合结构,只能从一端访问栈地元素。可以在第一个位置插入元素,也可以删除第一个元素。这种类型地处理称为LIFO,意为后进先出。

另一种描述栈地访问行为的说法是删除的项总是在栈中时间最短的项目。

三、队列

队列也是抽象结构,队列中的项目从一端入,从另一端出。这种行为称为FIFO,意思是先进先出。

另一种描述队列的访问行为的说法说法是删除的总是在队列中时间最长的项目。

四、列表

列表有三个属性特征:项目是同构的,项目是线性的,列表是变长的。线性的意思是,每个项目除了第一个都有一个独特的组成部分在它之前,除了最后一个也都有一个独特的组成成分在它之后。

但要注意的是,不要把列表误认为是数组,数组是内嵌结构,列表是抽象结构。列表也可以形象化为链式结构。链式结构以节点的概念为基础。一个节点由两部分构成:用户的数据和指向列表的一个节点的链接或指针。列表的最后一个节点的指针变量存放的是表示列表结束的符号,通常为null,用”/“表示。

链式结构:一个数据项和找到下一项位置的信息保存到同意容器的实现方法。

五、树

分类一般发生在高层,随着不断向下的移动,标签会变得更加具体。这种分层结构叫做树。在计算机领域,我们所说的通常是二叉树,即每个节点下面都可能会有许多节点。

(一)二叉树

二叉树:具有唯一起始节点(根节点)的抽象符合结构,其中每个节点可以由两个子女节点,根节点和每个节点之间有且只有一条路径。

根:树中唯一的开始节点。

叶节点:没有子女的树节点。

(二)二叉检索树

二叉检索数具有二叉树的形状属性。且任何节点的值都要大于它的左子树中的所有节点的值,并且要小于它的右子树中的所有节点的值。

1、在二叉检索树中搜索

2、构造二叉检索树

3、输出二叉检索树中的数据

六、图

图:由一组节点和一组把节点相互链接起来的边构成的数据结构。

顶点:图中的节点。

边(弧):表示图中两个节点的连接的顶点对。

图中的顶点表示对象,边则描述了顶点之间的关系。

无向图:其中的边没有方向的图。

有向图:其中的边是从一个顶点只想另一个顶点(或同一个顶点)的图。

邻顶点:通过边连起来的两个顶点。

路径:连接图中两个顶点的一系列顶点。

(一)创建图

创建一个表格需要以下操作:

  • 在表格中添加一个顶点
  • 在表格中添加一条边
  • 在表格中添加一个权值

(二)图算法

1、深度优先搜素

2、广度优先搜索

3、单源最短路搜索

七、子程序

(一)参数传递

参数列表:程序中两部分之间的通信机制。

形参:列在子程序名后的括号中的标识符。

实参:子程序调用中列在括号中标识符。

二、值参与引用参数

值参:由调用单元传入实参的副本(写在留言板上)的形参。

引用参数:由调用单元传入实参的地址(卸载留言板上)的形参。

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

一、面向对象方法

是对象的独立实体生成解决方案的问题求解方法,对象由数据和处理数据的操作构成。

(一)面向对象

数据和处理数据的算法绑定在一起,每个对象负责自己的处理(行为)。

对象:在问题背景中相关的事物或实体。

对象类或类:一组具有相似的属性和行为的对象的描述。

字段:表示类的属性。

方法:定义了类的一种行为的特定算法。

(二)设计方法

1、头脑风暴

2、过滤

3、场景

  • 封装:把数据和动作几种在一起,是数据和动作的逻辑属性与它们的实现细节分离。

4、责任算法

5、总结

自顶向下的设计方法重点在于把输入转化成输出的过程,结果将生成任务的体系结构。而面向对象设计的重点是要转换的数据对象,结果生成的是对象的体系结构。

二、翻译过程

(一)编译器

编译器:把用高级语言编写的程序翻译成机器码的程序。

(二)解释器

输入用高级语言编写的程序,指导计算机执行每个语句指定的动作的程序。

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

三、程序语言设计范型

(一)命令式范型

1、面向过程的范型:面向过程编程是一种命令式模型,在这里语句被分组为子程序。一个程序是子程序分层次构成的,每一层执行整个问题求解的一个必要的特定任务。

2、面向对象视角是与对象交互的一种方式。每个对象执行它自己的动作。在面向过程的范型中,数据被认为是被动并且被程序所操纵的。在面向对象的范型中,数据对象是活跃的。对象和操作对象的代码绑定在一起,使得每个对象负责控制自己的操作。

(二)声明式范型

1、函数式模型:基于函数的数学概念。计算通过对函数求值来实现,而问题求解通过函数调用来实现。因此基本的原理是函数的求值,而不是变量和赋值语句。

2、逻辑编程:基于数理逻辑的原则。这个模型包括了一系列关于对象的事实和一系列关于对象间关系的规则。

四、高级程序设计语言的功能性

两种伪代码结构——选择和重复(循环)是命令式语言的标志。

(一)布尔表达式

一个标识符序列,标识符之间由相容的运算符分隔,求得的值是true和false。

(二)数据归类

强类型化:每个变量都有一个烈性,只有这种类型的值才能存储到该变量中。

数据类型:一组值以及能够应用于这种类型的值的基本操作集合的说明。

1.数据类型

整数、实数、字符、布尔型、字符串

2.声明:把变量、动作或语言中的其他实体与标识符关联起来的语句,使程序员可以通过名字引用这些项目。

保留字:一种语言中具有特殊意义的字,不能用它作为标识符。

区分大小写:大写字母和小写字母被看作是不同的;两个拼写方法相同但大小写形式不同的标识符被看作两个不同的标识符。

(三)输入/输出结构

高级语言把输入的文本数据看作一个分为多行的字符流。字符的含义则由存放值的内存单元的数据类型决定。所有输入语句都由三部分组成,即要存放数据的变量的声明、输入语句和要读入的变量名以及数据流本身。

(四)控制结构

控制结构:确定程序中的其他指令的执行顺序的指令。

1、嵌套逻辑

2、异步处理

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

五、面向对象语言的功能性

(一)封装

封装:实施信息隐蔽的语言特性。

对象(问题求解阶段):与问题背景相关的事物或实体。

类(实现阶段):对象的模式。

对象类或类(问题求解阶段):属性和行为相似的一组对象的说明。

对象(实现阶段):类的一个实例。

(二)类

实例化:创建类的对象。

(三)继承

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

(四)多态

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

六、过程设计与面向对象设计的区别

在面向过程的版本中,列表被呈现为传递给子程序的记录,以便子程序可以对其操作。操作它的数据结构和子程序时用户程序的一部分。在面向对象的版本中,类对象的实现通过封装实现对用用户的隐藏。

原文地址:https://www.cnblogs.com/20202410wyy/p/13929359.html