算法分析教学改革

2024-08-03 版权声明 我要投稿

算法分析教学改革(精选8篇)

算法分析教学改革 篇1

【中文摘要】随着信息社会和科学技术的发展,计算机在日常生活中起着越来越重要的作用。而算法是计算机工作的基础,了解算法知识及其思想成为现代社会每一个公民所应具备的基本素养。在许多发达国家,算法知识早已成为中学教材的重要内容。2003年4月教育部颁布《普通高中数学课程标准(试验)》,新课程开始陆续实施。作为新课程中首次出现的内容之一,算法的教学问题被人们所关注。湖北省于2010年才第一次进行必修3(含算法初步的内容)的教学。由于算法内容对刚实行新课改地区的中学数学老师来说是比较陌生的,心理上存在着畏惧情绪,在实际教学中缺少有效的教学指导,因此给他们的教学带来了全新的挑战。本文研究了国内外关于算法教学的研究及教学设计理论的发展,重点是国内的“双主”教学设计与“以活动为中心”的教学设计,对高中数学算法初步的内容进行了功能分析。结合教学实际,对算法初步的部分内容进行了教学设计。旨在为自己及同行的教学提供一个有益的探索与尝试。本文所给出算法设计方案只是初步的,有待于在今后的教学实践中进一步检验完善。

【英文摘要】Algorithm is an ancient concept,with the development of computational science,algorithm has become more and more important.The idea of Algorithm has already become a mathematical quality for modern citizens.In many developed countries, Algorithm has become an important part in senior

high school teaching.In April 2003, The Mathematics Curriculum Standard of High School began to be carried on in our country, and algorithm has appeared in the text-books of high school mathematics.But the problem of teac...【关键词】算法 功能分析 教学设计

【英文关键词】algorithm function analysis instructional design 【目录】高中数学算法初步的功能分析及教学设计4-5出8-9910-1111-14ABSTRACT5绪论8-11

摘要

1.1 研究问题的提1.2 研究意义9-101.2.2 研究的实践价值9-102 研究综述11-18

1.2.1 研究的理论意义

1.3 研究方法2.1 算法的研究综述

2.1.2 国内的算2.1.1 国外的算法研究11-13

2.2 教学设计的相关研究综述法研究13-1414-182.2.1 国外教学设计理论的发展14-162.2.2 国内教学设计理论的发展16-1818-20算法初步的功能分析

3.2 有助于3.1 有助于提高学生的信息素养18培养学生的逻辑思维与创造性思维18-19秀的算法传统19-20

3.3 有助于发扬优

4.1 算法初步的教学设计20-40算法初步的教学设计策略20-21析为起点2020

4.1.1 以内容分析和学情分

4.1.2 以现代信息技术为辅助手段

4.1.4 以数学文化为4.1.3 以思维训练为目的20

驱动力20-2121-40

4.2 算法初步的教学设计案例

21-24

4.2.2 程序4.2.3 基本算法4.2.1 算法概念的教学设计框图与算法基本逻辑结构的教学设计语句的教学设计29-3232-35

24-29

4.2.4 循环语句的教学设计教学建4.2.5 秦九韶算法的教学设计35-40

5.1 教学建议议及需要进一步研究的问题40-4240-4142-455.2 需要进一步研究的问题41-42参考文献

附录 附录 A:攻读硕士期间发表的论文45-46

算法分析教学改革 篇2

《算法设计与分析》课程作为计算机专业的核心课程, 除了讲授了计算机领域各类问题的标准算法以外, 还要对所学算法进行时间和空间的复杂性分析, 以在众多可行算法中选择最优算法从而解决实际问题。所谓算法, 它的广义概念其实是“处理问题的方法”。正因如此, 计算机算法的应用早已不再局限于计算机领域, 很多理工甚至社科领域也都能见到算法的身影, 良好的系统设计是要以严密的算法设计作为保证, 任何问题的解决, 都离不开优良的算法设计。

2算法教学中存在的问题

计算机算法应用广泛, 体现计算机科学方法论的理论、抽象和设计三个过程, 所覆盖的知识点广, 学习的难度也较大, 该课程还要求学生能灵活运用所学策略解决实际问题, 使部分学生学习该门课程比较吃力。经过在本科院校七年的教学实践, 我认为目前《算法设计与分析》课程的教学主要存在以下几个主要问题:

一、学生先导课程学习不扎实, 准备不足

《算法设计与分析》作为一门专业课程, 要求学生对实际问题进行抽象化分析, 建立数学模型, 设计出算法, 最后还需要为算法配备合适的数据结构实现算法并分析测试。在整个过程中, 一些基础课程的掌握起到决定性作用, 例如高级语言程序设计、数据结构等课程, 学生必须有了这些课程扎实的基础知识后, 才能更易把算法设计的方法予以实现。很显然, 大部分同学在学习这些先导课程时并不太理解这些课程的重要性, 前期学习不够充分, 基本功不扎实, 导致这门课程学习遇到困难。

二、课程抽象, 理解难度大

在《算法设计与分析》课程中, 涉及到大量的算法设计技术和方法, 例如递归技术与分治法、贪婪法、动态规划法、回溯法、分支限界法等, 还包括与数学有关的一部分统计算法和随机算法等, 这些算法抽象度很高, 理解起来难度大。这些算法设计方法是对学生传统编程理念的颠覆, 对提高学生的逻辑思维能力有很高的价值。然而, 由于算法本身所有的实现都是基于数学模型的, 很抽象, 学生理解难度大。

三、实践环节困难重重

《算法设计与分析》这门课不仅要学生掌握各种算法的思路、分析算法的优劣, 还要能为算法设计出合理的数据结构与最终实现算法。但由于部分学生数据结构的设计能力有限, 编程的基本功也不够, 导致实践环节中困难很大, 很多算法无法编程实现, 学习起来感觉空泛, 没有成就感。

四、理论联系实际不强, 学习缺乏主动积级性

算法这门课本身学习起来比较枯燥, 由于缺乏联系实际, 学生学习的主动积级性不高, 部分同学甚至认为“没什么用”, 这种对课程的严重误解也使得整个课程教学效果大打折扣。

3教学改改革

算法是一门很难的课, 作为任课老师, 我们时刻都在寻求解决教学问题的途径, 克服困难, 以希望将课程的教学效果得到最好的提升, 在七年的教学实践中, 我们针对各项出现的问题并结合算法课程自身的特点, 对课程教学作了以下改革:

一、强化理论基础, 未雨绸缪。

本课程的授课对象主要为计算机本科大三年级学生, 他们在学习算法时, 需要对一些关键性的先导课程, 如高级语言程序设计、数据结构等熟练掌握。我们事先与这些课程的授课老师沟通, 让在他们教学过程中重点培养程序设计思路, 强化编程意识, 并可适当地在他们的课程中引入简单的算法案例, 引导学生用算法解决实际问题, 激发兴趣。同是, 算法的授课的老师也去低年级班级开展一些小的算法讲座, 给他们带一些小的案例, 例如皇后问题、单源最短路径等问题, 与他们互动交流, 激发他们的好奇心。我们还向他们介绍先导课程的重要性以及先导课的学习方法, 帮他们学好基础课程, 为后面算法课程的学习铺垫。

二、合理选择教材, 因材施教

教材的选择对一门课程的教学效果起到决定性作用。对于学习能力较强的一类院校的学生来说, 这些学生中一部分学生将来都有着科研要求, 可以选择理论性强、推理复杂的教材, 为他们日后的科研打下基础。但对于独立学院的学生来说, 我们选择的教材更注重案例教学, 我们通过一个个鲜活的案例, 培养学生动手能力, 在动手过程中, 掌握所学知识。教材的选择上, 考虑到学生基础, 我们并没有盲目追求国外优秀教材, 而是选择王晓东老师的《计算机算法与设计》, 这本教材理论性逻辑性强、推理严密, 案例多, 很适合我们学生学习。

