打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
木舟| 算法基础知识 | 《信息技术》(2021版)二次学习微视频002


(建议在WIFI环境下观看)

算法基础知识

信息时代,人们生活在数据海洋中,海量的数据经过处理,更加方便了我们的生活和学习,而如何处理这些数据,需要靠算法来实现。

为了更好的在信息时代生存以及实现个人价值,我们需要学习算法的有关知识。

首先了解算法的概念和特征:

广义地说,算法是在有限步骤内求解某一问题所使用的步骤和方法。它有以下五个特征:

分别是:确定性、可行性、有穷性、有零个或多个输入、有一个或多个输出。

所谓确定性,是指算法中的每一步骤都必须是确定的、没有歧义的。

如这样一个例子,X=3,Y=X+自然数,这里的自然数很多,有无穷多个,没有指定是哪一个,所以就违反了确定性特征;

而可行性,是指算法中的每一个步骤都可以被计算机所执行。比如这样两个例子,……,其实狭义上讲,我们可以和数学中关于函数的定义域结合起来看,算法步骤中所涉及的数或变量,必须在定义域内。

有穷性是指实现一个问题的算法步骤必须在有限个步骤完成,也就是说算法必须能够结束。比如要你设计一个“输出直线y=x+5上所有的点”的算法,我们知道,一条直线上的点有无穷多个,是没有办法用算法解决的。再比如这个循环结构的流程图,X的初值是1,循环判断条件是X大于0,而在循环体内没有改变X的语句,这个条件是恒成立的,所以算法无法结束,陷入了死循环。也就不满足“有穷性”的特征。

输入是指算法在执行时要从外部获取数据,有零个或多个输入,就是说,输入可以是多个也可以是零个。零个输入并不代表这个算法没有输入数据,而是所需数据已经包含在算法中,只是这个输入的数据没有直观地显现出来。

输出是算法要显示出处理后得到的结果。没有输出的算法是没有意义的。

了解了算法的概念和特征,接下来我们看一个示例:

“输入正方形的边长,求出右图阴影部分的面积并输出。”

我们看右图,如果我们将输入的正方形的边长用变量a代替,根据数学中所学到的知识,我们很容易知道内嵌圆半径是a/2,根据分析,我们可以这样描述解决这个问题的步骤。

1. 输入正方形边长 a;2. 计算圆的半径r;3. 计算正方形面积s1=a*a;4. 计算圆面积s2=圆周率*r*r;5. 计算阴影部分面积s=s1-s2;6. 输出阴影部分面积s

也可以这样描述:开始——输入a——计算半径r=a/2——计算正方形面积s1=a*a——计算圆面积s2=3.14*r*r——用s=s1-s2计算阴影部分面积,最后输出S。

还可以这样描述:Input a……..Output“阴影部分面积是:”,s。在这里INPUT\OUTPUT我们基本可以猜到是表示输入和输出。

这就是算法的三种描述方式:第一种称为“自然语言描述”,第二种称为“流程图描述”,第三种称为“伪代码描述”。

从这里我们可以看出,虽然第一种描述我们最容易理解,但可能会产生歧义,容易引起算法步骤中的不确定性,如这里的“圆周率”,它是个有无限小数位的实数,如果不明确用特定字母和近似数值表示出来,计算机就不确定到底是什么。

伪代码是一种介于自然语言和计算机程序语言之间的一种描述语言,可以很容易被转换为一种具体的程序设计语言。而流程图描述算法,比较直观清晰,将是我们在高中阶段学习算法和程序设计时常用到的一种描述方式。

但用流程图描述算法时,需要遵循我们国家颁布的“信息文件编制符号及约定标准(DB1526-89)”,在这个标准中,

圆角的矩形:叫起始终止框,表示算法的开始和结束;

平行四边形:叫输入输出框,放置在算法中输入、输出的内容;

直角的矩形:叫处理框,放置算法中需要处理的内容;

菱形:叫判断框,用于需要条件判断时的分支和循环结构

带方向的线:叫流程线,用于表示算法的流向。

我们以后设计算法,在用流程图描述时,一定要严格按照这个标准来设计。

接下来我们看算法的基本结构,算法共有三种基本结构,第一种是“顺序结构”。

顺序结构是一种自上而下,按先后顺序依次执行算法中各个步骤的结构。

比如这里的“操作1”和“操作2”,在算法的执行过程中,它们是自上而下、依次执行的,一般情况下不能互换顺序,顺序结构有一个入口、一个出口。

我们看一个示例:使用海伦公式计算三角形的面积。

解决这个问题的算法用流程图描述是这样的:开始,输入三角形的三条边长A/B/C,然后计算三角形周长的一半,并赋值给变量P,这里的“=”,在算法中称为“赋值号”,意思是将右边表达式的结果存放在左边的变量中。然后是用海伦公式计算三角形的面积,这里的两个“**”是幂运算符号,幂运算0.5,其实也就是开算术平方根。最后是输出S,算法结束。

