算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解,认为学计算机就是学各种编程语言,认为学习最新的语言、技术、标准就是最好的铺路方法。
编程语言虽然该学,但是学习计算机算法和理论更重要。
算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制;它是求解问题类的、机械的、统一的方法,常用于计算、数据处理和自动推理。可以理解为有基本运算及规定
算法的本质是解决问题的方法,是思想
在早期的时候,人们遇到新问题,必须要去解决它,经过“冥思苦想”,“反复探索尝试”, 最后总结归纳。这才形成了今天我们学习的各种算法。如果无法领会到解决问题的思想,无法总结归纳,就会有:“学算法有什么用?”。不知道为什么学,自然会认为学了没意义,没有用处。
2.一个算法应该具有以下五个重要的特征:
①有穷性: 算法的有穷性是指算法必须能在执行有限个步骤之后终止,换句话说就是一个算法必须总是在执行有穷步之后结束,且每一步都可在有穷时间内完成。
②确定性:算法中的每条指令必须有确切的定义,不会产生二义性,并且对于相同的输入只能得出相同的输出。
③可行性:算法中执行的任何计算步骤都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。
④输入: 一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件,这些输入取自于某个特定的对象集合。
⑤输出:一个算法有一个或多个的输出,这些输出是同输入有着特定关系的量,没有输出的算法是毫无意义的。
算法总是要解决特定的问题,问题来源就是算法的输入,期望的结果就是算法的输出,没有输入输出的算法是无意义的。
3.算法设计的5个要求:
①正确性:最基本要求,算法必须能解决某个问题的需求。
②可读性:算法的可读性有助于人的阅读与交流,容易调试和修改。
③健壮性:当输入的数据非法时,算法能适当做出反应或进行处理,而不会产生莫名其妙的输出结果。
④效率性:算法是为了解决大规模问题,因此需要运行效率足够快。
⑤存储性:算法在执行过程中,所需要的最大存储空间,应该尽可能的占用小。
效率性与存储性都与问题规模有关,求100人的平均分与求1000人的平均分,同一个算法的所花费的执行时间与存储空间显然是不一样的。
正确性,可读性,健壮性不仅仅是算法设计的要求,而是贯穿整个软件设计层次。单对于算法本身来说,我们最关注的层面是效率性。千万不能死板的认为,算法就是计算机程序。算法是一切解决问题的思想,语言描述,伪代码,流程图,各种符号或者控制表格同样是算法。
算法在科学研究中具有普遍意义.解决科学研究中的问题需要一定的方法,但"方法"这一概念含义广泛而不具体,而算法与一般方法相比,则更具体、更精确,因为它是能行的、可操作的.能解决某个科学上的问题,实质上就是意味着掌握了或找到了某种算法.某一问题的可解性意味着能够找到一个适当的算法,而某一问题的不可解性则意味着不可能找到一个适当的算法,或证明这样的算法不存在.在科学史上,很多研究工作的任务和目的,就是要寻找解决某个问题的算法.
在新高中数学课程标准中,我们注意到算法作为必修部分进入了中学数学.标准中写到:“算法是一个全新的课题,已经成为计算机科学的核心,它在科学技术和社会发展中起着越来越重要的作用.算法的思想和初步知识,也正在成为普通公民的常识.在必修课程中学习算法的基本思想和初步知识,算法思想将贯穿高中数学课程的相关部分.”可是,到底算法引进中学的意义是什么?本文
算法学习的意义
“计算机既是数学的创造物,又是数学的创造者”,而算法既是计算机理论和实践的核心,也是数学的最基本内容之一.甚至有人说,数学学习的主要作用是形成“算法思维”.算法有着悠久的发展历史,中国古代数学曾经以算法为特色,取得了举世瞩目的辉煌成就.在已经逐步进入信息化社会的今天,算法的基本知识、方法、思想日益融入人们社会生活的方方面面,已经也应该成为现代人所应具备的一种基本素质.
我们认为学生学习算法有以下几个方面的意义:
算法学习有助于我们全面的理解运算能力
很多时候,人们对运算存在一些误解,认为运算就是按照各种运算法则进行加、减、乘、除,从而学习运算就是背诵书本中给出的计算法则,形成一些基本的计算技巧,也就是说,能够根据熟记的法则,迅速的计算给定式子的正确答案.
实际上,按照算法规则进行逻辑推理而获得正确结果仅仅是计算的很小的一个方面,更重要的是,在运算中构造、设计、选择一个合理的,算法理解相应的算理.在算法学习中,我们要让学生给出一个问题的不同算法,并比较这些算法的优劣,并作出选择,从而提高效率,而这个过程才是一个真正的运算过程,因此算法学习使得我们更加全面的理解运算能力.
算法学习能够培养学生的逻辑思维能力
我们常常说数学是思维的体操,能够训练学生的思维能力.算法作为数学的一个基本内容,在培养学生的逻辑思维能力上能够发挥重要的作用.
算法是解题方法的精确描述.算法一方面具有具体化、程序化、机械化的特点,同时又有高度抽象性、概括性和精确性.因此,将解决具体问题的方法整理成算法的过程是一个条理化,精确化和逻辑化的过程,有助于培养学生的逻辑思维能力.
我们学过一元一次方程的求解,任意给一个一元一次方程,比如说
3 x + 5 = 0
我们都会解这样的方程.它的解是
x = - 5/ 3.
我们说计算机能够帮助人完成很多工作.但是计算机毕竟和人脑有着本质的区别,它是机械的,在没有的指令的情况下,它是不会思维的,不能进行任何判断.算法是连接人和计算机的纽带,这些思维的过程,判断的过程我们都要精心的设计到算法里面,作为指令教给计算机去完成.
比如我们需要写个算法让计算机来解方程.
ax + b = 0
其中参数由键盘任意输入,让计算机输出结果.
我们能说凡是这样的方程就让计算机输出:
“x = - b/ a”就可以了吗?显然,这是有问题的,因为当a = 0 的情形下,这种输出是错误的,也就是说我们需要分情况讨论:
1) 输入a ,b ;
2) 若a ≠0 ,则输出x = - b/ a ;
如果a = 0 实际上方程变成了b = 0 ,这样的方程的解又是什么呢?看来还要看看参数b ,若b = 0 ,则方程为0 = 0 ,若b = 5 ,则方程为5 =0 ,这两种情形显然是不一样的,前者的解是任意实数,而后者则是无实数解,因此继续我们的算法
3) 若a = 0 ,还要对b 进行讨论:
( i) 若b = 0 ,方程的解是全体实数;
( ii) 若b ≠0 ,方程没有实数解.
对于这样一个看似简单的方程还有这么多门道呢?因为,作为一个算法必须是精确的,任何人按照(包括计算机) 这个步骤执行都能得到这个问题的求解.
我们可以从以上例子看出,书写一个算法的过程是一个思维的整理过程,是一个精确化、条理化的过程,因此有助于培养学生的逻辑思维能力.
声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:daokedao3713@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有
邮箱:daokedao3713@qq.com