计算机编程技术学习范文
时间:2023-09-22 17:21:26
导语:如何才能写好一篇计算机编程技术学习,这就需要搜集整理更多的资料和文献,欢迎阅读由公务员之家整理的十篇范文,供你借鉴。
篇1
摘要:复变函数论是理学专业信息与计算科学的一门基础课。通过学习本课程,能够培养学生严谨而缜密的数理逻辑能力和较强的动手操作能力。本文主要分析了复变函数论的课程特点和主要教学问题,从妥善处理教学内容、增加课外上机操作项目、尝试多种教学手段、改革考核方式和改革教学方法五个方面对复变函数课程教学进行改革探索,提高复变函数课的教学质量。
关键词:复变函数;教学改革;教学质量
中图分类号:G642.0 文献标志码:A 文章编号:1674-9324(2017)13-0091-02
一、引言
复变函数是信息与计算科学专业的一门专业主干课程,与数学分析息息相关。该课程主要研究具单复变量的复值可微函数的性质,研究对象为全纯函数,即复解析函数。复变函数也称为复分析,其推广和发展了数学分析的相关内容,与数学分析有许多相似之处,尤其是在逻辑结构方面。
二、复变函数课程特点和主要教学问题
1.课程特点。根据复变函数的理论体系和信息与计算科学专业设置特点,笔者所在学校为复变函数课安排了48个学时,其中理论教学40个学时、上机教学8个学时。由于学时限制,笔者没能全部讲完各板块内容,而是精选了信息与计算科学专业的必学内容,具体为:复数与复变函数、解析函数、复变函数的积分、解析函数的级数表示、留数及其应用、共形映射、傅里叶变换和拉普拉斯变换。从教学实践中,笔者总结出信息与计算科学专业复变函数论课程存在以下特点。(1)抽象性。复变函数的研究方法实际上是数学分析研究方法的延续,主要目的是建立具有优良性质的解析函数和研究解析函数的主要方法。研究部分多值函数,是复变函数的一个内容,同时也是复变函数课程的一个难点。复变函数应用的广泛性及其在后续课程中的基础性,是复变函数论的一个重要方面[1]。它是一门公认的抽象性很强的学科,概念和理论较多,更加复杂、难懂。(2)实用性。复变函数源于实践,是一门具有系统理论体系的学科,作为强大的工具被广泛应用在自动化控制、理论物理、弹性力学、流体力学、空气动力学、语音识别与合成、信号分析与图像处理、地震勘测、通信与控制及电子工程等众多自然科学领域[2]。
2.主要教学问题。(1)教学内容处理不妥当。复变函数虽然是一门应用广泛的学科,但并非各个板块的内容都必须精讲细讲。在实际教学过程中,笔者发现,所教授的内容没能最大限度地挖掘本专业学生的潜能。在授课过程中,一方面,注重公式的前因后果和推导过程,对定理的证明过程讲得精细,但因学生已修过数学分析,而数学分析中的许多推理方法可直接推广到复变函数论中,让学生对繁杂的推理过程产生一定的抵触情绪。另一方面,没能充分展示各个板块内容在实际生活中的应用。这主要是因为本课程只有48个课时,在这么短的时间内讲授每个板块的知识应用,不现实。(2)课程实践环节不突出。笔者所在学校的复变函数课虽有8个课时的上机训练时间,但这远远不够。复变函数是一门系统学科,可广泛应用于实践中,但内容抽象,因此需要借用相关数学软件如MATLAB来帮助学生理解相关知识点。然而,由于上机课时非常少,很难充分利用MATLAB来展示各板块内容。(3)教学手段不够多元。如今,微课、慕课、翻转课堂等教学方式逐渐改变了传统教学方式,但多媒体+黑板板书的教学方式仍占主导地位,这或多或少地影响了教学效果,减低了学生的学习兴趣。(4)课程考核方式不够理想。复变函数多以期末考试为主要考核方式,即学生的总评成绩由期末卷面成绩*70%加平时成绩*30%构成。这一成绩构成方式较为单一,没有考虑学生其他学习因素。(5)学生学习兴趣不浓。在授课过程中,笔者发现学生的学习兴趣不够浓烈,主要在于这门课本身比较抽象,再加上教师在教学中并没有充分利用各种教学方式,使得学生普遍认为这门课枯燥无味。而有些学生开始时能跟上教学步伐,但越到后面就越听不懂,而后就慢慢地失去了学习热情。
三、改革措施
1.妥善理教学内容。信息与计算科学专业的培养目标是:培养具有良好的数学基础和数学思维能力,掌握信息与计算数学的基本理论、方法与技能,能运用基本理论、方法与技能解决信息技术或科学与工程计算中的实际问题的应用型高级专门人才;同时满足学生个性发展多样化的需要,分流培养学术型人才。因此,在讲授复变函数这门课时,必须考虑本专业的培养目标。在授课过程中,笔者的具体做法如下:(1)精讲绪论内容。绪论是第一次课,一定要把复变函数论的来龙去脉、研究对象、研究方法及其与所学课程的联系、对后续课程的作用等内容精讲,让学生有个初步印象。(2)由于第一章复数部分学生在高中已学过,但大多只是初步了解,因此在讲授这部分内容时,要充分利用现代化的教学方式将把复数的重要地位凸显出来,而对与数学分析中相似的内容如极限与连续等,让学生课前自学,课堂中主要讲授这些内容与数学分析中相关内容的不同之处。(3)重点讲授解析函数、复变函数的积分、解析函数的级数表示、留数及其应用、傅里叶变换和拉普拉斯变换,对繁杂的定理证明,只讲授证明思路,让学生课后尝试证明过程。(4)引入具体实例,让学生感受到复变函数在实际中的具体应用,激发学习兴趣。
2.增加课外上机操作项目。培养和提高学生的动手操作能力,是信息与计算科学专业的一个培养目标,也是复变函数论的一个主要教学目的。笔者所在学校虽然对复变函数论设置了8个课时的上机操作,但课时比较少,很难达到明显的教学效果,为此,笔者尝试增设了复变函数的积分、复变函数的泰勒展开、复变函数的图形、有理函数的部分分式展开式等实验项目,借助学校网络教学平台,把相关实验内容制作成PPT上传到网络教学平台,学生可以在规定的时间内学完相关内容,完成相应的实验,并将这部分内容作为学生考核的一个组成部分。如果学生有问题,可以在网络教学平台中提问,笔者根据实际情况进行解答。
3.运用多种教学手段。除了使用传统的多媒体+黑板板书和网络教学平台外,对有些内容,还可以尝试制作微课,让学生可以课后自学,激发学习兴趣。
4.改革考核方式。由于信息与计算科学专业的培养目标是培养应用型高级专门人才和学术型人才,所以复变函数论这门课应尝试运用多种考核方式,共同构成学生的期末总评成绩。例如,考核方式主要有:平时作业成绩(课后习题作业、课堂考勤情况)、增设课外实验项目完成情况、随堂上机操作实验成绩、期末考试卷面成绩、期末上机考试成绩等。其中,平时作业完成情况体现了学生的学习态度及对所学知识的理解和掌握情况;增设课外实验项目和随堂上机操作实验项目的表现,则体现出学生运用知识解决实际问题的能力;期末考试情况体现出学生对所学知识的整体把握程度;期末上机操作完成情况,体现了学生综合运用知识解决实际问题的能力。因此,利用期末一张试卷的完成情况来判别学生对整门课程的掌握程度有失偏颇,不能真实地反映出学生的多种能力。采用多种考核方式,不仅能够从多方面真实地反映出学生的学习情况和对知识的掌握情况,而且能够充分展示学生的综合能力。
5.改革教学方法。为了充分激发学生的学习兴趣,可运用多媒体作为辅助教学,制作微课,充分利用网络教学平台,采用多种教学方法,如类比法、问题驱动法、导入法等。并且,尽可能地简化理论推导过程,充分调动学生情绪,让他们乐于自主学习,并能切身感受学习复变函数的乐趣。
四、结语
复变函数是信息与计算科学专业的基础课,通过学习该课程,能够培养学生严谨而缜密的数理逻辑能力和较强的动手操作能力。如何提高复变函数的教学质量,是许多教师面临的问题。笔者根据实际教学体验,从妥善处理教学内容、增加n外上机操作项目、尝试多种教学手段、改革考核方式和改革教学方法等方面进行了研究与实践,得出一些见解,以期对提高复变函数的教学质量起到一定的作用。
参考文献:
[1]朱福国,贾秀梅,张飞羽,王汝军.复变函数精品课程建设的探索与实践[J].河西学院学报,2015,31(5):105-110.
[2]史秀波,张琼芬,林亮.复变函数与积分变换教学改革探讨[J].教育教学论坛,2012,(57):207-209.
篇2
关键词:计算机应用;Delphi编程技术;教学方法
中图分类号:TP311.13
1 问题的提出
Delphi 是可视化应用程序开发环境、可重用性面向对象编程语言、快速编译器和数据库技术的完美结合。它具有功能强大、运行速度快、易于学习和使用以及开发迅速等特点。在高校计算机应用及相关专业高年级的学生中开设《Delphi 编程技术》这门课程能培养学生应用可视化的开发工具,进行有关信息系统开发的能力。但是,如果《Delphi 编程技术》的教学采用计算机类课程的传统教学模式——先由教师讲授知识要点,然后隔段时间让学生在机房进行实验,学生往往会觉得这门课程抽象、枯燥,就如体育教师在教室里教游泳的动作,事倍功半,影响教学效果。因此,本文介绍使用多媒体设备,选择一些生动典型的实例,再辅以相应的练习,让学生在边学习边实践中熟悉Delphi开发环境和掌握Delphi编程技术,本文讲述笔者使用实例教学法中的一些体会。
2 实例教学的目的:引导学生的学习兴趣,发挥学生的主体作用。
教学中教是手段,学是主体,教是为学服务的,追求学生最佳的学习效果是教学的目的。要产生好的学习效果,必须引导学生的学习兴趣,增强学生的主体意识,发挥学生的主体作用,引导学生主动、积极地参与教学过程,激发学生的求知欲望,使其觉得学习这门课程是自己的需求。实例教学法利用实例把一些抽象的概念直观化,Delphi 友好的界面也易于引起学生的学习兴趣,在这样的条件下,辅以一些生动、活泼,贴近学生生活,易于被学生接受的实例,如学生选课管理系统、学生成绩管理系统、简单的游戏制作等,让学生觉得该课程不仅有趣而且实用性强,学生就愿意通过自我学习,自我实践把知识引向纵深。
另一方面,计算机应用科学技术日新月异,这要求计算机应用及相关专业的学生必须具备举一反三、触类旁通的能力,从这个意义上说,在教学过程中开发学生的自主学习的潜力,学会学习,意义更重大、更深远。那么,怎么开发学生自主学习的潜力,让学生学会学习呢?要做到这点,在课堂上就实例学实例就不够了,本人试着从以下几方面入手培养学生。
首先,由于课时的限制,课堂上不可能介绍Delphi所有控件的功能和属性,一般同种类型的控件,选择4至5个详细介绍,其余的则引导学生通过阅读课本和参考书进行自我学习。例如,Delphi中有十几个常用组件:Label、Edit、Memo、Button、CheckBox、RadioButton、ListBox、ComboBox、ScrollBar、GroupBox、RadioGroup等,全部详细介绍既费时也没必要,只要选择其中几个有代表性的详细介绍,如详细介绍Edit、Memo、ListBox、ComboBox、ScrollBar,其余组件稍作提示后让学生自学即可。
第二,《Delphi 编程技术》是实践性很强的课程,要特别注重学生的自我动手实践,所以讲解完实例,要相应地给学生布置一个练习。练习不能是让学生把课堂上的实例照原样实现一遍,练习既要有具体的要求,又要留给学生自我发挥的空间,鼓励学生充分应用想象力和创造力完成。例如常用组件的功能、属性及事件介绍完后,可要求学生用这些组件实现输入时间(包括年、月、日、时、分、秒、星期),然后显示时间的练习,强调输入时间的方式是否多样化,界面布局是否友好是该练习的成绩的依据。至于怎么布局,用什么控件进行输入则让学生自己发挥,这样,学生会以完成自己的作品的态度来完成练习,以增加学生学习的成就感。最后,把优秀的作品拿出来让大家共同欣赏,让所有学生都从中有所收获。
第三,通过学习Delphi引导学生强化计算机英语的学习,为今后的进一步学习打下坚实的基础。Delphi中的提示信息是英文信息,要想让学生更好地进行自主学习,将来熟练地使用这项编程技术,熟悉这些英文提示很重要,所以,在课堂上有意识地引导学生,要学生用心认识这些英文信息,并最终能利用这些英文信息,减少编程过程中对教师的依赖性,增强独立编程的能力。
第四,强调学生在学习过程中要注意Delphi编程技术是“一种能自我发展的编程技术”。一方面,随着Delphi版本的不断更新,Delphi的新功能和新特点不断出现;另一方面,学生可以方便地通过Internet下载一些原系统没有但别人编写好的方便实用功能强大的控件,同时,鼓励学生自己编写一些自定义构件供自己使用。
第五,为了有利于发挥学生的主体作用,要积极培植师生间融洽的情感气氛,营造生动活泼的课堂氛围。鼓励学生从多种途径去寻求解决问题的方法,让他们平等地参与讨论,自我解决问题。
3 实例教学法必须精心设计实例
是否精心设计实例关系到实例教学法能否成功。教学过程中,本人对实例的设计基本上贯彻三个原则。
第一,实例内容应循序渐进、由浅入深。根据这个原则,本人将教学过程划分为四个阶段:①介绍Delphi的集成开发环境、各种控件的使用和集成调试器。②介绍如何用Delphi开发多媒体应用程序。③介绍如何用Delphi开发数据库应用程序。④介绍如何开发自定义构件及开发Internet应用程序等。每个阶段辅以若干实例,在讲解实例的过程中列出该实例的技术要点及通过实例要学习的知识点。
第二,实例内容能够基本涵盖Delphi的各类控件的功能与特征。在四个阶段的课程中,每个阶段都有学习的侧重点,课堂上不可能也没必要详细介绍全部控件,在教学过程中要把控件分类,以几个控件辐射一类控件。当然,最后可以让学生动手制作一个简单但能综合应用各种控件的数据库系统,如学生成绩管理系统,该练习既包含了窗体、菜单、面板组件、快速按钮组件以及其他一些常用组件,又使用了各种对话框组件及基本的数据库组件。
第三,围绕教学目的设计典型、有代表性的实例。每一堂课都有教学目的,课堂的教学内容应围绕着教学目的展开,实例教学法也不例外。所以,在备课时首先要考虑的是教学目的,即这堂课要求学生学习哪些控件的功能及特征,通过这些控件学生又能自己学习到哪些控件的功能及特征,根据教学目的,去精心设计典型、有代表性的实例。只有这样,每堂课的学习才能体现其侧重点,学生学习时才能有针对性、有目的性。例如,在介绍用Delphi开发多媒体应用程序时,只要两个实例,一个实例学习利用Delphi进行多媒体动画制作,另一个实例学习利用Delphi实现声音,有了这样明确的目的性,用不多的课时就可以让学生学会用Delphi开发多媒体应用程序。
篇3
【关键词】计算机 软件开发 JAVA编程语言 应用价值
JAVA编程语言最初是一种专门为计算机系统设置的产品,但是随着互联网技术和计算机软件技术的发展和进步,JAVA编程语言逐渐演变、改革和发展,最终成为计算机软件开发中的编程语言,而且为互联网的服务性能的提升起到了至关重要的作用。而且据目前的计算机编程的发展形式看来,国内的计算机编程技术还有很大的发展和进步空间,因此本文主要针对计算机软件开发中JAVA编程语言的应用价值进行分析和讨论,主要包括JAVA编程语言的特点以及在计算机软件开发中的应用,其中主要是应用价值部分。
1 计算机软件开发中JAVA编程语言的特点
尽管JAVA编程语言在我国已经得到了一定的发展,而且也占有了很大的市场。但是仍然有很多人对JAVA编程语言不够了解,在本文的开始部分主要来讨论计算机软件开发中JAVA编程语言的主要特点。
1.1 JAVA编程语言的语法相对来说都比较简单
JAVA语言与C++语言彼此的语法结构等都非常接近,相对于其他程序用语言来说都比较简单。在计算机软件开发中语言结构及语言是指一种能够将各种语言的每个部分有机地结合起来,进行一定的处理之后以一种特定程序的形式显示出来的。但是JAVA编程语言又是区别于C++语言的,它是C++语言的更高级的形式,JAVA编程语言是在c语言和C++语言的基础上形成的,是它们的更高级形式,在技术上也更加成熟,运用的语法结构也就相对比较简单一些。这对于计算机技术的发展以及计算机软件开发技术的提升都是很有帮助的,而且对于学习和研究JAVA编程语言的学生和研究者来说都会更方便!
1.2 JAVA编程语言是一种有对象型的语言
JAVA编程语言是一种有对象型的语言是区别于其他语言来说的。具体来说就是指编程语言在编写计算机源程序时会将一个程序分为几个不同的模块,但是JAVA编程语言不同于其他各种类型的语言的就是它能够智能识别信息,而且每个模块的建立都是根据程序的具体需求的,都有自己的服务对象,这样不仅简化了编程步骤,而且大幅度地提升了系统和程序的运行、工作效率。总的来说就是在JAVA编程语言技术的模式下整个系统和程序会更容易编写、维护以及运行!
1.3 JAVA编程语言具有较好的可移植性
JAVA编程语言与其他编程语言相比另一个不可比拟的优势就是JAVA编程语言具有较好的可移植性。简单来说就是JAVA编程语言能够在网站上比较方便地下载和使用各种资源。相对于其他的编程语言来说JAVA编程语言能够更加方便计算机用户使用网络资源,包括各种图片、视频资料等,这个特点对于计算机的远程资料传输有很大的帮助。这就是JAVA编程语言的可移植性。
2 计算机软件开发中JAVA编程语言的具体应用
2.1 能够设计出动态的画面,而且还能够调用图像和图形
用户在计算机网络上观看的各种视频以及各种动态图片都是根据JAVA编程语言设计制作的,这就是JAVA编程语言在计算机软件开发中的最重要的应用,如果没有这种编程语言计算机呈现给我饿们的将只是一个个不衔接的图片,甚至是没有色彩和图像的,这样计算机软件开发就失去了它的真实意义。因此必须要保证JAVA编程语言在计算机软件开发中的正常运用,只有这样计算机的正常工作和服务才能得到保障!
2.2 能够将互联网分模块设置,更方便人们查找
互联网给大家生活带来的方便自然不言而喻,人们可以迅速从海量的网络信息中找到适合自己的,这主要就是JAVA编程语言程序的功劳,在讨论JAVA编程语言的特点时就已经提到过JAVA编程语言能够将信息分模块处理,在具体的应用过程中体现出来就是将互联网各项功能信息分模块收集和处理,每个版块不同,服务对象不同,信息自然也就不同,人们根据自己的需求筛选出对自己最有利的信息,这同时也是互联网的一大功能和受欢迎的主要原因。这就要求在计算机软件开发过程中必须要嵌入JAVA编程语言,使得计算机和网络信息能够以更加清晰和明确的方式呈现在大众面前!
2.3 能够设计交互操作
在JAVA编程语言程序的运行下计算机的软件开发技术能够设计交互操作,具体来说就是能够选择性地控制计算机软件开发的流程,包括定向和不定向交互,选择交互等,将各种信息和资源进行交换和处理,实现计算机软件开发的可控制性和可视化,进而保证计算机运行时候的可操作性,这个应用价值就在于如果计算机软件没有这个功能,人们就无法控制计算机,那么计算机就失去了它存在和使用的意义。因此在计算机软件开发过程中必须要引进JAVA编程语言。
以上只是几个JAVA编程语言在计算机软件开发中的重要应用,实际上JAVA编程技术和计算机软件开发是相辅相成,相互制约的关系,缺少了任何一个计算机都无法正常运行,但是需要注意的是在JAVA编程语言运用的过程中必须要根据特定的版本和领域,选择特定的JAVA程序,避免不必要的麻烦,保证计算机软件的运行稳定、灵活和完整,进而保证计算机网络的正常运作!
3 小结
综合以上的分析和讨论可以很明显地看出计算机软件开发和JAVA编程语言是两个相辅相成的技术和程序,缺少了任何一个计算机都不能正常运行。JAVA编程语言在计算机软件开发中的应用价值正在随着技术的进展不断增大,而且目前国内很多投资者很看好JAVA编程技术在国内计算机和信息技术智能化行业的应用,相信在不久的将来JAVA编程语言的技术水准及其在计算机软件开发中的应用价值会不断增加!期待JAVA编程语言在我国计算机行业的新明天!
参考文献
[1]田智.基于计算机软件开发的JAVA编程语言分析[J].硅谷,2014(19):59-59,37.
[2]路帅.计算机软件开发中JAVA编程语言的应用分析[J].中文信息,2014(08):2.
[3]曲志鹏.关于计算机软件开发的JAVA编程语言研究[J].消费电子,2014(06):196-196.
作者简介
刘芳(1981-),女,包头市人。大学本科学历。现为内蒙古电子信息职业技术学院高级讲师。主要研究方向为计算机科学与技术。
篇4
论文摘要:在建构式教育理论的指导下,以就业需求为目标,针对数据结构教学中教与学目标不明、学习信心和动力不足、编程基础薄弱等问题,提出建构式的数据结构教学方法,在实际教学中取得较好的教学效果,这些措施也可作为其他计算机专业课程教学的参考。
近年来,在产业界急需大量软件开发人员的情况下,普通本科院校计算机专业学生的就业率持续走低。网络、报纸等媒体对计算机本科教育现状多有批评,甚至出现了大学不如培训公司的极端观点,严重影响了学生对专业课程的学习兴趣、动力和信心。数据结构是计算机专业的核心基础课程,上承程序设计语言、离散数学,下启操作系统、编译原理等课程,其重要性不言而喻。一方面,数据结构学科具有难度大、抽象层次高、概念繁杂等特点,学生很难掌握,更不要说将抽象理论与就业实践需求相结合。另一方面,国内主流数据结构教材和相应的传统教学模式侧重于培养学生的计算机学科基础理论素养,而将如何通过组织数据结构教学活动积极推动就业的问题留给了任课教师[1]。这造成了学生学习数据结构的目标不明、信心和动力不足。笔者面向就业需要明确了数据结构的两大主要教学目标,并在实际教学过程中实践建构式教育理论,尝试解决学生对专业认识不清、学习兴趣不足、编程基础薄弱等问题。一些做法得到了学生的认可和配合,成功地激发了学生的学习主动性、在一定程度上培育了学生的创新精神。
1面向就业需求的数据结构教学目标
教育要服务于社会生产需求。数据结构教学也必须紧扣这一根本目标。本节从满足就业需要的角度阐明了数据结构教学的两个主要目标:
1) 培养超越具体程序设计语言技巧的编程技术。
现阶段是一个传统的生产生活方式迅速向电子化、信息化转变的时期。人们需要开发和维护更多、规模更大的计算机系统来满足生产和生活的需要[2]。这就决定了具有熟练编程技术的程序员在很长时期内都将受到产业界的青睐。大学对学生编程技术的培养始于程序设计语言的教学,如C语言,Java语言等。但是现今编程语言繁多,各种新概念层出不穷,常常出现学生无所适从或者质疑某门语言课程已经过时无用的现象。甚至很多教师也在争论讲授何种编程语言。笔者看来掌握编程技术(而不仅仅是语言),回归编程的本质问题更加重要,无谓地追赶时髦不可取。作为编程语言课程的后续,数据结构教学的重要目标就是帮助学生理解编程的本质、锻炼编程技术以及学习提高编程技术的方法。
2) 培养围绕复用的软件开发方式。
随着软件规模的日益增大,软件开发模式逐渐从“从无到有”的模式过渡到“从有到有”的模式,即复用现有的丰富的软件资产,开发新的应用系统。事实上,复用的思想已经被广泛的用于软件开发实践之中,从各种各样的程序库、软件开发包、软件构件、Web服务等各种可复用资产已经简化了软件开发的难度、提高了软件开发的效率也极大地改变了软件开发的模式。数据结构学科本身就是对软件复用思想的一种实践,它通过总结大量软件系统中反复出现的数据结构(如表、树、图、集合等),定义和实现处理这些数据结构的基本操作,最终达到能够在不同项目开发中反复应用的目的。这些基本数据结构和算法已经被实现为可复用的产品随着程序设计语言,如C++ STL、C# collections, Java collections等,并得到了广泛的使用。因此,数据结构教学的另一个重要目标就是引导学生习惯围绕复用的软件开发方式,能够使用和定制已有的数据结构和算法库。
其他传统的数据结构教学目标,如培养学生面向实际问题进行算法设计和分析的能力,培养学生计算机学科的基本理论素养和思维方式等也非常重要。但普通本科院校学生对理论内容的接受能力以及将理论和现实就业需求相联系的能力相对较弱且教学时间有限[3],笔者认为重点突破本节给出的两个更具体、更可达的教学目标,并在实现这种具体教学目标的过程中潜移默化地培育学生的计算思维和理论素质,将会取得更佳的效果。
2建构式数据结构教学
教学理论研究以及教学实践反馈均表明,学生主动学习的效果远较被动地接受老师灌输的效果好的多。因此,为实现上述教学目标,在建构式教育理论的指导下,笔者探索并采用了一系列建构式教学措施,激发学生的主动性和兴趣,取得了较好效果。
建构主义认为,学习并非学习者对教师所授知识的被动接受,而是学习者以自身已有知识和经验为基础的主动建构过程[4]。知识不仅是通过教师传授而得到,更是学习者在一定的情境中,利用必要的学习资料,通过同化新知识、顺化自身知识结构的方式而获得。建构主义提倡在教师指导下的、以学习者为中心的学习,也就是说,既强调学习者的认知主体作用,又不忽视教师的指导作用,教师是意义建构的帮助者、促进者,而不仅仅是知识的传授者与灌输者。学生是信息加工的主体、是意义的主动建构者,而不仅仅是外部刺激的被动接受者和被灌输的对象。下面从理论教学和实践教学两个方面介绍我们采用的一些教学措施。
2.1理论教学措施
课堂教学是数据结构教学活动的主要部分,充分利用课堂教学时间,激发学生学习数据结构的兴趣和信心,帮助学生建立学习数据结构的环节非常重要。我们采用了如下措施:
1) 组织小型讨论。
好的开始是成功的一半,好的课堂教学须在上课之初就抓住学生的注意力,让学生带着轻松、愉快的心情听课。我的做法是在课堂的前5分钟,提出一个学生感兴趣的话题,组织若干个有3~5位同学参与的小型讨论。到一个学期结束时,每位同学都有至少一次的发言机会。讨论的主题可以灵活设置,如时事、技术、社会热点等。有时,课堂中间学生比较疲惫、注意力下降的时候,也可以穿插一点讨论,改善课堂环境。大多数学生非常喜欢这种讨论活动,积极参与其中,成为课堂的一部分,从被动上课转变为喜欢上课。
2) 重建理论知识所针对的问题。
国内的经典数据结构教材侧重严谨的理论,较少讨论各种概念、算法出现的背景以及探讨的问题是否仍然具有现实价值。而回答这些问题能够帮助学生重建理论知识所针对的问题原型,重现解决方案的提出、发展乃至最终成熟的整个过程,更有助于培养学生解决实际问题的能力,养成批判性、创新性思考的习惯。众所周知,关于树的存储方法很多,有双亲表示法,孩子表示法和二叉链表表示法[5],其中以树的二叉链表表示法使用最广,但其他存储方法也有其适合的应用。例如,在利用树表示各个集合,求集合中的等价类时,双亲表示法更为合适。每一个集合都用树的双亲表示法存储时,并设树的根结点的值为集合名,集合中的每个成员都对应一个结点,这样很容易找到一个元素所属的子集(顺着双亲指针找树的根结点)。
3) 组织“我来讲”活动。
数据结构涉及很多抽象的概念和算法,初学者很难理解。而教师则对理论内容比较精熟,常常倾向于从理论的角度逐步递进、展开讲解,这就增加了学生的学习难度。教师和学生在教学语言上的鸿沟是影响教学效果的一个重要障碍。教师当然可将抽象的理论概念与生活中更形象的概念进行类比,帮助学生理解,也可以将复杂的算法过程用多媒体动画模拟出来,直观地展示给学生,帮助学生掌握。但一方面,根据建构主义理论,教师和学生的知识背景不同,由教师设计概念类比语境和算法模拟动画实际上仍然是基于教师的知识结构对知识点进行的同化和顺化,而不是对学生知识体系的直接建构。另一方面,教师的经验和智慧有其局限性,未必总能够找到最适合的类比语境和动画模拟。为此,笔者采用了充分发挥学生智慧的方法,组织“我来讲”活动,要求学生通过设计算法的动画模拟,创建概念的类比语境等方式进行学习,并随机选择学生走上讲台对抽象理论概念和复杂算法进行说明。这样不但能够调动学生思考问题,还能帮助那些无法完成自我知识体系建构的同学从学生的视角去理解同一个问题。例如,对于n维数组是元素为n-1维数组构成的线性表这一递归的类型定义,可采用符号推理的方式,培养学生的理论素养,而同时可鼓励学生根据自己的理解将抽象理论具体化,建立帮助理解和记忆的现实语境。
2.2实践教学措施
数据结构是帮助具有基本编程语言基础的学生锤炼编程技术的关键课程。它揭示了程序设计的基本面,即如何处理相互之间存在一种或多种数据关系的数据元素所构成的集合、如何设计算法并分析算法的优劣。若没有相应的配套实验指导学生如何将理论应用于实际问题,只是泛泛而谈、纸上谈兵,学生容易迷失在数据结构的一连串复杂概念和算法之中,而不知道学习数据结构的意义何在。为实现教学目标,笔者锁定实验内容设置和实验考核等两个关键环节,实践了如下措施,取得了较好效果。
2.2.1实验内容设置
实验内容设置是进行实践教学的最重要部分。从覆盖知识点的角度看,实验内容须面向数据结构教学目标,即实验内容须能够锻炼学生的编程技巧,如算法设计、调试、测试以及调优等能力,还能够让学生体会到围绕复用开展软件开发的威力以及思路。从覆盖教育对象的角度来看,实验内容须面向大多数同学并充分考虑优秀同学,即实验内容须划分不同的层次,让大多数学生能够很容易入手,并让有能力、有余力的学生能够不断地深入,直至形成综合型课程设计。
基于以上考虑,并借鉴同行经验,笔者开展三个层次的实验教学活动,一是要求所有学生都完成的实验内容,要求学生采用不同的数据结构实现同一个问题并进行对比分析,例如,分别使用静态数组和动态分配的连续内存区实现顺序表,使用整型、字符型数组或者链表实现长整数的乘法,使用带头结点或不带头结点的循环链表模拟约瑟夫环等;二是组织程序设计竞赛,让部分学有余力的同学能够在算法设计、程序实现和调试、优化等方面得到锻炼和提高;三是设计综合型课程设计锻炼学生解决问题的综合能力,并通过适当分组,培养学生团队协作精神和能力,锻炼学生解决问题的综合能力的目标,最终达到以点带面全面提高学生能力的目的。
2.2.2实验考核手段
考核手段在教学环节中至关重要。考核手段是学生学习和锻炼自身能力的风向标。为保证每位同学都能积极完成实验并有所收获,避免抄袭和敷衍的现象,笔者采取了综合型的考核手段。其一,提交实验成果,即程序及其运行结果;其二,记录实验过程、分析实验结果以及总结实验得失的实验报告,对实验报告进行选优讲评,培养学生撰写科学实验报告的能力;其三,每位同学必须面向教师讲解自己编写的程序,包括主要思路和细节性语法,优秀的同学可走上讲台宣讲自己的实验方案和程序设计技巧。这就基本杜绝了学生相互之间抄袭程序和实验报告的现象,使得学生真正能够思考问题,并尽力动手完成实验。综合上述三种手段的综合型考核方法既能够达到督促大部分同学完成实验、锻炼动手能力目的,又能够达到培养优秀同学的目的。特别地,优秀同学宣讲活动能够使学生观摩到如何从学生的视角从无到有的解决问题的过程,这能够培养学生解决实际问题的信心并激发其学习积极性。
3应用中遇到的问题
建构式教学模式在应用和推广过程中遇到的主要问题来自三个方面。其一,目前学生的课业负担较重,习惯于被动“填鸭”而不习惯于主动“求索”,这是推动和开展建构式教学模式的主要障碍。其二,建构式教学活动,需要师生的密切交流,但现有师资不足难以满足实际需求。一个可能的解决方法是综合多门课程和多个老师,建构整体的知识框架和学习体系,避免课程教学中的重复劳动,提高师资的利用率。另一个可能的解决方法是利用互联网技术,建立在线教学园地。其三,建构式教学模式仍然处于探索阶段,各学科缺乏建构式教学素材。从笔者在实践教学的体验来看,应尽量从学生的学习背景和能力成长规律出发而不仅仅是从学科背景出发,为学生建构知识体系设计更平滑的路线。
4结语
笔者提出将“培养超越具体程序设计语言技巧的编程技术”和“培养围绕复用的软件开发方式”作为普通本科院校的数据结构教学目标,在建构式教育理论的指导下,设计并实践了一系列建构式教学措施,分析了应用建构式教学模式所遇到的一些问题。
未来将开展两个方面的工作。一是通过问卷调查、统计分析等手段定量地分析建构式教学方法的实际效果;二是创造和积累建构式教学素材,如研究数据结构课程设计过程中不同类型学生的知识建构路线,挖掘并推广其中优秀的知识建构方法。
参考文献
[1] 教育部高等学校计算机科学与技术教学指导委员会. 高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[M]. 北京:高等教育出版社,2006:8-101.
[2] 蔡敏,郑尚志,梁宝华.“数据结构”课程教学改革之我见[J]. 计算机教育,2009(4):50-51.
[3] 揭安全,李云清,杨庆红,等. 项目教学模式指导的“数据结构与算法”教学改革[J]. 计算机教育,2008(22):21-23.
篇5
关键词:能力培养;网络编程技术;教学方法;教学改革
网络编程技术作为“计算机网络”的后续课程,在计算机类专业课程体系中占有十分重要的位置,是理论与实践相结合的关键课程。本课程要求学生在理解计算机网络、操作系统等基本理论的基础上,掌握客户/服务器模型,掌握TCP/IP协议簇中链路层、网络层、运输层等网络应用程序的设计思想和编程模型,运用高级语言进行开发,同时能够利用相关网络知识解释程序运行中的现象,解决实际问题。
目前,高校本科生的选修课程学时普遍被压缩,如何在有限的学时内,让学生最大限度地了解网络编程技术,增加课程信息量,提高学生学习兴趣,培养学生的问题求解能力是非常值得思考的问题。本文结合笔者多年的教学经验,总结了一些有效的教学方法。
1课程项目在教学过程中的驱动作用
传统的教学模式以讲授法为主,只是针对程序设计语言的语法进行讲解,内容枯燥无味,教师注重讲授,学生被动接受,学习积极性不高,效果也不好。
网络编程技术是一门与实际应用结合紧密的课程,课程项目可以在教学过程中产生积极的驱动作用。教师在教学过程中逐步将所教内容对应于项目中,既调动了学生学习的积极性,又使学生能够系统地学习所需要的知识[1]。具体做法是:
1) 在课程学习之初,教师就向学生布置若干与网络编程相关的课程项目,要求学生学习完本课程之后能设计出对应的软件。学生根据自己的兴趣,以小组为单位选择其中一个作为本课程考核的项目,提交项目申请书。
2) 在项目的实施过程中,教师将项目进度简化为申请―设计―实现三个基本步骤,每个步骤要求学生根据阶段进展写出相关文档――《课程项目申请书》、《课程项目设计文档》和《课程项目结题报告》。学生在动手实践过程中锻炼了对较大问题的模块划分、编码、分工协作、科技文档写作等技能。
3) 在教学过程中,教师全程指导、策划,负责各个模块之间协调进展,同时负责解惑答疑,及时修正存在的问题,在涉及到课程项目实施细节处及时与教学知识点联系起来,由此达到将案例教学与项目驱动教学相结合的目的。
在项目开发的每个阶段,各开发小组完成相应模块后,以讨论课形式展示自己的作品。肯定成绩,找出不足,学生能够在积极融洽的环境中相互学习、取长补短,不断完善自己的作品;而对于一些创意新颖、主题突出、有独创性的作品,则及时给予表扬和鼓励,这样可以不断加强学生的信心,让学生能长期保持饱满热情。
2以问题为线索的教学内容设计
网络编程课程涉及的知识面很广,从TCP/IP四层体系结构来看,每个层次都存在多种编程方法,如直接网卡编程技术、基于Packet Driver的网络编程方法、基于NDIS的网络编程方法、WinPcap编程、WinSock编程、基于WWW应用的网络编程、Web Service编程等等。如果将每种方法都面面俱到,不一定会起到好的教学效果,一方面,每种编程方法使用的开发环境不同、函数库不同,使得学生短时间难以掌握;另一方面,网络编程的核心在于程序设计思路和传输过程中关键问题的解决,在课时有限的情况下过于关注函数使用方法,无法透彻地将这些核心思想灌输给学生。
我们在教学内容设计时,本着“授之以渔”的目标,从网络程序设计中提炼出编程中涉及到的若干关键问题,并围绕这些关键问题重新组织教学内容,帮助学生更清晰地把握知识点。
2.1从应用出发选择授课内容
首先,将现有的诸多网络编程方法按照其操控的数据内容在TCP/IP体系结构中找到相应位置,如图1所示。在此基础上,结合学生的实际工作需求,授课内容选择了可操控链路层、网际层、运输层三个层次上的常用编程方法:WinSock编程和WinPcap编程。
2.2从问题出发组织授课内容
考虑到两台主机间互联通信主要涉及到以下若干关键问题。1)会聚:解决对等的应用程序以何种顺序、什么时间进行交互的方式。2)接口:解决应用程序如何使用操作系统的TCP/IP协议栈功能进行网络操作。3)异步:解决套接字在非阻塞模式下如何确定可读/可写的时机问题。4)测试:解决如何进行网络应用程序的调试问题。5)传送:在数据传输过程中,我们可以为应用程序选择不同的底层传输服务,在课程中将涉及到数据流(对应于流式套接字)、数据报(对应于数据报套接字)、协议分组(对应于原始套接字)和数据帧(对应于WinPcap)等4种方法实现数据传输。每种方法都有其特点,学生要在明确其适用场合的基础上学会基本的通讯功能和处理细节。
因此,网络编程的授课内容被组织为网络通讯过程中的5大问题:会聚、接口、调试、传送和异步,如图2所示,教师针对每个问题分专题进行讲解,使课堂内容更加清晰。
2.3从效果出发设计教学过程
在课程规划上,强调基本概念的理解与实践相融合,网络编程作为应用型课程,其理论基础部分已在计算机网络、网络协议分析课程中学习过,但课程偏重理论介绍,学生难以与实际相结合,因此,网络编程课首先要帮助学生完成理论到实践的衔接。
上课时采用案例式教学,每讲到一种编程模型,将常用的网络扫描、网络游戏、文件下载等实例的分析与实现以案例的形式出现在课堂中,既形象地将理论与实践结合起来,又提高了学生的学习兴趣。
从教学效果上看,案例式教学启发了学生的兴趣,丰富了学生的知识结构,鉴于课堂上的少量案例仍然不能涵盖大量的实际应用,为了避免学生在学习过程中过于注重细节,造成“只见树木不见森林”的问题,在教学方法上,教师注重由点及面的教学思路,在每一讲结束后进一步启发学生思维,跳出简单的程序编写细节,举一反三。如教师在介绍数据填充时,从最简单的字符型数据,启发学生考虑稍复杂的携带固定含义字段的数据(如四字节的ICMP的时间戳字段),再考虑更复杂的结构体数据,更进一步思考如何设计一个新的协议。通过这种方法,使得课堂教学内容与实际的关联性更加密切,引导学生自主学习。
3专题性与综合性相结合的实践教学设计
网络编程技术课程的实践性很强,学生只听不练很难达到学习该课程的目的[2],因此在理论教学的同时还要加强上机实践教学,将上机实践环节贯穿于课程教学的全过程。在实验内容选择上,教师要充分考虑实验题和理论教学的衔接,以及实验题目的综合可操作性、趣味性和难度,为此,将实践教学部分分为专题实验和综合实验两部分。
3.1专题性实践教学设计
专题实验的目的在于对课堂讲授理论的验证和运用,为此,结合教学内容,将专题性实践教学设计为6个必做实验,如表1所示。
6个实验围绕一个回射程序展开,基于流式套接字实现的回射客户端和服务器是基础,在此基础上,后续实验稍加改动就可以完成,修改内容侧重于程序的可靠性、并发性和功能性。修改的内容与课堂讲述的重点内容一致,更有针对性地锻炼学生编程能力。
在程序运行过程中,模拟正常交互、服务器关闭、客户端异常退出、服务器主机崩溃、大量客户端请求等情况,结合嗅探器和netstat命令监视程序运行过程,要求学生结合网络理论来解释和解决编程实现过程中的实际问题。从实践教学效果来看,学生在分析通信流量和主机网络状态的过程中,既锻炼了网络测量方法的应用和网络应用程序调试的技巧,又有效地将计算机网络相关理论应用于实际问题的处理和分析,同时也直观地感受到各种方法开发出的网络应用程序在实际交互过程中的优势和劣势。
由此,通过一个实例在各种网络环境下的实现,帮助学生理解不同类型通讯方式在实现中的差别,并进一步明确编程方法的选择策略。实验内容前后衔接,递进安排,工作量适中,达到了理论与实际相结合的目的,充分发挥了学生的主观能动性,培养了学生分析问题、解决问题的能力。
3.2综合性实践教学设计
课程项目作为实践教学的综合设计环节,目的在于模拟真实项目开发过程,培养学生团队意识,锻炼学生分析问题、解决问题的能力。
结合网络编程技术的教学要求,设计6个综合类教学项目,分别是简单聊天程序、多线程网络文件传输、基于C/S的密码验证程序、traceroute的设计与实现、半开端口扫描器的设计与实现和ARP欺骗。
在教学项目实施过程中,以学生为主体,教师负责组织协调和必要辅导的工作,学生以小组为单位,共同围绕某个项目进行分析和研究,查阅、自学相关的文献资料,确定技术路线、实施方案和小组分工,最后以小组为单位进行答辩。
综合实验环节模拟实际的软件开发过程,提高学生的兴趣,也培养了学生的探索创新能力和团队协作精神。
4综合课程考核方法
传统基础理论课的考核方法通常采用卷面笔试考核,这种考核方法强调的是学生对知识点的理解和综合问题的分析能力,但是对于实践类课程而言,它更强调学以致用,因此,一味要求学生对知识点的死记硬背无疑起不到好的效果,考核应贯穿学生的整个学习过程,比如课程项目实施进度、小组分工协作情况、疑难问题的解决等。如果能够对整个过程的若干关键环节进行衡量,那么,网络编程技术的考核也就完成了。
综合考虑以上因素,本课程成绩评定没有采用卷面笔试形式,而是采用教师评定与学生打分相结合、课程项目成绩与平时成绩相结合的方法。综合成绩=课程项目成绩(50%)+平时成绩(30%,包括实验成绩、考勤情况等)+学生评定成绩(20%)。课程项目成绩考核学生对整个课程内容的掌握和运用,平时成绩主要针对学生上课出勤率和每个专题实验的完成情况,学生评定是对小组内成员工作情况的肯定,采用无记名方式提交,在一定程度上遏制了个别同学复制别人劳动成果的现象,同时也提高了学生的学习动力。
5结语
以上是我们在该课程实际教学中实施的一些具体做法。课程项目促进了学生加强网络编程学习的动力,它能够在培养学生的学习能力和实践能力的同时,加强项目维护、分工协作等多方面技能的培养,更真实地展现实际工作的需求和实施过程。同时,有效的教学内容设计、专题性与综合性相结合的实践教学环节和综合课程考核方法在教与学的各个环节都起到了有效的促进作用。实践证明,通过上述教学方法和手段,大多数学生的学习兴趣明显增强,实践动手能力得到很大提高。
参考文献:
篇6
关键词:高级语言;表达式;算符优先;堆栈
中图分类号:TP301文献标识码:A文章编号:1009-3044(2007)03-10798-02
1 引言
程序设计语言随软件技术的发展而快速发展,是表达软件的工具,是人机通信的媒介。程序设计语言就是一台抽象机器,程序员利用这个抽象机器的各种功能(语言机制)编制出绘声绘色的软件。程序设计语言从极少数计算机专家知道的机器语言到数以万计的高级程序设计员,经历了从复杂到简单的设计过程。表达式计算是程序设计语言的基本知识,是编译系统的基本问题。然而在高级程序设计语言中,只要给出表达式,高级语言环境就会根据预设的语言机制计算出表达式的结果,编程人员并不了解表达式的计算过程。本文通过算符优先分析和堆栈的方法,给出了算术表达式的计算过程,有助于高级语言初学者和计算机编程人员熟悉计算机内部表达式计算的处理过程,更好地学习和掌握高级语言的编程技术。
2 表达式计算
2.1 算符优先分析
算符优先分析是定义算符之间的某种优先关系,这种关系可以为表示以下三种:
a<ba的优先性低于b
a=ba的优先性等于b
a>ba的优先性高于b
其中a和b代表一种算符,<、=和>不同于数学里的大于、等于和小于,同时a<b并不代表b>a, a=b并不代表b=a。
2.2 表达式表示
在机器内部,任何一个表达式都是由操作数、运算符和分界符组成,分界符表示一个表达式的结束。假设在此讨论的算符只含加、减、乘、除四种算术运算符和左、右圆括号。如一个算术表达式A+(B-C/D)*E,这种算术表达式中的运算符一般总是出现在两个操作数之间称中缀表达式。在计算机的编译系统中,在处理中缀表达式之前,总是先将它变换成后缀表达式,即表达式中的运算符出现在操作数之后,且不含括号。把一个中缀表达式变换成相应的后缀表达式首先考虑运算规则。算术运算的规则是:(1)先乘除后加减;(2)先括号内后括号外;(3)同级别时先左后右。则上面中缀表达式可写成ABCD/-E*+,由此可知后缀表达式的两个特点:(1)后缀表达式与中缀表达式的操作数先后次序相同,只是运算符的先后次序有所变化。后缀表达式的运算符次序就是其执行次序;(2)后缀表达式没有括号(如表1)。
表1 后缀表达式的处理过程
2.3 算符优先关系
由后缀表达式特点(1)知,后缀表达式与中缀表达式的操作数排列次序相同,只是运算符改变了次序。编译系统从左到右依次扫描中缀表达式,每读到一个操作数即将它作为后缀表达式的一部分输出。系统设置一个存放运算符的栈,初始时栈顶置一分界符#,并将其也看作运算符。每读到一个运算符,就将其优先级与栈顶位置运算符优先级进行比较,以决定是把所读的运算符进栈还是将栈顶位置的运算符作为后缀表达式的一部分输出。表2给出了包括加、减、乘、除四种算术运算符和左、右圆括号和分界符的算术运算符间的优先级关系表。表中θ1代表栈顶运算符,θ2代表当前扫描读到的运算符。
表2 运算符优先级关系
表2是四则运算三条规则的变形。对规则(1),当θ1为+或-,θ2为*或/时,θ1的优先级低于θ2的优先级(先乘除后加减);对规则(2),θ1当为+、-、*或/,θ2为(时,θ1的优先级低于θ2的优先级(先括号内后括号外);当θ1为+、-、*或/,θ2为)时,θ1的优先级高于θ2的优先级(先求出括号内的值);对规则(3),当θ1的运算符和θ2的运算符同优先级别时,令θ1的优先级高(同级别时先左后右)。由于后缀表达式无括号,当θ1为(,θ2为)时,用符号”=”表示去掉该对括号。当θ1为#时,θ2也为#时,表示整个表达式处理完毕。表2中空格处表示不允许出现这种情况,一旦出现,即为中缀表达式语法出错。
2.4 表达式计算
中缀表达式变换成相应的后缀表达式后,根据后缀表达式计算表达式的值方法为:设置一个足够大的堆栈,从前向后依次扫描后缀表达式,每读到一个操作数,就将其压入堆栈;每读到一个运算符,就从栈顶取出两个操作数施以该运算符所代表的操作,并把计算结果作为一个新的操作数压入堆栈,一直到后缀表达式读完。最后在栈顶位置的操作数就是该算术表达式的计算结果。
3 算法实现
#include
char newstr[20]; int p=0;
char proceed(char x1,char x2) /*算符比较*/
{char result1;
char Midstring[2];
result1='
if(((x1=='+'||x1=='-')&&strstr("+-)#",Midstring)!=-1)
||((x1=='*'||x1=='/')&&strstr("+-*/)#",Midstring)!=-1)
||(x1==')'&&strstr("+-*/)#",Midstring)!=-1))
result1='>';
else if((x1=='(' && x2==')')||(x1=='#' && x2=='#'))
result1='=';
else if((x1=='(' && x2=='#')||(x1==')' && x2=='(')||(x1=='#' && x2==')'))
result1=' ';
return(result1);}
int strstr(char str1[],char str2[])
{int i,j,k,m,n;
char tempStr1,tempStr2;
m=strlen(str1);
n=strlen(str2);
for(i=0;i
{k=i;
for(j=0;j
{tempStr1=str1[k];
tempStr2=str2[j];
if(tempStr1==tempStr2)
continue;
else break;}
if(j>=n) return(1);}
return(-1);}
/*中缀表达式变换后缀表达式*/
intprotfix(char str[])
{char stack[20];
char x1,x2,x;
int j=0,k=0;
stack[0]='#';
x2=str[j];
x1=stack[0];
while(1)
{if(x2!='+'&&x2!='-'&&x2!='*'&&x2!='/'&&x2!='('&&x2!=')'&&x2!='#')
{newstr[p++]=x2;
j++;x2=str[j];}
else
if(proceed(x1,x2)=='
{stack[++k]=x2;
x1=stack[k];
j++; x2=str[j];
}else if(proceed(x1,x2)=='>')
{ x=stack[k--];
newstr[p++]=x;
x1=stack[k];}
else if(proceed(x1,x2)=='='&&x1=='('&&x2==')')
{k--;x1=stack[k];
j++;x2=str[j]; }
Else
if(proceed(x1,x2)=='='&&x1=='#'&&x2=='#')
return(1);
else if(proceed(x1,x2)= =' ')
break;}
return(0);}
double count(char str[])/*计算表达式的值*/
{double x1,x2,x; int a,i=0;
while(str[i]!='\0')
{if(isdigit(str[i]))
push(str[i]-48);
else
Switch(str[i])
{case '+': x1=pop();x2=pop();
x=x1+x2;push(x);break;
case '-': x1=pop();x2=pop();
x=x1-x2;push(x);break;
case '*': x1=pop();x2=pop();
x=x1*x2;push(x);break;
case '/': x1=pop();x2=pop();
x=x1/x2; push(x); break; }
i++;}}
return(x);}
4 结束语
表达式计算作为程序设计语言的基础,是高级程序设计语言学习者和程序员必备的基础知识,本文通过算符优先分析和堆栈的方法,给出了算术表达式的计算过程,同时给出了算法描述,有助于高级语言初学者和计算机编程人员熟悉计算机内部表达式计算的处理过程,更好地学习和掌握高级语言的编程技术。
参考文献:
[1] 陈火旺. 编译原理(第三版)[M]. 国防工业出版社,2000.
[2] 朱占立. 数据结构(第二版)[M]. 西安:西安交通大学出版社,2000.
篇7
关键词:大学物理;Matlab软件;可视化教学
理工科课程普遍具有抽象、难理解的特点。为解决这一学习难点,国内外高校在教学中尝试采用数值计算软件作为辅助教学工具。[1,2]学习物理必须学习其概念和定理,而这些概念、定理是用数学语言描述出来的,因此学生在学习物理的时候常常感到抽象、枯燥甚至产生了厌学情绪。21世纪,计算机技术已广泛普及,在“大学物理”教学中,利用计算机仿真技术,可把物理学中阐述概念、定理的抽象公式以图形、图像及动画的形式具体生动地展现在学生面前,实现抽象公式的可视化,从而提高学生学习物理的兴趣。根据广东海洋大学(以下简称“我校”)的实际情况,以Matlab作为平台,在“大学物理”课程的教学中,进行了可视化教学方法的探索。
Matlab是Mathworks公司推出的一套高效率的数值计算和可视化软件,是在国际科学界应用和影响最广泛的三大计算机语言之一,编程简单、易学易用,是一种“演算纸”式的高级语言。和C、C++语言相比,[2]即使对于非计算机专业没有编程能力的一年级学生,也很容易掌握并在今后的专业学习中灵活运用,为未来从事科研工作打下良好的基础。经过几年的教学积累,针对每个章节的重要知识点应用Matlab系统地开发了程序库,把抽象的物理现象、规律进行可视化。
一、二维图形的应用
许多物理规律可抽象为形如y=f(x)的一元显示函数表示,若该函数较为复杂,可借助二维图形直观形象地表示x、y之间的映射关系。编程方法如下:[3]
使用“:”运算符,在自变量x的定义域内以一定的步距采样,得到自变量向量;运用“.” 运算符,计算因变量在每个采样点上相应的函数值,得到因变量向量;根据自变量x、因变量y绘图。
运行上述程序结果如图1所示。从结果中可看出:辐射出射度最大值对应的波长λm=9.4μm,λmT=2.9×10-3m・K。学生可以尝试任意改变温度,从而画出不同温度下的黑体辐射曲线,得出维恩位移定律。
二、动画在模拟动态过程中的应用
某些物理现象不仅是空间变量的函数,同时也是时间变量的函数,例如波。波的概念对于学生较难理解,如果用Matlab模拟波的运动过程,一方面使学生对波有了形象直观的认识,另一方面学生通过读程序代码,对波函数的理解会更加深刻。
例2:设一平面简谐横波其圆频率ω=2rad/s,波速υ=0.5m/s,位于原点的质点为波源,其初相位φ0=-0.5π,振幅A=1,沿x轴正向传播,利用动画编程技术显示该横波的运动过程。
上述横波的波函数为y(x,t)=cos(ωt-ωx/υ+φ0)=cos(2t-4x-0.5π),现模拟在x轴0~5m范围内以0.1m为间距的若干个质点,用黑色小圆点表示,y轴表示各质点相对其平衡位置的位移,时间在0~100s范围内每隔0.01s产生一帧新的波形图。
采用句柄图形的方式编程,擦除属性EraserMode为xor方式画线,并返回所画图形句柄,然后在for循环中,计算任一采样时刻t对应的x、y数组,并使用set函数改变图形的xdata,ydata属性。通过对句柄操作,可以很快抹去旧波形,产生相关的新波形,从而看到波形随时间变化的效果。这种动画技术的优点是,每计算一帧画面,即播出,画面实时变化,占用内存空间小。模拟上述横波的动画程序如下:
由该动画程序不仅可直观地观察到每个质点的振动和振动相位的传播过程,还可定量地观察波的各个参数的物理意义。通过截屏得到2s、5s的波形图如图2和图3所示。
三、矢量图在绘制矢量场中的应用
运用矢量图可以画出矢量场在空间的分布,如带电体在周围空间产生的静电场,恒定电流在周围空间激发的磁场等。
例3:带电量为q=2×10-6C的电偶极子,正负点电荷的距离为1m,以两点电荷连线的中心为坐标原点,两点电荷的连线为x轴,连线的中垂线为y轴,画出该坐标平面内的场强分布和等势线。
对于点(x,y),其电势
根据,可算出该点的电场强度。编程方法是首先在矩形平面区域内采样形成网格点数据,然后计算每一网格点的电势,并利用梯度函数计算场强,最后用等值线和矢量函数绘图,程序如下:
程序执行结果如图4所示,从图中可直接看出各点电场强度的方向,由等势线的疏密程度可知电场强度的大小。
四、图像函数在绘制光强分布中的应用
利用Matlab中的图像函数,可把波动光学中的干涉、衍射现象以图像的方式展现在学生面前,从而加深对理论的理解。
程序执行结果如图5所示。通过把该程序的仿真结果和实物实验的结果进行对比,使学生深切体验到:利用计算机仿真技术,许多实验已不再受实验条件的约束,只要该实验过程可以用数学语言描述,就可以利用Matlab编程进行计算机仿真实验,同样得到正确的实验结果。
五、结束语
在“大学物理”教学中,通过引入Matlab进行可视化教学,丰富了教学手段,加深了学生对所学内容的理解,激发了学生的学习兴趣,开拓了学生如何使用计算机进行探究式学习和科学创新的思维方法,从而使学生变被动学习为主动探索,取得了良好的教学效果。除此之外,学生在利用Matlab学好物理课程本身的同时,还提高了软件设计能力,为今后的学习和工作奠定了良好的基础。
参考文献:
[1]陈怀琛.MATLAB及其在理工课程中的应用指南[M].西安:西安电子科技大学出版社,2000.
篇8
关键词:网络编程;开放式教学
中图分类号:G622.3
文献标识码:A
文章编号:1672-3198(2009)08-0181-02
1 开放式教学概述
所谓“开放”,包括教学内容、学生活动和学生与教学内容之间相互作用等几个方面的开放。开放式教学的目标应是:充分尊重学生的主体地位,通过网络编程课程的教学活动,在获取编程实践理论知识的同时,让学生主动学习自行获取网络编程知识的方法,进而获得终身受用的学习能力和创造能力。而在开放式教学中,可以让学生能够按各自不同的目的、不同的选择、不同的能力、不同的兴趣选择不同的教学并得到发展,这个过程体现了教学目标的多元整合性,使学生可以全面发展。
2 网络编程课程开放式教学的思路
“网络编程”主要是在我校计算机相关专业的高年级学生来进行开设的,教学内容涉及并主要包括网络编程所必须的基本网络通信原理、ASP、PHP、JSP等动态网页编程语言基础等,该课程几乎将计算机专业所学习的所有课程都有机的结合起来,并进行应用,这对于中职学校的学生,具有很大的挑战性,更是需要教师的有效地引导学生去掌握并准备大量的专业知识。这个阶段的学生由于也是刚刚接触到网络编程知识,也具有很强的可塑性,我校老师在这里充分的引入了开放式教学的思想,让学生选择自己喜爱并愿意学习的网络编程技术,为以后的职业发展做好充分准备。
笔者在教学实践中发现,在“网络编程”课程的教学实践中一般存在如下的几个难点:(1)课程涉及面很宽。要涉及到网络通信、数据库、程序设计等多方面的知识,需要学生牢固掌握之前所学习过的知识;(2)网络技术日新月异,技术更新和淘汰都很快,而课程也要涉及到很多新的技术,教师很难进行分别的详细讲授;(3)而课程综合实验更是需要学生在课下做大量的准备工作,在课上积极配合,协作,并积极向老师提出问题,并及时解决。
针对该课程的这些特点,我校在教学实践中各位专业教师精心设计和选择了教学内容,并引导学生去接触并自主学习新的网络设计技术。在学生自主学习和实践的过程中,专业教师积极引导,不局限于课上的知识,为学生开放大量的资料和工具,让学生自主的进行选择,然后再通过课内外的综合实验来锻炼学生们的学习能力,从而取得了不错的教学效果。
3 网络编程开放式课堂教学内容选择
“网络编程”课程涉及到许多方面的教学内容,其主要包括:
(1)网络编程基础,需要学生了解和掌握C/s和B/s基本模型;网络应用基础和数据库系统原理;HTML/XML语言以及网页设计基础。对于HTML和XML两种语言,更是要了解其相互间的主要差异,对于目前的网络编程领域,更是需要了解各种主要的网络编程技术的优缺点,以及主要应用范围。
由于目前网络编程环境比较多,并且并不统一,给学生的学习上带来了麻烦,但是也给学生进行开放式学习提供了重要机会,而教师更是要在这个环节上下功夫,让学生充分了解各个环境,选择适合学生自身特点的语言环境和发展方向,这都需要专业教师的细心引导和充分设计。
(2)ASP,掌握ASP的编程的技术和方法,掌握基于ASP的数据库应用编程技术,熟悉VBScript和JavaScript等脚本语言。
(3)PHP,掌握PHP编程语言的基本语法、函数、类和对象,基于PHP的数据库操作技术,基于PHP的网络应用实现技术。
(4)JsP,掌握JsP的主要技术及跨平台的特点,了解JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使得基于Web的应用程序的开发变得迅速和容易。
在课程的教学中,是不可能对以上的各个技术都进行详细教授的,因此我们首先重点介绍了网络编程基础,然后针对ASP、PHP、JsP的特点进行了开放式的简单的讲授,再引导学生根据自己的喜好来进行深入的自学和实践。
4 网络编程开放式课程综合实验设计
本课程在讲授有关网络编程的基本原理和基本技术的基础上,设计出一个有效的综合实验,并通过综合试验的设计,使学生熟练掌握有关网络程序设计的基本方。通过学生开放式的学习自己感兴趣的环境,以不同的方式来编写出符合实验要求的网络程序。这不仅锻炼了学生的学习能力,还发展了学生的兴趣。
在课程综合实验的设计中,我们综合考虑教学活动的要求,为考察学生对开放式教学内容的掌握和自主学习能力的目的,我们设计了一个综合实验,要求同学们自由分组协同完成。要求学生在Windows平台上,选择JSP、ASP或者PHP等动态网页语言,设计并实现一个网络聊天室系统。网络聊天程序实现的功能有用户管理,包括用户注册、身份验证和注销;聊天室管理,包括建立、删除和加入用户等;文字通信,包括群聊和私聊;用户聊天记录的保存,以后能够按照日期或好友查看历史记录。设计的这个课程综合实验也考察到了学生对页面设计、数据库等方面的相关知识。
在综合实验的过程中,开放不意味着完全的放开,我们还要根据中职学生的特点,教师需要保持介入学生的自学活动,并给予充分的辅导。目前现在常用的动态网页语言有ASP、JSP、PHP等几种,而与每种语言搭配的数据库系统也往往是不同点,这些动态网页语言也具有不同的特点,并且每一种都有一定的应用范围,如何指导学生做出选择,也是专业教师的一项重要任务。
5 网络编程开放式教学考核
合理评定开放式课程的成绩是督促学生掌握知识的手段,但不是教学的最终目的。在开放式的教学中,学生能够分组完成综合实验就体现出了综合能力,所以我们在该课程中采取全面考核和综合评定的办法。通过上机考核和设计文档等多方面的进行考核,并并根据学生的设计能力、动手能力、创新能力和综合总结能力进行综合评定,使课程设计的成绩能全面反映每一个学生的实际能力。在考核中我们对每个组都进行检查,并要求同学们演示并介绍他们自己的作品,并回答老师提出的若干技术问题。
最后综合同学们提交的文档和最终的程序结果,教师来评定出分数,并作出总结,提出在实验的过程中,各个学生的优缺点,是否符合标准化编程思想,在哪些方面还可以进一步改进。并让学生把编程中面对的问题,以及如何解决的思路进行介绍,供其他同学分享,充分的体现出开放是教学的开放、参与、共享的精神。鼓励同学们在编程技术、界面设计等各个方面进行大胆创新和实践。
6 结论
篇9
身 高: 176 体 重: 60 最高学历: 本科
职 称: 毕业学校: 广东教育学院
毕业时间: 2011-06-07 特长概括:沟通、协调、演讲
户 籍: 广东惠州市
现所在地: 广东惠州市
自我评价
具备日本语的听、说、读写能力,并取得相关证书,普通话、粤语标准;能熟练使用计算机、系统维护、硬件维护、能熟练使用DOS、WINDOWS系统,并熟练排除计算机软硬故障;熟悉网络应用。自学能力强 。适应力强,反应快、积极、灵活,爱创新!提高自己,适应工作的需要。在学习中,我注重理论与实践的结合,己具备了相当的实践操作能力 。具有很强的事业心和责任感使我能够面对任何困难和挑战,所以我希望找一份与自身知识结构相关的工作,如,文员,助理可以有更大的空间来证明自己,发展自己!
求职意向
工作岗位: 计算机硬件、信息技术专员、售前/售后技术支持工程师,营销-技术服务及客服售后/客服主管(非技术),教师小学教育(英语),教师中等教育(外语)
职位性质: 全职 行业类别: 商业贸易/物流仓储/经纪,教育/培训
工作地区: 广东省深圳市龙岗区 到岗时间: 随时 月薪要求: 2500~3500元
其他要求:
教育
学历 学校名称 专业 时间范围 专业描述
不限 广东教育学院 外语类英语 2008年11月-0年0月
培训
2008年9月-2012年10月 培训课程:中学英语教学技能
培训机构: 广东教育学院 培训地点: 广东教育大厦
获得证书:
培训描述: 培训机构: 英特尔未来教育 培训地点: 广东教育大厦
获得证书: 结业证书
培训描述:
语言 外语语种 掌握程度 国家英语测试4级
工作经验
2007年7月-2007年9月 :增城市绣花厂
公司性质: 民营企业 所属行业: 其他行业
所在部门: 担任职务: 助理
工作描述: 作为绣花厂的一名助理,其日常工作主要是负责货物的进出,有时候帮助老板处理一下文件,
离职原因: 返校
技能专长
主修课程:
《程序设计》、C++等计算机课程,掌握模拟电路、数字电路、计算机应用基础、计算机网络
多媒体技术应用、VB编程技术
网页编程及设计、现代教育技术理论
数据库设计及应用
1、扎实的计算机操作能力,熟悉PC软/硬件、安监系统、公司电话系统及网络的安装及维护,能充分利用现有资源为公司创造应有的效益;
2、统筹规划公司的办公耗材,节省成本;
3、工作踏实、仔细认真。
职场风采
个人特点:
学习方面:专业础扎实,计算机操作及网络管理能力完善;
生活方面:能吃苦耐劳,有较强的适应能力;
篇10
关键词 数学算法;计算机编程方式;优化
中图分类号 TP3 文献标识码 A 文章编号 1674-6708(2017)189-0073-02
当前,我们主要是通过计算机编程的途径对软件进行开发,对计算机编程来说,数学算法是其中最基本也是最关键的影响因素,只有将数学算法合理适当地应用于计算机的相关编程之中,才能实现计算机编程的高效率运行,才会提高计算机软件开发的成功率。计算机编程要运用到的数学知识主要包括离散数学和微积分等运算,对这些数学算法进行深入研究,并且将它们运用到计算机编程方式的改进优化中,可以提高计算机编程方式的实用性和有效性。
1 计算机编程方式的基本概况
1.1 数学算法的简介
算法作为数学研究中的最基础和最关键的部分,对计算机编程的研究也起着至关重要的作用。如今信息科技在迅速发展创新,数学算法对计算机编程的影响日益加深,数学算法逐渐成为计算机编程技术人员应该具备的最基本素养。大部分高校的计算机专业课程主要引导学生建立数学算法的基本思想,培养和提高他们进行数学算法的能力和水平,要求学生了解和掌握各类数学算法学习实验报告的撰写方式。学生们也可以通过观察、模仿、深入研究以及实际操作等方式来进一步深入了解数学算法的精髓和内涵,提高自身的推导计算的水平,增强自己独立解决问题和矛盾的能力,进而确保自己的计算机编程专业课程的顺利学习。
1.2 计算机编程的简介
计算机编程以计算机语言作为根本,通过人们对计算机语言的研究和翻译工作,能够完成多种类型不一的计算机功能。从根上来说,计算机诞生的目的是为了能够运用大量的数学计算,进而为人们解决复杂困难的高级大量数据运算,为人们提供最精确的计算结果。对计算机进行创新改造和升级,不仅能够大幅度提升计算机的运算效率和准确度,而且能增强计算机编程应用的实用性。因此,我们需要加大对计算机编程方式改进优化工作的重视程度,在保证计算机运算结果精确无误的基础上,使计算机运算效率不断得到提高。
1.3 数学模型是算法与计算机联系的桥梁
将繁多复杂的现实问题简单化并抽象为适当的数学结构,便是数学模型的构建过程。采用实际调查、收集整理数据资料等方法,对研究问题的内在特点和实际规律进行深入的分析,掌握问题的关键部分和主要矛盾,建立出与实际问题相联系的数量之间的关系,再应用数学思维方式和理论知识进行问题的探讨和研究。
数学计算的选择在计算机编程方式的优化过程中有着非常深刻的影响,这些影响主要包括:计算机本身的运行效率、内存容量大小、计算机的质量高低等等。由于运作效率和自身质量的不同,计算机的编程效率也是不一样的,因此我们应该根据实际问题类型的不同而选取恰当合适的数学算法。在实际的操作流程中,应用简易直接、改造优良的数学算法,这能大大减少计算机执行任务的时间,能大幅度提高计算机的工作运行速度和质量。
要想进一步提升计算机的运行效率,可以参考以下两个方面的内容进行数学算法的选取。其中一方面是根据时间的复杂性进行合理选择。今天的社会和经济在高速发展,人们普遍追求的是高效率和高质量,适当的数学算法能够让计算机在最短的时间内编译出最多类的程序。还有一个方面便是考虑空间的复杂性。现代社会的发展在不断追求节能降耗,即使用尽可能少的资源,获得最大的效益。只有把这两方面内容进行相互结合,才能选择出最适当合理的数学算法。构建理想的数学模型,将合理的算法与计算机编程相联系,实现计算机编程的设计开发。
2 优化计算机编程方式的措施
2.1 对数据结构进行合理设计
数据结构是否存在合理性对数学算法性能的高低起着十分关键的作用,合理的数据结构能够让数学算法对变量进行访问的速度得到提高,降低变量占用的内存空间容量,进一步提高数学算法的效率和水平。比如说,若是在稀疏矩阵中含有很多的元素,则需要参考缩矩阵的储存空间,假设直接通过二维数组的途径了储备矩阵,则可能造成大量存储空间的浪费。因此这时应该选取三元组进行稀疏矩阵的储存工作,这可以最大限度地降低稀疏矩阵的占用空间。采用联合体的方法对共享变量进行深入加工,让多个变量能够共存于同一段内存空间之中,这大大降低了数学算法的空间复杂度,从而大大提升了数学算法的
效率。
2.2 通过并行计算减少算法执行时间
通过并行计算来实现算法执行时间的减少有两种不同的方法。其中一种方法是对单机上的多核心进行并行,另一种方法是多机间的并行。现阶段,计算机的硬件设备优化改良的速度很快,目前计算机中大部分都为双核心或者是四核心;而且,计算机软件也在不断得到发展创新,使得分布式系统受到了广泛的关注。但是,大部分的算法缺乏对多核心计算机以及分布式系统的优化改良,依旧使用的是串行的执行方法。在对数学算法研究分析的基础上,我们能把算法分成两个部分,一个是可并行部分,另一个是不可并行部分,分别运用这两个不同的部分实现计算机不同核心的分配工作,可以得出最后的相应结果汇总。在运用分布式系统展开并行计算的过程中,相关技术人员必须制作出科学合理的分配方案,计划好算法的运算量,考虑到所需的网络支出开销。
2.3 提高学生学习算法设计的兴趣
算法设计专业课程要求学生必须掌握一定的概率论、线性代数等专业知识,具备一定的数据结构分析能力。这便需要授课教师提高自身的教学质量和水平,运用各种不同的多样化的授课教学方法,将专业知识理论与实践操作实现完美的融合,更好地引导学生进行算法设计的学习。教师在正式授课之前,需要明确好教学目的,对学生提出相应的学习要求,提高学生的学习主动性;在进行授课的过程中,应用多媒体技术或者其他高科技的手段进行专业知识的讲解,破除传统陈旧的教学观念,将新型科技与现场教学相互结合,提升学生学习的兴趣;在授课结束之后,要时刻关注学生的学习动态,认真督促学生完成相关的算法设计的练习和任务,从而进一步提升学生学习的独立自觉性。
3 结论
总的来说,计算机的出现跟数学算法之间的联系十分密切,如今计算机在不断得到改进和创新,数学算法也在持续进步。计算机编程方式的改进和优化离不开数学算法,相关专业技术人员一直在探究二者之间的联系。
在对计算机编程方式进行分析研究的过程中,我们要根据实际的情况进行相应的优化改进,要努力设计出合理的结构数据、利用并行计算降低计算机执行命令的时间、提高学生学习计算机算法设计的兴趣和能力。只有采取一系列合理有效的计算机编程方式改进的措施,才能实现计算机编程方式的革新,让计算机编程拥有更高效的性能,才能减少计算机编程方式在技术性方面产生的问题,从而进一步推动我国计算机编程方式的进步,促进信息技术行业的良好发展。
⒖嘉南
- 上一篇:管理学的基本概念及理论
- 下一篇:高中数学的提分技巧