计算机算法教学

2024-08-14

计算机算法教学(精选12篇)

计算机算法教学 第1篇

计算机技术的发展日新月异, 已渗透到人类活动的方方面面, 人们可以要求计算机按自己的意志进行工作。目前中职计算机应用专业的教学内容多集中在办公文员和图形图像应用软件的学习上, 距离图形是怎样画出的, 计算机是怎样工作的, 复杂的数值计算如何得出来的等等, 要想弄明白这些问题, 算法的学习是块敲门砖, 体会算法的基本思想, 了解一些很有意思的重要算法, 对中职生是雪中送炭是一个启蒙, 对其以后发展有调理的思考与表达的能力, 提高逻辑判断能力大有帮助, 为其终身学习和发展奠定基础。

2 教学思想

自然语言描述的算法步骤、程序框图和程序是不同形式的算法, 体现了算法逐渐“精确”的过程, 程序设计的算法有自己的特色, 教学中应充分考虑到中职生的认知规律和学习特点, 在理论上做到“精讲少讲”, 操作上做到“仿练、精练”。 内容上选取以“源于数学、归于数学”为准则, 关注学习情境的创设, 遵循学以致用, 尽量选择与数学及将来工作有关的素材, 体现以就业为导向的思想, 设计上强调知识技能的体验和生成, 学习过程的探究与合作。

3 算法教学的方式与方法

QBASIC语言简单、好学 , 是中职生易于接受的一种语言, 使用类QBASIC语言。

3.1 实物演示

譬如: 两个变量A、B值的交换

有 T=A: A=B: B=T

可拿两个装水的杯子和一个空杯来演示两个装水的杯子换水的过程, 有双方当事人靠的是第三方的意思, 但变量有取之不竭, 一挤就走的特点与杯子倒水又不同。

3.2 重点要精讲、突出

譬如: 赋值语句变量=表达式

(1) 赋值的方向性

左边只能是一个变量名, 赋值语句只能将赋值号右边表达式的值计算出来赋给左边的变量, 而不能反过来用。

如: 3.9=A

(A+B) /2*H=S等都是错的

(2) 赋值的动态概念

一个变量名 (存储单元) 指定之后, 它的内容是可以改变的。赋值号 (=) 虽形同数学中的等号, 但两者的意义迥然不同, 必须严加区别。数学中的等号所确定的关系是固定的和静止的, 而赋值则不然, 它具有动态的概念。

譬如: A=A+1

A=A+B

A=A*A

等语句都是正确而且常见的。它意味着将A的值加上1, 或加上B的值, 或将A的值自乘后再送回A变量, 作为A的新值, 代替A的旧值。但以上写法在数学上则是不一定有意义的。

3.3 图示

譬如: 赋值语句A=A+B图示如图1所示, 就把赋值语句的动态性、方向性显现出来, 而不致于同代数式子混淆。

3.4 对比

当型、直到型两种循环算法的对比, 如表1所示。

3.5 计算机算法与数学的比较

计算机是一种能快速、自动地完成信息处理的电子设备, 具有运算速度快、计算精度高、存储容量大、逻辑判断能力 强、自动化程度高等特点。现在的微型机的运算速度已达到每秒10亿次以上。数值计算算法是一种高速的“蛮干”, 节省了人力和物力, 大大缩短了计算周期, 弥补了人工计算的短板。

譬如: 求1+21+22+23+……+263的值

算法步骤如下:

第一步, 令i=0, S=0。

第二步, P=2i, S=S+P, i=i+1。

第三步, 如果i≤63, 那么返回第二步; 否则, 执行第四步。

第四步, 输出S。

程序框图如图2所示。

程序如下:

i=0

S=0

WHILE i<=63

P=2^i

S=S+P

i=i+1

WEND

PRINT S

END

可以看出, 本来这个问题能用等比数列的求和公式表达式直接得出结果, 但用简单的加法和乘法, 利用变量值前后的新旧替换联系, 多次循环递推得出结果, 利用计算机高速运算、逻辑判断强的特点。

3.6 探讨电子表格 Excel 函数的算法

Excel函数是对固定算法的具体应用, 比如MAX ()、MIN ()、AVERRAGE () 等, 大致能望文生义 , 可以分析其中的算法, 起到温故知新效果。

譬如: 判断函数IF () 的嵌套

有“=IF (D3>=85,”A” ,IF (D3>=75,”B” ,IF (D3>=60,”C” ,”D”)))”

它的框图如下

3.7 一题多解

譬如: 符号函数的算法

方法一:y=1

IF x=0 THEN y=0

IF x<0 THEN y=-1

方法二:IF x<0 THEN y=-1 ELSE IF x=0 THEN y=0 ELSE y=1

方法三:y=0* (X=0) + (X<0) + (-1) * (X>0)

方法四: SELECT CASE x

CASE IS<0

y=-1

CASE IS=0

y=0

CASE IS>0

y=1

3.8 常用算法总结

(1) 简单小算法

一个条件语句对应一个菱形框, 条件语句的实质是一分为二。

符号正负交替有初始化语句F=1 (或-1), 功能语句F=- F。

累加求和有初始化语句S=0或初始值, 功能语句S=S+X。

累乘求积有初始化语句S=1或初始值, 功能语句S=S*X等

(2) 经典算法

如百钱买百鸡、秦九韶算法、辗转相除法等。

4 结语

算法是既熟悉又陌生的, 非常有用, 在计算机科学中占据着重要地位。算法是求解某一特定问题的一组有穷规则的集合。 算法的描述可以采用自然语言、流程图、程序或其他形式, 由于中职生年龄较小, 数学基础弱, 如何让他们掌握程序设计算法的必要基础知识, 学的快、学的牢, 提高思维能力, 为适应未来工作做好知识储备, 更为他们胜任工作继续发展奠定坚实的基础, 对中职学校的计算机应用专业的教学提出了课题。

摘要:对中职计算机专业程序设计算法教学提出了教学思想和方法。

计算机算法教学 第2篇

《数学课程标准》在基本理念中指出:有效的数学学习活动不能单纯地依赖模仿与记忆,动手实践、自主探索与合作交流是学生学习数学的重要方式。传统的课堂教学,导致学生学习方式单一,表现为以教为本,严重抑制了学生思维能力的发展,如何在一年级数学教学中体现算法的多样性呢?现结合两位数加一位数的加法的教学谈以下自己的感受。

一、创设情境,引发学生学习的兴趣

