- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
浅谈编译原理实验课程教学
摘要:本文以词法分析实验为例,讨论了编译原理实验课程的教学方法,提出了在实验课程教学之前,实验过程中以及实验后,教师教学需要注意的地方,以达到深化理论认识,提高学生实际编程能力的目的。
关键词:编译原理;实验教学;词法分析
中图分类号:G642. 41 文献标识码:A
文章编号:1672-5913(2007)18-0045-02
1引言
“编译原理”是大学本科计算机专业的必修课程,但学生在学习这门课时普遍感到难度较大,学习内容抽象,不易理解。如果不配合实践教学,仅通过理论课程的学习,难以使学生真正地理解编译程序的构造原理和技术。但是,编译原理的实践课程也存在着一些困难,比如:有些算法本身理解起来都十分抽象,如自动机理论、集合论的推演、LR文法等,大部分学生在实现这些相关算法的时候,难以形成思路;又由于多采用分组实验方式,一部分同学产生依赖思想,寄希望于组内其他同学。这样,显然达不到深入理解理论知识、提高实际编程能力的目的。本文就以词法分析实验为例,讨论编译原理的实验教学方法。
词法分析实验主要包括以下几个方面的内容[1]:词法分析器的设计和实现,三个算法(正规式转换为有穷自动机的算法,有穷自动机的确定化,确定的有穷自动机的化简)设计以及词法分析自动生成器。其中,词法分析器的设计和实现是重点内容。通过这个程序的设计,学生可以掌握词法分析器的作用、分析方法、和实现原理,并了解词法分析在整个编译过程中的地位。三个算法的实现有一定难度,通过三个算法的实现,学生可以加深对算法的理解,提高解决问题的和实际编程能力。
2实验前的准备
在进行词法分析实验课之前,应督促学生做好充分的准备工作[2]。首先,应该明白词法分析器的功能,它主要分成输入部分,字符分类识别和识别结果处理输出部分。根据不同的输入,调用不同的识别函数进行识别。进而得到词法分析器的程序框架。再后,进行系统的详细设计,设计出关键的数据结构,将每一个函数实现的算法和关键点,详细的用伪代码表示出来。
实验课前的准备过程非常重要。否则,上来就匆忙动手,很可能写了很多代码之后,才突然发现,最初的数据结构设计竟然不合理,导致不少的工作都得推翻之后重新来做。因此,在实际编程前要求学生编写实验思路及实验流程,根据实验任务,设计程序的模块流程图及算法,并提出编程过程中可能遇到的困难和解决途径,最终形成一个预习性质的实验报告[3]。这样,学生对实验有一个整体思路。思考过程不仅使学生对所学理论有了较深刻理解,而且对理论与实践如何结合进行思考和归纳,提高了实际运用高级语言编程的能力。
3实验课中的指导
在实验课进行的最初,根据实验项目,指出实验目的和总体要求,介绍关键实验注意事项和操作要点等。对实验中的难点和重点,进行有针对性的讲解,并就实验中学生普遍会遇到的一些典型问题,做启发式地分析和引导,包括讲解学生的预习报告中提到的某些好的思路,起到抛砖引玉的作用,鼓励学生尝试新思路和新方法,最后由学生自主完成实际的系统设计并进行相关的研究尝试[4]。比如,词法分析器的设计思路,主要的数据流程,以及编写识别指数常数的等较难程序的关键技术等。
编程题目由简到难的进行。一般认为,编译原理中的将正规式转换为NFA,将NFA转换成DFA等算法都比较抽象。实现起来有一定难度。如果一开始就从这些算法下手,很可能有一大部分同学都会出不了结果,从而产生畏难情绪,以至于对这门课程今后的学习都没有信心。所以,建议开始的时候从简单的词法分析器入手,帮助学生产生学习积极性。即使不能完整的做到每种单词都能识别,至少可以写出其中一部分。这样,有了初步的小成果之后,就会有兴趣也有信心来完成后续的实验内容。
4实验之后的总结
在每次实验课的最后,留出时间用于全班的分组讨论。主要围绕两项内容:其一,每个同学对编程过程中出现的问题,讨论相应的解决方法。建立一定的鼓励机制鼓励学生积极发言,提出自己的看法、观点。讨论后,各组指派一名学生代表总结发言。这样,各组学生可以相互了解其他同学在编程中遇到的困难和解决方法,相互取长补短、共同进步。为了让每个学生都得到发展,小组代表随机产生。通过讨论,学生变被动的学习为主动的学习,学习积极性有所提高。其二,由于每人只编写整个词法分析程序的某些部分,所以对整体把握有所欠缺,为弥补此缺陷,要求最后每个讨论小组把各自编写的程序连接起来,形成一个完整的词法分析器,进行总体调试。
实验之后应做好实验总结。每个同学提交实验报告。报告内容包括对词法分析器输出的数据进行分析,关键程序的实现思路,遇到的困难以及解决方法,自己认为自己做的比较好的、
文档评论(0)