高中信息技术学科选修模块《算法与程序设计》内容枯燥、严谨,对于我们学生来说缺乏相关的知识背景,在高中阶段才开始学习信息技术课难度大,也容易产生畏难情绪。那么对于学生来说怎样才能上好这门课呢?
一、首先教师应根据学生的实际情况,处理教材,分散难点
新课标指出:“学习本模块旨在使学生进一步体验算法思想,了解算法和程序设计在解决问题过程中的地位和作用;能从简单问题出发,设计解决问题的算法,并能初步使用一种程序设计语言编制程序实现算法解决问题。”算法是程序设计的灵魂,算法教学是程序设计语言教学的基础,程序设计语言教学是算法教学的必要的延续。
教科版的《算法与程序设计》,使用的编程语言是VisualBasic60。它和大多数程序设计语言书籍一样,先花大量的篇幅介绍与VB语言开发环境及语法相关的基础知识和基本概念,而后才开始程序三种基本结构的教学。教师根据学生的实际情况,对教材进行了处理、对内容进行调整,改变了教材中原有知识的逻辑结构顺序。这样学生可以边用边学,以用促学。
教师在每节课教学过程中都以简单有趣的小问题为切入点,通过分析问题、设计算法、编写程序、调试运行,让学生对算法和程序设计有一个感性的认识,以降低学生的学习难度,并激发学生的学习兴趣,观摩、模仿、尝试等阶段逐渐到学生能独立 *** 作。开始选择的例子比较简单,如“在屏幕上输出‘studyVB’”、“已知三边之长求三角形面积”、“计算前100个自然数之和”等。在此过程中适当忽略VB的可视化开发环境,其中数据的输入只要求用inputbox()函数完成,数据的输出直接用print语句在窗体完成,整个事件只要求由命令按钮command1_click()来触发,这样的目的一方面是减少太多新知识对学生学习算法思想的干扰,将难点分散,另一方面控件少的程序也更容易上机调试通过,让学生体验成功的喜悦。
二、其次教师应联系学生的数学知识,进行算法与程序设计练习
算法是解决问题的方法和步骤,计算机解决问题,必须严格地按步骤进行,这和我们平时解决问题是有区别的。因此在算法设计中,应将解题的每一步都想清楚,对学生逻辑思维能力要求较高,许多同学刚开始不太适应。因此教师在教学过程中,精选教学案例,联系学生的数学知识,从学生熟悉的或感兴趣的数学问题出发,进行算法与程序设计的练习。学生刚刚学习过海伦公式,在顺序结构和选择结构的教学中可采用“已知三边长利用该公式来求三角形的面积”这个例子。因为学生有数学基础,只要将解题步骤稍加修改就写出如下算法:
1.输入三边长;
2.求面积;
3.利用海伦公式s=p(p-a)(p-b)(p-c),p=a+b+c2,求出面积s;
4.输出面积s;
5.结束程序。
根据此算法编写好程序,在调试运行中发现如果三边长为10,10,30时就不会输出结果。那么是为什么呢?学生很快就想到这样的三条边是组不成三角形的,怎么改?自然是输入的a、b、c要先满足两边之和大于第三边才能组成三角形的,所以要在第二步之前添加一句,“如果不能同时满足,就输出‘输入数据错误’,转5;否则转2”。通过以上的例子,既体会到了算法的严谨性,学生也学会了顺序和选择两种结构的算法描述。
教师还用趣味数学题来激发学生的兴趣,如在学习过程中老师通过讲解“水仙花数”、“百鸡百钱”、“韩信点兵”、“棋盘上的麦粒”、“鸡兔同笼”等问题来激发学生的学习兴趣,以使大家的积极性得到提高。
三、一题多变,提高学生对知识的理解能力和编程能力
学生固有的认识框框和习惯的思维方式是学好算法与程序设计的一大障碍。只有多实践才能体会和认识到计算机解决问题的过程。然而由于课时限制,不可能有太多的时间来进行这方面的训练。教师如能恰当地运用“一题多变”和“一题多解”等方法,精心选择一道例题,让它由浅入深循序变化,引导学生分析和比较,总结解决问题的一般规律,对弄清基本概念,提高解题能力以及培养思维的灵活性都是有益的。例如,对于“求s=1+2+3+4+5+6的一个算法”就可以拓展以解决一类问题,如s=12+22+32+42+52+62,s=1+12+13+14+15+16,s=1-2+3-4+5-6,s=1×2×3×4×5×6等许多问题。这样引导学生对比for-next以及do-loop循环的语法及适用情况。通过“一题多变”和“一题多解”的教学手段,使课堂效率得到了大大地提高。
四、教师应授之以渔,教会学生自己调试程序
《算法与程序设计》模块是作为计算机应用的技术基础设置的,不能忽视技术,但我们强调的技术不再是以前那种“软件说明书”式的 *** 作。实际上对学生来说,犯的错误具有共性,主要是标点符号错误,比如“:”和“;”,关键词与变量名之间没有空格,语句书写不完整,有if没有endif,有for没有next,变量名、对象名引用时出现拼写错误等,其实学生只要掌握一点调试、运行程序的方法就能大大提高上机效率。通过训练学生不但能自己调试程序,更能加深对程序的理解,尤其是到循环结构以后,这种作用就更明显了,而且这种能力完全可以迁移到今后的学习和生活中去。
新课程目前还处在实验阶段,存在着很大的探索空间。对学生来说,激发他们的学习兴趣、提高他们的积极性、不断进行创新的同时提高教师自身的信息素养水平。教师不再只是教学者,更应该成为研究者和学习者,教师应加强教学反思,才能提高教学水平。
java
解释
不执行
高级
main
声明
String
顺序、选择、循环
false
没有
90
true
静态
局部变量
IntegerparseInt()
5
break、continue、return
randomnextInt(100)
定义一个数组的引用、对数组进行初使化、数组越界
封装、继承、多态
path、classpath
可以
10
0
continue
boolean
randnextInt(5)
double
没有
顺序、选择、循环
Systemoutprintln(m+1)
x定义了但没有赋值、语法
单行、多行
10
数组的引用
float
y=IntegerparseInt(x)
一个
public
public static int a()
算法和程序设计语言没有必然联系;
就像数据结构这门课,它的算法可以用C语言实现,可以用C++实现,还可以用java实现,还有的书使用pascal实现的!
算法就是一个思想,是你的想法,而程序设计语言则是实现思想的执行者!
算法是指解决问题的一种方法或一个过程。算法是若干指令的有穷序列,满足:输入、输出、确定性、有限性性质。程序是算法用某种程序设计语言的具体实现,程序可以不满足算法的性质。
算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。
算法中的指令描述的是一个计算,当其运行时能从一个初始状态和初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。随机化算法在内的一些算法,包含了一些随机输入。
算法是为一个问题或一类问题给出的解决方法与具体步骤,是对问题求解过程的一种准确而完整的逻辑描述。程序则是为了用计算机解题或控制某一过程而编排的一系列指令的集合。程序不等于算法。但是,通过程序设计可以在计算机上实现算法。
你可能解答过一个有趣的问题——“人、狼、羊过河”问题。有个人带着三只狼、三只羊,要过河去。有一条小船。船上除了运载一个人外,至多再载狼或羊中的任意两只。但难点是:当人不在场时,如果狼的数量大于等于羊的数量,那么羊会被狼吃掉。为了安全过河,你有什么办法呢?
解决它的算法有多个,其中一个解决方案是这样的:
开始,运一只狼过河,空船回来;
接着,运一只狼和一只羊再过河,到对岸后,再运两只狼回来;
然后,运两只羊过河,空船回来;
最后,分两次将狼全部运过河;
由此,过河问题就得以解决了。
可见,算法是为一个问题或一类问题给出的解决方法与具体步骤,是对问题求解过程的一种准确而完整的逻辑描述。它由有限步骤的 *** 作序列组成,代表着用系统的方法描述解决问题的策略机制。
算法是一组严谨定义运算顺序的规则,每一个规则都是有效的、明确的,此顺序必须在有限的次数下终止。在上面的过河问题中,如果第一步中改为:“运一只狼过河,再运这只狼回来”,那么,说明人没找到好办法,在反复进行无用 *** 作。此类算法,是失败的,永远也实现不了既定目标。
算法描述,一般可以使用汉、英等自然语言,比较通俗易懂。也可以使用流程图、伪代码表格等其他工具。
在古代,算法通常用于数值计算。中国古代的筹算口诀、珠算口诀及其执行规则就是算法的雏形。它所解决的是数值计算问题。现代算法,已超出数值计算范围。
程序则是为了用计算机解题或控制某一过程而编排的一系列指令的集合。这些指令,可以是计算机的机器指令,也可以是汇编语言和高级程序设计语言。
程序不等于算法。但是,通过程序设计可以在计算机上实现算法。在实际应用中,也许只需一条(组)程序设计语句,就可以完成算法的基本要素处理,包括数据对象的运算和 *** 作,以及顺序、选择、循环结构的控制。通过程序模块设计,可以实现算法中的递推、递归、迭代等一系列基本算法,也包括形式演绎、数据结构、数论图论、加密解密、科学决策等复杂算法。
因此,运用计算机解决问题的过程,通常可以分成三个阶段:分析问题、设计算法和编制程序实现算法。由于计算机运算速度快,存储数据量大,大大提高了算法实现效率。
算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。
一个算法应该具有以下五个重要的特征:
有穷性(Finiteness)
算法的有穷性是指算法必须能在执行有限个步骤之后终止;
确切性(Definiteness)
算法的每一步骤必须有确切的定义;
输入项(Input)
一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
输出项(Output)
一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
可行性(Effectiveness)
算法中执行的任何计算步骤都是可以被分解为基本的可执行的 *** 作步,即每个计算步都可以在有限时间内完成(也称之为有效性)。
算法和程序的关系是:
算法就是程序的灵魂,一个需要实现特定功能的程序,实现它的算法可以有很多种,所以算法的优劣决定着程序的好坏。
程序就是遵循一定规则的、为完成指定工作而编写的代码。有一个经典的等式阐明了什么叫程序:程序 = 算法 + 数据结构 + 程序设计方法 + 语言工具和环境 。
以上就是关于浅谈如何在面上中学开展《算法与程序设计》教学全部的内容,包括:浅谈如何在面上中学开展《算法与程序设计》教学、计算机java程序设计与算法试题求解、算法和程序设计语言之间的关系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)