时 间 记 忆
<<  < 2008 - 11 >  >>
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
最 新 评 论
专 题 分 类
最 新 日 志
最 新 留 言
搜 索
用 户 登 录
友 情 连 接
博 客 信 息


 
生活算法——我喜欢的一篇文章
[ 2006-11-16 13:42:00 | By: ]
 

中小学信息课的核心-生活算法
引:
2003年初,北京市教科研中心周美瑞老师提出了一个小小的故事。她说自己的爱人曾经开玩笑地说过:我不太会做饭。主要原因是没有学习过计算机算法,总也搞不清哪件事情先做,哪些事情后做。没有程序的观念,结果总也做不好饭。――最后的结论是:不学编程的人不会做饭
一件小小的笑话引起了我们的反思。学生与成人主要的差距是处理问题能力上的差距。在处理一些小事情、小的问题上,十二岁的少年与成人的差距是不大的。但是遇到了许多小事情组合而成的大事情时,孩子们不会将其解决,其主要原因是无法找到较合适的解决问题的方法与步骤。
掌握解决问题的方法与步骤、优化解决问题的过程是人的素质发展的重要过程。
. 计算机软件的核心-算法
中国计算机学会副秘书长杜子德指出,计算机教育最核心的应该是编程,编程可以锻炼学生的逻辑思维、自学能力,那才是计算机教育的根本。
中国科学院计算技术研究所研究员李国杰院士说,一个软件能否高效率地解决问题,其关键不在编程技巧而在于解决问题的思路与方法,即算法。从这个意义上讲,算法是软件的灵魂。(来源)
学习一门程序设计语言,仅仅懂得这门语言的语法规则并不能设计出一个好的程序,掌握解决问题的方法和步骤才是关键。PASCAL语言的设计者沃思教授曾经说过:程序设计=算法+数据结构。
从计算机的角度来看,什么是编程的核心、什么是信息技术教育的核心呢?是算法,是用计算机解决问题的方法和步骤,是解决问题的方法和步骤。
可以说,学习计算机非常重要的方面是学习软件,学习软件的重要方面是学习编程,学习编程非常重要的内容就是算法。
不过要学习算法可并不是一件太容易的事情。学习算法一般要先学习编程语言。不论是C语言、PASCAL语言,甚至号称基础的BASIC语言、logo语言少则十几条命令,多则上百条命令。每条命令又有许多不同的要求。所以要学习算法,一般要先学会语言;要先学会语言,需要先学会命令……。许多人没等到开始学习算法时,就已经在烦杂的语言和命令面前退缩了。
信息教师在反思:我们可以从生活、工作、学习中领会解决问题的方法与步骤,那么领会算法一定要学计算机的语言吗?
. 什么是计算机程序算法
在计算机教材中,一般对算法的定义是:解决问题的方法和步骤称为算法。
或者简单地说,算法就是计算的方法。例如,日常生活中算盘的口诀就是一种算法,乘法口诀表也是一种算法。
一般地说,计算机中的算法分为两类:数值运算和非数值运算。如求若干个数的和,求方程的根都是数值运算,而图书情报资料检索、计算机绘图等都是非数值运算。非数值运算种类繁多,情况各异,难以一一罗列。
在计算机中的算法不是唯一的。但是,多个算法中有优劣之分。因此,在设计程序时解决实际问题时应选择合适的算法。
计算机算法按过程主要有顺序、分支、循环等三种。算法另一个重要的特点是模块化。通过子程序的设计,将某一功能用子程序来解决。在主程序中仅仅用模块的方法使复杂的程序简单化了。
计算机程序设计中的算法不是唯一的,但一般会有一种最科学、最简单的途径,可以最快的达到目的。计算机算法是程序设计中的重要内容。也是计算机教学中的重要目标。
. 生活中解决问题的方法和步骤-生活算法
在日常的生活与学习中,我们每时每刻都会遇到各种各样的事情,每一种事情都有许多不同的方法、不同的步骤来解决。例如生活中扫地这样一件小事的步骤是:准备笤帚准备簸箕用笤帚扫地拿簸萁撮土。其中有着解决扫地这个问题的必然解决步骤。其中核心的解决的次序是不能变化的。而打扫卫生,又是由擦玻璃扫地擦桌子等等不同模块组成。
当仔细反思后,我们可以发现:这些对生活中的问题的解决方法与步骤是计算机程序设计算法思想的一种体现。这种解决生活中问题的方法与步骤,不妨称之为生活算法,当然还可以称之为生活策略等名字。
生活算法主要研究的目标是解决生活活动、学习活动中问题的方法与步骤。生活算法在于体现与优化其解决问题的过程。
生活活动与学习活动中问题多种多样,生活算法也不是唯一的,会有多种多样的解决方法、步骤,有着不同的过程。因此,可以使用流程图的方式表示解决问题的过程。在图表中体现出了算法的不同特点。
例如:扫地的算法流程图,体现了顺序。
准备笤帚准备簸箕用笤帚扫地拿簸萁撮土
例如:检验员的算法流程图,体现了分支。
产品检验(原则是:)合格至下道工序
            不合格退回重新生产。
