当前课程知识点:计算思维导论 >  第七单元 >  7.7 计算学科中的抽象 >  Video

返回《计算思维导论》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《计算思维导论》慕课在线视频列表

Video课程教案、知识点、字幕

大家好

这一节我们介绍

计算学科中的抽象

借助于计算机求解客观世界的问题

本质上就是

把客观世界中与问题相关的对象

及其求解问题的方法

映射成计算机世界中的对象

及其机器的动作序列

毫无疑问

这种映射就是抽象

事实上

计算学科领域到处都是抽象

鉴于本课程的定位

我们只打算就

语言

数据

控制

以及问题求解等方面

介绍计算学科中的

抽象方法及其应用与意义

一 抽象与计算机语言

人与人打交道

主要通过自然语言

像汉语 英语 法语等等

那么

人与计算机如何打交道呢

这得靠计算机语言

计算机语言有下面这么一些特点

一 它是人为设计的语言

二 计算机语言的语法简单

却非常严格

错一个标点符号都不行

三 计算机语言的文法是

上下文无关文法

四 语言的种类很多

表达能力互不相同

五 根据抽象层次不同

可分为低级

高级

甚高级语言等等

语言从低级到高级的发展

其核心思想是抽象

抽象层次越低

掌握起来越难

反之 抽象层次越高

越远离机器的特性

越接近数学或人类的习惯

自然也就越容易使用

我们首先看机器语言

最早的程序设计语言是机器语言

它是由二进制数的序列组成

不需要翻译

是计算机真正理解并能运行的唯一语言

因此 不同机型的机器语言是不同的

我们不妨看个例子

下面是一段IBMPC机的

机器语言小程序

它是用来计算

十八乘二十六加五十

这个表达式的

你们看 它看起来真像天书

难以让人接受

后来人们意识到

可用十六进制数来表示

这样至少看起来简洁方便一些

这是用十六进制代码表示的结果

即便是这样

程序也是非常难以掌握的

第二种汇编语言

就是后来

人们发现用简易的英文单词

代替约定的指令

读写程序就容易多了

这就导致了汇编语言的诞生

汇编语言是对机器语言的抽象

指令码代之以记忆符号

地址码代之以符号地址

指令的含义是显性的

因此更利于程序的

设计

阅读

和理解

但是

计算机并不能直接识别

和执行汇编语言的指令

必须翻译成机器语言指令

计算机才能执行

例如 同样计算

十八乘二十六加五十 它的值

用IBMPC机汇编语言编写的结果

就是这样的

只要有一点英语基础

大概都可以猜出这个程序是做什么的了

我们为了有个整体的印象

下面给个完整的实例

这是一个符号函数

用微软公司宏汇编语言

MASM编写的汇编程序就是这样的

这个程序我们不要求大家掌握

长点见识就可以了

我们需要知道的是

汇编语言是面向机器的

运行速度快

但因机器而异

汇编程序深奥难懂

而且编出的程序可移植性差

对于大多数非专业的人员来说

是不容易掌握和使用的

最后我们看看高级语言

一般来说

它是用类似英语的简洁方式来表达的

抽象层次较高

机器不能直接执行

因此

每种高级语言

都有相应的编译或解释程序

它把高级语言翻译成

计算机能执行的机器语言

高级语言不依赖于具体的计算机

是一种通用的计算机语言

例如 对于表达式

十八乘二十六加五十

用高级语言表示

你看形式上基本上是一样的

再比如符号函数

如果用C语言来描述

程序就是这样的

大家很容易看懂

你看 高级语言接近人们习惯使用的

自然语言和数学语言

容易学习和使用

特别地 高级语言

与具体的计算机硬件无关

所以写出来的程序可移植性好

重用率高

我们再看数据抽象

利用计算机求解问题

本质上就是对数据进行加工或处理

这里的数据既包括原始数据

也包括中间结果以及最终的计算结果

面对这些数据

我们可以从两个不同的抽象层面去理解

一是机器内部的数据表示

计算机内部最底层

是物理上的两个不同的状态

也就是晶体管的截止和导通

可以把它们抽象成“0”和“1”

然后再把二进制形式的“0”和“1”

抽象成十进制的“数”和“符号”

最后得到“抽象数据类型”乃至“对象”

从低级到高级的抽象过程

可用这么一个图来表示

数据抽象使我们能在更高的层次上操作数据

而不需关注底层的操作细节

这对程序员来说是一种解放

可以让程序员们有更多的精力

考虑问题层面如何解决的方案

二是客观对象的抽象表示

要解决客观世界的问题

必须恰当地表示客观世界的对象

也就是把客观世界的对象

如何抽象成计算机世界的对象

例如 当我们利用计算机技术

做一个公司职员的信息管理系统时

就要把被管理每一个的职员

映射成计算机世界里的一个个实体

这个过程就是一种抽象

因为我们关心的是

要管理的职员的信息

比如姓名

性别

年龄

专业等等

对于不需要关心的信息就忽略了

比如职员有多少根眉毛

发型怎么样

皮肤黑不黑等等

就像这样

第三流程控制抽象

程序是按照某种特定的方法

对数据进行加工和处理

这里就有一个加工或处理的

流程控制问题

早期

程序流程除了隐含的自上而下

从左到右外

就用GOTO语句来控制程序的转移

例如这是一个典型的实例

后来理论上已经证明

任何可计算问题的求解程序

都可以用顺序

条件和循环这三种控制结构来描述

顺序结构是一种线性的

有序的结构

计算机就按先后顺序执行各语句