在这个算法中,我们可以很明确的知道,这里的四个主要步骤:输入边长、计算周长的一半、三角形面积以及输出,它们的顺序是不能前后颠倒的。否则无法计算。

算法的第二种基本结构是“分支结构”。

分支结构也称为选择结构,是根据给定的条件进行判断,再依据判断结果的不同而执行不同的操作的一种结构。

分支结构有双分支和单分支两种形式,流程图中一定会用到判断框,里面放的是一个关系表达式或者逻辑表达式,根据表达式结果的不同决定走后面的哪一条执行路线。当然无论是双分支还是单分支,都只有一个入口:即判断框的起点,一个出口,两条流程线汇合的地方称为汇聚点,也就是分支结构的出口。

我们看一个用分支结构解决实际问题的示例,求分段函数的值,输入的是X,输出的是Y。

因为这个函数是三段式的分段函数,要用到分支结构的嵌套。首先算法开始,输入X的值,第一次判断X大于0吗?成立的话将Y赋值为1,不成立的话再次判断X是否等于0,成立的话Y赋值0,不成立的话Y赋值-1。其实这里的“不成立”,也就意味着X是小于0的,因此在分段函数中的X小于0是不用再在判断框中判断一次的。最后汇聚到一起,输出Y。在这个流程图中我们要注意,这里判断框中的两个“==”,是表示关系运算的是否等于,不能用单“=”代替,前面说过,在算法中,单等号表示赋值。

算法的第三种基本结构是“循环结构”。

循环结构也称为重复结构,是一种根据条件重复执行某一部分操作的结构,其中重复执行的这部分操作也称为循环体。有两种典型结构:当循环和直到型循环。

在“当循环”中,是先判断条件,再执行循环体。如果第一次判断时,条件就不满足,那么会直接跳出循环。也就是说,循环体可能一次都不执行。而在“直到循环”中,是先执行循环体,再判断条件。所以无论第一次判断时条件是否成立,循环体都至少会被执行一次。

一般来说,对于简单循环结构,可以采用列表法进行分析。下面我们看一个示例。

(采用列表法分析这个循环结构流程图)

算法共有三种基本结构:顺序结构、分支结构和循环结构,在解决实际问题时,可以选择其中的一种,也可以根据实际情况选择其中的两种或三种配合起来实现算法的设计。

我们发现,在分支结构和循环结构中,都存在判断框,接下来我们对比分析一下。

二者的相同点是在算法的流程图描述中都有判断框,不同点是:分支结构的判断框后面的流程线都是向下走的,没有再返回到判断框前面,也就是不会再重新判断。而循环结构有返回判断框的流程线,还可能会再次判断条件。

接下来我们一起了解一下计算机程序设计语言,共有三种,分别是机器语言、汇编语言和高级语言。我们分别看一下它们的语句示例,机器语言是用二进制代码标识的机器指令集合,如这里的一行二进制数,表示的是将9放在累加器A中。因为机器语言直接用二进制代码,计算机能够识别和读懂,但对程序员来说编程很困难,所以产生了汇编语言。它用类似英语缩略词的形式代替二进制代码,相对易懂。如这里的MOV AL,9,表示将9放到累加器AL中。但由于汇编语言依赖于硬件体系,且助记符量大难记,所以又发明了更加易用的高级语言,如这里用Python语言编写的print(9+11),表示计算9+11的值并输出,看起来是不是接近我们日常的用语?

但我们要注意:1.机器语言是计算机唯一能够识别和读懂的语言;2.目前我们大部分程序员都是使用高级语言,比如我们所将学习的Python。

因为机器语言和汇编语言都非常依赖特定的计算机硬件系统,所以不同硬件体系编写的机器语言和汇编语言程序不能通用,也就是通用性低。而高级语言编写的程序在通用性上就高。这是因为:汇编语言和高级语言要想让计算机执行,必须首先转化为机器语言。完成这一工作的软件称为“计算机语言编译(解释)程序”。所以,从执行速度上讲,机器语言和汇编语言编写的程序速度快,而高级语言编写的程序执行速度相对慢。

刚才在谈到机器语言时我们说到了指令,所以有必要了解几个概念:

指令:机器语言的一条语句就是一个指令,它可以完成CPU的一个操作;

程序:是指一系列指令的有序集合。设计好的算法要想让计算机执行,需要用计算机语言编写成程序。

计算机程序再加上一些说明性文档,构成软件。

所以,指令、程序和软件可以说构成了这样的关系,一组有序指令形成程序,程序加上有关文档,构成了软件。

在后面的学习中,我们将采用Python语言编写相应的程序解决实际问题。

同学们,在生活和学习中,算法无处不在,特别是我们所处的信息时代,无论是三维图形生成、海量数据处理、人工智能中的机器学习,还是图像识别等,都需要靠算法来实现。希望同学们学习了算法的知识之后,多用算法的思想来思考身边看到、听到以及用到的事物和现象,更好地在信息时代生存。相信大家都是最棒的。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
流程图符号及流程图的例子
编程中国
算法与程序的区别关系
第二章 程序的灵魂-算法
「C与指针心得」C语言编程原理
流程图
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服