在生活算法中,大量使用了模块化思维。例如在学生班集体打扫卫生的过程的流程图应当是:擦玻璃消毒扫地擦地清运垃圾,其中每一项是一个工作流程的模块。生活算法分析把复杂的事情简单化了。
在生活中,掌握解决问题的方法与步骤是一个人最基本的素质。对于成年人来说,丰富的生活经验提供了优化解决问题方法与步骤的能力,对于儿童来说,在不断地学习、掌握、提高这方面能力。
. 生活算法与计算机算法。
1.
生活算法与程序算法的特点相同
一般而言,程序设计算法的五个主要特性:有穷性、确定性、有零个或者多个输入、有一个或者多个输出、有效性。生活算法的特性也基本一致。
1)有穷性:算法的操作步骤应是有限的。生活中对某一活动也是如此。如果真实生活中让歌唱家唱一首永远唱不完的歌,这是不合理的。生活算法与程序算法都是有穷的,没有永远完不成任务的生活算法。
2)确定性:算法的每一步都应是准确无误的,不能含义模糊。生活算法分析也应当如此,例如:"吃完饭到公园去",这句话含义模糊,到底是吃完早饭去还是吃完晚饭去?不确定。生活算法中一些比较笼统的事情,一定要分析、分解到能够比较清晰地去完成每一步的状态。
3)有零个或多个输入。程序设计中的算法与生活算法一致,应该有输入。当然,有些算法可以没有输入,象舞蹈演员表演舞蹈是不需要什么样的输入条件。
4)有一个或多个输出:程序算活动与生活算法的目的都是为了解决问题,解决问题应该有结果,结果就是输出,没有结果的算法是没有意义的。生活算法一定要有解决的问题。
5)有效性:程序算法的每一步都应该能有效地执行。生活算法要能每一步都能利用现有的条件去实现。例:"到火星上去捡一块石头回来"在目前来说是无法执行的,程序算法与生活算法都不能出现这样的步骤。
2.
生活算法的复杂性。
生活算法不仅有简单的过程,还会有复杂的过程。如果将实施的对象与过程相综合就可以分出以下不同的算法类型:
单对象单线程:一个人完成一件事情的算法分析(体现顺序、分支、循环过程)在分析中充分体现了模块化思维。在学生的许多学习活动中
单对象多线程:一个人同时完成两件以上事情的算法分析。其过程就比较复杂。
多对象单线程:两个人共同完成一件事情的算法分析。两个人各有特长,协作解决一个问题,其过程会更加复杂。
多对象多线程:两个以上的人共同完成相关的两件事情。如果能够充分发挥两个人各自特长,分工协作。其中包含的过程会非常复杂。
生活算法中既有简单的过程,也有复杂的过程。
3.
生活算法分成方法(或技巧)、步骤、过程策略三个不同层次。
生活算法中
方法(技巧):为解决问题的技巧、手段等。象在前例中,扫地的技巧有:站位的不同技巧、扫的不同技巧……。是解决问题的细节。
步骤:解决问题的次序。在某一项活动中,哪个在前,哪项在后。原因何在。是解决问题的步骤。
过程、策略:是在解决问题中的事物发展所经过的程序;阶段的选择的策略。是对过程的总体的优化。
. 基本的生活算法分析
顺序型活动:
典型的计算机算法例题:例1.有两个杯子AB,分别装有酒和醋,要求将它们互换。进行分析:根据实际常识,需增加一个空杯C作为过渡
  其算法可以表示为:
步骤1:先将A杯中的酒倒在C杯中;
步骤2:再将B杯中的醋倒在A杯中;
步骤3:最后将C杯中的酒倒在B杯中;
这就是我们以后将要用到的将两个变量的值进行交换的方法,此方法可简化为:(1A--->C (2B--->A (3C--->B
生活算法:
主题活动:如果利用字处理软件输入一段文件。进行分析,其算法可以表示为:
 步骤1:启动字处理软件。
 步骤2:启动文字输入法。
 步骤3:保存文件。
 步骤4:退出字处理软件。
在许多活动中,我们也能够看到生活算法的分支型活动、循环型活动的具体体现。
可以看出,在信息课中的主题算法教学,是利用与程序设计算法相关的算法精神,将信息课中利用计算机解决生活、学习问题的方法、步骤和策略进行详细的分析。这种整理出的结果不仅对于学生有着本学科培养学生抽象思维的特征,还对各学科的学习有着重要的过程方面的指导作用。
. 生活算法在信息技术课中
计算机算法是用计算机解决问题的方法与步骤。生活算法是解决生活中的问题的方法与步骤。其中主要分成了两个层次:解决问题的方法、解决问题的步骤,即过程。其中过程中的部分步骤是有序的。一部分步骤的顺序是不可变化的。
生活算法是在分析如何获取信息的方法、如何处理信息,甚至是合作处理信息、发布信息的过程。
1.
算法的作用。
生活算法在信息技术课的活动中体现能够分成两个部分。第一部分是主题活动阶段。第二阶段是算法分析阶段。
主题活动阶段是与各学科类似地开展相关的、信息技术环境下的主题活动。在这阶段中,学生们是自觉或者不自觉地利用掌握的解决问题的方法,按照某种步骤一步步地完成自己的活动。在完成主题活动中,方法与步骤有多种多样的表现。
生活算法分析阶段是对前一阶段活动的分析与比较。在完成主题活动的过程中学生使用的方法与步骤可能有多种多样的。但是步骤是否合理、方法是否合适,并没有完整地分析。在这个阶段对过程进行分析,看是否能够优化其完成过程;对解决问题的方法进行分析,看是否合适……
生活算法分析是对主题活动的总结与升华,是用计算机算法的眼光看信息技术课活动的。两者之间有着重要的作用。
主题活动中使用着生活算法的法则;生活算法的是对主题活动的过程与方法进行分析;生活算法的原则来源于实践活动;生活算法对于主题活动有着法则上的指导作用。
2.
算法分析活动
在信息课的教学活动中,会有许多生活算法的具体体现。甚至一些小学中、低年级的活动中已经出现了较复杂的过程。许多教学活动中的难点实际上是算法分析。画图教学中的异窗口复制与粘贴就是一例。
小学画图教学在信息课中往往安排到中低年级进行,学生年龄八、九岁(三年级以下)。
异窗口粘贴教学简要过程:
首先教师出示了各种组合好的图片-教学生先打开背景图-再用另一个窗口打开素材图-将素材选取复制等操作-在背景图上进行粘贴、调整等操作-组成合适的图画后,保存背景窗口中的图片,成为自己的作品。
学生活动情况:
当教师教会了各个步骤的操作后,学生开始自我操作。大约有一多半的学生完成了自己的制作活动,但是还有一小半的学生没有完成自己的操作。经过观察,完成作品的学生也是经过了多次失败后,才复制、粘贴出自己的作品。听课教师的疑问是:为什么学生在已经掌握了各个细节的操作方法后,仍有相当一部分学生不能做出自己的作品?
活动问题分析:
听课的老师,仔细观察学生个别的学习活动,就可以对上面的疑问一目了然了。我们在课堂中可以看到:一个学生在打开了二个窗口后,其操作就开始混乱起来。对二个windows窗口的分别操作中出现了许多误操作。其中致命的错误是将制作的窗口象素材窗口一样未保存关闭,损失了自己几近完成的作品。
算法分析活动:
用生活算法的思想来分析这些学生的学习活动,其实这是一个典型的单对象双线程算法问题。
过程描述如下:





当学生的思维不能理解两个窗口共同工作,就很难将素材图片组合成自己设计的图形与图片。这种一个人同时处理两个以上对象的事情,在生活中、在学习中是经常见到的。
从这样的例子中,我们可以看到生活算法对于具体学习、生活活动的意义来。在课堂中显性或者隐性地强调生活算法,有利于学生的思维的培养,有利于学生分析问题、解决问题的能力的提高。
3.
生活算法对学习学习的指导
当生活算法能够在课堂教学中显性或者隐性的出现时,当我们的信息课教学更加关注利用计算机解决问题的过程时。许多相对复杂的事情,在学生中也能够比较容易地达成。
在小学信息课多媒体教学中,动画一般是学生制作的难点。如果利用算法的思想能够先将设计中的思路体现出来,那么学生从理解解决问题的过程,进而实际操作(去解决问题)就容易多了。
跳舞的小姑娘教学简要过程:展示动画-基本知识教学(素材得到、自定义动画)-分析制作过程(上台、跳舞、下台)-学生制作活动。
其过程的分析:
首先利用算法中模块化思想将PowerPoint中的对象分解成几个大的步聚:上台-跳舞-下台。然后分析各个大模块的制作方法:上台:(人物、移动);跳舞(如何插入不同的姿式图片,每个对象如何转换);下台……
这样学生在制作过程中,明确了解决问题的过程后,对于学习活动有着重要指导作用。它不仅仅对于信息课有重要意义,还对其他各学科的学习、对生活中解决问题都有着重要的意义。
. 生活算法对于信息课的意义
生活算法对于信息课来说有着重要的意义。它不仅仅强调在信息课中要重视过程与策略的教学,还在于:
1.生活算法与程序设计相呼应。
在高中课程标准中,已经设置了程序设计模块,计算机程序设计的核心是程序设计算法。生活算法与程序算法紧密相联。在初中、小学阶段加强生活算法的学习,对于高中的程序设计课程相呼应。生活算法的展开成为程序设计的基础与前导。
2.将信息课单纯对技术的教学转变成为对解决问题步骤与方法、过程的教学。
信息课,尤其是初中、小学的信息课大多在强调技术的学习。课堂中教学活动的主要目标是使学生学会计算机应用软件的操作。计算机教育的目的远远不止开关操作和查找软件,教育显然不是单纯的技术活动;给每个学生一个键盘和一个网络插头,并不等于教育学生。在信息课中仅仅教会学生简单操作,不是培养学生的推理能力、严密分析的能力和解决问题的能力,那将是非常危险的。将信息课通过算法引导到对学生思维能力、解决问题能力的培养上面,使学生掌握计算机操作转变为体会利用计算机解决问题的步骤、方法与过程。
3.在信息课的活动教学中抽象出生活算法。
生活算法来源于生活的具体活动,是学生身边的具体事例。在具体事例中找完解决问题的方法、步骤,优化其过程。必然需要学生在其中进行多种高级思维。需要对具体的学习活动和生活活动进行推理、需要详细的分析,并且加以实践的验证,最终达成解决问题的目的。
4.生活算法对于学习活动过程有着重要指导作用。
生活算法是从生活中抽象出来,对于学生现实生活中的活动、学习活动,尤其是自主学习、协作学习有着重要作用。
生活算法主要来源于学生的学习活动,其学习策略对其影响会
学习是一种复杂的活动,当受控于教师时,学习的过程、步骤比较明确清晰,但学生在自主学习、协作学习中往往无法控制学习过程中的步骤、策略,而生活算法的过程分析能够对些方面进行指导。


信息科技教育是基础教育,是现代学习工具和学习方法的教育。在知识教育中工具性体现的越来越清楚,而对学习、生活方法的体现并不是较多。
生活算法是学生在信息技术课的主题活动中,分析与体会出来的活动方法与过程的生活算法的得到是从生活实践中来,其作用是对实践有着方法、步骤、策略上的指导作用。重视学生体验、感悟和实践的过程,通过学习情境的创设,实践的环节和学习渠道的拓宽,丰富学生的经历和经验,改变学生的学习方式,实现知识的传承、能力发展、态度与价值观形成的统一。
信息课是使学生了解信息的获取、处理、发布的方法与步骤,本质是方法与步骤的教育。是以学习与生活需要的方法、解决问题的步骤、活动的过程为中心。
对方法与步骤的感悟,必须建立在活动的基础上。在活动中才能真正地体会解决问题的方法、步骤、过程,才会选择较好的策略。方法、步骤、过程的体现将不仅仅使学生现在受益,而且做到终身受益。


参考书籍:
《现代教师的心理学基础》徐正言著
《为什么计算机在儿童教育中不尽人意》〔美〕克利夫顿.查德威克(Clifton Chadwick) 张帆张帏《基础教育参考》2003年第10期。

 
 
  • 标签:生活算法 
  • 发表评论:
     
    Powered by Oblog.