一个复杂的计算任务

可以分解成若干个小的计算任务

直至每个小的计算任务

可以用一个语句来表达

顺序结构就是这么一种结构

条件选择结构是

根据条件成立与否

有选择地执行某个计算任务

这个不难理解

比如家长对你说

如果明天下雨

你就坐公交车去上学

否则你就骑自行车去学校

对你来说

明天要么坐公交车去学校

要么骑自行车去

根据天气情况

二者选择其一

我们再看一个例子

如果明天天气很好

我们就去爬山

那么天气不好

自然就不能去了

这两种情况都可以用

这样的流程结构来表示

循环控制结构能控制

一个计算任务重复执行多次

直到满足某一条件为止

通常有三种不同的语句

比如while循环语句

for循环语句

和do…while循环语句

其实这三种看似不同的循环结构

可以相互转换

让我们以while循环为例

它首先判断条件

条件成立时

就执行一次循环体

然后再判断条件

如果条件还成立

再执行一次循环体

然后再判断条件是否成立

以此类推

直到条件不成立为止

就像这个图所表示的

第四我们看看抽象与问题求解

抽象的意义不只是抽象出数据

控制流程或语言

更主要的目的

是利用抽象使我们设计的程序

能正确地映射客观事物

程序设计就是把客观世界

问题的求解过程映射为

计算机的一系列动作

用计算机能接受的形式符号

记录我们的设计

然后运行实施

动作完成了

得出的数据往往也不是问题解的形式

而是解的映射

例如在交通信号控制系统中

程序多半是输出

1

2

3

这样的数字

来表示红 绿 黄等信号

我们看这个图就是

利用计算机求解问题的示意图

我们知道

程序设计从问题开始

直到用某种语言编写出源程序

通过编译或者解释软件

可将源程序变为

可执行的机器指令程序

源程序一方面是机器动作的抽象

也就是它是面向机器的

另一方面是问题求解步骤的抽象

也就是面向问题的

程序执行后得到的结果

这些数据通过人们的解释

或者通过环境工具变换为解

也就是说

运行结果数据只是解的映射

例如三次方程求根

我们得到六个数

这六个数我们可以解释为一个实根

和两个共轭复根等等

可见

计算机求解问题从程序设计

到最后的解到处都是抽象

我们没有用机器码编写程序

机器却能够按我们的想法求解问题

其根本原理就在于抽象

好 这一节我们就介绍(到)这

谢谢大家

计算思维导论课程列表:

第一单元

-1.1 计算思维及其教育

--Video

第二单元

-2.1 计算是什么

--Video

-2.2 计算与自动计算

--Video

-2.3 计算机及其计算本质特征(I)

--Video

-2.4 计算机及计算的本质特征(II)

--Video

第三单元

-3.1 数的表示与模拟计算

--Video

-3.2 数的表示与数字计算

--Video

-3.3 二进制加法运算的机器化

--Video

-3.4 “九九归一”的加法运算

--Video

-3.5 二进制之优越性及问题与代价

--Video

第四单元

-4.1 从数学危机到图灵机

--Video

-4.2 图灵机的计算能力

--Video

-4.3 什么问题都能计算吗?

--Video

-4.4 冯•诺依曼机及其发展与演化

--Video

-4.5 从算盘到图灵机——机械计算的本质

--Video

-4.6 电子计算机——透过现象看本质

--Video

第五单元

-5.1 思维可机械计算吗(I)

--Video

-5.2 思维可机械计算吗(II)

--Video

第六单元

-6.1 量子理论

--Video

-6.2 量子计算机

--Video

第七单元

-7.1 人类求解问题之过程

--Video

-7.2 基于计算(机)的问题求解过程

--Video

-7.3 面向过程的结构化设计方法学

--Video

-7.4 面向对象之方法学

--Video

-7.5 面向对象技术

--Video

-7.6 抽象

--Video

-7.7 计算学科中的抽象

--Video

-7.8 时间与空间及其相互转换

--Video

-7.9 技术层面的其他方法学

--Video

-7.10 认知层面的其他方法学

--Video

第八单元

-8.1 算法与程序

--Video

-8.2 算法设计方法——枚举

--Video

-8.3 算法设计方法——递推

--Video

-8.4 算法设计方法——递归

--Video

-8.5 算法设计方法——分治

--Video

-8.6 算法设计方法——仿生

--Video

第九单元

-9.1 机器间的通信方式

--Video

-9.2 数据转发方法

--Video

-9.3 网络分层体系结构

--Video

-9.4 有趣的对称加密技术

--Video

-9.5 难解的非对称加密技术

--Video

-9.6 数字签名及其应用

--Video

-9.7 从自然智能到人工智能

--Video

-9.8 符号主义的基本思想

--Video

-9.9 连接主义Ⅰ

--Video

-9.10 连接主义Ⅱ

--Video

-9.11 行为主义的基本思想

--Video

-9.12 机器翻译的愿景与困难

--Video

-9.13 峰回路转的自然语言处理

--Video

-9.14 信息传输中的问题与挑战

--Video

-9.15 重复传输与冗余编码

--Video

-9.16 校验与校验和

--Video

-9.18 自纠错技术及应用

--Video

-9.19 两种简单的数据压缩方法

--Video

-9.20 哈夫曼编码

--Video

-9.21 数据压缩极限与LZ压缩方法

--Video

-9.22 大海捞针的搜索引擎

--Video

-9.23 网页排序方法(PageRank)

--Video

第十单元

-10.1 计算文化

--Video

期末考试

-期末考试--作业

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。