三、加强分析比较, 融会贯通

算法课程中, 涉及到大量的算法设计技术和方法, 例如递归与分治、贪婪法、动态规划法、回溯法、分支限界法等, 这些算法相对抽象、且需要不断迭代, 理解起来难度大。我们在授课时就注重几种方法之间的比较与鉴别, 分析各自优缺点, 对不同问题采取合适分析方法。例始:我们在对分治法进行讲解时, 主要让学生理解分治法的特点, 并将该方法与传统穷举法作比较, 理解分治的技巧以及优越性, 并分析哪些问题适合用分治法来解决。在讲解动态规划时, 让学生注意区别该法与贪婪法的区别, 分析为什么有的问题可以用贪婪法而有的问题不可以, 而要用动态规划。在讲解回溯法时除了分析了回溯法的优点外, 重点分析一下回溯法“第一解的得到是盲目的”这样一个缺点, 为后面的“分支限界”法铺垫。我们在讲授过程中着重引导学生将几种传统算法进行比较, 融会贯通, 逐步让学生理解算法设计的技巧与精髓。

四、理论联系实际, 触类旁通

我们都知道, 算法的学习目的就是利用所学知识解决实际问题, 我们会定期从网上查找一些实际案例, 带到课堂, 组织学生对案例进行分析与讨论, 建立数学模型并设计算法。同时, 我们还组织学生辅助本系其他专业的学生设计一些用于他们专业的算法。例如:本系计算机08级学生就帮助08数字媒体技术专业学生设计了游戏中的AI算法, 取得很好的效果, 09级计算机还为09电子设计了电子门禁系统的语音识别算法, 这些做法都使算法得到很好的利用。

五、引入竞赛机制, 激发兴趣

每年的大学生程序设计病竞赛 (ACM) 是我们提高学生学习能力和提升教学效果的又一良好平台。我们通对组织学生参加ACM辅导班, 组织院内选拔赛等, 对表现突出的学生提供奖励并选送参加更高级别的比赛, 形成比赛氛围, 提高学习热情。我们还创建自己的ACM题库, 并配备指导老师对学生进行辅导, 让学生在做题过程中学好算法、用好算法。

通过七年多的教学, 我们发现, 学生对算法设计与分析这门的课的学习热情在逐年上升, 学生参与实践和竞赛的情绪高涨。通过正确引导, 这门理论性很强、抽象难理解的课程变成了理论联系实践、教学效果良好的院级一级达标课程, 我正是我们所期待的。当然, 我们的教师也会不断提高自己的科研水平, 提高教学成果与教学质量。

摘要:本文针对算法课程教学中存在的先导课学习不足、课程抽象、学习积级性不强等问题, 从教学方式、教材、引入竞赛等方面进行教学改革, 从而不断提高教学质量。

关键词:算法设计与分析,教学改革,理论联系实际

参考文献

[1]王晓东.计算机算法设计与分析第2版[M].北京:电子工业出版社2005.4:3-122.

[2]张玉清, 王群“.算法设计与分析”教学方法的探索[J]中国地质教育, 2006.4:119-120

算法分析教学改革 篇3

关键词:数值分析 算法设计 教学案例 网络教学

中图分类号:G424文献标识码:A文章编号:1673-9795(2012)04(b)-0104-02

现代科学技术的迅速发展,促进了数学理论和方法在科学研究和工程技术领域中的实用。数值分析研究利用计算机解决数学问题的数值方法及其理论[1],重点研究某些适合在计算机上使用的实际可行、理论可靠、计算复杂性较好的数值计算方法,主要内容包括“数值代数”、“数值逼近”和“微分方程的数值解法”三方面,综合知识点较多,既有纯数学的高度抽象性、严密的理论性和逻辑性,又有应用的广泛性与实际实验的技术性、近似性,集中体现了逼近(近似)、迭代、离散、外推(松弛)等独特的思想和技术。

传统的数值分析课程主要介绍一些经典的数值算法及其理论,但是有些算法的数值计算过程较为繁琐,通过单一的课堂讲授方式,学员往往只是对算法有一个粗略的概念,而不了解算法的具体实现过程,这在一定程度上导致学员对数值分析教学内容产生畏难和厌烦情绪,不利于学员各方面能力的培养。本文结合算法设计的逼近、迭代、外推(松弛)等技术,在数值分析的教学过程进行一些有益的探讨与尝试。

1 数值分析结合算法设计技术教学的可行性

信息技术与数学课程的整合已成为数学教育改革的热点问题,现代教育技术、信息技术、多媒体技术的快速发展,为学生的学习实验活动和交流构建平台,创设情境,提供丰富多彩的教育环境和有利的学习工具,提供探索复杂问题,多角度理解数学思想的机会,丰富学生学习和研究数学的视野[2]。

科学技术各领域的问题通过建立数学模型与数学产生了紧密的联系,但实际应用中所导出的数学模型往往不容易求出精确解,只能简化模型或利用其他方法求出近似解,而且所涉及到的运算过程(公式)比较复杂,有些运算过程仅靠一支笔、一张纸或一部计算器是很难迅速完成的。根据数学模型的特点提出求解的计算方法直到编出程序上机算出结果,进而对计算结果进行分析,这一过程就是数值分析或计算数学的主要任务。

本科《数值分析》课程一般安排在三年级开课,学生对本专业基础课程和基本数学知识已有所了解,具有一定的数学素养和计算机编程能力。在教师的指导下,通过具体教学案例的背景介绍与研究分析,学生利用所学的专业基础、数学理论知识和信息技术(主要借助计算机和数学软件),建立数学模型,针对模型选择合适的数值计算方法,并且讨论所研究问题的性态、算法的误差、稳定性、收敛性等。Matlab,Mathematic,Maple,Lingo等常用的数学软件具有强大的数值计算、符号计算和图形处理功能。这些均为数值分析结合算法设计技术的课程教学提供了日趋完善的硬件和软件条件,更多的教学手段和更大的发展空间。

2 数值分析课程的算法设计技术

文献[3]关于算法设计的技术进行详细的介绍,概括起来主要包括以下3种技术。

2.1 规模缩减技术

规模缩减技术是通过某种简单的运算方法缩减问题的规模,直到求出问题的解,目的是通过“简单的重复”解决复杂问题,集中体现了数值分析中逼近和迭代的思想。规模缩减技术的特点是:依据原问题的特点,建立某种形式简单、结构清晰的递归公式使原问题的规模递减。在教学过程中,通过渗透缩减技术,帮助学生理解算法的精髓。

以绪论中秦九韶算法为例介绍规模缩减技术。对给定的x计算多项式pn(x)的值,将多项式的次数规定为多项式求值问题的规模,秦九韶算法通过迭代计算使计算问题规模逐次减1,则经过n步,即可将所给多项式次数降为0,从而获得所求的解。此时只需作n次乘法和n次加法。

显然,求解非线性方程和线性方程组的解的迭代法也是规模缩减技术,将初始值与真解的距离看作问题的规模,则每迭代一步,得到的近似值与真解的距离逐步减少,直至达到要求的精度,迭代结束。

方程求根的二分法也是一种缩减技术,可以将包含根的区间作为问题的规模,运用某种手续逐步压缩含根区间,减少问题规模,直到所求的根满足精度要求为止。解线性方程组的消去法是为了降低方程组的阶数,同样是规模缩减技术的具体应用。

2.2 迭代校正技术