“兴趣是最好的老师”,教学的艺术不在于传授本领,更重要的是激励、唤醒和鼓舞。”根据一年级学生的年龄特征、认知规律和生活经验,抓住学生活动的兴奋点,按学生认知的“最近发展区”,为学生提供丰富的背景材料;从学生喜欢听的、喜欢看的实情、实物、实事入手,创设生动、有趣的情境,可以激发起学生自主探索的欲望。本课时教材提供给我们的是“买书”的情境,单一地把这一情境呈现给学生并不能引起学生的`学习兴趣,于是我就结合本学期课本上经常出现的人物:笑笑、淘气、机灵狗来创设情境。我首先问学生:这学期我们在课本上认识了哪几位小朋友?你知道机灵狗最近在干什么吗?因为教材上曾经出现过机灵狗把主人的作业弄脏的情境,所以学生猜测的结果都是机灵狗干了哪些坏事,主人怎么惩罚它的,于是我就结合学生的回答对学生进行了知错就改的教育,然后告诉学生机灵狗从做过那件坏事后,就下决心干些有意义的事,从此它成为了一个好孩子,现在它还开了一个儿童书店呢?你们愿不愿意到它的书店看一看呢?学生的兴趣一下子给调动起来了,可以说下面教学的顺利进行就是情境创设的结果。

二、活用教材,为学生的学习扫除障碍。

教材是教的依据,但并不是一成不变的标本。特别是实验教材,在实施的过程中可能会有一些编排并不适应我们的学生,只有灵活处理和应用教材才能真正为学生的学习提高良好的外部条件。本课时教材提供的情境图可以说上面的信息量是比较多的,把所有的信息都呈现给学生势必会给学生的学习带来一定的困难,为此我适当调整了教材内容,也就是把图中的书价先盖上,只呈现给学生书名和书的数量,让学生说自己的发现,并根据自己的发现提出数学问题,写出算式,这样就减少了学生捕捉信息并选择信息的难度。在练习中,再让学生结合自己的生活经验说一说到机灵狗的书店买书,你还想了解些什么?从而引出书价表,让学生根据书的标价,选择自己最喜欢的两本书,算出价钱。这样既可以减少学生学习的困难,又达到了把数学学习与学生的生活联系起来的目的,学生参与的积极性还是比高的。

三、尊重差异,让不同的学生在学习上得到不同的发展。

由于学生在学习上存在着一定的差异,因而老师在课堂上就不能对他们的学习提出统一要求,应允许他们在学习上有不同的发展。针对此,教学中我把情境图呈现给学生后,先让学生说一说,机灵狗的书店里都卖了哪些书?你在它的书店里还发现了什么?在学生说出每种书的本数后,再让学生根据本数提出数学问题,并写出相应的算式,可以说学生都能提出数学问题并根据自己提出的问题写出算式,但由于他们在学习上存在差异,因而有的学生只提一些自己能算出得数的问题写算式,有的学生不管算出算不出,都写一写,算出来的算出得数,算不出来的就打个问号,放到问题银行里,有的学生对简单的问题不屑一顾,专拣别人提不出的问题提,别人写不出的算式写,可以说充分体现了不同的人学习不同的数学的目的。

四、以人为本,为学生留下学习和探索的空间。

课堂上应尊重学生学习主体的地位,为他们的学习创设一个良好的氛围,提供一个广阔的空间,激活学生的思维,让学生尽其所为地参与学习和探索。教学中,在学生列出算式28+4=?很多学生都直接说出了得数,于是我向学生质疑:28+4到底得几呢?应该怎样算出它的得数呢?请你们先自己想一想,想不出的小朋友可以借助老师给你的小棒摆一摆。于是有的学生借助小棒操作,有的学生直接根据算式想算法,也有的学生干脆和同位谈论起来,在他们各自都有自己的算法后,再让他们把自己的算法在小组内交流,可以说每个小组都有3-5种算法:除了最基本的三种:(1)8+4=12 12+20=32 (2)从28开始接着数出四个数来,29、30、31、32 (3)用竖式计算外,还出现了(4)28+2=30 30+2=32 (5)28分成20、6、2,6+4=10 10+20=30 30+2=32 (6)把28根和4根和在一起,一个一个数、两个两个数或五个五个数,十个十个数。(7)从28开始数两个两个数,数出四根等,课堂气氛异常活跃,连学困生都积极参与到学习之中了。可以说本节课竖式计算也是一个重点,于是我采用了让学生质疑释疑的方法,先让一名学生板书竖式,其余学生独立完成,然后让其他学生针对板书的竖式进行质疑,学生提出的问题还是比较有针对性的,有的学生提出:为什么要把4和28个位上的8对齐?有的学生提出怎么得来的32?十位上为什么写3?等,学生的解答也是比较合理的。可以说比老师预想的结果要好得多。

关于计算教学中算法多样化的探究 第3篇

关键词: 算法多样化 计算教学 课程标准

一、算法多样化的教育功能

在小学计算教学中提倡算法多样化的教育功能主要体现在:

(一)算法多样化,有利于全体学生主动参与。

数学课程标准明确指出:数学教育要面向全体学生,使不同的人在数学上得到不同的发展,而学生发展的关键在于,在教与学的活动中给每个学生提供参与的机会,使他们在参与中得到发展。算法多样化为学生提供了这样的参与机会。

(二)算法多样化,有利于培养学生的创新、求异思维和主动探索精神。

由于每个学生的生活经验和思维方式不同,对相同的数学内容往往表现出个性化的认识和理解,因此在计算教学中,所使用的算法必然是各不相同的。多样化的算法,使学生在与同伴的合作交流、比较的过程中取长补短,感受到成功的愉悦,体味到自主探索学习的乐趣。此外,多样化的解答方式,让学生感受到数学的独特魅力,有利于激发学生的创新、求异思维,培养学生独立思考的能力。

(三)算法多样化,有利于因材施教,发现每个学生的潜能。

在教学中,处于主导地位的教师应该为学生提供足够的时间与空间,创设良好的情境,使每个学生的智慧得以展示,潜能得以挖掘。算法多样化的教学方式,对智力水平相对较差的学生来说,可以着手解决问题,对智力水平较好的学生来说,有充分施展才华的空间。

二、在实践中落实“算法多样化”的教学策略

(一)实施算法多样化,应激活学生的经验。

数学课程标准指出:数学教学活动必须建立在学生的认知发展水平和已有的知识经验基础之上。在教学中,教师要依据学生的数学经验展开教学,通过营造民主、宽松、和谐的课堂氛围,激活学生的经验,让他们探索所面对的新问题,同化、归顺新知识,寻求不同的、多样的问题解决策略,并且从多种思维视角分析数学问题,培养思维能力。

以教学两位数乘两位数的笔算“28×12”为例,其问题情境是:我家订一份牛奶,一份牛奶(每天一瓶)全月28元。订一份牛奶一年要花多少钱?下面算法则是学生经验的展现:

经验一:利用加法与乘法之间的转换关系,28+28+…+28=336,12+12+…+12=336。

经验二:依据估算的方法,28×10=280,28×12要比280多,可能是300多。

经验三:借助于两位数乘一位数的计算方法,先算半年要多少钱,再算一年要多少钱。28×6=168,168×2=336。

经验四:采用口算的方法,先算10个月和2个月各要多少钱,再合起来。28×10=280,28×2=56,280+56=336。

经验五:根据两位数乘一位数可以采用竖式计算,推断出两位数乘两位数也能采用竖式计算。

……

学生在探索“28×12”的计算过程中,多样化的计算策略体现了学生间已有的知识和经验的差异;多种信息的呈现,提供了学生挑战经验、利用经验、发展经验的空间。因此,教师要让学生凭借自己和他人已有的知识、经验探索,达到拓展自身思维的目的。

(二)实施算法多样化,应引导学生进行互动交流。

学生通过自己的努力找到问题解决的方法,得出问题的答案,为交流提供条件。这时学生既有交流的内容,又有交流的需求。算法多样化正是在充分的交流中产生的。要保证全体学生都参与交流,保证交流的组织形式灵活多样,可以采用同桌两人之间或学习小组内的交流,因为小范围内交流机会多、频率高;也可以采用班集体的大交流,从而锻炼学生的胆量,培养勇气,也有利于提高交流质量。

(三)实施算法多样化,应引导学生进行合理选择。

数学课程标准指出:“教师不要急于评价各种算法,应引导学生比较各种算法的特点,选择适合自己的方法。”算法多样化,不是一味追求多多益善,为多样化而刻求多样化,而是教师鼓励学生从不同的角度,采用不同的思维路径,寻求解决问题的方案。在课堂教学中,经过学生充分的交流、讨论,出现多种算法是必然的。在这种情况下,教师要正视每一种算法,积极创造条件,允许学生自我选择,并组织和引导学生对各种算法进行分析、比较,让学生正确认识自己和解读别人的方法,从而学会“多种选优,择优而用”,构建优化的思维方法,学会选择、吸取,实现“纳优内化”。

总之,数学是儿童自己的数学。算法多样化教学应基于学生的认知经验。在教学中,为了不同的学生在数学上得到不同的发展,教师既要分析学生数学学习的逻辑起点,又要找准学生数学学习的现实起点,还要为学生提供富有挑战性的教学情境和宽敞的探索时空,让学生的智慧受到挑战而迸发个性化的火花,实现算法多样化。在此基础上,引导学生对算法进行优化,提高思维质量,培养高水准的数学思维,只有这样才能使学好数学不是少数人的专利,而是每个学生的权利。

参考文献:

[1]中华人民共和国教育部.全日制义务教育数学课程标准(实验稿)[M].北京:北京师范大学出版社,2001.

[2]钱如俊.算法多样化刍议[J].江苏教育,2002.11.

[3]艾永斌.对算法多样化的理性思考[J].江苏教育,2004.7B.

[4]贾新中.正确理解“算法多样化”[J].当代教育科学,2003(5).

计算机算法教学 第4篇

提及算法, 我们既熟悉又陌生, 却有着极为重要的作用, 无论在计算机还是在数学领域中都占据着重要的地位。所谓的算法就是当解决问题的时候需设计出一系列可操作或可计算的步骤, 这些步骤就称为解决这个问题的算法, 简言之就是解决问题的方法与步骤。算法严格地说是数学的一个分支, 它有自己的体系, 它渗透到很多数学分支, 特别是应用数学的分支。

近年来, 数学发生了一个显著的变化就是数学与计算机科学的同步发展。数学对计算机的发展是众所皆知的, 对于计算机来讲, 无论是软件还是硬件都离不开程序设计, 程序设计就是算法设计。当然计算机的发展对数学的发展也起了极大的推动作用:它开拓了数学的研究领域, 丰富了数学的研究方法, 加强了数学在其它学科中的基础性地位, 拓宽了数学的应用范围, 所有的这一切, 算法起了具大作用。算法的基本思想在我们的日常生活中是很有用的, 学习算法对于发展有条理的思考与表达能力, 提高我们的逻辑思维能力也是很有帮助的。

2 为什么在中职学校计算机专业数学课堂中加入算法

算法是数学及其应用的重要组成部分, 是计算机科学的重要基础, 是连结解决问题方法与计算机能够理解的程序语言之间的桥梁。

当前, 绝大多数的中等职业学校的计算机专业考虑学生今后的发展都设置开设了计算机语言课, 如C语言, VB等, 但由于招生考试制度的改革, 中等职业学校学生的文化理论知识比较薄弱, 思维能力、逻辑推理能力、分析问题、解决问题的能力受到了一定程度的限制, 而计算机语言, 尤其是计算机的基本原理都需要有相当的数学基础。在计算机语言程序设计课程中会涉及很多诸如二进制、鸡兔同笼、杨辉三角、割圆术、更相减损术、秦九韶等一系列经典的算法, 而几乎所有的中职计算机课程设置中即使是以往的数学课都没有开设过专门的算法课程, 所以这些算法, 中职学校的学生在入校之前是知之甚少, 至使给计算机教师在讲解计算机最底层的技术原理时带来了一定的困难, 计算机教师在讲解程序设计的同时不得不给学生补一些数学算法知识, 从而影响了教学。为了解决这一问题提出:对于计算机专业在开设程序设计课时, 先由数学教师在数学课堂中讲解算法内容, 为计算机专业教学打下坚实基础。

3 数学课堂开设算法课的可行性

随着我国经济、社会发展和科技进步, 对职业技术人才和劳动者素质要求也越来越高, 中职学校主要培养的是具有一定专业技能的中、初级人才, 传统的教学体制已经不能适应当前职业教育的形势, 为此各中职学校纷纷进行教学改革。为培养实用性、技能性人才, 基础文化课也向着为专业课服务的方向进行了改革, 制定了适合专业培养的校本教材, 尽管在传统的数学教学内容中没有出现过算法这个名称, 然而所有的数学知识都体现出算法的思想, 如:求解一元一次方程, 解不等式, 线性规化问题等等, 都可以说是算法问题。培养学生解决问题能力是计算机课程的教学目标之一, 而算法是解决问题的方法与步骤, 正是培养学生解决问题能力和逻辑思维能力的非常好的载体, 所以在编写适合计算机专业培养的校本教材中加入算法内容, 在数学课堂中解决这些算法问题相对比较容易些, 更利于计算机教师的程序设计教学。

对于数学教师来讲, 尽管过去没有从事过算法教学, 也没有系统的学习过算法, 但由于中等职业学校的数学教师大都接受了系统的高等教育, 对计算机知识有一定的了解, 形成了一定的数学思维和解决问题的能力, 就其算法内容本身难度不大, 可通过专门的学习, 分工备课, 集体研讨等方法提高教学质量, 从而更好的为计算机专业教学服务。

4 教学效果

算法的特点是可操作性, 易于检验, 采取适当的教学方法可以激发学生的学习兴趣, 增强学生的自信心。2008年初, 我校进行了数学教学改革, 编写了适合我校计算机专业的数学校本教材, 并加入了算法内容, 通过近一学期的教学效果显示:算法课程是受学生欢迎的, 学生对数学中的一些经典问题充满了好奇心, 激发了求知欲, 改变了学生由于基础差对数学课产生的畏惧心理, 也改变了学生一向认为数学课枯燥的看法, 课堂回答问题的学生多了, 有的学生甚至课下主动找老师探讨问题, 然而这一现象是在改革之前少有的。在教学中, 教师在讲解算法的同时, 对于学生遇到的不会的基础性问题及时给予讲解, 从而有利于学生对知识点的把握, 提高了学生的逻辑思维能力, 建立了学好数学和其它学科的信心。我校计算机专业在开设数学课的同时开设了VB脚本, 学生普遍反映:由于在数学课中事先讲解了算法内容和数学教师考虑在专业学习中会遇到的数学问题的讲解, 使得同学们学习程序设计比往届学生反映的容易些。以上教学效果可以看出在数学课中加入算法内容的教学改革达到了为专业服务的目的, 这充分说明在中职学校计算机专业数学课中的算法教学是可行的。

5 中职计算机专业数学课堂开设算法时应注意:

第一, 突出算法思想, 强调解决问题的方法与步骤, 而不去关注解决问题的具体细节。

第二, 由于当前中职学生入校底子薄、基础差, 所以在算法教学中应做好基础知识的铺垫工作。

第三, 算法内容安排难度适易, 结合计算机专业教学内容, 最好通过学生熟悉的实例和数学中的实例进行教学, 即案例教学, 引导学生动手实践, 在实践中学习、体会、理解算法的基本思想, 激发学生学习兴趣, 培养思维能力。

第四, 中职数学教师在进行算法教学的同时应加强学习计算机知识, 有利于教学和解决学生所提出的各种问题。

当前普通高中新的数学课程体系中已加入了算法内容, 通过教学取得了一得的效果, 充分发挥了数学基础性学科的作用。相信如果能将中职计算机专业数学课中加入算法内容并推广到各中职学校, 必然会对计算机专业教学起到极大的推进作用。

摘要:通过对算法在计算机、数学科学中的地位和中等职业学校计算机教学现状的分析, 提出中等职业学校计算机数学课堂加入算法内容, 通过多方面的分析, 指出了中等职业学校计算机专业数学课堂算法教学的可行性。

关键词:中职计算机专业,数学,算法

参考文献

[1]人民教育出版社、课程教材研究所、中学数学课程教材研究开发中心.数学 (必修3) [M].北京:人民教育出版社.[1]人民教育出版社、课程教材研究所、中学数学课程教材研究开发中心.数学 (必修3) [M].北京:人民教育出版社.

[2]王尚志, 张饴慈, 吕世虎.整体把握与实践高中数学新课程——与高中数学教师对话[M].北京:高等教育出版社.[2]王尚志, 张饴慈, 吕世虎.整体把握与实践高中数学新课程——与高中数学教师对话[M].北京:高等教育出版社.

《计算机算法》实验报告 第5篇

本次实验的名称。

2.问题描述

对本次实验要解决的问题的描述。

例子:处理汉诺塔问题时,描述什么是汉诺塔问题。

3.解决思路

采用什么方法;为什么可以采用这个方法; 例子:处理棋盘覆盖问题时,采用什么方法:采用递归分治的方法处理;

为什么可以采用递归分治方法的原因(P21页图2-6下面一段,理解之后用自己的话表述):由于将棋盘横、纵各一分为二之后,特殊方格必然位于四个小的棋盘之一,那么剩余的其余三个小棋盘是没有方格的,如果采用某种L型骨牌覆盖没有特殊方格的三个小棋盘的中心相连部分(参见图2-6的b),则三个小棋盘都各有1个特殊方格所覆盖。因此,这样处理之后,原来大棋盘覆盖的问题,就转化为四个小棋盘覆盖的问题,因此可以采用分治策略进行递归处理。

4.算法设计与分析

给出算法设计的基本思想,如:伪算法描述,递归方程等。并分析算法的时间复杂度(空间复杂度)。注意,一定要有文字说明。例子:快速排序 伪算法描述

QuickSort(int a[], int p, int r){ 如果待排序数组a[]中只有一个元素则直接返回; 如果待排序数组a[]中不止一个元素,则进行如下处理 {

对数组a[p:r]进行Partition划分,使得a[p:r]以a[p]为标准,划分为三个部分,即:

左半部分a[p:q-1];划分基准a[q]=a[p];右半部分a[q+1:r];

对左半部分快速排序QuickSort(a, p, q-1);

对右半部分快速排序QuickSort(a, q+1, r); } }

例子:0-1背包问题

递归关系或者递归方程。

给出P72页“2.递归关系”中的递归表达式,并给出文字说明。注意:伪算法描述,或者递归方程不一定全部需要。根据问题的不同,只给出伪算法,或者只给出递归方程都可以。两者同时给出也是可以的。

5.程序实现

依据第4部分,给出C语言(其他语言亦可)的程序实现,并进行算法时间(空间)复杂度分析。

程序实现部分要包括:程序代码、程序注释、程序运行结果(或者截图)。

例子:快速排序的partition函数 int Partition(Type a[], int p, int r){

int i=p, j= r+1;

int x = a[p];//x=a[p]是对数组a进行划分的标准;

/* 以下循环将数组a[p:r]以a[p]为标准进行划分,在划分完毕之后,* a[p]调整到数组a[p:r]的中间位置q,有a[q]=a[p];q左边所有的* 元素均小于a[p],即a[p:q-1]中的任意元素都小于a[p];q右边

* 所有的元素均大于a[p],即a[q+1:r]中的元素都大于a[p]。

* /

while(true){ /* i用来从数组a[p:r]的左边向右边扫描,如果a[++i]中的元素总是 * 小于基准元素的,则是符合划分标准的,因此,不用额外处理,* 循环一直继续,直到第一个不满足划分标准的a[++i](即a[++i]>=i)* 出现,或者整个数组a[p:r]扫描完毕(即i

while(a[++i]

„„

6.总结

计算机程序设计中查找算法效率分析 第6篇

关键词:计算机;程序设计;查找;算法;效率分析

中图分类号:TP301.6

随着社会的进步和时代的发展,许许多多应运而生的新鲜的事物丰富了我们的日常生活。计算机网络就是一个时代的产物,也是一个非常伟大的发明,计算机网络的产生是我们人类发展中的一个重要的里程碑。计算机网络给我们的生活带来了很多的便利,给我们的工作带来了更加广阔的视野,但是就在计算机技术给我们的社会带来了诸多便利的同时,也给我们带来了一定程度上的困扰。任何新鲜事物的产生都会有两面性,这是一个永远都不发避免的问题。对于计算机网络来说,如何来完善其功能来更好的为人们服务哭然重要,但是如何更好的避免弊端的发生也同等的重要。下面我们就一起来探讨一下计算机查找中存在的问题,以及如何来应对这些问题。

1 计算机程序设计中的查找算法

1.1 查询的概述

查找简而言之就是找寻某种人们需要的东西。在人们现代的生活当中,查找是很常见的行为举止之一,比如人们遇到不认识的单词的时候需要查询字典,不知道电话区号的时候需要查询电话薄等。人们在日常生活中对于查询的需求促使了许多的信息查询系统应运而生,例如考试成绩查询系统、火车时刻查询系统等等。在系统管理当中,查询系统是一个重要的部分,是整个系统正常运转的关键所在。查询系统完备能够有效的提高整个系统的效率,从而使得我们的生活和工作得到更好的便利。在查询系统当中,查询算法是对于查询效率起关键

1.2 几种常见的查询算法

1.2.1顺序查询。顺序查询,将待查找记录的关键字和查找表中记录的关键字逐一比较,可以从表头到表尾,也可以从表尾一直向前到表头。查询会产生两种结果,一种是在某个位置找到我们所需要的信息,即说明查询成功另一种就是在领域范围之内没有我们需要的信息,即说明查询失败。对于关键词不是很长的,而且关键词是无序排列的这种就可以选择顺序查询法来进行查询。

1.2.2 折半查询。折半查找又叫二分查找,其基本思想是将待查找记录的关键字K首先和查找表中中间位置记录的关键字相比较,如果相等,查找成功;如果K较小,则在查找表的前半个子表中继续折半查找;如果K较大,则在查找表的后面半个子表中继续折半查找。因为每经过一次比较,查找范围都缩小了一半,所以被叫做折半查找。如果查询的关键词以形成查询表且查询表为按顺序存储,这时就可以采用折半查找的方法来进行查找。

1.2.3 分块查询。分块查询是顺序查询的一种延伸,所以在进行查询的时候需要满足分块有序的原则,即查找表中记录按关键字分成若干子表,后一子表中记录的关键字均大于前一子表中所有记录的关键字的值,除了查找表之外,还需建立一个索引表,存储每个子表中的最大关键字及起始位置。如果查询表能够符合分块有序的规则,那么就可以采用分块查询法。

1.2.4 哈希查詢。哈希查找是一种利用哈希函数来实现的一种查找算法。哈希函数是在记录的关键字和记录的存储位置之间建立一种对应关系,这种对应关系我们称之为哈希函数。哈希函数的优势就是构造非常的灵活,构造方法也很多,如直接定址法、数字分析法、平方后取中值、折叠法、除留余数法、随机函数法等,除此之外可以根据关键词来进行自行的设定。

2 查询算法中存在的问题

在人们的日常生活和工作当中,查询为人们带来了便利,但是有些时候也会给人们造成一种误导。据调查显示,在如今的计算机程序查询中,常常会出现搜索的关键词与搜索出现的内容不符的一种情况,这也是目前对于查询算法来说,存在的最主要的一个问题。查询算法是一种为人们服务的一种方式,如果在查询的过程中查不到我们想要的问题答案,那么查询就失去了意义。对于计算机程序的设计也不存在帮助,对于计算机技术的发展存在着很大的制约性。随着科技的发展,必须要解决这一问题,从而使得查询更好的为使用者来服务,从而便利现代的生活。

3 查询的优化算法

查询扩展可以根据查询的关键词,添加与搜索关键词关联的词语,从而得到更加准确的搜寻结果。这种方法对于查询内容与查询词语不符这一问题能够提供有效的帮助。对于查询系统来说是一种很好的辅助查询的方式。这种方法需要人为的参与,属于一种手动筛选的一种检索方式。

此基础之上,研究者有发明了一种不需要检索人员参与的一种纯自动化的一种查询扩展的方式,这种方式叫伪相关反馈。伪相关反馈是对于相关的关键词来进行搜索,搜寻出的相关的信息等整合到一块,然后再其中选择出十到二十个的关键词加到原来的关键词当中,在进行进一步的搜索,从而得到更为精准的信息。

自动提取词可以利用语言处理器来提取有关的关键词语,可以将语句当中含糊不清的语句利用统计学和机器学习把术语条目从候选列表过滤出来。过滤出来的术语条目基本不会产生歧义,而且精确度极高,对于知识领域的概念化很有帮助,还能够支持领域本体的创造。词聚类是一种获得词的很好的方式。词聚类分析就是把类似的对象分在同一组,这其中包含了很多不同的算法和方法。聚类分析是一种以一种方式来把不同的对象进行分组的,从而确保同组中的不同的对象之间的相关度为最高的一种探索性的数据分析工具。聚类分析的优点在于可以在无需提供解析的情况下找出数据的结构。

4 结束语

在社会发展迅速的今天,计算机技术的应用已经覆盖了我们的生活和工作。在计算机程序设计中查找的使用率是非常高的。如何提高查找的效率就成为了一个摆在计算机程序设计中值得思考的一个问题。除了选择适当的查找方法来提高查找效率之外,对于查找算法的优化也是一种很好的途径。世界在发展,社会在进步,计算机技术处在一个不断的革新当中,革新的速度也是十分惊人的。那么对于查找算法的更新和发展也应该与时俱进,不断的在实践之中,发现问题,并及时的解决问题。从而以适应人们对于查询功能的更多的需求。从而更好的推动计算机的发展。

参考文献:

[1]朱如龙.SQLServer数据库应用系统开发技术[M].北京:机械工业出版社,2008.

[2]严蔚繁,吴伟民.数据结构(C语言版)[M].北京:清华大学出版社,2008.

[3]严蔚繁,陈文博.数据结构及应用算法教程[M].北京:清华大学出版社,2011.

[4]赵彦.数据库原理与应用技术开发[M].北京:清华大学出版社,2009.

[5]钟敏娟,林亚平,陈治平.基于分类和关键词组抽取的信息检索算法[J].系统仿真学报,2004.

[6]王长,杜亚军,张培英.形式概念分析中的查询扩展元优化[C].信息融合技术高级研究所,2010(07).

[7]郭佳峰,徐古,李煌.用于查询优化的统一的判别模型[C].第三十一届信息检索研究与开发国际信息检索年会会刊,2010.

[8]杨凌鹏,李东红,汤立.基于全部及局部词的文档重排.第三届SIGHAN汉语言处理会刊,2004.

作者简介:杨殿生(1963-),男,汉族,安徽明光人,华中农业大学硕士,副教授,主要研究领域为:计算机基础、算法及教学管理。

计算机算法教学 第7篇

“计算机导论”是在计算机专业一年级开设的一门专业基础课程, 其面临着内容庞杂, 学时不断被缩减, 而学生基础参差不齐的矛盾。“计算机导论”原本是一门举足轻重、不可或缺、水平很高的课程。但现状是“计算机导论”在各个学校被视为无足轻重、可有可无、水平不高的课程。究其原因有以下几点:第一, 课程内容不清、目的不明确, 没有形成一个核心的内容;第二, 课程很多时间在讲授事实, 很少去讲解思维, 缺少思维训练, 以至被很多人误认为“水平底”。第三, 觉得大学一年级学生接受不了“深”的计算机知识, 授课内容定位越来越浅显, 以至面临从人才培养方案被删除的危险。第四, 课程内容涉及的知识面比较窄, 仅仅是讲解一些语言和程序设计, 然后用算法解题, 不断地让学生做一道道的题目, 这不符合“计算机导论”教学思路。第五, 教学内容的陈旧, 以概念讲概念, 以概念讲原理, 过度地强调“用”, 不正确地理解“用”, 以为“用”就是“用软件”、“用电脑”。这些都是影响“计算机导论”课程很严重的问题。这些问题怎么解决?计算机就是“用电脑”、“用软件”吗?计算机就是“编程序”吗?“编程序”就是要学习计算机语言吗?什么是真正的会“编程序”?地方普通高校的计算机学生只需要拥有技能而不需要建立计算思维吗?这些都是“计算机导论”课程改革面临的问题。本文以“计算机导论”课程“算法”内容为例, 谈谈地方普通高校在“计算机导论”课程教学改革中的一些具体做法。

一、教学内容搭建与教学策略

根据教育部计算机基础教学指导委员会文件精神, 参考“九校联盟” (C9) [1]的计算机基础教学改革经验, 地方普通高校明确了以计算思维能力培养为核心的“计算机导论”课程改革方向。结合地方普通高校的实际, 在课程内容上将董荣胜教授的“计算机科学导论———思想与方法”[2]与战德臣教授“计算之树”教学体系[3]进行融合, 力争实现计算思维与计算机技能培养并重。下面以“算法”知识部分的教学为例进行阐述。

“算法”是程序与计算系统的灵魂[4], “算法”知识部分的教学采取案例驱动的教学方式, 以旅行商问题 (Traveling Salesman Problem, TSP) 为例展开, 全面讲授如何探索出为解决TSP问题而采取的确定的、有限的步骤, 即算法;此算法如何经过不断细化, 最终能用计算机语言来表达, 进而被计算机执行, 产生TSP问题的最终计算结果。

TSP问题的求解过程及思维方法包括:数学建模 (相关课程:数学建模, 离散数学之集合论与图论、数理逻辑等) →算法策略设计 (相关课程:算法设计与分析) →算法的数据结构设计→算法的控制结构设计 (相关课程:算法与数据结构) →算法的程序设计 (相关课程:高级语言程序设计) →算法的正确性分析 (相关课程:算法设计与分析) →算法的复杂性分析 (相关课程:计算理论与计算复杂性) 。

在讲授“算法的数据结构设计”时, 引入Vcompte软件进行演示, 使学生更易理解数据之间的逻辑关系以及这些逻辑关系如何在计算机中得以实现。为了让学生更容易接受“算法的控制结构设计”, 利用可视化工具软件Raptor演示“顺序结构”、“选择结构”、“循环结构”。考虑到大学一年级学生还没有高级语言程序设计的基础, 采用简单易学的可视化编程软件Rapto进行“算法的程序设计”的学习。如图1所示:

二、教学模式设计

“算法”知识部分的教学采取目前被计算机教育界积极倡导的MOOC/SPOC及基于Moodle的混合式教学模式。

首先, 学生通过互联网进入“中国大学MOOC”, 报名参加战德臣教授等教学名师的大学计算机在线课程, 利用课余时间, 通过在线方式学习相关知识。

其次, 任课教师课前将“计算机导论”课程教学大纲、教学日历、教学课件、教学微视频、作业等信息上传到基于Moodle的在线学习平台, 学生在线学习及下载使用。

再次, 学生完成作业后通过基于Moodle的在线学习平台进行作业提交, 教师在线下载学生作业并进行线下批阅, 批阅后在线将分数及评语反馈给学生。

最后, 学生利用基于Moodle的在线学习平台的即时聊天、讨论区功能, 对“计算机导论”课程中遇到的问题, 通过聊天工具在线向老师进行提问, 或者通过讨论区发布出来, 学生和教师在线或离线讨论。

MOOC/SPOC及基于Moodle的混合式教学模式可以解决有限的课堂教学时间与学生基础参差不齐的矛盾。学生们利用丰富、优质的课外教学资源提前学习或者课后复习, 教师也可以及时发现学生的问题, 有针对性地解决学生的问题。当然这样的教学改革对学生学习的主动性和自觉性, 以及教师的敬业精神和业务水平都提出了更高的要求。

三、总结与展望

地方普通高校在“计算机导论”课程教学中, 以用计算思维改造计算机导论、计算机导论要培养计算思维和信息素养的方针和原则为指导, 融合董荣胜教授、战德臣教授的大学计算机基础课程知识体系的研究成果, 结合本地高校学生的实际和人才培养目标, 汲取已开展计算思维教学改革的高校的教学经验, 积极探索适合本地高校的MOOC/SPOC及基于Moodle的混合式“计算机导论”的教学模式。

摘要:地方普通高校“计算机导论”课程需要改变过去停留在汇集计算机专业各门课程前言或绪论的知识层面与“狭义工具论”的层面。为此本文以“计算机导论”培养算法思维为例, 阐述“计算机导论”课程内容融合董荣胜教授的“计算机科学导论——思想与方法”与战德臣教授“计算之树”教学体系, 采取MOOC/SPOC及基于Moodle的混合式教学模式的教学改革思路。

关键词:计算思维,MOOC,SPOC,Moodle

参考文献

[1]何钦铭, 陆汉权, 冯博琴.计算机基础教学的核心任务是计算思维能力的培养——《九校联盟 (C9) 计算机基础教学发展战略联合声明》解读[J].中国大学教学, 2010, (09) :5-9.

[2]董荣胜.计算机科学导论——思想与方法[M].北京:高等教育出版社, 2013.

[3]战德臣, 聂兰顺.计算思维与大学计算机课程改革的基本思路[J].中国大学教学, 2013, (02) :56-60.

计算机算法教学 第8篇

关键词:计算机数学教学,算法与算法思想,途径方法

“计算机的基础是软件,软件的基础是算法,算法的基础是数学。”“我们希望在教学过程中,培养学生的数学思想,算法思想,而不应该把重点放在培养学生的计算能力上。”“希望能有更有针对性的算法思想的训练,使学生理解数学培养的是一种思维方式。”计算机老师们这样评论《计算机数学》的改革。

可以看到,现在需要一种更有用的数学,对于《计算机数学》课程而言,它需要承载的是计算机专业从业人员的思想方法与职业素养的培养。本文将从算法思想的概念与实质、算法思想的渊源、算法思想与高职数学的融合方法与途径等方面探讨这个问题。

一、算法思想的概念与渊源

1. 什么是算法与算法思想

李文林在其著名的《数学史概论》中指出:“所谓‘算法’,不只是单纯的计算,而是为了解决一整类实际和科学问题而概括出来的,带一般性的计算方法,……它们是一种归纳思维能力的产物,这种能力与欧几里得几何的演绎风格迥然不同而又相辅相成。”

算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。一个算法应该具有以下七个重要的特征:(1)有穷性(Finiteness); (2)确切性(Definiteness); (3)输入项(Input); (4)输出项(Output); (5)可行性(Effectiveness); (6)高效性(High efficiency); (7)健壮性(Robustness)。

算法思想则指对算法的设计、实施,以及对算法的改进等一系列与算法有关问题本质的理性认识层次上的思维活动的结果。

同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率的高低。一个算法的评价主要从时间复杂度和空间复杂度来考虑。

2. 中国古代的算法思想

从历史上看数学的发展包括两大主要活动:证明定理和创造算法。定理证明是希腊人首倡,后构成数学发展中演绎倾向的脊梁;算法创造昌盛于古代和中世纪的中国、印度,形成了数学发展中强烈的算法倾向。

中国古代数学就有明显的算法特征,成书于公元前1世纪的《九章算术》是这方面的典范,其中收录了大量的古代算法,譬如约分的“更相减损”原理、秦九韶算法和割圆术,等等。著名学者吴文俊先生认为:“中国古代的数学是一种算法的数学,也是一种计算机的数学。进入到计算机时代,这种计算机数学或是算法的数学,刚巧是符合时代要求,符合时代精神的。从这个意义上来讲,我们最古老的数学也是计算机时代最适合、最现代化的数学。”

我国古代最著名的有数学书籍有《算经十书》,它是指汉、唐一千多年间的十部著名数学著作,它们曾经是隋唐时候国子监算学科(国家所设学校的数学科)的教科书。十部算书的名字是:《周髀算经》、《九章算术》、《海岛算经》、《五曹算经》、《孙子算经》、《夏侯阳算经》、《张丘建算经》、《五经算术》、《缉古算经》、《缀术》。这十部算书,以《周髀算经》为最早,对古代数学的各个方面全面完整地进行叙述的是《九章算术》,它是十部算书中最重要的一部。

书中记载了当时世界上最先进的分数四则运算和比例算法。书中还记载有解决各种面积和体积问题的算法及利用勾股定理进行测量的各种问题。《九章算术》中最重要的成就在代数方面,书中记载了开平方和开立方的方法,并且在这基础上有了求解一般一元二次方程(首项系数不是负)的数值解法。还有整整一章是讲述联立一次方程解法的,这种解法实质上和现在中学里所讲的方法是一致的。这要比欧洲同类算法早出一千五百多年。在同一章中,还在世界数学史上第一次记载了负数概念和正负数的加减法运算法则。

3. 近代数学中的算法思想

事实上,作为近代数学诞生标志的解析几何与微积分,从思想方法的渊源看都是算法倾向的产物。

从微积分的历史可以知道,微积分的产生是寻找解决一系列实际问题的普遍算法的结果。这些问题包括:决定物体的瞬时速度、求极大值与极小值、求曲线的切线、求物体的重心及引力、面积与体积计算等。从16世纪中开始的100多年间,许多大数学家都致力于获得解决这些问题的特殊算法。牛顿与莱布尼兹的功绩在于将这些特殊的算法统一成两类基本运算———微分与积分,并进一步指出了它们的互逆关系。

而对于解析几何的诞生,通常认为,笛卡儿创立解析几何的基本思想,是用代数方法来解几何问题。如果我们去阅读笛卡儿的原著,就会发现贯穿于其中的彻底的算法精神。《几何学》开宗明义就宣称:“我将毫不犹豫地在几何学中引进算术的术语,以便使自己变得更加聪明。”解析几何将一切几何问题化为代数问题,这些代数问题则可以用一种简单的、几乎自动的方法去解决。这与古代中国数学家解决问题的路线可以说是一脉相承。

二、计算机数学教学过程中算法思想融入的途径与方法

计算机数学是计算机专业的一门基础课程,它不仅为计算机专业其他课程的学习提供必要的数学知识,为计算机应用提供必要的数学思想,而且为计算机专业学生数学素养的养成提供必要的环境。

一直以来,高职计算机数学教学内容其实是变相的高等数学,重点讲述极限、导数、微分、积分,然后附带介绍一些图论,逻辑代数的知识,且由于后面的离散数学部分内容不多,所占期末考试比例15%左右,大部分学生认为学的计算机数学等同于高等数学。有些老师说,不是不想改,而是不知道怎么改才对。其实这有个摸索的过程。尤其是高职阶段,课程压缩得很厉害,大多数只开一个学期,要讲微积分,要讲补充内容,要讲数学实验,的确也很紧张。这也就需要我们认真研究算法思想渗透的方法与途径。可以从以下几个方面进行考虑。

1. 算法思想与计算机数学文化史的介绍相结合

数学文化史的介绍在高职数学的介绍中起着重要的启发、引导的作用,英国数学史家福弗尔(J.Fauvel 1947—2001)曾总结出应用数学史于数学教学的十五个理由,其中有:(1)增强学生的学习动机;(2)改变学生的数学观;(3)因为知道并非只有他们自己有困难,因而会感到欣慰;(4)使数学不那么可怕;(5)有助于保持对数学的兴趣;(6)给予数学以人文的一面;(7)通过古今方法的对比,确立现代方法的价值;(8)为学生提供探究的机会;(9)过去的发展障碍有助于解释今天学生的学习困难。

中国的数学史中有大量有关算法思想的内容,在介绍极限思想时,割圆术求圆面积就是一个很好的引入数学史的例子。

《算经十书》中的第三部是《海岛算经》,它是三国时期的刘徽(约225—295)所作。这部书中讲述的都是利用标杆进行两次、三次、最复杂的是四次测量来解决各种测量数学的问题。这些测量数学,正是中国古代非常先进的地图学的数学基础。此外,刘徽对《九章算术》所作的注释工作也是很有名的。一般地说,可以把这些注释看成是《九章算术》中若干算法的数学证明。

刘徽注中的“割圆术”开创了中国古代圆周率计算方面的重要方法,他还首次把极限概念应用于解决数学问题。通过割圆术求圆面积的方法,使学生在感受中国古人的聪明智慧的同时,学习这种无限细分,无限接近的计算方法。

2. 算法思想与计算机数学教学内容相结合

在高职计算机数学教学中,我们都要介绍数制的基本计算方法,二进制、八进制、十进制的互相转换。对于这个部分,我们可以在课堂上设计这样的教学情境:“能让计算机帮你进行数制转换吗?”由于学生已了解了数制之间的转换规律,只要介绍N-S流程图,就可以鼓励学生创造自己的算法。我们可以先对算法进行介绍,使学生理解算法的四种基本结构“顺序、选择、当型循环、直到型循环”,并做例题1:给出求10!并打印的N-S流程图(见图一)。

和例题2:求出1到100顺序相加的过程中末位数是0的和,并把它们打印出来(见图二)。通过这两个流程图案例,使学生理解流程图的基本设计方法与步骤。最后请同学们自己尝试做十进制转换成二进制的流程图(如表一),在此过程中,同学们可以讨论,提问,最后分小组回答,使同学们对算法的七个特征有更深刻的认识,能运用基本特征对算法的优劣作出自己的评价。

过程是最重要的,让同学们设计算法,比较算法,评判算法的优劣,从而对算法概念形成自己的理解。

3. 算法思想与计算机数学实验教学内容相结合

除了高等数学中常见的数学实验内容,如函数求值,极限、导数、积分的计算等,计算机数学可加入算法实践,编程等实验内容。如可在实验中带有实际应用意义的问题,使学生综合应用所学数学知识,分析实际带有建模意义的实际问题,并通过建立算法,设置程序予以解决。如兔子问题:“一对刚出生的幼兔经过一个月可以长成成兔,成兔再经过一个月后可以繁殖出一对幼兔。如果不计算兔子的死亡数,请给出在未来12个月中每个月的兔子对数。”在数学实验课上,老师可引导学生用树状图来表示兔子增长规律,然后让学生列出流程图(图略),最后编出简单程序用数学软件matlab或mathematica来计算:

执行结果:233。即一年以后小兔的数量为233对。

再比如在积分课程开始之前, 可以设计一节数学实验课程, 让学生求一块任意封闭图形的面积, 通过设计无穷级数求和的方法, 使学生通过自己的实验发现面积的分割求法, 并自己设计算法, 进行计算, 可编程如下:

运行程序,可得不同n时的不同S值,使学生更直观地理解和式极限的概念。在下一节课上讲定积分的概念时,学生就自然而然地理解了定积分的式子与概念。通过算法对基础概念的阐释方式,有利于高职学生理解抽象的数学概念。

三、结语

算法是一种思想,它与函数思想的一样,也是一种需要通过训练得来的数学思想,《计算机数学课程》是算法思想培养的良好途径。愿以本文抛砖引玉,与广大数学教师一起探讨如何更好地推进《计算机数学》教学改革,促进信息学院学生职业能力与学习发展能力的养成,使数学课成为对高职学生终身受益的一门课程。

参考文献

[1]李章.高职计算机数学教学改革与实践[D].湖南师范大学, 2010.5.

[2]王信峰.计算机数学基础[M].高等教育出版社, 2009.

[3]Fauvel.J, Using history in mathematics education[J].Forthe Learning of Mathematics, 1991, 11 (2) :3-6.

计算机算法教学 第9篇

算法是数学及其应用的重要组成部分, 是计算科学的重要基础。随着现代信息技术的飞速发展, 算法在科学技术、社会发展中发挥着越来越大的作用, 并日益融入社会生活的许多方面, 算法思想已经成为现代人应具备的一种数学素养。对于高职计算机专业的学生来说, 算法的学习尤为重要, 因为它是学习程序设计语言等专业课的基础。可是, 现在的高职数学教材没有这一内容, 并且在实际教学中数学理论与专业课程之间严重脱节, 让学生觉得数学学习学之无用。因此在高职计算机专业的数学教学中加入算法内容, 可以让学生在初步感受算法思想的基础上, 结合对具体数学实例的分析, 撰写算法学习报告, 体验程序框图在解决问题中的作用;通过模仿、操作、探索, 学习设计程序框图表达解决问题的过程;体会算法的基本思想以及算法的重要性和有效性, 发展有条理的思考与表达的能力, 提高逻辑思维能力, 为学习程序设计语言等专业课程打下坚实的基础。

一、根据学生的学习现状, 设计算法学习报告, 通过让学生撰写学习报告来探讨如何通过具体的数学实例让高职学生体会算法的基本思想

算法学习报告包括:学生预习情况、小组讨论、教师点评、学习总结、教师对学习报告的评价和调查问卷六个部分, 下面来具体进行分析:

(一) 学会课前预习是学好任何学科的前提, 数学学习也不例外。可是, 对于职业学校的学生来说, 大多数的学生没有良好的学习习惯, 也比较懒惰。如何让高职学生改变这样的现状已成为新时期高职教师亟待解决的问题。因此, 根据高职学生的这一特点和算法学习的要求, 笔者设计了算法学习报告中的学生预习情况部分, 让学生通过充分课前预习来为课堂学习做好准备。这部分细分为:解题分析、算法分析、画出流程图和写出程序设计的代码 (程序设计代码的编写可根据学生的实际情况进行调整) 。

下面以一个数学实例来具体介绍算法学习报告中的学生预习部分。教师在课前先给出预习内容:任意给定3个正实数, 设计一个算法, 判断分别以这3个数为三边边长的三角形是否存在?学生预习情况:对于这样一道“判断分别以这3个正实数为三边边长的三角形是否存在?”的题, 以往的数学课上讨论的很少。因此, 可能班级中绝大部分的学生没有一点正确的解题思路, 就更谈不上写出解题分析、算法分析、画出流程图和写出程序设计的代码了。那么这时就来看看在课堂上教师如何引导学生进行这个内容的学习。

(二) 在课堂上通过以学生为主体的小组讨论方式, 可以调动他们学习算法的积极性, 同时开拓他们的学习视野。俗话说:“三个臭皮匠, 顶个诸葛亮!”课堂上小组讨论情况:有同学提出利用“两边之和大于第三边”来判断三个正实数为三边边长是否构成三角形。

(三) 教师点评是教师从旁引导, 使学生能够正确理解算法的设计思路, 建构正确的知识体系。教师点评:为学生分析构成三角形的条件, 鼓励学生尝试用“两边之和大于第三边”来判断三个正实数为三边边长是否构成三角形。

(四) 学生经过课堂上的小组讨论和教师点评后, 已经有了大致的解题思路, 但是仍需精加工。因此, 要求学生独立完成学习报告中的学习总结, 写出其中修改后的算法分析、画出流程图和程序设计的代码以及学后记。

学生修改后的算法分析:第一步:输入3个数a、b、c。第二步:利用“两边之和大于第三边”判断a、b、c是否能构成三角形。第三步:如果能构成三角形, 输出结果或者输出“无法构成三角形”的信息。学生修改后的流程图如图1所示。

程序设计代码:略。

学后记:要求学生写出学习这部分内容的学习感受, 找出自己在学习中的优缺点, 为今后的算法学习打好坚实的基础。

同时通过以上这些具体的学习过程让学生通过自我反思, 提高自身解决问题、分析问题的能力, 为以后的算法学习积累丰厚的经验。

(五) 教师评分。教师对学生所做学习报告的评价和成绩评定, 可以让学生了解自己在算法学习上的优势和不足之处, 为今后的学习打下坚实的基础。

(六) 教学反馈情况。学生在新的内容学习结束后, 究竟掌握了多少?在算法学习方面还存在哪些问题呢?笔者在设计算法学习报告的同时还设计了一份调查问卷来了解学生的学习状况。内容如下:

(1) 你在预习时能理解多少研究主题的内容?

A.全部 B.一半左右 C.很少的一部分 D.一点也不懂

(2) 你在预习时能写出多少算法设计的步骤?

A.全部 B.一半左右 C.很少的一部分 D.一点也不懂

(3) 你在预习时能画出多少流程图的结构?

A.全部 B.一半左右 C.很少的一部分 D.一点也不懂

(4) 你在预习时能写出研究主题的程序设计多少行?

A.全部 B.一半左右 C.很少的一部分 D.0行

(5) 在听了小组的讨论后, 你觉得在哪个方面的收获最大?A.算法设计 B.画流程图的结构 C.写出程序设计 D.以上三种都有

(6) 在听了教师的点评后, 你觉得在哪个方面的收获最大?A.算法设计 B.画流程图的结构 C.写出程序设计 D.以上三种都有

(7) 你觉得填写学习报告中的预习情况对你的算法学习是否有帮助?A.有很大帮助 B.有一点帮助 C.没有帮助 D.可有可无。

(8) 你觉得小组讨论有必要进行下去吗?A.很有必要 B.有些必要 C.没有必要 D.可有可无

(9) 在学习了这个研究主题后, 你觉得目前你最薄弱的是哪一个环节?A.算法设计 B.画流程图的结构 C.写出程序设计 D.以上三种都有

(10) ①教师给出的最佳程序设计写了行, ②你写出的正确的程序设计是行, ③最佳程序设计的行数:你写出正确的程序设计的行数=。

让学生每做一份算法学习报告就做一份调查问卷, 可以让数学教师和专业课教师及时明确地掌握学生学习情况的第一手资料。教师可以通过这些数据, 对全班学生学习情况进行横向的对比, 随时调整教学设计方案, 找到适合高职计算机专业学生数学教学的模式;在撰写多个算法学习报告后, 也可以对某位学生调查问卷的数据进行纵向的对比, 从中可以看出这位学生的算法学习是否有进步, 还存在哪些方面的问题亟待解决。教师可以及时给学生进行有针对性的辅导, 提高他们的算法学习成绩。

二、撰写算法学习报告可以加强算法的核心内容——程序框图的学习

由于算法的概念并没有一个统一的定义, 在教学过程中应从实例出发, 通过让学生撰写算法学习报告可以加强学生对解决具体问题过程与步骤的分析, 体会算法的思想, 了解算法的含义, 力求使学生能够对算法本质有所认识。自然语言、程序框图和算法语言是表达算法的三种形式, 其中程序框图最为重要, 它是算法的核心内容。教师在教学中要重点抓住它, 而不必一味地追求程序设计的完整。算法案例配合学习报告的使用, 可以使学生进一步理解程序框图, 领会算法的本质。

三、算法学习报告对高职计算机专业数学教学的重要性和有效性

(一) 算法学习报告的撰写将数学学习与程序设计语言学习进行了有机的结合。算法是实践性很强的内容, 只有通过学生自己的亲身实践, 让学生亲自去解决几个算法设计的问题, 才能使学生体会算法的基本思想, 学会一些基本逻辑结构和语句。算法内容是将数学中的算法与计算机技术建立联系, 形式化地表示算法。为了有条理地、清晰地表达算法, 往往需要将解决问题的过程整理成程序框图;为了能在计算机上实现, 又要将自然语言或程序框图翻译成计算机语言。因此, 如果能让学生上机, 算法设计的整个过程就可以得到完整的体现, 学生可以及时看到自己设计的算法的可行性、有效性, 这不但可以很好地激发学生的兴趣, 而且还能提高学习效果。但是有些学校教学条件不允许或者还没有开设程序设计语言的课程, 算法学习报告的撰写正好弥补了这一不足, 方便了学生进行算法的学习。

(二) 算法内容的学习最好安排在高职计算机专业的学生已经开始学习VB、C语言等程序设计语言课程后, 这样能够直接与专业课的学习进行互动, 学习成效会更加显著。如果算法内容可以让高职计算机专业的学生用数学学习报告的方式进行学习, 那么不仅能提高学生数学学习的兴趣, 也能为专业课的学习打下了坚实的基础。

目前, 算法教学刚刚起步, 还有很多不完善的地方, 但是笔者相信经过一段时间的摸索, 一定会找到一个适合高职计算机专业学生的数学教学模式。高职数学教学改革任重而道远!

参考文献

[1].郭慧清.普通高中标准实验教科书·数学3[M].北京:人民教育出版社, 2004

计算教学中算法多样化的探索 第10篇

一、探索算法, 鼓励多样化

在探索算法的阶段, 我们鼓励算法多样化。这满足了课堂中学生个性化的学习需求, 体现了“要使不同的人在数学学习中得到不同的发展”的宗旨, 其优点显而易见。那么, 如何理解算法多样化?如何实施算法多样化?

1. 正确理解算法多样化的本质

《数学课程标准》指出:“由于学生生活背景和思考角度不同, 所使用的方法必然是多样的, 教师应尊重学生的想法, 鼓励学生独立思考, 提倡计算方法的多样化。”可见, 算法多样化是计算教学的基本理念之一。而算法多样化的本质, 就是尊重学生的想法, 鼓励学生独立思考。提倡计算方法的多样化, 并非是强迫每个学生必须掌握多种解题策略。

2. 算法多样化应尊重学生的自我构建

在正确理解算法多样化的本质后, 我认为尊重学生的想法其核心就是尊重学生的自我构建, 多样化的算法应源于学生已有的经验, 符合学生的认知规律。

最近, 我们学校进行课程标准研讨活动, 一位教师执教了一节“20以内的退位减法”。该教师为了体现新理念, 力求突出“算法多样化”, 因此在课堂教学中对于算法一味求多, 致使有失偏颇。

[案例1]教师引导学生根据画面 (一共有13个桃子, 小兔买走了8个) 列出减法算式:13-8。

师:13减8等于几?请同学们摆一摆, 说一说。

(学生动手操作学具, 独立思考)

师:谁来说说怎样摆?13减8得几?

生1:我先摆13个, 再拿走8个, 还剩5个。13减8得5。

(教师演示从13个学具里依次拿走8个, 然后板书:一个一个地减)

生2:我是这样想的, 因为8加5得13, 所以13减8得5。

师:同学们想一想, 他是根据什么方法算的?

生齐:算减法想加法。

(教师板书:8+ () =13)

师:还有其他不同的算法吗? (无人举手)

(教师演示从10个学具里拿走8个, 然后将剩下的2个学具和3个学具合起来)

生3:13减8可以这样算:先用10减去8得2, 2再加3得5。

(教师板书:10-8=2, 2+3=5, 然后演示从13个学具里拿走3个)

师:还剩多少个?

生齐:10个。

师:算13减8, 还要再拿走几个?

生齐:5个。

师:13减8还可以怎样算?

生4:先算13减3得10, 再算10减5得5。

(教师板书:13-3=10, 10-5=5)

……

在上面的教学过程中, 教师力图用好新材料, 体现“提倡算法多样化”的教学理念, 这无可厚非。但是, 教学是“教学生, 而不是教教材”。数学学习是学生自身的“再创造”活动, “算法多样化”应源于学生的独立思考和富有个性的理解。在学生得出两种算法后, 教师可能感觉未能“淋漓尽致”地表现教材意图, 便将自己的思维强加给学生。虽然, 从某种角度讲, 教师展示的算法可能是最优的, 但这种强加的“给予”, 未必是学生喜欢的、能接受的。这种“以教代学”表面上实现了教学的意图, 实际上是在走教案、教教材, 师生被“死”的教案和教材钳制和支配, 这是另一种的灌输。

算法多样化, 并非强迫每一位学生掌握多种解题策略, 其实质是尊重学生的自我构建和自我理解, 尊重学生的独立思考。学生根据已有的知识基础和生活经验, 所建构的方法不一定是最优的, 却是学生经过自身的思考, 与自己的认知结构、数学现实最吻合的, 是学生使用起来最得心应手的, 教师应该尊重学生的想法, 顺着学生的思维不断调整“教”的程序, 未必一定要追求所谓的“圆满”。

二、总结算法, 注重算法最优化

在初探算法时, 学生会有各种各样的算法, 不管他们的方法笨到什么程度, 哪怕他们用扳手指的算法, 我们都应该鼓励, 因为这毕竟是他们自己想出的一种解决问题的方法。但是, 如果全班几十个学生中, 有个别学生连一种方法都没有, 教师要不要总结算法, 引导学生去比较、发现一种较为简明的算法, 教他们掌握呢?我认为是需要的。那么, 何时优化?怎样优化呢?

1. 师生要有优化意识

总结算法, 重在对算法进行归纳与优化, 要在学生自主探索的基础上, 让他们把自己解决问题的方法进行交流与汇总。这里要强调的是, 教师一定要在学生交流与汇总的基础上对学生提出的各种解题方法进行分析、归纳和优化。不然, 算法的多样化有时往往会让一些中、差生感到眼花缭乱, 无所适从, 以致方法越多越糊涂, 达不到算法优化的教学目的。

[案例2]在教学“两位数加一位数的进位加法”一课时, 教师出示了39+6=?, 学生想出了多种不同的算法。

生1:9+6=15, 30+15=45。

生2:9+1=10, 30+5=35, 35+10=45。

生3:39+1=40, 40+5=45。

生4:39+5=44, 44+1=45。

生5:6+4=10, 10+35=45。

生6:在39后面接着数出6个数, 是45。

生7:我在位值板中摆圆片得到答案是45。

上例中学生通过自己的探索、交流得出的计算方法有7种之多, 但很可惜, 教师没有引导学生对各种方法进行一定的分析与归纳、简化与优化, 导致课后有一部分中差生连一种算法都没有掌握。其实在这一阶段, 教师如果有意识地引导学生对各种方法进行一定的观察, 分析各种方法的特点, 并对各种方法进行一定的归类、分析, 让学生感悟、理解探索和解决问题的数学思想方法, 就能把要解决的新知转化为学过的旧知而加以顺利解决。由此可见, 教师要有优化意识, 才能引导学生对多样化的算法进行分析与归纳、简化与优化。

2. 优化算法应精心设计优化过程

对于一年级的学生来说, 他们往往会认为自己的算法是最好的。所以要让学生较快地“悟”出最好的算法需要一个过程, 需要教师合理的总体设计与精心的课堂引导。

[案例3]在“口算百以内的加减法”的复习课中, 教师出示了这样一个题组:45+18, 37-19, 41-13, 59+26, 61+34……让学生选择喜欢的题目说说算法, 然后引导学生比较, 得出了以下一些算法:

生1:我来算59+26, 因为59接近60, 所以我先算60+26=86, 多加了1, 再减去1, 得数是85。

生2:我来算37-19, 因为19接近20, 所以我先算37-20=17, 多减了1, 要加1, 得数是18。

生3:我来算41-13, 先算41-11=30, 少减了2, 要再减2, 得数是28。

生4:我来算45+18, 先算45+5=50, 50+13=63, 所以得数是63。

……

以上案例中, 教师精心设计的题组、有特点的数据不仅让学生自觉地优化算法, 而且让学生体验了算法优化的简捷性, 并在选择最优化的算法的过程中, 增强了数感。优化算法, 不是强硬地灌输给学生一种算法, 而是要让学生切实理解这种算法, 体会它的简约性, 从而自觉地接受它。只有这样精心设计的优化过程才是有价值的学习过程。

三、应用算法, 显现个性化

计算机算法教学 第11篇

关键词:量子计算;量子算法;优化;实现困难

随着人类在信息量处理速度方面的需求越来越高,当前计算机性能的提升速度满足不了人类在信息处理速度方面的需求。十九世纪初提出并建立的量子力学理论带来计算机的革命性发展了新的解决办法,量子独有的相干性和纠缠性等特性为量子计算带来了完全不同于经典计算的独特运算方式。经过近一个世纪的发展,2009年美国国家标准技术研究院研制的世界上首台通用编程量子计算机面世。量子计算是应用量子力学原理来进行有效计算的新颖计算模式,它利用量子叠加性、纠缠性和量子的相干性实现量子的并行计算。量子计算从本质上改变了传统的计算理念。

一、量子计算的优势特征

1982年美国物理学家费曼(R.P.Feynman )提出量子计算概念,但由于量子态的测不准原则以及量子系统容易受噪声干扰,量子运算很容易出错。直到1994年美国计算机专家Shor证明了量子计算机能快速分解大因数,并实现了第一套量子算法编码,量子计算以及量子计算机的研究才进入实验时代。

经典比特具有0和1两种状态。量子比特与经典比特的不同之处在于:一个量子比特除了可以像经典比特一样处于0和1这样的状态之外,还可以处于既非0又非0的状态上,这个中间状态称为叠加态(Superposition)。量子叠加态是决定量子计算不同于经典计算的关键特性之一,也是量子并行计算的理论基础。相同位数的寄存器,量子计算机可以记录的信息量是传统计算机的指数倍,它的运算速度和信息处理能力是经典计算机所无法比拟的。因此,量子并行计算体现了量子计算最重要的优越性。

二、量子算法

量子算法作为量子计算科学的重要部分,在过去的十几年中得到了广泛的发展并取得了一系列惊人的成就。目前已知的最为成功的两类量子算法是基于Shor的量子Fourier变换算法和基于Grover的量子搜索算法。1989年,Deutsch首次提出了Deutsch量子算法。该算法第一次很好的展示了量子计算机的并行性。1994年,Shor提出大数质因子分解量子算法并实现了该算法的量子编码,此后,Grover算法、量子智能算法等量子算法相继被提出,量子算法的研究工作也得到了各国研究者的关注。

(一) Shor大数质因子分解算法

1994年, Shor提出了离散对数问题和大整数质因子分解问题的量子算法,证明了这两个重要且复杂的问题属于BQP类,极大地促进了量子计算的发展,使人们第一次清楚地看到了量子计算独具优势的重要应用前景。从此,世界众多研究小组加入了该研究行列,量子计算研究领域取得了许多重大进步,

Shor的另一项同样重要的成果是率先提出了量子纠错码[18,19],这使得容错的量子计算成为可能[19]。量子计算在密码学领域也取得了迅速的发展,这就意味着目前广泛应用于政府、军事以及金融机构等重要方面的RSA公钥密码体系的安全性可能面临着致命的威胁,仅这一点就足以引起人们对量子算法研究的极大关注。

Shor算法本身已经相当成熟,对其改进和优化的空间不大。Shor算法是目前为止已经提出的最好的量子算法,该算法不但具有传统算法无法比拟的优势,而且其巧妙的理论构思以及表现出的实际应用价值,都是十分宝贵的。Shor算法及其模拟实现,对量子通信和量子密码学的发展都具有极其重要的参考价值。

(二)Grover数据库搜索算法

对于无序数据库,搜索的规模随着数据库规模的增长而成线性增长。Grover提出量子搜索算法,将搜索问题完成时间缩小,对经典问题起到了二次加速的作用。

Grover算法适宜于解决在无序数据库中搜索某一个特定数据的问题。Grove:算法利用量子并行性,并没有像Shor算法一样实现问题的指数加速,然而搜索算法的广泛应用性却很好的弥补了这一点。现实中有许多问题,如最短路径问题、图的着色问题、排序问题及密码的穷举攻击问题等,都可以将Grover算法视为通用算法求解。事实上,目前Grover算法已经在核磁共振和光学系统中得到实现。

Grover算法是目前最经典的量子算法之一,然而它也存在着某些缺陷。对Grover算法的改进研究也成为了目前量子算法方面的一个热门研究领域。

(三)量子智能算法

自Shor算法和Grover算法提出以后,量子计算方法表现出的独特计算方式以及在信息处理方面展现的巨大潜力引起了研究者的广泛关注。自Shor因子分解算法和Grover搜索算法提出后,虽然众多研究者在量子算法领域进行了大量的研究,但迄今为止并没有取得重大突破。而智能算法向来是算法研究领域的一个热点,量子智能计算将量子理论原理与智能计算相结合,利用量子并行计算特性很好的弥补了智能算法中的某些不足之处,如:加快算法的收敛速度及避免早熟现象等。

目前己有的量子智能算法研究包括:量子进化算法、量子免疫计算、量子退火计算、量子神经网络和量子聚类算法等。其中,量子进化算法和量子神经网络成为目前学术研究的热点并取得了相当不错的成绩。

目前量子进化算法的应用研究领域也很有限,量子进化算法的研究还不够成熟,很多理论和应用的研究还需要深化和推广,进一步研究的空间还很大。

三、量子计算的物理实现

量子计算和量子算法理论的基本框架已经成型,各方面研究进展日新月异,但最终实现实用价值的量子计算,还需要解决众多问题。其中,量子计算的前提是量子计算的物理实现,但量子计算机技术上的实现却遇到严重的困难,何种物理系统能最终适用于量子计算机迄今尚无定论,尽管如此,坚信实现量子计算已不存在不可逾越的障碍的信念正激励着学术界的巨大研究热情去推进相关研究进展。

参考文献:

[1]首次在国际上实现量子分解算法.中国科学院院刊,2008,23(1):76-76.

[2]彭卫丰,孙力.SHOR量子算法的优化及应用研究.计算机应用与软件,2009,26(5):239-246.

[3]李士勇,李盼池.量子计算与量子优化算法.哈尔滨:哈尔滨工业大学出版社,2009.

计算机算法教学 第12篇

《数据结构与算法》是计算机及相关专业的一门重要的专业基础课程。它系统地介绍了软件设计中常用的几种数据结构及相关算法的实现方法, 主要包括了基于序列的数据结构, 另外还包含递归、排序、查找等算法, 因而课程内容十分丰富。学习本课程的目的是让学生了解数据在计算机中如何表示、存储和处理, 从而能将现实生活中的实际问题所涉及的数据在计算机中表示出来并能用相应的算法对它们进行加工处理。因此, 学好数据结构课程对后续专业课的学习和程序设计能力的提高都是至关重要的。

二、《数据结构与算法》教学现状及其改革建议

1、教师对课程定位不明

软件高职的人才培养目标是面向职业岗位的“软件蓝领”, 在《数据结构与算法》实际的教学中, 大多数教师仍然沿用传统本科学术教育的模式, 偏重理论知识的介绍, 忽视了实用技能的训练。对于《数据结构与算法》这门课程, 首先教师要针对软件高职的特点, 选用具有工程实践价值的教材, 借鉴企业解决实际问题的经验, 而不是本科教材的压缩版本。其次, 在教学内容上, 应选择实用的内容进行重点讲述, 对那些较复杂、深奥的算法, 则只介绍其基本思想, 而一些晦涩、难懂的知识应适当进行删减, 在教学内容的难度、深度和广度上要让大多数学生能够接受。

2、师资队伍缺少课程知识的实践经验

据了解, 软件高职的教师多数都是从大学毕业直接走上讲台的本科毕业生, 基本上没有软件行业的从业经验, 这导致多数教师照本宣科, 再加上各大学专业课程普遍存在压缩课堂教学学时的趋势, 这样导致教学内容相对单薄, 涉及的实际应用技能几乎没有, 理论与实际工作完全脱节。因此, 软件高职应积极引进“双师型”教师, 以保证既有较高的专业理论知识, 又有较强的专业技术能力, 这样才能让学生既学习数据结构和算法的理论知识, 同时能够在实际生活中理解和运用相关知识。另外, 对于无软件生产实践经验的年青教师, 学校应加强教师培养。

3、软件高职生源素质差, 学习兴趣不高

由于人们对高职院校存在偏见, 导致高职院校生源素质普遍较低, 缺乏对新知识的探索和追求精神。再加上《数据结构与算法》课程的理论性和抽象性, 这让很多学生心中产生了畏惧心理抵触本课程, 这样很难达到好的教学效果。如果能点燃学生的学习热情, 这样便能事半功倍。因此首先, 教师应耐心对待和关爱学生, 及时帮助鼓励学生。其次, 教学进度应循序渐进, 由浅入深, 将抽象的知识实例化, 具体化。另外可以充分利用多媒体技术, 精心制作课件和动画, 使枯燥无味的内容通过生动形象的演示方式呈现出来, 从而更大程度地激发他们的求知欲望。最后, 教师应以启发式教学为主, 强调把教学内容设置到实际的、有意义的现实环境中, 让学生通过解决实际问题, 来理解和掌握隐含于问题背后的知识, 提高解决问题的能力。

4、先导课程学得不扎实, 学生的上机实践能力差

《数据结构与算法》相关内容涉及大量的概念、模型及算法, 理论性较强且高度抽象, 数学基础差的学生因抽象思维能力较弱, 掌握起来非常困难。另外, 学生对于C语言的掌握往往不够扎实, 直接影响了《数据结构与算法》的学习效果。第一, 不少学生对C语言的数组、结构体、指针这三种基本数据类型认识模糊, ?对函数的理解也一知半解, ?对递归算法更是难以理解。第二, 从C语言进阶到数据结构, 难度一下增加许多, 相当多学生无法适应。最后, 多数教材提供的算法是用类C语言描述, 由于C语言掌握得不扎实, 学生理解起来特别困难, 这也给教学带来很大的难度。再者本课程讲授的各种抽象数据类型和算法, 最终要在计算机上用C语言来实现。学生的C语言基础薄弱导致学生上机实践能力差, 从而阻碍了他们对各类数据结构和算法的理解和应用。总之, 基础知识的薄弱, 导致教学效果不理想, 甚至使部分学生丧失了对该课程学习的兴趣和信心。所以在开设C语言课程时, 应坚持“理论够用, 重在实践”的基本原则, 重点讲解C语言程序设计基础, 包括C语言中的数组、结构体、指针这三种基本数据类型和函数等, 特别是结构体的使用方法和内存分配函数的使用方法。同时适当增加了上机实践时间, 并着手编写了适合高职学生的上机实验指导书。

5、单一的考评方式影响了教学效果的评测

目前多数软件高职在《数据结构与算法》课程的考核方式还是以笔试为主, 形式单一。这在一定程度上将教师的教学重点导向重书本知识传授而忽略能力培养, 而学生也将会做题目作为学习的重点, 重心没有放在动手能力的培养上。因此, 学院应加大实验课的考核力度, 同时, 还在学期中或学期末进行专门的课程设计。这样形成了期末考试+上机实践+课程设计+平时成绩, 多种考查形式相结合的考评方式, 以此扼制学生在考前临时“抱佛脚”而不注重平时学习的不良习惯。

三、教学总结

《数据结构与算法》课程在学科专业中的核心地位要求必须注重数据结构课程的教学, 同时在教学过程中, 教师要不断地发现问题解决问题, 进而使教学水平和效果上一个新的台阶。

参考文献

[1]葛建梅:《“数据结构”课程教学方法改革的思考》, 《中国成人教育》, 2008, (1) :147-148。

[2]青宇航:《关于〈数据结构〉现代教学方法的探索》, 《教育与职业》, 2007, (09) 153-154。

上一篇:感受性阅读初中语文下一篇:历史模拟