C语言程序交互式虚拟算法动画的开发与教学应用
- 格式:pdf
- 大小:201.69 KB
- 文档页数:3
XXXX学院
授课计划
所属部门:XXXX学院
课程名称:虚拟交互设计
任课教师:XXX
授课班级:XXXX班授课学期:2020-2021 (1)
工作习惯:通过项目成果展示,训练语言和文字表达能力。
5)课程教学情境设计
对课程体系做精心的设计,按照“起一承一转一结”思路进行课堂情境设计:内容回顾(温故知新)一导入新课(学习目标分析)一新课分析一要点解析(知识点解析)一实践操作(任务驱动)一课堂小结(疑难解答)一作业布置。
通过概念解释、案例讲解、操作演示,带动学生深入学习虚拟现实交互功能的实现方法;通过课堂练习和课后习题,拓展学生的实际应用能力。
教学讲解力求细致全面、重点突出:注意言简意赅、通俗易懂:在案例选取方而,强调案例的针对性和实用性。
6)课程考试/考核方法
考核方式为:平时考核模块X60%+期末考核模块X40%
平时项目实践考核成绩占总成绩的30%,课后作业、课堂参与度、出勤得分占总成绩的30%:期末考核模块考核占总成绩的40%。
任课教师将学生单元训练项目完成情况进行详细记录并进行评定,学期末发布评定成绩。
任课教师:XXX
教研室主任:XXX 部门意见: 注:木计划一式三份,教务处、课程所在部门,教师本人各执一份。
《C语言程序设计》课程标准一、课程性质该课程是人工智能技术应用专业的专业基础课程,目标是让学生全面了解程序设计的总体思路、程序设计的基本算法、结构化程序设计的方法,具有初步的程序设计和程序调试的能力。
它要以《计算机应用基础》课程的学习为基础,也是进一步学习《Python高级编程》、《嵌入式技术应用》《机器学习基础》等课程的基础。
二、课程设计思路本课程主要针对软件程序员、软件测试员等岗位开设。
通过本课程的学习,能够熟练掌握C语言的语法规则以及使用C语言进行结构化程序设计的方法与编程技巧,具备独立完成完整C语言项目的基本技能和专业技能,具备基本的职业能力,并使岗位适应能力与操作技能达到软件开发上岗标准。
本课程的开设还为学习《Python高级编程》、《嵌入式技术应用》《机器学习基础》等后续课程奠定基础。
三、课程目标(一)总体目标通过本课程的学习,使学生掌握C语言程序设计的基础知识和基本技能,树立结构化程序设计的基本思想,养成良好的编程习惯,具备软件开发的基本能力。
同时培养学生良好的分析问题和解决问题的能力及爱岗敬业、严谨细致、探究务实的职业精神和技术意识,为后续的应用性课程和系统开发课程打好软件基础。
(二)具体目标1.专业能力(1)对计算机语言和结构化程序设计有基本的认识;(2)能够熟练应用TC或VC++集成环境设计和调试C语言程序;(3)能够在程序设计过程中熟练运用C语言数据类型、运算符、基本语句、数组、函数、编译预处理命令等基本知识;(4)能够熟练掌握指针、结构体、文件等基本知识;(5)会运用C语言设计解决实际问题的程序,并能完成程序的测试。
2.方法能力(1)培养良好的接受新技术、新应用的能力;(2)培养良好的需求理解能力;(3)培养模块化思维能力;(4)培养良好的学习和总结的能力。
3.社会能力(1)培养良好的团队精神和协作能力。
(2)培养学生认真负责的工作态度和严谨细致的工作作风。
四、课程内容组织与安排本课程以国内外最新程序设计基础课程的教学大纲为参照,以软件开发职业岗位为起点,以实际应用为目标,设计了10个学习子项目。
交互式实验报告1. 实验目的本实验的目的是通过开发一个交互式应用程序,探索并熟悉交互式编程的基本概念和技术。
2. 实验背景随着计算机技术的不断发展,交互式编程成为了一种越来越重要的开发方式。
交互式编程允许用户在编码的同时立即查看结果,并进行实时的调试和调整。
3. 实验过程本实验的实验过程主要包括以下几个步骤:3.1 选择编程语言和开发环境为了完成本实验,我们需要选择一个合适的编程语言和开发环境。
根据自己的兴趣和能力,可以选择 Python、JavaScript 或者其他适合交互式编程的语言。
3.2 设计交互式应用程序在设计交互式应用程序时,我们需要考虑用户的需求和功能要求。
可以选择一个具体的领域或者问题,并设计一个可以与用户进行交互的程序。
3.3 开发交互式应用程序根据设计好的应用程序,我们可以开始进行开发工作。
可以使用合适的编程语言和开发工具,按照设计要求编写代码,并逐步实现交互式功能。
3.4 调试和测试在开发过程中,需要进行调试和测试工作,确保应用程序的正确性和稳定性。
可以利用开发环境提供的调试工具,逐步解决程序中出现的错误和问题。
4. 实验结果经过实验,我们成功开发了一个交互式应用程序。
该应用程序可以与用户进行交互,根据用户的输入进行计算或者展示相应的结果。
在实验过程中,我们进一步熟悉了交互式编程的基本概念和技术,提高了编程能力和理解能力。
5. 实验总结通过本实验,我们深入了解了交互式编程的重要性和应用。
交互式编程不仅能够提高开发效率,还能够增强用户的参与感和使用体验。
对于今后的编程工作和研究,这些经验和技能将会非常有用。
6. 参考文献- 文献1- 文献2。
互动教学法在工科C语言教学中的尝试提要:C语言课程是工科学生必修的计算机课程,这门课程内容多,语法繁杂,逻辑性强,传统的方法往往很难达到良好的教学目的。
互动式教学法通过营造互动的教学环境,激发教与学双方的主动性和探讨性,达成一种双赢的教学效果。
通过将探索式、案例式、陷阱式等互动方法融入C语言教学,进行C语言教学尝试,结果提高了学生的学习兴趣,激发了学生的创造力。
关键词:C语言;互动;教学随着电脑科技的普及,计算机基础教育成为高校各个专业的必修课程。
C语言功能强大,能处理声音、图像、数值计算以及系统软件开发等众多领域的问题,倍受工科学生的亲睐。
《C语言程序设计》课程安排在《计算机导论》之后,又在《数据结构》、《单片机设计》等一些专业课之前,可以说起到了一个承上启下的作用。
本文分析了C语言课程的特点,指出传统教学的不足,引入互动式教学方法。
1.C语言课程的特点:C语言课程内容多,教与学双方任务都很重。
课程理论课时为50学时,试验为30学时,常常贯穿一个学期的始终。
C语言这门课程从引入概念,到开始学习数据流程,再到后面的模块化程序设计,以及最后的指针、文件等章节,内容非常多。
各章节环环相扣,联系密切,难度逐渐增加。
对于大学生来说,要想学好它,没有学习的兴趣和坚持不懈的毅力是不大可能实现的。
下面我以一个班级(50人)试验课上学生的反应情况为例,对整个学习期间的学生的心理变化进行分析。
从图1可以看出:5-10个学时学生提问的人数和次数都比较多,这主要是因为此时刚开始引入概念和数据结构等,程序相对简单,学生学习兴趣比较高。
同时学生对C语言不太熟悉,代码上小错误不断,提问频率高。
10-25个学时学生提问的人数和次数逐渐减少,这段时间主要进行函数,指针和数组等编程技巧的学习,此部分章节难度较大。
一部分学生的学习兴趣高,耐久力强,编程能力开始提高;一部分学生接受能力差而且没有耐心,放弃学习。
此时的提问人数明显下降,提问次数也有所下降,主要集中在一小部分学生。
C语言程序设计课程教学内容及教学方法研究(精选5篇)第一篇:C语言程序设计课程教学内容及教学方法研究C语言程序设计课程教学内容及教学方法研究摘要:该文主要探讨了C语言程序设计课程在现有高等教育体系中教学内容及方法。
提出了C语言程序设计课程的教学内容应该分成基础课程和高级课程两部分;提出了根据现实中的问题和需要学习的知识点为依据来编排教学案例,通过增加问题的难度逐步学习掌握更多的知识点。
关键词:C语言程序设计;教学内容;教学方法中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2018)13-0161-03 C语言程序设计课程在教学中出现的问题C语言是现今计算机领域通用的语言之一,虽然并不像上个世纪80年代那样一枝独秀,但仍具有非凡的魅力。
C语言是Thompson、Ritchie等人开发UNIX操作系统的副产品,并用C语言并UNIX操作系统进行了重写。
在C语言普及后,国际标准化组织又多次对C语言进行了标准化,包括C89标准、C99标准和最新的C11标准。
C语言对现代编程语言产生了巨大的影响,许多流行的现代编程语言都借鉴了大量C语言的特性,包括C++,JAVA,OC,Swift,C#等。
考虑到大量新编程语言的普及程度。
高等院校学生还有学习C语言的必要吗?对于这个问题回答:首先,学习C有利于更好的理解其他新式编程语言,能让程序员更好地掌握继承自C语言的基本特性。
其次,现有大量的C语言代码需要维护。
最后,C语言仍然是众多工程领域最重要的编程语言,包括嵌入式开发、智能机器人、智能家居和智能电子产品等。
现今国内大部分高校都会首选C语言作为计算机编程的入门语言。
各专业开设的C语言课程一般都是一个学期讲完,学时数大概在48~64课时之间。
由于学生没有编程基础,很难在这么短的时间内熟悉C 语言的各个知识点。
在各个高校C语言程序设计课程教学中,有两种教学方法比较主流:一种是采用多媒体演示+黑板板书、并用一定的课时量上机练习编程的教学方法,这种方法可以在一学期内讲解完C语言课程大部分知识点。
最佳路线c语言课课程设计一、教学目标本课程旨在通过学习C语言编程的最佳路线,使学生掌握C语言的基本语法、数据结构、算法和编程技巧,培养学生具备良好的编程思维和实际编程能力。
具体的教学目标如下:1.知识目标:–掌握C语言的基本语法和编程规则。
–理解并掌握数据类型、变量、运算符和表达式。
–学习控制结构,包括条件语句和循环语句。
–熟悉函数的定义和调用,理解作用域规则。
–掌握数组、指针和字符串的使用。
–了解结构体、共用体和位字段。
–学习基本的数据结构和算法。
2.技能目标:–能够运用C语言编写简单的程序,解决实际问题。
–熟练使用C语言开发工具,如编译器和调试器。
–掌握编程规范和代码优化技巧,编写可读性和可维护性良好的代码。
–能够运用基本的数据结构和算法解决编程问题。
3.情感态度价值观目标:–培养学生的逻辑思维能力和问题解决能力。
–激发学生对计算机科学和编程的兴趣,培养学生的创新意识。
–培养学生团队合作和自主学习的习惯,提高学生的学习积极性。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、算法和编程技巧。
具体的教学大纲如下:1.C语言基本语法:–数据类型、变量、运算符和表达式。
–控制结构,包括条件语句和循环语句。
–函数的定义和调用,理解作用域规则。
2.数据结构与算法:–数组、指针和字符串的使用。
–结构体、共用体和位字段。
–基本的数据结构和算法,如排序和搜索算法。
3.编程技巧与实践:–编程规范和代码优化技巧。
–调试和测试程序的方法。
–实际编程案例和问题解决。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式,包括:1.讲授法:通过讲解和示范,使学生掌握C语言的基本语法和编程规则。
2.讨论法:引导学生进行思考和讨论,培养学生的编程思维和问题解决能力。
3.案例分析法:通过分析实际编程案例,使学生能够将理论知识应用到实际问题中。
4.实验法:引导学生进行编程实践,培养学生的实际编程能力和实验操作能力。
C语言3D游戏开发实践近年来,随着计算机技术的不断发展,游戏开发成为了一个热门的领域。
而在游戏开发中,3D游戏的呈现效果更加逼真,吸引着越来越多的玩家。
本文将介绍C语言下的3D游戏开发实践,为读者提供一些有关C语言3D游戏开发的知识和技巧。
一、3D游戏开发概述在开始介绍具体的C语言3D游戏开发实践之前,我们先来了解一下3D游戏开发的概述。
3D游戏开发主要涉及到图形渲染、物理模拟和用户交互等方面的内容。
其中,图形渲染是3D游戏开发中最重要的一环,它负责将游戏场景中的虚拟物体转化为屏幕上的像素点,从而呈现出逼真的3D效果。
二、C语言在3D游戏开发中的应用C语言作为一种非常底层和高效的编程语言,广泛应用于游戏开发领域。
在3D游戏开发中,C语言主要用于编写底层图形渲染、物理模拟和用户交互的相关代码。
C语言具有良好的性能和灵活的操作方式,能够充分发挥硬件设备的潜力,使得游戏在性能和效果方面都能够达到较高的要求。
三、利用C语言开发3D游戏的基本步骤1. 游戏需求分析和设计:首先要明确游戏的需求和设计,包括游戏的场景、角色、物理规则等方面的内容。
通过详细的需求分析和设计,可以更好地规划和组织开发工作。
2. 确定游戏引擎:选择合适的游戏引擎是C语言3D游戏开发的关键步骤。
常用的游戏引擎有Unity3D、Unreal Engine等,它们提供了强大的图形渲染和物理模拟功能,可以大大简化游戏开发的过程。
3. 编写游戏代码:在选择了游戏引擎之后,我们需要编写游戏的相关代码。
这包括游戏场景的构建、角色的控制、碰撞检测等功能的实现。
通过灵活运用C语言的特性,可以高效地实现这些功能。
4. 测试和调试:在完成游戏代码编写之后,需要进行测试和调试工作,确保游戏的稳定性和流畅性。
通过不断的测试和改进,可以进一步提高游戏的用户体验。
5. 发布和部署:当游戏经过测试和调试后,可以进行发布和部署工作。
根据目标平台的不同,我们可以选择将游戏发布到PC、移动设备等不同的平台上,以便更多的玩家能够享受到游戏的乐趣。
c课程设计题目文章一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生具备基本的编程能力和良好的编程习惯。
具体目标如下:1.知识目标:(1)理解C语言的基本语法和编程规范;(2)掌握基本数据类型、运算符和表达式;(3)熟悉控制结构和函数;(4)了解指针和数组的概念及应用;(5)理解结构体、共用体和枚举类型。
2.技能目标:(1)能够使用C语言编写简单的程序;(2)掌握程序的调试和优化方法;(3)具备阅读和理解C语言程序的能力。
3.情感态度价值观目标:(1)培养学生对计算机科学的兴趣和热情;(2)培养学生勇于探索、积极思考的科学精神;(3)培养学生团队合作和自主学习的能力。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个部分:1.C语言的基本语法和编程规范;2.基本数据类型、运算符和表达式;3.控制结构和函数;4.指针和数组的概念及应用;5.结构体、共用体和枚举类型;6.程序的调试和优化方法。
第1周:C语言的基本语法和编程规范第2周:基本数据类型、运算符和表达式第3周:控制结构和函数第4周:指针和数组的概念及应用第5周:结构体、共用体和枚举类型第6周:程序的调试和优化方法三、教学方法为了达到教学目标,本课程将采用以下教学方法:1.讲授法:讲解C语言的基本语法、数据结构、算法和编程思想;2.案例分析法:分析典型程序案例,引导学生掌握编程技巧;3.实验法:让学生动手编写程序,培养实际编程能力;4.讨论法:学生进行课堂讨论,促进互动交流。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《C语言程序设计》2.参考书:《C Primer Plus》、《C和指针》等3.多媒体资料:教学PPT、视频教程、在线编程练习平台4.实验设备:计算机、编程软件、实验器材五、教学评估本课程的教学评估将采用多元化的评价方式,全面、客观地反映学生的学习成果。
密码学课程交互式算法演示系统的开发与应用作者:黄新平来源:《软件》2013年第06期摘要:密码学课程是一门抽象复杂、学习枯燥、学生反映难度太大的课程。
在充分地对学习者做了需求分析的基础上,针对如何增强课程的有效性、趣味性和应用性的教学难点,设计开发了密码学课程交互式算法演示系统。
以DES算法为例,介绍了算法演示过程的动态性和交互性以及数据输入的灵活性等特点。
系统解决了现有算法演示系统动态性差、缺乏交互以及难以在算法和动画间建立关联等问题,在实际教学应用中对改进教师的教授方式以及帮助学生更好的掌握复杂的密码学算法,取得了很好的教学效果。
关键词:密码学;DES算法;动画演示;直观演示;教学应用中图分类号:TP391.9 文献标识码:A DOI:10.3969/j.issn.1003-6970.2013.06.003本文著录格式:[1]黄新平.密码学课程交互式算法演示系统的开发与应用[J].软件.2013,34(6):8-120 引言密码学课程是计算机专业信息安全方向的主要课程之一,该课程的主要目的是让学生能够学习、理解和掌握一些常用密码算法的加密和解密原理。
但由于密码学算法的原理过于抽象和复杂,以至于很多学生在学习这些算法时往往感到比较困惑,进而容易产生厌烦的学习心理,从而使其学习的主动性和积极性也受到了一定的影响。
[1]其中,造成密码学算法教学困难的原因主要有如下几点:首先,教材中涉及算法讲解的内容不够详细,多是一些关键概念的图示,缺乏对算法的详细描述;其次,算法的执行过程对学生而言是透明的,学生无法直观的观看到算法的执行过程以及算法执行过程中相应数据结构的动态变化情况;最后,在传统的教学模式下,教师借助黑板和演示文稿等教学资源对算法只能进行抽象的语句讲解和静态的算法描述,而不能进行直观的交互操作和动态的过程演示。
为了解决以上教学难题,人们提出了算法演示的概念,所谓的算法演示,就是把算法的运行与数据结构的变化有效的联系起来,不仅能够让学生观看到算法的执行过程,还可以让学生观看到算法相应数据结构的动态变化情况及结果。
C语言程序交互式虚拟算法动画的开发与教学应用苏仰娜(韩山师范学院教育系,广东潮州521041)[摘要]分析C语言程序算法抽象复杂、学习枯燥等特点及教学中存在的问题,针对现有算法动画形式单一、功能不全、静态数据并缺乏娱乐性等缺点,开发出交互功能强大的动态性、娱教并重的虚拟算法动画。
重点以“选择排序法”为例实现了数据输入的动态性与灵活性,并动态推导了排序过程;以“递归算法”游戏为例,实现了虚拟算法的交互性与娱乐性,旨在变复杂、枯燥的算法学习为直观生动、有趣的娱乐学习。
[关键词]C语言程序;算法;虚拟动画;排序;递归[中图分类号]G434[文献标识码]A一、问题的提出1.C语言程序算法教学存在的问题算法是C语言程序设计的基础和灵魂,然而算法概念复杂、规则繁多、内容抽象、学习枯燥。
如排序法种类繁多,排序规则既高度相似又有差异,部分算法如八皇后问题、汉诺塔等算法其算法思想、规则各不相同,知识点之间没有任何联系,学习时无法进行知识迁移;加上C语言运行环境只提供数据的输入与输出结果,对于算法的运行过程则是抽象而隐蔽的,学习者无法直观看到其推导过程。
这对于刚刚接触程序设计的学习者而言,容易感到困惑并混淆各种算法,进而产生厌烦,甚至产生恐惧心理,从而严重阻碍了程序设计的学习。
[1][2]2.现有算法动画的局限性网络上虽有少量算法动画能对算法过程进行简单的演示,但都形式单一、功能不全面,缺乏娱乐性。
算法动画以独立的形式存在、缺乏系统之间的关联与比较,分散的知识点使学习者的学习缺乏连贯性与系统性。
更重要的问题是采用静态数据的形式,如排序算法中的数据是由系统默认,不能由用户动态输入与数据更新,系统也无法对用户操作进行交互与反馈的功能,个别算法动画虽实现了数据的动态输入,却限制了输入数据的个数与长度,无法实现输入的自由性。
二、虚拟算法的设计理念虚拟算法的开发面向于C语言程序设计的初学者,对各种算法的虚拟尽可能达到涵盖面广,知识点全面,体现交互性与娱乐性。
主要以“排序法”突出系统的交互性、动态性与自由性;以“汉诺塔游戏”、“八皇后问题”及“递归游戏”等游戏动画突出系统的生动性与娱乐性,旨在变复杂、枯燥的算法学习为直观生动、有趣的娱乐学习。
1.动态性通过情节故事动画引入概念启发学生,数据的获取由学习者动态、自由输入,系统自动将数据转换成图形进行推导。
用户可手工操作算法的执行过程,系统提供交互与反馈功能,对操作结果的自动化处理与评价功能。
2.娱教性娱教性强调教学性与娱乐性相统一的设计思想。
娱教理论[3]的基本思想在于承认并尊重学习者当前的生活价值,促进学习者真正的“生活的体验与乐趣”和“学习的目的与手段”的融合。
通过将复杂的算法设计成生动、有趣的娱乐游戏,使枯燥的算法学习娱教于乐中。
三、虚拟算法动画实现过程1.开发工具72目前网络上虚拟算法动画大多为JAVA、Flash等格式。
由于JAVA的运行需要虚拟机支持,而Flash为大多播放器支持适应普通运行环境。
基于矢量图形、流式播放技术的Flash[8]动画,以其容量小、质量高、速度快、简单易学等优点,成为本系统开发的首选工具。
ActionScript[9]是一种面向对象的程序设计语言,其强大的交互性可实现数据的获取与变量的传递,将抽象的算法思想转换为直观、交互的虚拟算法动画。
2.虚拟排序算法的实现(1)排序算法介绍排序算法是计算机最基本的算法,其类型有选择排序法、冒泡排序、中值排序、合并排序与快速排序等。
[4]“选择排序法”与“冒泡排序法”是两种最基本、最常见的排序方法。
选择排序的排序原理与“冒泡排序法”类似,但比“冒泡排序法”减少交换次数,提高了效率。
下面以“选择排序法”为例介绍虚拟排序算法的实现。
选择排序算法思想:从一个含有n个元素的数组中,找到一个最小的元素(通过遍历比较),将它与第一个元素位置互换。
再从剩下的那堆数组中找到最小的,将它与第二个元素位置互换。
(2)虚拟排序算法的设计为将枯燥、单调的算法学习生动化,系统利用心型小图片衬托数据背景,通过图文并茂、赏心悦目的界面吸引学习者的注意力,再配以解说声音与背景音乐,强化重点内容,便于学习者对算法的理解。
功能特点:①数据的动态性:参与排序的数据不是系统预设好,而是让学习者自主输入。
②输入的灵活性:输入数据的个数可以变换。
③系统会根据输入数据自动分步演示排序的推导过程,可分步骤查看或返回上一步。
④用户可自主参与人工排序,系统会给出提示,并根据操作步骤产生反馈信息,对操作结果进行自动化的处理与评价。
(3)技术实现虚拟排序算法的实现过程包括数据获取、数据遍历、数据比较与数据交换四个步骤,每一趟都要经过这四个步骤,排序的趟数因输入数据而异。
①数据获取:如图1所示,系统提示用户输入一组数据,每个数据元素不大于999,元素个数不大于10个,数据必须用半角逗号隔开。
利用“输入文本框”提供输入窗口,对“输入文本框”命变量名获取数据,利用myarray=new Array();创建数组存放数据,利用myarray=txt.split(",")函数对数据的值进行分割,利用n=myarray.length()计算数组的长度。
②数据遍历:如图2所示,数据遍历过程利用i、j、k作为遍历指针,i指向无序区的开始位置,以j为扫描指针在当前无序区R[i..n]中选最小记录R[k]。
遍历指针的移动通过setProperty()函数控制指针影片剪辑的坐标属性实现。
③数据比较:如图3所示,由于数据比较是一个重复执行的过程,因而把数据比较过程制作成比较函数compare(),通过对R[i]与R[j]数据两两进行比较,利用数学运算符“>、=、<”对数据进行比较,由于利用“输入文本框”获取的数据为字符型,比较时要利用Number()函数将字符型数据转换成数值型。
④数据交换:如图4所示,数据比较之后,若R[i]大于R[j],则对数据进行交换;若R[i]小于或等于R[j],则不对数据进行任何处理。
把“数据交换”过程制作成独立的change()函数,当要交换时系统自动调用此函数。
利用duplicateMovieClip()复制影片实现对数据变换过程的动画,数据之间的交换是利用t作为暂存变量,通过t=R[i];R[i]=R[j];R[j]=t;语句实现数据的交换。
图1数据输入界面图2数据遍历过程2.递归游戏算法(1)递归算法介绍为了强化学习者对递归算法的理解,加强实践应用,丰富算法学习的趣味性,可把递归算法思想用游戏形式表现,网络上最常见的递归算法是汉诺塔游戏,下面是以一种新的形式实现的递归游戏。
图3数据比较图4数据交换73[参考文献][1]于清,等.算法为先的C 语言教学模式探讨[J].计算机教育,2009,(6):106~108.[2]邓慧.关于高校C 语言程序设计教学创新的探讨[J].教育科学,2009,(3):161~162.[3]王逢贤.学与教原理[M].北京:高等教育出版社,2000.[4]刘畅.冒泡排序法例程Flash 制作[J].牡丹江师范学院学报,2008,(2):30~31.[5]胡海峰.Hanoi 塔递归算法的三维动画演示在OpenGL 的实现[J].电脑编程技巧与维护,2008,(11):32~35.[6]唐棣,郭禾.计算机图形学算法可视化教学研究与实践[J].电化教育研究,2009,(1):93~98.[7]王晓东.计算机算法设计与分析[M].北京:电子工业出版社,2007.[8]金明花.Flash CS3从入门到精通[M].北京:中国青年出版社,2008.[9]章精设,等.Flash ActionScript 3.0从入门到精通[M].北京:清华大学出版社,2008.(2)递归算法游戏功能设计图5递归算法游戏如图5所示,递归算法游戏中方框中的小猪是主角动画,最上面1~5个按钮是控制小猪运动的5个可选动作“向上走,向下走,左转,右转,眨眼睛”,f1与f2分别是两个子函数,这7个按钮都可以拖曳到右下方的小方块中。
右下方的程序体预设动作由:主程序、函数1与函数2三部分组成,当按钮动作置于其中,按“开始”按钮时,程序则会执行相应的递归动作。
如图5中所示的预设动作中,程序的执行过程为:先执行主程序的动作,调用子函数f1执行f1中的动作,再调用函数f2执行f2中的动作,由于函数f2中又包含f1,所以又得再次执行f1的动作。
运行结果为:小猪“向上走,眨眼睛,眨眼睛,向右走,向下走,向左走,眨眼睛,眨眼睛,向右走,向下走”。
由于一系列的动作连续执行,为了验证结果的正确性,可用trace ()函数输出小猪的动作,通过output 面版输出文字便可验证结果与上述的分析一致。
四、虚拟算法动画的教学应用效果1.教学效果虚拟算法的开发化抽象的算法执行过程为直观生动的推导演示,将算法思想开发成娱乐游戏,丰富了算法学习的乐趣。
虚拟排序算法的教学应用使学生掌握理解各种排序算法的排序过程,理清了各种排序算法的算法思想与区别,克服了学习障碍心理,增强了算法学习的自信心。
特别是排序算法对于数据的获取,系统提供了动态数据输入模式,增加了灵活性,促进学生从多角度思想和分析问题。
“汉诺塔游戏”、“八皇后问题”及“递归算法”等以游戏的形式,变复杂、抽象而枯燥的算法学习为具体、生动而趣味化的学习,让学生通过游戏寓学于乐中,提高C 语言程序学习的兴趣。
虚拟算法能激发学生的学习兴趣与求知欲,培养学生的创造性思维与想象能力。
并针对不同学员的个性化学习调整教学内容,有针对性地因材施教。
2.教育意义(1)改变教学模式:虚拟算法应用于教学变传统的“以教促学”教学模式为“自主学习”教学模式,体现了建构主义所强调的“以学生为中心”的教学观点,符合“混合学习理论”所强调的以“传统教学方式”与“数字化教学手段”相结合的观点。
(2)促进教学双向互动:虚拟算法的“交互功能”实现教师与学生之间、人与机器或情境之间的全方位、能动性的实时交互,得到及时的反馈或请求帮助、示范等。
(3)节省教育投资:虚拟算法打破时空限制,节省教育投资,其网络性与共享性可形成跨城市、跨地区的分布式教育资源网,可解决跨区域师资优化组合的问题,实现名师优课共享。
交互式虚拟算法动画为C 语言程序算法教学创设了新型、自主学习和自由探索的学习空间,是解决算法教学难度的有效途径之一,不仅有利于教师课堂讲解算法的辅助,而且适用于学生的自学操作。
其扩展应用不仅适用于C 程序的算法教学,也适用其他程序设计语言如VB 、VF 、C++等同类课程算法的教学。
74。