再来看一看求解线性方程组Ax=b的迭代法。给定线性方程组Ax=b的一个初始近似解,希望用某种简单方法确定校正量Δx,使校正值能够较准确地满足给定方程,由于,设为A的某个近似矩阵,则线性方程组Ax=b的近似方程称为校正方程。

校正方程是用于计算校正量的简化方程。校正方程通常要求满足:一是逼近性,它与所给方程是近似的,逼近程度越高,所获得的校正量越准确;二是简单性,校正方程越简单,所需计算量越小。

由校正方程可近似解出校正量,从而校正值相应的迭代公式为。

求解线性方程组的迭代法关键是近似矩阵的选取,要求与A近似,同时利用校正方程求解校正量Δx比较容易。当线性方程组的系数矩阵为对角阵或上(下)三角阵时,方程都比较容易求解。例如可将A分解为A=D L U

其中D为对角阵,L和U分别为严格下三角和严格上三角阵。

若令,相应的迭代公式即为Jacobi迭代公式

若令,即为Gauss-Seidel迭代公式

若令,即为松弛因子为的超松弛迭代公式。

2.3 松弛技术

在实际计算过程中,如果能够取得目标值F*的2个相伴随的近似值F0、F1,如何将它们加工成具有更高精度的结果呢?一种简便而有效的办法是,选取适当的权系数,将近似值F0、F1的某种加权平均值作为新的具有更高精度的近似值,即令:

这种基于校正量的调整与松动的方法,称之为松弛技术。它的特点是优劣互补,化粗为精,较好体现了将复杂过程化为简单过程的重复处理,不同之处在于每一步的松弛因子的选取。要使迭代过程加速收敛,必须根据具体问题使用合适的松弛技术和松弛因子。

数值分析课程的很多内容都体现了松弛技术,最典型的是求数值积分的Romberg方法、解线性方程组的超松弛迭代法、逐次线性插值、迭代加速的松弛技术等等。

3 数值分析结合算法设计技术的课程教学

依据多年的教学实践和经验,在原有的《数值分析》教材的基础上,经过反复研究与探讨,我们重新组织编写了《数值分析(第二版)》教材,2011已经由科学出版社出版。新版《数值分析》教材适当结合当代前沿学科中常用的基本内容和方法,在编排体系和内容组织上更注重紧凑和循序渐进,对精选的内容尽量作详细的论述和推导,对部分定理和结论,仅作叙述,删除了繁杂的证明过程,侧重于算法的构造思想、算法的实现、算法的误差估计、收敛性、稳定性、计算量、以及对算法的改进等等,使得课程教学内容现代化、科学化、合理化。

为了加强教学知识与内容的应用性、数学思想和方法的可操作性以及实用性,针对教学课时不够和学生学习兴趣不高的情形,在教学过程中,强调算法设计的缩减技术、校正技术、松弛技术,并恰当地融入到数值分析课堂教学内容中,再进一步通过上机验证算法,使学生亲身体验到算法的优劣以及如何改进算法,提高学生学习算法理论的兴趣,开拓学生视野,活跃学生思维。

充分发挥信息技术,多媒体技术的优势,加强有关数学软件的教学,算法设计与软件实现相结合,以强化实现能力为牵引,结合数学建模,进行案例式教学。通过教学案例、训练、实验等各种方式,在解决实际问题的同时,也给数值分析课程教学带来了活力,在一定程度上消除了学生对数值分析教学内容的畏难和厌烦情绪。

加强网络教学资源建设,建立《数值分析》网络课程,借助大学校园网的网络教学应用系统这个教学平台,实现网上实时教学、布置作业与测验、在线答疑、在线交流、在线自学等功能。通过网络教学,学生选择学习内容,进行探究性的自主学习,变“被动型”学习为“主动型”学习,培养实践能力和创新意识,加强师生之间的互动,也促进师生之间、学生之间的情感交流与合作意识。

4 结语

在教学过程中,以强化实现能力为牵引,贯彻组合教学和技术教学法,强调数值分析算法设计的缩减技术、校正技术、松弛技术,以算法设计技术教学为纽带,课堂讲授、课堂讨论、案例教学、网络教学相结合,让学生体会到数值分析课程的学习内容不是毫无生气的数学公式,而是实实在在的可以解决实际问题的算法。激发学生对学习数值分析内容和过程产生强烈的兴趣和需要,培养学生对数学知识、数学方法的应用能力以及解决实际问题的能力。

参考文献

[1]何汉林,李薇,王天虹.数值分析[M].北京:科学出版社,2011.

[2]杨雯靖.高等数学教学改革研究与探索[J].高等理科教育,2008(1):41~43.

[3]王能超.计算方法[M].北京:高等教育出版社,2005.

算法设计与分析试题1 篇4

算法设计与分析试题1

一、单选题(每题2分,共40分)1、0518号台风“达维”过后,要对各个单位捐款救灾情况进行分组制表,并进行积分排序,一般使用的专业电子处理软件有(B)

A、powerpoing B、Excel C、Word D、Visual Basic

2、一位爱好程序设计的同学,想通过程序设计解决“韩信点兵”的问题,他制定的如下工作过程中,更恰当的是(C)

A、设计算法,编写程序,提出问题,运行程序,得到答案

B、分析问题,编写程序,设计算法,运行程序,得到答案

C、分析问题,设计算法,编写程序,运行程序,得到答案

D、设计算法,提出问题,编写程序,运行程序,得到答案

3、交通警察到达案发现场,一般按照下列哪种思路开展工作(D)

①观察、分析现场 ②收集必要的信息 ③进行判断、推理 ④按一定的方法和步骤解决

A、②①③④ B、①③②④ C、③①②④ D、①②③④

4、下面说法正确的是(A)

A、算法+数据结构=程序 B、算法就是程序

C、数据结构就是程序 D、算法包括数据结构

5、下列常量说明中,符合语法的是(D)

A、CONST color=red B、CONST const=10*5

C、CONST xl:=3.9; D、CONST color=”abcd”

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

6、VB中将两个字符串连接起来的运算符有:+和&,那么“123”+45结果是(A)

A、168 B、12345 C、”123” D、45

7、字符串”ABCD”和字符串”DCBA”进行比较,如果让比较的结果为真,应选用关系运算符(B)

A、> B、< C、= D、>=

8、设a,b,c,d,e均为整型变量,且a=13,b=2,c=10,d=3,e=2,则表达式“a-b*c d MOD e”的值是(A)

A、13 B、-7 C、ll D、0

9、已知A,B,C,D是简单变量,且都已有互不相同的值,执行语句B=8;A=C;D=A;D=B;后,其值相等的变量是(B)

A、A,D B、A,C C、C,B D、B,A

10、结构化程序设计由三种基本结构组成,下面哪个不属于这三种基本结构(B)

A、顺序结构 B、输入、输出结构 C、选择结构 D、循环结构

11、下列结果为真的关系表达式是(C)

A、”A”<100 B、23.5<20 C、23<45 AND 72>8 D、5

12、以下运算符中运算优先级最高的是(D)

A、+ B、OR C、> D、13、整除运算时,若运算量为实数,则先取整,后相除,结果为整型或长整型。下列哪种是整除运算符(D)

A、+ B、Mod C、/ D、精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

14、VB结束程序的运行可以单击程序窗体的“关闭”按钮,或单击VB工具栏上的“结果”按钮,哪种是“结束”按钮(B)

A、B、C、D、15、图标控件属于哪种基本控件(B)

A、标签 B、文本框 C、按钮 D、图像

16、要交换变量A和B之值,应使用的语句组是(B)

A、A=B;B=C;C=A B、C=A;A=B;B=C

