编译原理教学研究论文

编译原理教学研究论文

ID:5810931

大小:65.50 KB

页数:4页

时间:2017-12-25

编译原理教学研究论文_第1页
编译原理教学研究论文_第2页
编译原理教学研究论文_第3页
编译原理教学研究论文_第4页
资源描述:

《编译原理教学研究论文》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、《编译原理》的教学与实际相结合的再探讨陈意云张昱(中国科学技术大学计算机科学技术系,安徽合肥230026)摘要:本文介绍我们在《编译原理》课程中联系编程语言实际和改进课程设计的经验或尝试。在联系编程语言方面,主要是引导学生用编译的原理和技术来分析典型程序在编译(包括连接)和运行时被发现的错误,分析典型程序的目标代码和运行时的输出;在课程设计方面,主要是让学生合作完成一个简单的编译器,并采用教师主导、同学参与、公开评比的评分方式。通过这两方面的努力,激发了学生的学习兴趣,帮助他们牢固地掌握了理论和技术,还提高了他们的软件工程意识、质量意识和团队意识。关键词:编译原理;程序设计语言;

2、课程实践;教学经验1引言编程语言的编译原理是计算机专业一门非常有用的核心课程,又是一门需要较大投入的课程。怎样激发学生的学习热情,努力学好本课程?我们的策略主要有如下三点:1、首先是引导学生注重对编译原理和技术的宏观理解和全局把握,不把学生的注意力分散到一些枝节的算法上。2、其次,在课堂上和习题中准备了许多从实际程序的编译和运行时碰到的问题中抽象出来的例子,鼓励学生用所学的知识去分析、解决、理解实际编程中遇到的问题和发生的现象,激发学生学习编译原理和技术的积极性。在“《编译原理》的教学与实际相结合的探讨”[1]一文中我们已经做过一些这方面的探讨,本文进一步介绍我们的经验,以供国内

3、同行参考与切磋。3、最后,恢复了要求学生完成一个简单编译器的课程设计。通过正反两方面的经验,我们认为一定规模的课程设计是使学生牢固掌握本课程的理论和技术,融会贯通书本知识的重要手段。我们调研了国外一些知名大学的编译原理课程设计,以加州大学伯克利分校的编译课程设计[2]为基础,改编出适用于我们学生的课程设计。针对学生中存在的轻视和拷贝课程设计的不良现象,我们加强课程设计的管理,并采用教师主导、同学参与、公开评比的评分方式,调动学生自己完成课程设计的热情,降低抄袭现象。本文介绍我们在加强课程设计的过程管理和改进考评方式上的经验和体会。该课程设计的完整介绍已另外行文“编译原理课程实践改

4、革探索”,可见网页http://staff.ustc.edu.cn/~yuzhang/compiler/。2教学联系编程语言实际的探讨基于下面几点考虑,我们选择C语言作为实例语言。1、程序设计的教学大都采用C语言,C语言是本科生最熟悉的编程语言。2、C语言编译器一般都以汇编语言作为目标语言,这便于分析源程序所对应的目标代码。3、C不是类型安全的语言,C程序很容易出现难以捉摸的错误。编译知识有助于分析这些错误。4、通过编译原理课堂上和习题中展示和分析的例子,学生对C语言的掌握能达到一个新的高度。下面介绍我们所采用的一些典型小程序,这些例子及更多的例子在我们编写的教材[3]、习题解答

5、[4]和网页http://staff.ustc.edu.cn/~yiyun/中可以找到。所使用的编译器是X86/Linux上的GCC。42.1类型系统类型系统的设计是现代编程语言设计的核心,掌握语言的类型系统也是学好编程语言的重要一环。但是国内编译原理大部分教材对类型系统的介绍比较简单,难以让学生体会到它在编程语言中的重要性。我们使用例1和例2这样的小程序,用类型系统的观点解释其中的问题,学生很快领会到了类型系统的重要作用。例1编译图1的C语言程序时,GCC报告最后一行(程序列成左右两栏)有错误:incompatibletypesinreturnC语言的数组和结构体都是构造类型,

6、为什么函数fun2有类型错误,而函数fun1没有?typedefintA1[10];

7、A2*fun1()typedefintA2[10];

8、{return(&a);}A1a;

9、typedefstruct{inti;}S1;

10、S2fun2()typedefstruct{inti;}S2;

11、{return(s);}S1s;

12、图1结构等价与名字等价的例子结构等价和名字等价是许多教材都提到的概念,但学生认为它们离自己很遥远,无需关心和掌握。C语言对除结构体类型以外的其它类型都使用结构等价,而对结构体类型使用名字等价,因此可用这样的例子来解释这两个概念的区别和重要性。(1)文件1

13、(2)文

14、件2typedefintA[10][20];

15、typedefintA[10][20];Aa;

16、Aa;A*fun(){return(a);}

17、A*fun(){return(&a);}编译该函数时,报告的类型错误如下:

18、编译该函数时,没有类型方面的错误。warning:returnfromincompatiblepointertype

19、

20、(4)文件4(3)文件3

21、typedefintA[10][20];typedefintA[10][20];

22、Aa;typedefintB[20];

23、

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。