当前课程知识点:计算思维导论 >  第八单元 >  8.1 算法与程序 >  Video

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

Video在线视频

Video

下一节:Video

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

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

大家好 这一节讲算法与程序

在具体讲算法和程序之前

我们先弄清楚他们与计算思维

到底是什么关系

大家知道计算思维

可分为广义计算思维和狭义计算思维

从这个角度来说我们认为

算法更偏向于广义计算思维

程序则属于狭义计算思维

或者换个说法

算法属于计算思维

程序则属于计算机思维

那么什么是算法

什么是程序呢 简单的说

算法就是解决问题的方法和步骤

我们知道面对同一个问题

可以有多种不同的求解方法

不同的方法求解的步骤自然也不一样

针对某一个方法

把求解步骤描述出来得到的就是算法

从计算思维的角度

可以把算法分为广义和狭义两类

前者广泛应用于工作和生活方方面面

后者则是程序的灵魂

生活中广义的算法很多

比如做一个色香味俱佳的菜

你找来这么一个菜谱对着做

这个菜谱就是广义的算法

该算法的执行者是人

再比如公司的客户投诉流程图

也可以看做一个广义的算法

因为他明确的描述了

客户投诉的处理办法和步骤

由于广义算法的执行者是人

所以算法中有可能出现一些不确定内容

比如菜谱中的少许 少量 适当的等等

那么什么是狭义的算法呢

狭义的算法面对的是机器

也就是计算机

算法的每一个步骤

必须明确无误

不能出现大概也许

差不多

这样模糊或者模拟两可的内容

否则机器就理解不了

另外狭义算法通常用一种

简洁明了的方法来表示

先看一个简单的例子

比如现有一瓶红墨水

一瓶蓝墨水

要求把两瓶墨水交换一下

也就是把原来红墨水的瓶子改成蓝墨水

把原来装蓝墨水的瓶子

改装红墨水

我们该怎么做呢

方法很简单

找一个空瓶子来倒它就可以了

具体的步骤如下

这个算法我们是用自然语言来描述的

大家容易理解

但显得有点啰嗦

如果我们用电量a表示红墨水瓶

里面装有红墨水

用电量b表示蓝墨水瓶

里面装有蓝墨水

用变量t表示一个空瓶

用这么个符号

表示把一个变量的值

放到另外一个变量之中

那么上述算法可以这样来表示

这就是狭义的算法

再看一个例子

假设要求1+2+3+4一直加到100

等于多少

这个题看起来比较麻烦

但实际上它可以通过重复做一个

加法运算也就是循环来完成

这就是对应的算法

这个算法很简单

首先给变量n赋初值100

然后给变量sum赋初值0

然后再给变量i赋初值1

然后就执行一个循环

在这个循环里边

首先把i的值累加进sum

然后i的值加1

如果i还小于n就继续循环

一直循环一百次

最后我们就得到了计算结果

那么什么是程序呢?

程序就是计算机语言

把求解特定问题的算法描述出来

的指令或语句的有穷序列

因此程序有两个重要的特点

一是必须严格遵守宿主语言的语法

错一个标点符号都不行

二是能被计算机执行

因此要用计算机求解问题

必须学会算法设计

掌握一门计算机语言

比如c或c++语言

然后用计算机语言来描述算法

得到程序最后交给计算机执行

才能得到想要的解

这就是产生一百个随机数

并进行排序的c语言程序

如果您还没有学习c语言

现在看不懂没有关系

先大致了解下有个印象

以便以后学习

那么最后我们关注下算法和程序的关系

这个是解决同一个问题的算法和程序

相对比一遍先有个直观感性的认识

如果我们把一颗枝繁叶茂的大树

看成是一个程序的话

那么把它的树叶摘掉

把一些细小的树枝砍掉

剩下来树的主干部分

就可以看成是算法了

不妨再看一个比喻

在绘画艺术领域

有写实和写意之分

写实就是尽量按照绘画对象来画

画的越像越好

写意主要体现绘画对象的特点或者特征

典型的漫画就充分体现了写意的特点

在这里程序有点像写实

而算法就更像写意

再说明算法和程序的关系时

美国计算科学基础一书

简明的指出

算法代表对问题的解

而程序则是算法在计算上的特定的实现

由此可见

一个有效的程序首先要求

有一个有效的算法

评价程序质量的标准

诸如清晰 高效 可读性

可修改性和可维护性等

无一不受到算法的影响

所以算法设计实际上可说是

程序设计的核心必须给予足够的重视

另外算法独立于任何具体程序设计语言

一个算法可以用多个程序设计语言来实现

好这一节就介绍到这

谢谢大家

计算思维导论课程列表:

第一单元

-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笔记与讨论

也许你还感兴趣的课程:

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