C、A=B;B=A D、C=A;B=A;B=C

17、执行下面的程序段后,x 的值为(A)

x=5

For i=1 To 20 Step 2

x=x+i5

Next i

A、21 B、22 C、23 D、24

18、在窗体上画一个命令按钮,然后编写如下事件过程:

Private Sub Command1_Click()

Dim I as integer,j as integer,x as integer

x=4

For i=1 To 4

For j =1 To 3

x=x+6

Next j

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

Next i

Print x

End Sub

程序运行后,单击命令按钮,程序循环次数是(B)

A、4 B、12 C、3 D、6

19、在窗体上画一个命令按钮,然后编写如下事件过程:

Prevate Sub Command1_Click()

Dim a as integer,b as integer, x as integer

x=0

Do Until x=-1

a = InputBox(“请输入A的值”)

a = Val(a)

b = InputBox(“请输入B的值”)

b = Val(b)

x = InputBox(“请输入x的值”)

x = cint(x)

a = a+b+x

Loop

Print a

End Sub

程序运行后,单击命令按钮,依次在输入对话框中输入5、4、3、2、1、-1,则输出结果为(A)

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

A、2 B、3 C、14 D、15

20、在窗体上画一个文本框(其中Name属性为Text1),然后编写如下事件过程:

Private Sub Form_Load()

Dim i as integer,sum as integer

Text1.Text=“"

For i=1 To 10

Sum=Sum+i

Next i

Text1.caption=Sum

End Sub

上述程序的运行结果是(C)

A、在文本框Text1中输出55

B、在文本框Text1中输出0

C、出错

D、在文本框Text1中输出不定值

二、多选题(每题2分,共20分)

1、算法描述可以有多种表达方法,下面哪些方法可以描述“水仙花数问题”的算法(ABC)

A、自然语言 B、流程图 C、伪代码 D、机器语言

2、程序设计语言的发展经历哪几个过程(ABC)

A、机器语言 B、汇编语言 C、高级语言 D、自然语言

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

3、“闰年问题”的算法可以用哪些语言实现(ABCD)

A、Basic B、Pascal C、C++ D、C 语言

4、算法应该具有哪些重要的特征(ABCD)

A、有穷性 B、确定性 C、输入、输出 D、可行性

5、“今有物不知其数,三三数之余二,五五数之余三,七七数之余二,问物几何?”这个问题属于(ABD)

A、“韩信点兵问题” B、“鬼谷算法问题” C、“水仙花数问题” D、“闰年问题”

6、编制计算机程序解决问题的过程有:描述问题、算法设计、编写计算机程序和调试等,其中,对算法描述正确的是(AD)

A、算法是解决问题的步骤

B、解题的步骤是有限的 C、算法就是解题的算式

D、算法是可以被表述和实现

7、以下属非法用户自定义标识符(常量和变量命名)的是(ACD)

A、8ad B、ad C、_ad D、const

8、为了便于数据的表示与处理,VB提供哪几种基本数据类型(ABCD)

A、数值型 B、字符串型 C、布尔型 D、日期型

9、日期型数据专门用来处理日期和时间,哪种属于日期型数据(AB)

A、#2005/10/23# B、#2005/01/02# C、2005/10/23 D、“2005/1/2”

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

10、哪些文件属于某一VB工程中的文件(ABCD)

A、.vbp B、.frm C、.ocx D、.bas

三、判断题(每题1分,共10分)

1、Visual Basic是美国微软公司于1991年推出的基于Basic的可视化程序设计语言。(1)

2、一个算法可以被认为是用来解决一个计算问题的工具。(1)

3、一个算法可以用多种程序设计语言来实现。(1)

4、计算机是人制造的,所以,它和人脑解决问题没有什么区别。(2)

5、字符串型数据是指用‘ ’括起来的一串字符。(2)

6、我们常说的程序设计语言就是程序设计。(2)

7、控件是应用程序的基本元素,与窗体共同构成应用程序的界面。(1)

8、面向对象的程序设计以对象为中心,以事件为过程的执行起点。(1)

9、MsgtBox函数反回值的类型为数值。(1)

10、Ctrl+T能打开属性窗口。(2)

四、简答题(每题10分,共30分)

1、说说人类和计算机解决问题的区别?

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

2、用流程图描述出“闰年问题”的算法。

算法描述:

输入年份Y

IF Y能被4整除 THEN

IF Y不能被100整除 THEN

输出“是闰年”

ELSE

IF Y能被400整除 THEN

输出“是闰年”

ELSE

输出“不是闰年”

END IF

END IF

ELSE

输出“不是闰年”

END IF

精心收集

精心编辑

精致阅读 如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

3、在“神州号”程序中,我们只判断了飞船成功飞行的条件。当飞船速度继续加大时,飞船将达到第二宇宙、第三宇宙速度。。。。(见下表)

试编写程序,输入不同的飞船速度,判断它的各种飞行状况。

飞船速度(V)单位(km/s)

飞行状况

7.91<=V<11.19 飞船绕地球似做匀速圆周运动

11.19<=V<16.67 飞船离开地球的控制 ,围绕太阳转

V>16.67 飞船挣脱太阳引力飞出太阳系

编程:

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

方法一:Prevate Sub Command1_Click()

Dim v As Integer

v = InputBox(”请输入飞船速度的值“)

If(v >= 7.91)And(v <= 11.19)Then

Label1.Caption = ” 飞船绕地球似做匀速圆周运动“

Else

If(v >= 11.19)And(v <= 16.67)Then

Label1.Caption = ” 飞船离开地球的控制,围绕太阳转“

Else

If v >= 16.67 Then

Label1.Caption = ” 飞船挣脱太阳引力飞出太阳系“

Else

If v <= 7.91 Then

Label1.Caption = ” 输入数据错误!“

End If

End If

End If

End If

End Sub

方法二:(课本P36)

Private Sub Form_Load()

Dim v As single

精心收集

精心编辑

精致阅读

如需请下载!

演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案

v = InputBox(”请输入飞船速度的值“)

select case v

case is>16.67

Label1.Caption = ”飞船挣脱太阳引力飞出太阳系“

case is >= 11.19

Label1.Caption = ” 飞船离开地球的控制,围绕太阳转“

case is <= 7.91

Label1.Caption = ” 飞船离开地球的控制,围绕太阳转“

Case else

Label1.Caption = ” 输入数据错误!"

End select

End Sub

精心收集

精心编辑

精致阅读

092 建筑耗热量稳态算法分析 篇5

清华大学

建筑节能研究中心

燕达、张野、刘烨、李婷、吴如宏

摘要

标准[1]上给出的计算建筑耗热量指标的稳态算法,包括通过围护结构的传热耗热量、空气渗透耗热量、建筑内部得热三个方面,其中围护结构传热耗热量一项计算复杂,对结果影响重大,是计算的关键。本文就稳态算法中围护结构传热耗热量计算的几个影响因素进行分析,主要探讨地面传热量计算、太阳辐射得热量计算、围护结构传热系数计算三个问题,通过比拟不同算法对以上问题的影响,研究稳态算法计算建筑耗热量指标的可应用性。

关键字

稳态算法;围护结构传热耗热量

前言

建筑耗热量指标是评价建筑能耗水平的重要指标,在标准[1]中通过建筑耗热量指标的稳态算法〔以下简称稳态算法〕,计算1980~1981年通用设计的住宅的建筑耗热量指标,来确定节能前建筑能耗的基准水平的,同样通过标准上的稳态算法,可以计算设计建筑的耗热量指标,与基准水平比照,来评价设计建筑是否到达预定的节能目标。由此可见,稳态算法的计算准确性对设计建筑是否能真正实现既定节能目标的关键,也是正确评价建筑采暖能耗水平的关键。

稳态算法中建筑耗热量指标由围护结构的传热耗热量、空气渗透耗热量、建筑内部得热量三个指标确定,其中,围护结构的传热耗热量计算最复杂,对结果影响重大。本文就稳态方法中影响围护结构传热耗热量的几个因素进行分析,并通过建筑算例计算,探讨地面传热量计算、太阳辐射得热量计算、围护结构传热系数计算三个问题,研究稳态算法的计算准确性。

地面传热计算

地面传热量有三种常见计算方法:基于外温的地面平均传热系数法、基于地温的地面平均传热系数法、基于外温的地面划分地带计算法。

基于外温的地面平均传热系数法是采用室内外空气温度差,并利用对地面传热系数的修正来考虑地面通过土壤与室外空气换热的热阻;基于地温的地面平均传热系数法那么不考虑室内地面通过土壤与室外空气的换热,直接采用室内温度与室外地温之差进行计算;而基于外温的地面划分地带计算法是考虑到室内热量通过地面传到室外的路程长短不同,而热阻也相应有所不同,因此对室内地面划分不同的地带,并采用不同的传热系数进行计算。

由于基于外温的地面划分地带计算法采用的传热系数是考虑了距离外墙远近不同导致土壤传热热阻不同的综合传热系数,因此比拟好的反映了地面传热的实际状况,是应该选用的算法。

基于外温的地面平均传热系数法计算建筑耗热量时,单位面积的地面传热耗热量为:

(2.1)

式中:Q1

单位面积地面传热耗热量,kWh/(m2·a)

εf

地面传热系数的修正系数,取0.6;

Kf

地面的平均传热系数,W/(m2·K);

N

供暖期小时数,h;

tout

室外空气温度,℃;

tin

室内控制温度,℃;

基于地温的地面平均传热系数法在计算建筑耗热量时,具体计算方法为:

(2.3)

式中:tg

供暖期平均地温,℃;

其他符号同前。

采用基于外温的地面划分地带计算法时,工程上一般采用近似方法计算,把地面沿外墙平行的方向分成四个计算地带,对应每个地带取不同的传热系数进行计算

[2]。单位面积地面传热耗热量的计算公式为:

(2.2)

式中:A

地面总面积,m2;

Am

各地带地面面积,m2;

Km

各地带地面的传热系数,W/(m2·K);

其他符号同前。

以北京地区为例,参考北京典型年逐时气象数据,tout

取0.16℃,tin

取18℃,供暖期122天,即N

=24×122=2928h。建立地面面积为52m×10m的建筑模型,地面传热系数Kf

=4.08

W/(m2·K),根据以上三种方法计算得到单位面积地面传热耗热量如表2.1:

表2.1

基于三种方法的地面传热耗热量计算

基于外温的地面

平均传热系数法

基于地温的地面

平均传热系数法

基于外温的地面

划分地带计算法

单位面积地面传热耗热量kWh/m2•a

130

图2.1

基于三种方法的地面传热耗热量比拟

根据以上结果可以看出,三种算法的结果相差甚远,前两种算法中地面传热系数的取值直接决定计算结果,当取值不考虑土壤热阻、仅考虑地面构造做法的热阻时,计算结果显然偏大很多,同时算法二没有表达地面通过土壤与室外空气的换热,对进深不大的地面影响很大。

太阳辐射得热量计算

文献[1]中,单位建筑面积通过围护结构的传热耗热量按照下式计算:

(3.1)

式中:Q2

单位建筑面积通过围护结构的传热耗热量,kWh/(m2·a)

εi

围护结构传热系数的修正系数;

Kni

围护结构的平均传热系数,W/(m2·K);

Fi

围护额结构的面积,m2;

A0

建筑面积,m2;

N

供暖期小时数,h;

tout

室外空气温度,℃;

tin

室内控制温度,℃;

式中,通过围护结构传热系数修正系数来表达太阳辐射得热量对建筑耗热量的影响,本节通过对算例应用逐时气象数据模拟计算的方法来检验稳态算法中修正系数法的准确性。

对式(3.1)中的修正系数ε分别按照文献[1]取值和全部取1,计算两种取值算例的围护结构耗热量之差,即为稳态算法中对太阳辐射得热量的修正。

对算例应用动态模拟软件计算供暖期建筑耗热量,模型参数除气象数据外与稳态算法取值一致,分别对气象参数中有太阳辐射参数与太阳辐射数据全部取零的情况计算,两种工况建筑耗热量之差即为太阳辐射得热量。

采用建筑环境模拟软件DeST建立建筑模型,并对北京、西安、乌鲁木齐三个地区进行计算。建筑共五层,层高为2.8m,建筑外墙为37砖墙,外窗为双层塑钢窗,外围护结构的具体参数见表3.1:

模型平面图如下所示:

图3.1

建筑模型平面图

表3.1

建筑模型外围护结构参数

围护结构类型

传热系数W/(m²·K)

面积m2

修正系数

北京

西安

乌鲁木齐

屋顶

1.786

520

0.91

0.94

0.95

南外窗

3.1

400.4

0.18

0.28

0.34

北外窗

3.1

149.3

0.76

0.73

0.86

东外窗

3.1

8.4

0.57

0.60

0.59

西外窗

3.1

8.4

0.57

0.60

0.59

南外墙

1.27

327.6

0.70

0.79

0.76

北外墙

1.27

578.7

0.92

0.91

0.95

东外墙

1.27

131.6

0.86

0.88

0.85

西外墙

1.27

131.6

0.86

0.88

0.85

根据以上建筑参数,分别利用围护结构传热系数修正系数法和根据逐时气象数据两种方法,计算北京、西安及乌鲁木齐三个地区得到供暖期太阳辐射得热量,如表3.2。

表3.2

太阳辐射得热量计算结果

围护结构传热系数修正系数法

动态模拟法

太阳辐射得热量

kWh/m2•a

北京

西安

乌鲁木齐

图3.2

太阳辐射得热量比拟

从计算结果可以看出,与采用逐时气象数据法计算得到的太阳辐射得热量相比,北京地区采用围护结构传热系数修正系数法计算得到的太阳辐射得热量偏小,而西安和乌鲁木齐计算得到的数值偏大,说明目前应用广泛的围护结构传热修正系数对太阳辐射得热的考虑有一定误差。

围护结构传热系数计算

稳态算法中围护结构传热系数的计算对结果有直接影响。围护结构内外表与室内的换热由两局部组成:与空气的对流换热和与室内其他外表的长波辐射换热,通常建筑热工计算中用围护结构内外表的综合换热系数αn来简化计算上述两局部热量,按照文献[3],αn通常取8.7

W/m2·K,但此数据一般用于供热负荷计算和建筑热工分析〔都是最不利工况〕,稳态算法中取αn=

8.7

W/m2·K计算供热期耗热量是否准确有待研究。本节应用动态模拟软件,对围护结构内外表对流换热、长波辐射换热分开处理,来与内外表综合传热系数法计算结果比照,分析其准确性。据文献[4]介绍,设定墙、屋顶、楼地内外表对流换热系数分别为3.5W/m2·K、1

W/m2·K和4

W/m2·K。

依然选用第3节中北京地区算例,室外干球温度和太阳辐射采用逐时气象参数,分别利用两种方法对建筑模型进行计算,得到供热期耗热量如表4.1:

表4.1

北京地区建筑采暖季耗热量比拟

内外表综合传热系数法

单独计算室内长波辐射法

单位面积建筑耗热量kWh/m2•a

图4.1

北京地区建筑采暖季耗热量比拟

由上表,采用内外表综合传热系数法计算得到的单位面积建筑耗热量为53kWh/m2•a,而分别考虑室内对流、长波辐射换热法得到的建筑耗热量仅为34kWh/m2•a,二者相差达50%,可见正确处理围护结构内外表换热模型,对结果影响很大。通常应用于计算最不利工况的〔负荷计算、防结露分析的热工计算等〕内外表等效传热系数值,在应用于供热期累计耗热量计算时可能引起较大误差,应予以重视。通过校核计算可以得到,墙体内外表综合传热系数取4.2W/m2·K,楼板〔楼地〕向上综合传热系数取4.8W/m2·K,楼板〔屋顶〕向下综合传热系数取1.2W/m2·K时,采用内外表综合传热系数法计算得到的建筑能耗误差较小。

对三种因素的综合考虑

综合考虑地面传热量计算、太阳辐射得热量计算、围护结构传热系数计算三个因素对建筑负荷的影响,并选用第3节中北京地区算例,分两个工况采用不同的计算方法对该建筑的采暖季耗热量进行计算。各工况采用的计算方法如表5.1:

表5.1

不同工况计算方法比拟

计算因素

工况1

工况2

地面传热计算

基于外温的地面平均传热系数法

基于外温的地面划分地带计算法

太阳辐射得热量计算

围护结构传热系数修正系数法

动态模拟法

围护结构传热系数计算

内外表综合传热系数法

单独计算室内长波辐射法

计算得到该建筑在北京地区的采暖季耗热量如表5.2:

表5.2

北京地区建筑采暖季耗热量比拟

工况1

工况2

单位面积建筑耗热量kWh/m2•a

图5.1

北京地区建筑采暖季耗热量比拟

由计算可以看出:采用工况1的方法计算得到的建筑耗热量约为工况2的2.5倍,两种工况的计算结果差异较大。可见,在同时考虑地面传热量、太阳辐射得热量、围护结构传热系数三个方面时,使用的计算方法不同对结果有很大影响。

总结

1、在进行地面传热量的计算时,采用三种算法的结果相差甚远。基于外温和基于地温的地面平均传热系数法中,地面传热系数的取值直接决定计算结果,当取值不考虑土壤热阻、仅考虑地面构造做法的热阻时,计算结果显然偏大很多,同时基于地温的地面平均传热系数法没有表达地面通过土壤与室外空气的换热,对进深不大的地面影响很大。

2、采用围护结构传热系数修正系数法计算太阳辐射得热量时,北京地区的计算结果与采用逐时气象数据法计算得到数值相比偏小,而西安和乌鲁木齐计算得到的数值偏大,说明目前应用广泛的围护结构传热修正系数对太阳辐射得热的考虑有一定误差。

3、采用内外表综合传热系数法计算得到的单位面积建筑耗热量与分别考虑室内对流、长波辐射换热法得到的耗热量相比,二者相差较大。可见,是否正确处理围护结构内外表换热模型,对结果影响很大。通常应用于计算最不利工况的〔负荷计算、防结露分析的热工计算等〕内外表等效传热系数值,在应用于供热期累计耗热量计算时可能引起较大误差,应予以重视。

4、在同时考虑地面传热量、太阳辐射得热量、围护结构传热系数三个方面时,采用不同的计算方法得到的结果相差较大。在第5节的算例中,采用基于外温的地面平均传热系数法、围护结构传热系数修正系数法、内外表综合传热系数法计算得到的结果是采用基于外温的地面划分地带计算法、利用逐时气象数据的动态模拟法、单独计算室内长波辐射法的2.5倍,可见使用的方法不同对结果有很大影响。

参考文献:

[1]

JGJ

26-95

民用建筑节能设计标准〔采暖居住建筑局部〕

[2]

贺平,孙刚.供热工程[M].第三版.北京:中国建筑工业出版社,1993:9

~

[3]

陆耀庆.实用供热空调设计手册〔上册〕[M].第二版.北京:中国建筑工业出版社,2021:230

[4]

go语言睡眠排序算法实例分析 篇6

这篇文章主要介绍了go语言睡眠排序算法,实例分析了睡眠排序算法的原理与实现技巧,需要的朋友可以参考下

本文实例讲述了go语言睡眠排序算法,分享给大家供大家参考。具体分析如下:

睡眠排序算法是一个天才程序员发明的,想法很简单,就是针对数组里的不同的数开多个线程,每个线程根据数的大小睡眠,自然睡的时间越长的,数越大,哈哈,搞笑吧,这种算法看起来很荒唐,但实际上很天才,它可以充分利用多核cpu进行计算。

代码如下:

package main

import (

“fmt”

“time”

)

func main() {

tab := []int{1, 3, 0, 5}

ch := make(chan int)

for _, value := range tab {

go func(val int){

time.Sleep( int64(val)*10000000 )

fmt.Println(val)

ch <-val

}(value)

}

for _ = range tab {

<-ch

}

}

算法分析教学改革 篇7

0 引言

思维能力对人类生活和科技发展的关键意义不言而喻。近年来, 计算思维在计算机科学教学中的重要意义得到了普遍关注, 众多学者和组织参与了这一思想的讨论和传播。然而, 如何合理设置课程体系, 科学地落实培养过程, 在教学中真正使学生的计算思维能力得到培养, 我们依然面临着严峻的挑战。本文介绍了算法设计与分析课程的一般框架和计算思维的思想, 并就如何在该课程教学中融入计算思维提出一些建议, 希望引起更多专业人员进行探讨, 并引起重视。

1 算法设计与分析

计算过程的效率和计算结果的准确性是古老的研究课题。科学技术的发展使得人们一方面更容易获得大量的信息, 另一方面对这些信息的处理 (计算) 方法变得日趋复杂, 计算量也越来越大。许多理论上可以计算的问题, 由于计算过程中所需空间或者时间的限制, 而变成了现实不可计算的问题, 造成了虽然理论上可计算但现实条件不允许的矛盾。自20 世纪中期以来, 随着各个领域算法研究工作的发展, 诞生了一个新的研究领域, 即算法的设计与分析。这一领域的研究成果不仅对不同学科问题提供了有效的解决方法, 而且提供了一种独特的处理问题的思维方式。

由于实际问题求解的需求以及算法的广泛应用, 算法研究领域已是包罗万象。从最初的排序、查询、图算法、数值计算等, 到信息处理、工程计算与模拟、金融分析、生物计算、量子计算, 以及最前沿的大数据分析, 计算机的应用无处不在, 算法的应用也无处不在[1,2,3,4,5]。按照算法所处理的对象进行分类, 算法设计与分析主要包括数值算法和非数值算法两大领域。数值算法主要有多项式计算、矩阵计算、有限域计算、数论计算, 方程 (组) 求解, 优化计算等, 非数值算法主要有排序、搜索、几何问题的计算、离散结构的计算、模式匹配等。按照计算时所需数据的提供情况可分为离线算法和在线算法, 前者是指计算中所需数据在计算开始时已全部提供, 后者指计算开始时不提供或部分提供数据, 然后在计算过程中逐步提供数据, 其典型的应用是股市风险和效益的评估分析。按照计算方式进行分类, 则可分为串行算法和并行算法, 还可以分为智能算法、近似算法、随机型算法、交错型算法、非确定型算法、确定型算法等。

算法设计的任务是对各类具体问题设计高质量的算法, 以及研究设计算法的一般规律和方法。常用的算法设计方法主要有回溯法、贪婪法、分治法、概率方法和近似方法等[6]。算法分析的主要任务则是对于所设计的每一个具体算法, 讨论它的时间和空间复杂度、相关概率、近似比和竞争比等, 分析的结果既可作为评价算法质量的标准, 也可为改进算法提供参考方向。

由于算法设计与分析在计算机学科中的重要地位, 其基本内容已经成为计算机相关学科的一门专业核心必修课程。算法设计与分析课程的教学方式、内容和质量, 必须能够确保培养学生的学习兴趣, 提高学习效果, 以便提高学生专业能力和综合能力的培养, 为学生高水平高层次应用和发展提供保障。

2 计算思维

计算思维是多种学科学习和研究人员所必备的基本素质, 甚至与人们的生活也密切相连。科学界一般认为, 计算思维、实验思维和理论思维是推动人类文明进步和科技发展的三大科学思维方式。近些年, 诸多学者从计算思维的定义、内容、特点和培养方式等多方面进行了探讨。计算思维能力包括抽象能力和逻辑思维能力, 必须经过系列数学和抽象程度较高的理论课程渐进、系统地训练才能形成[7]。2006 年, 原美国卡耐基·梅隆大学计算机系主任, 现美国基金会计算机和信息科学与工程部主任周以真 (Jeannette M. Wing) 教授在国际权威杂志上发表文章, 明确了计算思维的一般定义:“计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动”。在此基础上周教授对计算思维给出了更详尽的描叙 (或定义) , 对计算思维是什么, 或不是什么的特征给出了界定, 指出了计算思维是每个人的基本技能, 不仅仅属于计算机科学家[8]。

计算思维这一概念提出后, 立即引起了国际计算机界的广泛关注, 已经成为当今社会计算机教育研究的重点课题, 美国教育界对此给予了大力支持, 卡耐基·梅隆大学成立了专门的课题进行研究, 很多相关组织和团体都参与了这项研究, 比如美国数学研究所 (AIM) 、美国国家计算机科学技术教师协会 (CSTA) 、美国计算机协会 (ACM) 等, 不仅如此, 计算思维还有效促进了美国国家科学基金会 (NSF) 重大基金资助计划CDI (Cyber-Enabled Discovery and Innovation) 的产生, CDI计划旨在使用计算思维产生的新思想、新方法, 促进美国自然科学和工程技术领域产生革命性的成果, CDI的最终研究成果将使人们的思维模式发生转变。而这种转变不仅延伸到了美国国家自然科学与工程, 也体现在了社会经济与技术等各个学科领域。同时, 计算思维的影响也逐渐从美国延伸到了英国的教育界, 在英国的爱丁堡大学开展了很多与计算思维相关的研讨会, 重点讨论了计算思维对不同学科的影响, 比如教育、建筑、医学、生物、物理、哲学等。此外, 英国的计算机学会也组织了相关学者对计算思维进行研讨, 提出了欧洲的行动纲领。

国内为了紧跟国际学术的研究步伐, 加紧更新传统的教学理念, 开展了多次计算思维的专题研讨会, 参会团体包括全国各高等学校计算机教育研究组织等。研讨内容主要包括如何以课程为载体讲授面向学科的思维方法, 以及这种讲授对国家科学与教育事业发展的作用等。2010 年7月, 九所知名高校在西安交通大学举办了“C9 高校联盟计算机基础课程研讨会”, 这九所知名高校分别是西安交通大学、哈尔滨工业大学、中国科枝大学、南京大学、上海交通大学、浙江大学、复旦大学、清华大学、北京大学。教育部高等学校计算机基础课程教学指导委员会主任陈国良院士, 作了“计算思维能力培养研究”的报告, 并主持了该专题的讨论。经大会研究讨论后就增强大学生计算思维能力的培养发表了“九校联盟 (C9) 计算机基础教学发展战略联合声明”, 声明中强调“旗帜鲜明地把‘计算思维能力的培养’作为计算机基础教学的核心任务[9]”。《中国大学教学》连续发表有关计算思维的文章, 一批知名学者如陈国良、李廉等积极参与这一思想的阐释与推广[10,11], 对计算思维的理解、普及和应用, 进一步对计算机学科的教学发展起到了积极的推动作用。

计算思维并不是要求人类像计算机那样思考, 它只是人类求解问题的一条途径。计算机拥有强大的计算能力, 人类拥有了计算机, 也就拥有了强大的计算能力, 人类应该学会利用这种力量去解决更多的问题。当今社会计算机几乎无处不在, 计算机科学的出现不仅给人类带来了便利, 更重要的是计算的概念, 它被人们用来求解问题、管理日常生活以及与他人进行交流和互动。计算思维无处不在, 作为一个解决问题的有效工具, 人人都应掌握, 处处都会被使用。因此计算思维应当是当前计算机教育需要继续重点研究的课题, 而且应当有效地融入到我们的课程教学之中。

3 算法设计与分析教学中融入计算思维

有研究指出, 计算思维作为一种工具, 应当被所有学校的所有课堂教学采纳。采用这个工具, 自然会面临以下几个问题:

(1) 人所固有的能力与局限性?计算机的计算能力与局限性? (2) 问题解决的判定条件是什么? (3) 问题到底有多复杂? (4) 什么样的技术能被应用于当前的问题求解或讨论之中? (5) 什么样的计算策略更有利于当前问题的解决?

对于前两个问题, 计算理论课程做了较好的解释[12]。后三个问题则应该是算法设计与分析课程重点解释的内容。由于计算思维的重要性, 结合多年算法设计与分析的教学经验, 笔者认为在算法设计与分析教学改革中, 必须要将计算思维的培养融入到教学当中, 在教学中不能局限于知识的传授, 而应该注重学生思维的培养, 以提高学生的创新能力。具体在教学中应该注意以下几点:

(1) 算法教学应脱离具体的程序设计语言。算法独立于具体的计算机和具体的程序设计语言。虽然算法的最终具体实现需要某一种具体的编程语言, 例如C++、Java等, 但这些编程语言只是一种实现工具。教学中应避免把算法课变成程序语言和程序设计的教学课程。对算法的描述应主要通过某种伪代码、甚至可以是自然语言的形式。这样的算法描述更为直观、清晰、易懂, 并使得教师的教学和学生学习专注于算法的概念和计算思维的培养, 而不是具体应该如何编程实现某一段代码。

(2) 复杂性理论应作为教学重点内容。计算复杂性理论是理论计算机科学的分支学科, 使用数学方法对计算中所需的各种资源的耗费作定量分析, 并研究各类问题之间在计算复杂程度上的相互关系和基本性质, 是算法分析的理论基础。该理论回答了一个问题到底有多复杂, 并指导选择和设计解决问题的策略。而目前在教学过程中, 由于教材通常将复杂性理论部分放在教材的最后章节, 由于学时等因素, 对复杂性理论的教学不够重视。而复杂性理论是培养计算思维及对各种算法深刻理解的必备基础。所以复杂性理论在教学中应该适当提前, 并作为教学的重点内容。

(3) 教学中应注重培养学生解决问题的思维能力。在各种算法的具体教学过程中, 教师应该注重培养学生面对问题时的解决办法。例如人们往往首先通过猜测, 然后经过验证、证明、分析、完善等过程, 最终解决一个问题。这个过程也是人们探究真理的常见过程。在这个过程中培养学生科学的分析问题、逻辑推理、抽象概括能力, 往往要比单纯地讲解某一种算法有更大的意义。逻辑推理是依据一定的逻辑规则, 从已知项得出未知项, 或用已知项来解释未知项。抽象是抽出事物的本质属性或特征的过程。概括是在抽象的基础上, 把抽取出来的那些本质属性归结在一起进行考察的思维方法。这些都是解决问题、探讨概念、发现事物规律的重要基本工具, 任何一个算法思想的产生都离不开推理、抽象和概括。对这些思维能力的训练和培养是大学计算思维和通识教育的重要组成部分。

(4) 算法思想应渗透在整个教学课程中。发展层次理论认为思维是多层次的, 逐步发展的过程。发展层次的最高层次是严密性或公理性, 算法教学时应有意识地朝着这一方向努力。很多算法的提出往往都基于某一个实际的、有趣的问题。在教学过程中可以为学生设置不同的问题情境, 有意识的培养学生多角度思考问题的能力。现实生活中通常问题的解决方式都不是唯一的, 在教学过程中应有意识的培养学生的算法思想, 引导学生用不同的解决方法面对不同问题, 甚至是同一个问题, 从而加深学生对算法思想的理解, 并在解决问题的过程中体会到算法思想的意义和作用, 真正意识到算法思想的重要性。

4 结束语

计算思维已经和人们的生活和各种密不可分, 甚至成为了一项重要的生存能力。当今的信息社会已经离不开计算机, 如何培养具有计算思维的新型人才, 变成了时代向教育事业提出的课题。国家要求高校必须重视并加强大学生创新能力的开发和培养, 而计算思维中蕴含了强大的创新能力, 培养计算思维能力的最高目标就是为了创新[8]。但是, 目前还缺少如何培养学生计算思维的系统方法。针对这一问题, 本文对算法设计与分析课程教学中如何融入计算思维做了一些讨论。但这方面仍然需要很多非常艰巨的工作, 例如算法设计与分析教学课程体系、教学内容、实践体系、教材等方面还需要进一步的实践与探索。希望我们的工作, 为全国算法设计与分析课程教学的建设、改革探路, 为国家培养拔尖创新人才做出贡献。

摘要:介绍了算法设计与分析课程教学的基本内容, 然后从推动人类文明进步和科技发展三大科学思维之一的“计算思维”入手, 阐述了计算思维在大学课程教学中的重要性。最后对在算法设计与分析教学中融入计算思维提出了几点建议。

算法分析教学改革 篇8

关键词:算法设计与分析课程;动态演示;WPF;C#

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)20-0078-02

Abstract: A learning software of algorithm design and analysis course is designed and implemented by using WPF and C# language under the environment of Visual Studio 2010. The bubble sort, the eight queen problem, the tower of Hanoi problem and the knapsack problem are chosen as demonstration of the greedy method, backtracking method, divide and conquer method and dynamic programming, trying to vividly display the demonstration process of above classical algorithms.

Key words: Algorithm design and analysis course; Dynamic demonstration; WPF; C#

算法演示程序是以圖形解释算法,动态演示能够帮助学生加深算法理解,在脑海中形成算法执行过程的直观生动的印象,进而提高算法的教学效果[1]。许多算法演示系统的设计与实现的思想都来源于M.Brown等制作的BLASA系统[2],随着可视化技术的发展,算法演示程序能够更加生动地展现出求解问题的过程。一个良好的演示系统应当具有丰富的媒体表现力、深入的细节演示效果、灵活的交互能力以及适当的游戏功能四个特性[3]。

1 整体框架

本软件基于微软推出的用户界面框架WPF[4-5],并在Visual Studio 2010平台下设计与开发的。它提供了可视化界面,用户可直观看到分治法、贪心法、动态规划法和回溯法四种经典算法策略的求解过程[6],软件的整体框架如图1所示。

2 具体实现

2.1 分治法

本文选择了汉诺塔问题进行分治算法的演示。汉诺塔问题中,每个盘子在柱子上的运作方式与栈结构非常类似:只能移动最上面的盘子。程序中设置了三个栈用于模拟当前三个柱子的状态。

盘子在移动过程中只涉及了四个方向:向上出盘、向左或右边移动、向下入盘。程序设置了一个方向变量direction,出盘过程中,盘子在越过柱子顶部时始终保持了方向direction=0。进程在发现direction为0时会控制盘子一次向上移动一个单位,当盘子的下边界越过了柱子的上边界,direction改变,根据相应信息,将direction设置为向左或者向右方向,左右移动过程以及向下入盘过程的移动方式和判断方法和出盘过程类似,不再赘述。

2.2 贪心法

选取冒泡排序演示贪心算法。我们采用球来表示每一个待排元素[7],并用其透明度表示元素值的大小。用户输入球体的数目和初试排列状态(程序提供了三种状态:随机排列、逆序排列、正序排列)后,系统内部动态分配等长的球体数组。这些元素都是实例化的对象,能够被添加到画布上。

利用WPF中的Double Animation动画类来实现,它通过指定一个double类型的初始值From和同类型的终值To,使被关联的控件形成动画。如:以下代码可实现Name为lblTest的控件在一秒钟的时间内宽度增加50的动态效果。同样,球体在画布中的位置也是属性,可用动画改变。

一般排序算法都分为两个基本操作:比较和交换。本软件的冒泡排序演示程序就是利用这两个基本操作来进行演示的。如图2所示,若无需交换,则给出提示文字;若需要交换,则利用动画将相应两个球的位置颠倒。

2.3 动态规划法

本文选择0-1背包问题演示动态规划法。具体演示过程:用户完成输入后,点击演示进入演示状态。程序采用单步演示的方式,用户单击按钮,程序演示一步。利用二维数组的列数代表背包的总重量,用户可以修改。程序中使用Grid控件模拟二维数组,Grid内部的Label控件需要动态生成,见如下代码。其中thingCount为物品总数,bagWeight为背包承重,lblC是用于方便访问指定单元格的Label而设置的Label类型数组。

动态规划求中间值的代码如下。其中,第005行的判断表示当前第i个物品的价值与前i-1个物品在背包承重为j-W_arr[i]时的最大价值之和,是否比前i-1个物品在背包承重为j时的最大价值高。

2.4 回溯法

本文选择8皇后问题演示回溯法,图3和4是8皇后问题的相关演示效果图。演示程序中有一个皇后放置的试探过程,如图3所示,黑色棋子表示当前已放好的皇后位置,红色的棋子表示正在试探中。若红色棋子试探成功,则将黑色棋子放在该位置。

在该程序的另一个功能中,用户可以自己放置棋子,来感受8皇后的探索过程。本程序提供了一个错误提示的小功能,若当前棋子与棋盘上某个棋子有冲突,即在同行同列或者同一对角线,那么就会有红线闪烁,表明无法放置,如图4所示。

3 结束语

本软件在设计过程中,参照良好算法演示系统的设计要求,提供了交互功能和图形演示跟踪的功能。在算法的教学过程中能让学生接触直观的操作演示,可更好地让学生知其所以然[8],也更快地让学生具有利用计算机解决问题的思维方式。不足之处在于它不支持算法跟踪功能,无法从代码上深刻认识算法。

参考文献:

[1]Matthew MacDonald著, 王德才 译. WPF编程宝典——C#2010版[M].

[2]刘铁猛. 深入浅出WPF[M]. 北京: 水利电力出版社, 2010.

[3]陈慧南. 算法设计与分析——C++语言描述[M]. 2版.北京: 电子工业出版社, 2012.

[4]孙永新, 闫大顺. 动画演示与算法教学研究[J]. 现代计算机, 2009(10): 81-83

[5]张文升, 周青云, 周晓聪. 算法演示系统研究与应用[J]. 计算机应用与软件, 2008, 10:41-43.

[6]李健. 汉诺塔算法演示系统的设计与实现[J]. 现代计算机, 2011(24): 76-80.

[7]田军, 李丰军. 基于VB程序的冒泡排序算法演示[J]. 电脑知识与技术, 2011(36): 9410-9412.

上一篇:城管局2008年工作总结及2009年工作要点下一篇:记忆中的春节作文300字