《编译原理》课程设计要求

2024-05-26

《编译原理》课程设计要求(精选13篇)

《编译原理》课程设计要求 篇1

《编译原理》课程设计实施方案

课程设计的具体内容以传至QQ群共享《编译原理课程设计具体内容.ppt》中,由于学校没有足够大的机房供我们课程设计,所以课程设计采取单独辅导形势,同学们有任何问题,可以来我办公室答疑。

设计报告提交要求

1提交的内容:

验收经过测试的程序

提交设计报告。报告可以包括以下内容:

<1> 任务与目的<2> 软件设计

a.软件的总体结构与模块划分

b.关键算法与重要数据结构

<3> 测试例程设计与测试结果分析

<4> 总结、体会、改进建议等

2.课程设计报告的字数(包括图表)不得少于10000字。

3. 禁止课程设计抄袭,发现原文抄袭网站或报刊内容以零分记。

4.禁止课程设计雷同,发现雷同以零分记。

提交方式

1.要求提交《课程设计报告》打印稿。

2.A4纸张排版,格式参考学年论文规范。

3.在提交论文时填写课程设计封面,详细注明课程名称、题目、学号、姓名、年级、专业班级等基本信息。

4.解释程序源程序(由各班班长统一用U盘拷贝给我)。

时间要求

第19周周五前,按班为单位,各班班长负责提交,过期不再受理,不记成绩。

提交地址,电气信息楼B3-602,联系电话:***,EMAIL:rendong5227@163.com QQ:190186735

《编译原理》课程设计要求 篇2

目前, 计算机等级考试基本上都是采用传统的考试方式, 在这种方式下, 组织一次完整的考试至少要经历五个步骤:考生报名、人工出卷、考生考试、人工阅卷、成绩统计。显然, 随着考试类型的不断增加和考试要求的不断提高, 教师到处找试题、拼试卷、印刷、考试、评分、算成绩, 整个过程工作量很大, 效率不高, 花费了教师大量的时间和精力, 教师的工作量将越来越大;而且, 当考生数量比较大时, 对考生的考试成绩进行统计将是一件十分烦琐且容易出错的事情;再者, 一次考试的反馈能力弱, 试题选择随意性大, 全凭教师的主观意愿来评定一张试卷难度的高低, 对成绩的分析停留在平均分、及格率等表面层次上, 难以统计出学生对各个知识点的掌握程度;第四, 成绩公布之前学生为查看成绩给教师和教务部门找的麻烦也不少, 人情分很难避免出现。可以说, 传统的考试方式己经不能适应现代考试的需要。

在线考试系统利用网络手段将考试资源整合, 实现了一定程度的无纸化考试贯彻低碳环保的思想, 从而使考试这项常规而且繁琐的任务变得更加方便, 避免了以往学校里考试纸张、笔、监考和巡考等各项资源的浪费。在线考试系统管理员登陆后, 对考试内容进行添加、删除、编辑, 以及和该系统有关的管理操作, 只要考生注册登陆后, 就可以进行答题, 答题完毕提交后系统会自动判断考卷, 并核对出最后考卷的分数, 考生只要查询就可以看到自己的成绩, 解决了在学校考试后等待考卷分数通知的问题, 也解决了考生不需要必须回学校才能考试的窘况, 以便于考试者有更多的时间去充实自己, 来面对日益严峻的就业形势。

2、在线考试系统的基本功能

《编译原理》课程在线考试系统的功能模块图如图1。

各模块的主要功能如下:

管理员注册:由于该系统的管理员就是教师, 所以教师是通过注册获得管理权限, 并且只有拥有管理员密码的教师可以注册为管理员。

用户注册:自由式的在线考试系统, 用户只要注册就可以获得在线考试的权限。

管理员和用户登陆:管理员和用户通过用户名和密码进行登录。

试题库管理:可以增加、修改、删除试题。

试卷生成:从试题库里随机抽取试题生成一份原始试卷。

在线考试:系统严格控制整个考试过程, 实行时间的监控与权限的控制, 考生需要在限定的考试时间内交卷。

计算机自动阅卷:本系统只考虑客观题, 要求计算机能自动阅卷, 并能马上进行成绩查询。

成绩查阅:考生考完以后, 管理员应该能对所有纪录进行查询, 或者是考生能对自己本次测试成绩进行查询。

留言板管理:管理员对考生发表的信息进行管理和有选择的显示在主页。

3、在线考试系统的优势

在线考试系统是利用计算机网络组织的考试的综合应用系统。在线考试系统与传统考试的纸介质试卷考试相比具有以下优势:

3.1 高效节约

传统考试在编写试卷、阅卷、成绩统计以及排名等方面耗费大量的资源。而计算机考试, 答题完毕后提交系统会自动判断考题, 并核对出最后考试卷的分数, 从而节约大量的人、财、物力以及时间资源。

3.2 准确公正

计算机考试系统主要处理的标准化试题及试卷, 它不但高效迅速而且准确避免人为因素, 教师能查询所有考生的成绩, 但并不能更改分数, 从而在一定程度上避免人为误差及人情分等问题, 保证考试的公平公正。

3.3 有效杜绝考试作弊的现象

利用计算机考试各个考生的试卷随机生成, 可以试卷不同也可以试卷相同而顺序不同, 由此可以在一定程度避免互相参看抄袭等作弊现象, 从而达到考试成绩的公正性。

4、结语

在线考试系统提高了考试的可靠性, 有效性和提高工作效率, 降低了考试成本, 顺应了信息时代社会的网络化趋势, 必将成为各行各业一种不可或缺的考试方式。

参考文献

[1]杨丽华.网络考试系统的设计与实现.计算机应用计算, 2007.12.

[2]樊海玮.基于WEB的网络化在线考试系统研究与实现.长安大学, 2006.6.

[3]郭新顺, 刘雪芬.无纸化考试系统研制[J].计算机应用与软件, 2005.8.22.

《编译原理》课程设计要求 篇3

关键词:编译原理;网络;作业提交

中图分类号:TP311.52 文献标识码:A 文章编号:1674-7712 (2012) 12-0085-01

一、系统的主要功能分析

《编译原理》课程作业网上提交系统主要为《编译原理》课程提供网上的作业管理功能,主要分为管理员、教师和学生三个部分。

(一)管理员部分的主要功能

1.管理员登录功能:根据管理员权限进入管理员相应的页面。2.公告管理功能:管理员可以对公告进行查看、增加、删除、修改等功能。3.修改密码功能:管理员可以修改密码。4.作业管理功能:实现作业信息的删除、修改、查询的功能。5.教师管理:实现教师信息的增加、删除、修改、查询的功能

(二)教师部分的主要功能

1.教师登录功能:根据教师权限进入教师相应的页面的功能。2.修改个人资料功能:可以修改个人的信息。3.学生管理功能:能够实现学生信息的查看、添加、修改、删除、搜索的功能。4.在线布置作业功能:发布作业信息。5.在线批改作业的功能:在线给出相应的作业的点评和分数

(三)学生部分的主要功能

1.学生登录功能:根据学生权限进入学生相应的页面的功能。2.查看公告的功能:可以查看公告信息。3.修改个人资料的功能:修改个人信息。4.作业信息列表:学生查看、下载老师发布的作业题目。5.上传作业:上传做好的作业。1.4管理员信息表和作业信息表

二、教师模块的设计与实现

(一)教师修改个人信息模块的设计与实现

1.教师修改个人信息的功能描述:功能描述:本模块主要实现的功能是教师能够对自己的信息进行修改。2.教师对自己的信息进行修改的输入、输出:输入:更改的教师的基本信息。输出:个人信息修改成功或者失败的页面。

(二)教师布置作业模块的设计与实现

1.教师布置作业模块的功能设计:功能设计:用户登录确定为教师后,teacherlist.do对数据库进行查询,将查询值绑定给request转发到显示界面上。2.教师布置作业模块的输入输出设计:输入:作业标题、出题教师、作业上传截止日期、作业内容等。输出:作业发布成功或者失败的页面。3.教师批改作业模块的功能描述:功能设计:教师点击批改链接,查询数据库,显示该题答案和题号,做出批改,保存到数据库的correst表中。4.教师批改作业模块的输入输出设计:输入:教师批改作业后所给出的评语和分数。输出:成功批改的页面

三、学生模块的设计与实现

(一)学生查看公告和个人信息模块的设计与实现

功能设计:在用户登录后确认为学生后,跳转到answer.do,查询数据库work表,把查询结果显示到页面上。

(二)学生上传作业模块的设计与实现

1.学生上传作业模块的功能描述:功能设计:学生点击做题链接,进行做题,并把做题结果和题号存入到answer表中,通过addwork添加到数据库。

2.学生上传模块的输入输出设计:输入:上传作业。输出:完成作业

四、结语

《编译原理》课程作业网上提交系统是学校信息化教学环境的基础设施之一,是全面实现素质教育的重要手段,是教育技术装备现代化的主要体现和教育现代化的重要标志之一。

参考文献:

[1]孙卫琴,李洪成.Tomcat与Java Web开发技术详解[M].北京:电子工业出版社,2003,6

[2]孙一林,彭波.Java数据库编程实例[M].北京:清华大学出版社,2002,8

[3]飞思科技产品研发中心.JSP应用开发详解[M].北京:电子工业出版社,2003,9

[4]赛奎春.JSP工程应用与项目实践[M].北京:机械工业出版社,2002,8

[5]Kven Genet.SQL Server database development Case Study Analysis.Tsinghua University Press,2006,12

[6]Steven Nath.SQL SERVER 2000 Development and Application,Mechanical Industry Press,July,2003

编译原理课程设计设计任务书 篇4

1、目的学生在学习《程序设计语言编译原理》课程过程中,结合各章节的构造编译程序的基本理论,总共用10个课时完成课程设计。在基本实验完成的基础上,逐步完成课程设计。要求用C或C++语言描述及上机调试,实现一个小编译器(词法分析,语法分析,中间代码产生,优化,目标代码生成等重要子程序,其中词法分析、语法分析及语义分析功能必须完成),使学生将理论与实际应用结合起来,受到软件设计等开发过程的全面训练,从而提高学生软件开发的能力。

2、课程设计的任务

(1)设计符号表

确定符号表的组织方式,一般应包括名字栏和信息栏,其中名字栏作为关键字。要考虑能够存储有关名字的信息,并可以高效地完成如下操作:

a.查找:根据给定的名字,在符号表中查找其信息。如果该名字在符号表中不存在,则将其加入到符号表中,否则返回指向该名字的指针;

b.删除:从符号表中删除给定名字的表项。

(2)设计词法分析器

设计各单词的状态转换图,并为不同的单词设计种别码。将词法分析器设计成供语法分析器调用的子程序。功能包括:

a.具备预处理功能。将不翻译的注释等符号先滤掉,只保留要翻译的符号串,即要求设计一个供词法分析调用的预处理子程序;

b.能够拼出语言中的各个单词;

c.将拼出的标识符填入符号表;

d.返回(种别码,属性值)。

(3)语法分析与中间代码产生器

要求用预测分析法、递归下降分析法、算符优先分析法、SLR分析法(几种方法任选),实现对表达式、各种说明语句、控制语句进行语法分析。

若语法正确,则用语法制导翻译法进行语义翻译:对说明语句,要求将说明的各符号记录到相应符号表中;对可执行语句,应产生出四元式中间代码并填写到三地址码表中;

若语法错误,要求指出出错性质和出错位置(行号)。出错处理应设计成一个出错处理子程序。

(4)优化器

a.局部优化:设计出划分基本块的算法,在每一个基本块中实现:合并已知量、删除多余运算和删除无用赋值三种局部优化。设计构造基本块的DAG图的算法,以及将DAG图还原实现基本块的优化的算法。

b.循环优化:只做一重循环优化,完成代码外提,强度削弱和删除归纳变量等三种优化。要求实现while循环和for循环语句的优化。

(5)目标代码生成器

能完成指定寄存器个数的情况下将一中间代码程序段翻译成汇编语言目标代码(汇编指令应包括加、减、乘、除),要求指令条数最少的情况下,尽量使用寄存器,尽量少访问内存,这样才能做到运行效率高。

3、样本语言

样本语言为C-语言(见附录),其中基本的语句要求必须实现,其余部分可根据自己的实际情况选择实现。

4、要求

各函数和过程应有框图描述,有功能说明,有入口和出口参数说明。

5、参考资料

《程序设计语言编译原理》,陈火旺编著,国防工业出版社

《编译原理》,吕映芝、张素琴、蒋维杜编著,清华大学出版社

《编译原理》,Alfred V.Aho等,李建中译,机械工业出版社

6、考察方式

最终完成一个完整的编译程序。要求输入一小段完整的C-语言源程序,输出各编译阶段的运行结果。在课程设计结束时上机运行,展示运行效果。

7、作业提交

《编译原理》课程设计要求 篇5

针对学生简单地把编译原理课程局限在编译器设计上的认识误区,教师在授课和实验过程中需要注意结合实际中运用编译技术的实例,比如常用的文本编辑工具中,很多带有字词的检查和校验功能,这就是编译原理技术中词法分析技术的具体应用;很多应用系统中对用户输入的字符串进行规则检查时常用正则表达式;网络搜索引擎对文档资源进行特征分析、提取与描述等工作中都用到编译的相关知识……通过各种现实生活中的实例让学生明确编译原理所学习的知识不仅是计算机专业理论知识的重要组成,而且编译程序所使用的一些原理、方法和技术在非编译系统的实际应用中也发挥了很大作用。

在进行实验设计时,除了原理性实验,可以根据学生的兴趣,安排一些应用型的实验,如简单的智能输入法的实现、识别某些单词的简单聊天机器人程序等,这样的小实验可以激发学生的学习兴趣,学生在这些应用性趣味实验中遇到了困难,自然会进一步深入学习教材中的原理,这样对基础理论的掌握也会更加牢固。

2.2实验内容的改进

国内外的一些经典教材中,通常会采用一种模型语言的编译程序作为实例,如吕映芝等人编著的《编译原理》是以PL/0语言的编译程序为范例,Alfred V. Aho等人编著的《编译原理》先通过一个小的编译程序范例给学生带来对编译程序的直观感受。通过实例的学习,可以降低学生的学习难度,也可以辅助学生对原理加深理解。在设计实验时,可以更大地发挥这些实例的作用,事先让学生阅读这些实例的源代码,然后增加一个准备性的实验,要求学生结合已经学习过C、C++或JAVA等高级程序设计语言,自行对词法规则和语法规则的简化和裁减,设计出适合自己实验难度的模型语言,并给出文档描述。通过安排这个准备实验,促使学生复习必须的基础知识,增加学生查阅资料的能力和阅读源代码的能力,在学生的认知结构上起一个铺垫的作用。

词法分析、语法分析试验是编译原理实验的重点。在实验内容上,对一些比较复杂的实验进行拆解。词法分析实验可以拆分成三个小实验:设计源程序扫描器,去除空格和注释及其他无关字符后得到单词的集合;用自动机识别无符号数或某类单词;设计识别关键词、标识符等其他类型单词的识别程序。对语法分析实验,可以首先以典型的算术表达式文法为例,设计一个算术表达式文法的递归子程序分析实验,然后在此基础上安排其他的语法分析实验。这样在内容上也分成了若干层次,更加符合由简单到复杂、由特殊到一般的认知规律,也能够满足不同知识结构和能力水平的学生在实验中都能得到锻炼提高的目的。

实验难度的设计上应该体现出层次性,形成“阶梯状”的难度层次。每个实验要求分为基本要求、较高要求和探索性实验要求三个层次,基本要求即最低要求,所有学生都能完成的难度,鼓励成绩中上的学生完成较高要求,采用成绩加分、表扬等一些激励机制,提高兴趣,为一些学有余力的同学准备探索性实验。既能让优秀的学生“吃得饱”,也保证让所有学生“吃得了”,避免一部分学生因缺乏难度挑战失去兴趣而另一部分学生因门槛太高而无从下手的情况发生。比如在“利用自动机识别无符号数”的实验设计上,基本要求是能够识别整数,较高要求是识别带小数的无符号数,更高要求是能识别带指数形式的无符号数,将这一实验题目分成三个层次后,不同学习水平的学生都能够在一个学时内完成实验,对自动机这一重要工具也有了初步认识,达到了实验目的。

2.3实验组织形式的改进

在实验的组织上可以采用协同式学习,以小组为单位,通过教师所提供的实验任务进行分析、讨论,明确需要解决问题的方法,经过一系列的协同学习活动,完成既定的任务,加深对所学知识的理解。这种组织形式可以培养学生的团队协作能力和学生之间的相互交流和相互学习。因为学生之间的年龄相仿、认知水平相似,交流起来会更加顺畅和有效。在这个过程中能够提高学生的参与感,而且通过团队协作解决困难,会给学生更多的积极反馈和成就感。

在实验内容的设计上,要便于学生进行协同工作,具有可操作性和合作性,确保小组中每个成员的任务饱满。在小组分配上,根据学生的兴趣让其自由结合小组,再根据学生的学习能力做适当调整,根据学生的性格特质等不同特点让其在小组中承担不同角色,如设计人员、开发人员、文档撰写人员以及兼任的汇报答辩人员等。实验实施阶段是协同模式中最重要的一个阶段,在这个阶段小组要对下达的实验任务进行分析,明确任务的基本要求,掌握解决问题的方法及需要具备的知识,在教师的帮助指导下进行小组的内部分工及职责的落实,进行协同学习,同时教师要对学生实验完成情况进行及时的检查和指导,直到最终共同完成小组的任务。

传统的独立模式的实验中对学生的评定比较简单,根据个人的完成情况给出成绩。采用分组式协同模式后,实验成绩的评判要做相应的调整,不仅要考核每个学生自己承担的任务完成情况,还要考核小组共同完成情况。考核的内容仍然包括程序和实验报告,但除了对每个学生独立完成的程序模块进行检查外,还需要对小组共同完成的整个任务情况进行验收,可以采用汇报和答辩的形式进行,每个小组推选答辩人在面对所有学生进行汇报,然后接受教师和其他小组的提问并进行答辩,最终成绩的评定除了个人评定之外还有小组评定,对小组成绩进行排序以鼓励小组间的竞争。

3总结

微机原理课程设计题目与要求 篇6

一、设计内容

1、打开电源后,先设定水温,水温分为八档(30oC~100oC,每10 oC为一档)。

2、按下启动键后,开始测量水温并采用数码管显示,控制电热管加热。

3、上下限水位报警(声光报警)。

4、提倡创新。

二、设计任务

1、选用8086CPU和适当的存储器芯片、接口芯片完成相应的功能。

2、画出详细的硬件连接图。

3、画出各程序的详细框图。

4、给出RAM地址分配表及接口电路的端口地址。

5、给出设计思路。

6、给出程序所有清单并加上必要的注释。

7、完成设计说明书。(列出参考文献,所用器件型号)

电压采集电路设计

一、设计内容

利用《微型计算机原理》课程中所学的主要可编程接口芯片74LS138、8253、8255A、ADC0809和中断控制器8259设计一个模拟电压采集电路。采用ADC0809设计一个单通道模拟电压采集电路,要求对所接通道变化的模拟电压值进行采集,采集来的数字量送至数码管LED指示,采集完100个数据后停止采集过程。

二、设计任务

1、选用8086CPU和适当的存储器芯片、接口芯片完成相应的功能。

2、画出详细的硬件连接图。

3、画出各程序的详细框图。

4、给出RAM地址分配表及接口电路的端口地址。

5、给出设计思路。

6、给出程序所有清单并加上必要的注释。

7、完成设计说明书。(列出参考文献,所用器件型号)

多功能密码锁

一、设计内容

密码锁在输入密码正确的条件下输出开锁电平,控制电控锁开启,同

显示00字样。当输入密码错误时,发出错误警告声音,同时显示FF字样。当六次误码输入的条件下,产生报警电平报警。还可以实现对密码的修改,修改成功后,蜂鸣器发出确认音。

二、设计任务

1、选用8086和适当的存储器及接口芯片完成相应的功能。

2、用LED显示器显示电子锁的当前状态。

3、画出详细的硬件连接图。

4、给出程序设计思路、画出软件流程图。

5、给出地址分配表。

6、给出所有程序清单并加上必要注释。

7、完成设计说明书(列出参考文献,所用器件型号)。

汽车倒车测距仪

一、设计内容

1、设计一个微机控制的汽车倒车测距仪,能测量并显示车辆后部障碍物离车辆的距离,同时用间歇的“嘟嘟”声发出警报,“嘟嘟”声间隙随障碍物距离缩短而缩短,驾驶员不但可以直接观察到检测的距离,还可以凭听觉判断车后障碍物离车辆距离的远近;

① 开机后先显示“———”,并有开机指示灯。

② CPU发射超声波1ms,然后显示60ms;即1ms+60ms为一个工作周期,等待回波,在次周期内完成一次探测。

③ 根据距离远近发出报警声并显示距离。障碍物距离小于1m,距离值变化5cm更换显示,否则不更换;距离在1m以上,新值与原显示值之差大于10cm更换,否则不更换。④ 用三LED位数码管显示障碍物距离

2、硬件电路原理图和软件框图; 编写控制程序,写出设计任务书(总结报告)。

二、设计任务

1、选用8086和适当的存储器及接口芯片完成相应的功能。

2、用LED显示器显示电子锁的当前状态。

3、画出详细的硬件连接图。

4、给出程序设计思路、画出软件流程图。

5、给出地址分配表。

6、给出所有程序清单并加上必要注释。

《编译原理》课程教学改革探讨 篇7

编译原理课程主要介绍编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具。虽然大多数的程序设计和开发人员不需要写自己的编译器, 也不一定非读懂任何编译器的代码, 但是编译程序构造的基本原理和技术广泛应用于一般软件的设计和实现。因此掌握好编译原理这门课程, 可以深层次地理解程序语言和内部机制, 对以后从事计算机项目开发, 很多思想可以借鉴, 受益匪浅。

2、编译原理课程的教学现状

我们是新建的本科院校, 学校坐落在民族地区, 学生在平时学习中与外界的实践接触较少。对计算机这类技术学科, 这些条件限制使得很多课程的教学偏重理论, 显得枯燥, 增加了难度。接触过编译原理课程的老师和学生大概都有相同的感受:这是一门“难教难学”的课程, 甚至认为这是计算机课程体系中难度系数最高的, 内容抽象、理论性强、对实践要求高。

2.1 学习兴趣和热情的严重缺乏

学生大多理解这门课程只是介绍编译程序的构造, 而自己以后很少会涉及从事编译器设计工作, 因而认为没有实际应用价值, 没有真正领会这门课程在整个计算机知识系统以及软件理论和开发方法上的潜在意义。实际上不管是国内还是国际知名高校, 从本科、硕士到博士都有关于编译原理课程的整体规划设置, 这足以说明该课程在计算机专业中的位置是不可忽略的。

没有清楚认识课程的学习意义, 不实用的思想导致了学习兴趣的大幅下降, 被动的学习加上课程本身的难度和深度使得学生的学习积极性降到了低点。较多的学生反映课堂上能听懂老师的例题讲解, 但是由于没有真正把知识点落实, 课后独立完成习题觉得很困难, 慢慢地产生畏难情绪, 如此的恶性循环滋生了对课程学习的强大障碍。

2.2 纯理论式的传统教学

在前些年编译原理课程的教学中, 理论教学比例过大甚至忽略了实践教学, 没有真正将实践和理论结合起来。在课堂上老师扮演着主要角色, 采用传统的教学模式, 以教师为中心、老师讲、学生听, 没有更好地调动学生的积极性, 因此教学效果也不是那么好。

2.3 课程实践的匮乏

编译原理的实践教学所占比例小, 教师和学生都忽视了实践教学在整个课程中的重要性, 脱离了实践的理论学习会显得更加枯燥和抽象。目前课程设置中增加了实践教学, 但是由于编译原理的实验题目偏难, 并且需要实践者有足够的理论基础和较强的编程能力做支撑, 所以大多数学生仍然觉得编译原理的实践是件棘手的事情。导致了学生对编译原理的理解往往停留在书本的理论概念上, 不明白怎样才能把理论应用到实际的编译程序设计中。

3、推进编译原理课程的教学改革

由于编译原理课程涉及的理论知识多, 可研究性强, 应根据学生的实际情况选择合适的教材、运用适当的教学模式来组织教学内容、理论实践相结合, 以更好地提高教学效果, 满足不同层次学生的需求。

3.1 教材的改进与选择

现在程序设计语言已经从过程式转向对象式, C++、C#、Java等就是目前在软件设计中流行的面向对象编程语言, 程序设计模型的变迁带来了算法描述工具的变化。在计算机应用领域几乎都使用面向对象语言, 各种电子产品的嵌入式软件广泛用到面向对象技术。在这样的背景下程序设计的一些后继课程诸如数据结构等也进行了同步的改进, 已出现了用Java或者C++描述的数据结构教材, 但是大多高校使用的编译原理教材还是没有大的变化, 教材中的编译算法和模型仍然用C语言甚至Pascal语言来描述。

这种主要关注面向过程的编译技术的教材, 会让学生觉得编译原理课程和当前的程序设计应用较为脱节。因此分析面向对象技术后台的编译系统非常有必要, 这样更贴近应用, 更利于培养学生的学习兴趣。可以选用对象式语言描述编译算法和教学模型的编译原理教材, 将面向对象的编译技术有机结合到教学中。例如目前国外以及国内某些高校选用Java语言描述的编译原理新教材, 其中像《现代编译程序实现———Java语言》 (影印版) 教材可视为典型。改进后的教材在词法分析和语法分析上变动较小, 主要增加了针对面向对象语言的语法结构及其语义特征, 着重从类及类的继承结构上讨论编译实现技术及构造面向对象编译器的思路;在语义分析、代码生成等内容上调整幅度较大, 面向对象的作用域特性、类的封装、继承以及多态的典型特征都将体现在教材中。

3.2 教学模式的转变

打破传统的以教师为中心、一味灌输式的教学方法, 采用更能激发学生兴趣和潜能的“以学生为主, 师生互动, 实例教学”的教学模式。在教学中, 教师扮演好传授、指导、组织和帮助的角色, 利用问题及情境充分发挥学生的主动性、积极性和创造性。

对某些章节教师首先提炼出核心问题, 让学生带着问题自主学习。之后由学生讲解, 展开课堂讨论, 最后教师再总结归纳。这样学生不再是只带耳朵来听课的机器, 更多的时候由他们来主导控制课堂, 由完全的被动转化为主动, 将会大大地提高教学效果。当然在这个过程中教师要有足够掌控课堂的能力, 给出恰当的涵盖相应知识面的问题, 能在适当的时候做引导者促进讨论的展开, 让大多数学生能在互动的氛围中积极掌握课程知识。

枯燥的理论转化为实例教学, 效果也是事半功倍。比如词法、语法分析中很多理论描述都比较抽象复杂, 此时教师先不分析理论, 而是借助实例的讲解, 案例完成后再总结归纳理论知识点。通过实例的引导, 既提高了教学效果又营造了轻松的课堂氛围, 师生互动得以良性地发展下去。下面通过一个具体的例子简单分析“实例教学———知识归纳———案例实践———总结”的教学模式。语法分析中有个重要的内容是项目集规范族C的构造, 这是自下而上语法分析中LR (0) 以及SLR (1) 分析表的关键, 但其构造算法描述很复杂, 我们从案例出发引导学生推导到算法规则。例:文法G为E→aA∣d, A→cA∣d, 要求给出该文法对应的项目集规范族C。教师通过讲解例子归纳出求解过程:首先引入新的开始符号S’拓广文法, 构成S’→S.作为唯一的接受态项目, 用closure ({S’→.S}得到初态项目集;计算go (I, x) 得到新状态J的项目集;重复前面两个步骤直到不出现新的项目集为止。在此基础上分析算法, 接着让学生自主完成练习领会算法思想, 这样比直接分析长篇幅的算法效果更加明显。

3.3 课程实验的深化

目前学校提倡“本科学历 (学位) +职业技能素养”的办学模式, 把实践教学提到了相当的高度。整个课程体系及人才培养方案都在强化实践, 同时编译原理课程属于技术学科, 必须注重理论与实践的有机结合, 强调课程实验的重要性, 强化对学生实践动手能力的培养。编译原理的实验难度大, 有的编译器实现程序代码多达十几万条指令, 因此我们一定要避免直接让学生分析和设计编译器, 要循序渐进, 按照高级程序语言的编译过程模块化地设计实验, 结合系统的编译原理实验教材逐步深入地进行课程实践, 真正把实践教学落到实处。

分层次制定课程的实践环节。最初借助面向对象编程语言的编译模型工具生成简单代码的词法分析和语法分析程序, 让学生理解代码的程序结构;在此基础上添加语义动作, 理解虚拟机生成代码;最后扩展教学模型, 分层次构造完整的编译程序。在综合实验部分, 教师可以设置好程序代码框架, 甚至提供源代码将关键模块挖空, 指导学生完成核心代码的编写与调试, 有方向性地指导学生完成课程设计, 以此让他们能投入更多的热情与精力去实际地开展有深度和广度的课程实践, 促进理论的进一步掌握。

4、结束语

编译原理在高校计算机专业课程体系中的地位是不可忽视的, 我们需要与时俱进, 适当调整课程教学的体系和内容, 以更好地顺应计算机技术的发展。怎样在有限的学时内让学生既能掌握扎实的理论, 又能切实提高实践的能力, 这是编译原理课程教学面临的难题。教师应通过优化教学改革、不断探讨, 采用多样的教学手段、灵活的教学方法, 不断地提高编译原理课程的教学质量。

摘要:以新建本科院校为背景, 从学生学习兴趣、教师教学、课程实践等几个方面分析了当前编译原理的教学现状, 提出了对教材、教学模式以及课程实验的基本改革思路, 用以提高编译原理教学效果。

关键词:编译原理,教学改革,面向对象,实例教学

参考文献

[1]何炎祥, 伍春香.计算机专业不需要开设编译原理课程吗[J].计算机教育, 2009年第4期

[2]Alfred V.Aho, Ravi Sethi.编译原理技术与工具 (英文版) [M].北京:人民邮电出版社, 2010

[3]胡学联.编译原理课程的调态与转型[J].计算机教育, 2006年11期

编译原理各章小结 篇8

2.整个编译过程可以划分为五个阶段以及编译各阶段的任务;另外还有两个处理过程。

3.不会有很多人会从事设计和编写编译程序的工作的,但编译技术会应用在很多领域。

1.已知文法G,判断VN=?,VT=?,判断某个符号串是否为该文法描述的句子。

2.已知文法G,写出它定义的语言描述;

3.已知文法G,给出其句子的各种形式的推导,会画出语法树;

4.文法二义性的判断——利用语法树:在文法G中去寻找某一个句子,能够给它画出两个不同的语法树。

1.词法分析的任务。

2.单词的概念与单词的分类以及输出方式。

3.弄懂一些重要的概念:

正规文法G、正规式r和确定有限自动机DFA和不确定有限自动机NFA。

4.会画出FA对应的状态转换图。

5.弄懂词法分析器的自动生成原理:

1.语法分析的任务;

2.确定的自顶向下语法分析方法的基本思想,存在的问题是:左递归和回溯;

3.分析方法:预测分析法。

1.自底向上语法分析方法的基本思想;

2.短语、直接短语和句柄底定义,以及如何利用语法树来寻找某个句型的所有的短语、直接短语和句柄;

3.自底向上语法分析方法:

①算符优先分析法:基本原理,识别句柄的方法,最左素短语。

②LR分析法:活前缀,LR(0)项目,LR(0)分析法,SLR(1)分析法。

语义分析与中间代码生成的任务。

弄清属性文法的概念。

弄清语法制导翻译的概念。

掌握常用的中间代码形式:逆波兰式和四元式。

掌握一般语法成分,如赋值语句,条件语句,循环语句和简单说明语句等结构的翻译。

数据空间的内容;

数据空间的三种分配策略;

临时变量的存储分配。

优化的分类;

常用的代码优化技术;

局部优化。

1.目标代码的形式 ;

2.目标机的指令系统;

编译原理概念期末总结复习 篇9

解释程序:边解释边执行源程序的程序。区别:编译程序有中间代码,而解释程序没有。编译过程的五个阶段:

1、词法分析 任务:对构成源程序的字符串进行扫描和分解,识别出一个个单词。

2、语法分析 任务:在词法分析的基础上,根据语言规则,把单词符号串分解成各类语法单位。

3、语义分析和中间代码产生 任务:对语法分析所识别出的各类语法范畴,分析其含义,并进行初步翻译。

4、优化 任务:对前段产生的中间代码进行加工变换,以期在最后阶段能产生出更为高效的目标代码。

5、目标代码生成 任务:把中间代码变换成特定机器上的低级语言代码。

编译程序的七个部分词法分析器,语法分析器、语义分析与中间代码产生器、优化器、目标代码生成器、表格管理和出错处理。

编译程序生成的五个办法:机器语言、高级语言、移植、自编译方式和使用工具自动生成。词法规则:指单词符号的形成规则。(也就是正规式)

语法规则:规定了如何从单词符号形成更大的结构。就是语法单位的形成规则。空字:不包含任何符号的序列。闭包:中所有的符号组成的集合。

上下文无关文法是指:所定义的语法范畴是完全独立于这种范畴可能出现的环境的文法。上下文无关文法的四个组成部分:一组终结符号、一组非终结符号、一个开始符号和一组产生式。

终结符号也就是不可再分的基本符号。

非终结符号是用来代表语法范畴,表示一定符号串的集合。开始符号是语言中我们最感兴趣的语法范畴。产生式是定义语法范畴的书写规则。

句子:文法中从开始符号推导的终结符号串。句型:从开始符号推导的符号串。语言:文法中所有句子的集合。

程序语言的单词符号分为五种:关键字、标识符、常数、运算符和界符。二元式表示:(种类,属性)

正规式的运算符有三种:或,连接和闭包。优先顺序是:闭包,连接,或。

DFA怎么识别字:若存在一条从初态结点到某一终态结点的通路,且这条通路上所有弧的标记符连接成的字是a,则称a可为DFA所识别。

DFA怎么识别空字:若DFA的初态结点同时又是终态结点,则空字可为DFA所识别。NFA怎么识别字:若存在一条从某一初态结点到终态结点的通路,且这条通路上所有弧的标记字依序连接成的字等于a,则称a可为NFA识别。

NFA怎么识别空字:若M的某些结点即是初态又是终态结点,或者存在一条从某个初态结点到某个终态结点的空通路,那么,空字可为M所识别。语言的语法结构是用上下文无关文法描述的。

语法分析分为两类:自上而下分析法,自下而上分析法。

自上而下分析法面临的问题:1.文法的左递归问题。2.回溯3.成功可能是暂时的,产生虚假匹配。4.难于知道输入串中出错的确切位置。5.效率低,代价高。为什么消除左递归?因为含有左递归的文法将自上而下分析的过程陷入无限循环。为什么消除回溯?因为回溯统一做一大堆无效的工作。

自下而上分析法:从输入串开始,逐步进行归约,知道归约到文法的开始符号。短语:符号串推导过程中某非终结符推导的部分。

直接短语:符号串推导过程中某非终结符一步推导的部分。句柄:一个句型的最左直接短语。最左归约是最有推导的逆过程。

《编译原理》课程设计要求 篇10

同时, 编译原理课程在普通高校本科生、重点高校本科生以及硕士研究生中均有开设, 其教学目的、教学内容以及教学方法应该有所区别。本文针对普通高校本科生, 就如何开展编译原理课程的教学展开讨论。

1 教学目的的确定

教学目的是一门课程的核心, 是开展教学工作的前提和基础。编译原理作为一门计算机及相关专业的专业核心课程, 在不同层次的学生之间均有开设。但针对学生的层次不同, 应设立不同的教学目标。

针对普通高校本科生, 未来的发展多定位在技术人员。因此, 培养方向应以“工程性”和“应用性”为主[1]。由此, 针对普通高校本科生, 可设定为以学习基本原理和方法为手段, 理论联系实际, 以培养学生计算机思维[2]、提高分析解决问题和理论联系实际的能力为目标来进行教学。下文中的学生, 如不特别说明, 均指普通高校本科生。

基本原理和方法的学习:编译原理课程中涉及到一些非常基础和重要的原理和和技术, 如正规式和正规文法以及状态自动机的等价性, LR分析法的正确性与合理性;用状态自动机 (DFA或NFA) 来进行单词的识别、用三地址代码进行中间代码的表示、基本结构的中间代码生成等。通过这些内容的学习, 可以对程序设计有深入的掌握和理解。同时, 编译原理是一门理论性和实践性都很强的课程, 如何将源语言转换成目标语言, 除了掌握其技术理论外, 还需能够将源程序 (如具体的C语言程序) , 转换成目标代码 (如汇编代码) 的形式。因此, 理论的学习必须与具体的源语言、目标语言以及目标机联系起来, 理论与实践结合的非常紧密。

分析解决问题能力的提高:在编译原理课程的学习中, 给出了多种问题的解决方法。如在语法分析问题上, 首先提出问题:如何判断一个句子是否是合规的句子。然后用自顶向下和自底向上两种方法对该问题进行了分析解决。类似地, 在中间代码生成部分, 给出递归求解中间代码的方法。这些常用和基本的问题解决方案对提高学生分析解决问题的能力有所帮助。

2 教学内容的选择

现阶段, 国内外编译原理的教材内容不断更新, 像并行编译、形式语言与自动机等内容都成为编译原理课程的一部分编写进了教材[3]。由于课时的有限性, 应根据学生的实际需求, 以通过对编译技术的学习, 提高学生编程能力为根本。具体来讲, 即通过对给定问题进行分析, 能够采用合适的结构来存储数据、运用合适的模型来描述问题, 然后提高运用语言编写代码的能力, 快速发现并纠正程序中错误的能力, 及编写高质量程序代码的能力。

在程序编写部分, 除了对程序语言的理解和掌握外, 主要就是对编译技术的掌握。其重点内容应包括:词法分析, 语法分析, 语义分析与中间代码生成, 中间代码优化及目标代码生成这几个主要的环节。其它内容, 在不影响课程进展的情况下, 可以考虑略讲或直接省略。如在自下而上语法分析中, 像算符优先分析可以不讲或略讲。在LR分析法中, 具体内容涉及到LR分析器及LR (0) 、SLR、规范LR及LALR分析表的构造方法。此处是语法分析中的难点, 如果逐一讲解必然占用大量课时。故可在LR分析器的基础上, 以LR (0) 为例来对自下而上语法分析进行讲解。然后, 在此基础上进一步引申, 如项目集中含有冲突项目 (如同时含有移进和归约项目) , 应该如何处理。这些供有兴趣的同学进一步探讨。

类似地, 对属性文件及语法制导翻译, 并行编译的内容, 以及形式语言与自动机的知识点, 采用点到为止的方式, 仅提出相应的问题, 不做细致分析讲解。

同时, 由于编译原理的先导课程较多, 如以C语言为源语言, 汇编语言为机器代码为例进行课程分析, 对涉及到的相关知识及内容应适当加以回顾, 使学生能将精力集中放到编译技术的理解上, 不因先导课程中知识点的不理解而影响对当前知识的掌握。

3 教学过程中的注意事项

编译原理课程是理论性强的课程, 也比较抽象, 如何让学生能够理解并运用其中的原理和技术, 从而来提高编程能力呢?实例引用和与实践结合就是课程讲授中非常重要的两个方面。

(1) 实例引用贯穿始终。如在编译过程概述中, 提到编译过程的各个阶段, 词法、语法及语义分析等概念, 学生一时难以接受和理解。此时可举实例进行讲解, 比如以赋值语句:area=pi*r^2为例, 讲解如何将本条语句由源程序通过词法、语法等步骤, 逐步转换成目标代码并加以执行的。从而使学生对整个编译过程有一个直观的印象。

同样, 在中间代码生成阶段, 举例说明是如何将三种基本结构的语句, 如顺序结构语句 (如赋值语句) 、控制结构语句 (如if…then, if…then…else语句) 、循环结构语句 (while和for语句) 等, 分别用具体的源语言程序来说明, 讲解是如何利用语义分析技术将其翻译成中间代码 (如三元式) 的。

(2) 与实践相结合。上面提到以实例来对相关的技术加深理解。而在实践应用方面, 只有将理论与技术真正应用于实践, 编译技术的学习才有意义。如在上机实习方面, 可通过C语言构造一个小的编译系统。可以分别利用flex和bison等工具构造词法、语法、语义分析器, 并在此基础上构造一个小的编译系统。使得词法分析可识别关键字、标识符以及各种符号, 语法分析可进行语法的判断, 语义分析器可进行一些数学运算, 而构造的编译系统可以将C语言的一个子集翻译成汇编语言的形式。

4 小结

针对普通高校计算机专业及相关专业本科生, 从教学目的、教学内容、教学中出现的问题三个方面对编译原理课程的教学进行了分析讨论。希望通过对这几个方面的讨论, 可以使学生能够对编译过程有更深入的理解, 并使其编程能力得到进一步的提高。

参考文献

[1]张昱.“编译原理”课程的教学内容选择的探讨[J].计算机教育, 2009 (18) :143-146.

(黑龙江大学)编译原理读书工程 篇11

“编译原理课程设计”读书报告

学院 年级 专业 学号 姓名 报告日期 成绩

计算机科学与技术学院 2011级

计算机科学技术专业 20114872 李军 2013.07.05

黑龙江大学计算机科学技术学院

一、开发环境简介

“编译原理”课程是计算机专业中一门重要的专业理论课,是一门理论性和实践性都很强的课程。为配合《编译原理》课程的教学,培养学生的实际工作能力,加深对课堂教学内容的理解,通过设计一个小型编译器,更深刻地领会其基本概念、基本工作原理和实现方法,从而具有初步开发系统软件和应用软件的实际能力,特开设此课程设计。

通过小型编译器的设计与实现,使学生系统地掌握编译程序的总体结构以及词法分析程序、语法分析程序、语义分析程序、代码生成程序;掌握结构化设计方法;了解大型软件的设计技术。开发环境:visual c++6.0 开发语言:c语言 开发人:李军

指导教师:付立平老师

二、基本理论阐述、当前理论或实践应用现状

编译器: 高级计算机语言便于人编写,阅读,维护。低阶机器语言是计算机能直接解读、运行的。编译器将源程序(Source program)作为输入,翻译产生使用目标语言(Target language)的等价程序。源代码一般为高级语言(High-level language),如Pascal、C、C++、C#、Java等,而目标语言则是汇编语言或目标机器的目标代码(Object code),有时也称作机器代码(Machine code)。

工作原理: 编译是从源代码(通常为高级语言)到能直接被计算机或虚拟机执行的目标代码(通常为低级语言或机器语言)的翻译过程。然而,也存在从低级语言到高级语言的编译器,这类编译器中用来从由高级语言生成的低级语言代码重新生成高级语言代码的又被叫做反编译器。也有从一种高级语言生成另一种高级语言的编译器,或者生成一种需要进一步处理的的中间代码的编译器(又叫级联)。

典型的编译器输出是由包含入口点的名字和地址,以及外部调用(到不在这个目标文件中的函数调用)的机器代码所组成的目标文件。一组目标文件,不必是同一编译器产生,但使用的编译器必需采用同样的输出格式,可以链接在一起并生成可以由用户直接执行的EXE, 所以我们电脑上的文件都是经过编译后的文件。高级语言程序处理过程:

三、小型编译器系统架构

它是一个编译器的架构.通俗的来说,它实现了一个库,在这个库上,可以很容易的实现不同的编译相关的程序,当然,编译器自然是其中最重要的一个.当然其他像编译时间的代码分析也是很容易实现的。构造识别符号串的自动机、词法分析程序的构造、语法分析程序的构造、中间语言的生成程序、编译程序的代码生成。

四、小型编译器主要功能模块与实现

(1)功能介绍 用户提供源代码,使用编译器进行编译,先用词法分析程序构造出符号表,然后利用语法分析程序分析橘子的语法,接着根据文法分析程序分法,在语法制导翻译和中间代码生成中,采用逆波兰式生成四元式再转化为汇编代码。词法分析:

定义:

词法分析器的功能输入源程序,按照构词规则分解成一系列单词符号。单词是语言中具有独立意义的最小单位,包括关键字、标识符、运算符、界符和常量等(1)关键字 是由程序语言定义的具有固定意义的标识符。例如,Pascal 中的begin,end,if,while都是保留字。这些字通常不用作一般标识符。(2)标识符 用来表示各种名字,如变量名,数组名,过程名等等。(3)常数 常数的类型一般有整型、实型、布尔型、文字型等。(4)运算符 如+、-、*、/等等。(5)界符 如逗号、分号、括号、等等。输出:

词法分析器所输出单词符号常常表示成如下的二元式:(单词种别,单词符号的属性值)单词种别通常用整数编码。标识符一般统归为一种。常数则宜按类型(整、实、布尔等)分种。关键字可将其全体视为一种。运算符可采用一符一种的方法。界符一般用一符一种的方法。对于每个单词符号,除了给出了种别编码之外,还应给出有关单词符号的属性信息。单词符号的属性是指单词符号的特性或特征。示例:

比如如下的代码段: while(i>=j)i--经词法分析器处理后,它将被转为如下的单词符号序列: <(, _> <>=, _> <), _> <--, _> <;, _>

词法分析分析器作为一个独立子程序

词法分析是编译过程中的一个阶段,在语法分析前进行。词法分析作为一遍,可以简化设计,改进编译效率,增加编译系统的可移植性。也可以和语法分析结合在一起作为一遍,由语法分析程序调用词法分析程序来获得当前单词供语法分析使用。

语法分析:

对任何输入串w试图从文法的开始符号出发,按与最左推导对应的顺序,构造w的语法分析树

如果构造成功,则w为相应文法的一个句子;否则w就不是文法句子

文法分析:

(3)算法描述 ①词法分析:

根据输入的句子从头开始扫描,独到一个字符后,判断它的类型,并更改相应的状态,下一次读入时,根据当前的状态和输入的字符的类型进行状态的转换和对次的添加。状态机在一定程度上反映了此法的一些规则,如不能一数字开头命名变量。

全局变量:

ch---字符变量:存放当前读进的源程序字符 token---字符数组:存放构成单词符号的字符串 调用函数

getch()---读字符函数:每调用一次从输入缓冲区中读进源程序的下一个字符放在ch中,并把读字符指针指向下一个字符

getbc()---读空白字符:每次调用时,检查ch中的字符是否为空白字符;若是空白字符,则反复调用getbc(),直至ch中进入一个非空白字符为止 concat()---字符串连接函数:把当前ch中的字符与token中的字符串连接。letter(ch)---字母字符判定函数:判定 ch 中的字符是否为字母,并返回true 或 false。

degit(ch)---数字字符判定函数:判定 ch 中的字符是否为数字,返回true 或 false。

reserve()---关键字判断函数:对token中的字符串查关键字表;若它是一个关键字, 则回送它的编码;否则,回送标识符的种别码。

语法分析:

算符优先文法的描述: 只规定算符之间的优先关系,也就是说只考虑终结符之间的优先关系。由于算富有先分析不考虑非终结符之间的优先关系,在规约过程中只要找到最左素短语就可以规约。

如给定一个文法G[S]:

S->#E# E->E+T E->T T->T*F T->F F->P/F F->P P->(E)P->i

利用算符优先文法分析过程处理如下:

1)计算给定文法中任意两个终结符对(a,b)之间的优先关系,首先计算两个集合FIRSTVT(B)={b|B->b„或B->Cb„} LASTVT(B)={a|B->„a或B->„aC}

语法制导翻译和中间代码生成: 定义语义函数和语义变量 语义函数emit 格式:emit(T=arg1 OP arg2)功能:生成一个三地址语句,并送到输出文件中 语义函数newtemp 格式:newtemp()

功能:产生一个新的临时变量名字,如T1、T2等,并回送新的临时变量名的整数码

注意:对临时变量有两种不同的处理方法(1)送到符号表(2)不进符号表,临时变量单词值部分用整数码表示 语义过程Lookup 格式:Lookup(i.name)功能:审查i.name是否出现在符号表。如在,则返回其指针;否则,返回NULL 语义变量:E.place 存放非终结符E值的变量名在符号表中的入口地址或临时变量名的整数码(4)程序流程图 词法分析:

语法分析: ‘#’’S’入栈,当前终结符送a上托栈顶符号放入X若产生式为X->x1x2x3..xn,按逆序入栈YNX inVT?YYX=a?读入下一符号M[X,a]是产生式吗NX=’#’?YN出错出错X=a?Y结束

预测分析程序框图

文法分析:

语法制导翻译和中间代码生成: 开始读入字符输入表达式进行扫描分词判断是字母还是数字还是运算符判断语句是否合法运算符,判断运算符的种类若为双目运算符则入符号栈,单目则出栈,修改状态位,若为(直接入栈,为)则一直出栈直到(为止根据变量在符号表中的位置来判断它的属性和值如果当前字符为 0-9的数字,则将其添加到结果(后缀表达式)串中。再次扫描输入串如果当前我字符为 +,-,*,/中的任何一个,如果当前字符的优先级高于栈顶运算符的优先级,则直接 将其压入栈中。当前字符的优先级小于等于栈顶运算符的优先级,则将栈中所有优先级大于等于 当前运算符的运算符弹栈,并添加到结果串中,然后将当前运算符压入栈中.结束(5)测试用例与实验结果 02

0

311 04

0

5五、读书工程心得总结

这是我这学期收获最大的一门课,在付老师的带领下,我完整地了解了编译器的整个流程和架构!通过老师的帮助和自身的努力,以上便是我对这门课的答卷,我深知,自己能力有限,不可能达到完美!但至少我知道,我努力的方向,并且为此不懈奋斗者!希望这段程序,能成为我大学最美好的回忆!

六、参考文献

《编译原理》课程设计要求 篇12

(一)基本要求:

通过课程设计,一方面加深理解课堂上理论课程的学习内容,一方面培养解决工程实际问题的能力,综合考虑工艺与设备结构的创新性、技术上的可行性与经济上的合理性,同时针对制药设备的特殊性还要符合GMP规程。并可以熟练查阅国家技术规范、正确选用计算公式和数据处理,运用简洁的文字、图形和工程语言正确表述设计思想与结果。

(二)课程设计题目:

在以下两大类中任选一个题目进行设计。反应器与分离设备的工作体积不做具体要求,但若做放大设计要写明详细的放大流程。

1,反应器设计:可以选择生物反应器或化学反应器。

生物反应器,包括但不限于机械搅拌发酵罐、气升式发酵罐、动植物细胞培养反应器、固定化酶反应器等;

化学反应器,包括但不限于釜式反应器、管式反应器、塔式反应器、固定床或流化床反应器等。

2,制药分离设备

萃取设备,包括但不限于液液萃取设备、液固萃取设备、新型萃取设备(如超临界萃取设备、微波萃取设备、超声萃取设备、微流控芯片液液萃取和固相萃取等);

膜分离设备,包括但不限于管式膜组件、螺旋卷式膜组件、中空纤维膜式膜组件等,鼓励设计新型膜组件,特别是反应-分离一体式的新型膜反应器设备。

(三)课程设计内容与要求:

1,总体要求

课程设计内容为选定一种反应或分离设备,针对一定的工艺与产品进行设计,在物料衡算与能量衡算的基础上,依据国家统一的技术规范与GMP规程对设备容积、尺寸、结构、动力消耗、换热设备及其他附属设备等做出计算与设计,1

编写完整的设计说明书,并手绘或AutoCAD绘制设备图纸,同时准备PPT对整体设计做口头说明,整体设计中至少要有一项创新。

2,设计说明书

说明书每组提交一份,图纸每人提交一份。第17周周三上课时提交。设计说明书应包括如下几部分:

(1)封皮与目录: 封皮包括题目、组长与小组成员姓名(3人一组,选一名组长)、完成日期等信息,并编制目录。

(2)前言: 对所选题内容现有国内外研究情况做一概述,可以是对所选工艺采用的不同设备做一综述,也可针对所选设备类型的改良与应用方面做一简要综述。500-1000字。

(3)设计方案论述: 这一部分相当于一篇文章的摘要部分,要求对设计思路做一整体性的说明,着重对设计的创新点做出详细解说,字数不限。

(4)工艺选择:应明确设备担负的工艺操作任务和工作性质,即设计要有针对性,写明是针对哪种或哪一类反应或分离任务而设计。设备的生产能力不做统一要求,学生自主选择,并在说明书中写明。

(5)工艺设计与计算

根据选定的方案和规定的任务进行物料衡算、热量衡算、主体设备工艺尺寸计算和简单的机械设计计算,写明设计依据(物系数据,经验公式,国家标准等),并以列表形式汇总工艺计算结果。

以通气搅拌发酵罐为例,选定发酵产品,对生产过程特点做一简要说明(如需氧情况,搅拌情况,生产是否存在不同阶段需要分段控制等),明确生产量,确定工作压力,反应温度,选定反应器型式(如釜式),明确换热设备类型(小型设备一般用夹套,大中型设备用列管式换热器)等。然后列出各物系参数,进行物料衡算与热量衡算,确定发酵罐工作体积与换热面积,供氧量等。

发酵罐具体结构和主要参数设计包括:

发酵罐的容积(考虑装填系数);

主要尺寸(高径比,封头体积等);

搅拌器类型与个数(如叶宽,叶距,底距,弧长,弯叶板厚度等);

换热面积和换热器排布,峰值时冷却水用量等;

搅拌轴功率与电机选择(有分段操作的列出各工段的计算过程);

通气量与通气管径;

辅助设备(挡板,空气分布器,人孔与手孔,各生物传感器布置与控制系统,包括温度、压力、液位控制、溶氧控制等)等;

确定发酵罐材质(写明选择依据,列出国家标准),壁厚,支座选择,接管管径等信息;

设备清洗与维护信息,如是否有原位清洗功能。

上述每一步计算都应列出详细的依据,如经验公式,手册数据或国家标准等,将结果列表展示。

(6)附所有符号的列表说明;

(7)所有设计要满足GMP要求,说明书内容是求完整、正确,文字表达简洁、清楚。每组还要在说明书后附上各组员的分工内容与工作量比例。

3,图纸

图纸全部使用A3纸,使用手工作图或AutoCAD制图,推荐使用AutoCAD制图。独特的细节设计可在总体设备图旁边单独附图。图纸表达是求规范、正确,严格按照工程制图的表达要求,图面整洁、清楚。

(四)创新点:

设计要求至少有一个创新点,以反应器为例,可以在搅拌桨上做改进,反应-分离等多过程耦合的新式反应器,也可是检测设备等附属设备上有所改进,或在清洗等辅助工段上有所创新,总之鼓励大家大胆的进行尝试,但要有详细的理论可行性论证,并要符合相应的国家标准。

(五)考核:

考核内容包括说明书质量,图纸质量,与口头论述三部分。说明书每组提交一份,图纸每人提交一份,第17周周三上课时提交,每组还要在说明书后附上各组员的分工内容与工作量比例,考核时一并考虑。

《编译原理》课程设计要求 篇13

关键词:编译原理,专业能力,专业素质

0 引言

高等教育为国家的现代化建设培养人才,《中华人民共和国高等教育法》规定,本科教育应当使学生比较系统地掌握本学科、专业必需的基础理论、基本知识,掌握本专业必要的基本技能、方法和相关知识,具有从事本专业实际工作和研究工作的初步能力[1]。这项规定要求本科学生学习一门课程,不仅仅是对该门课程所含内容的学习、研究和设计,更为重要的是培养学生的专业能力和专业素质。专业能力和专业素质在学生的可持续发展及创新精神与能力的形成中具有至关重要的作用。笔者认为,大学本科计算机专业的学生,作为接受专业教育的专业人才,除了应该具备最基本的获取知识与信息的能力、良好的沟通与表达能力、自学能力、创新能力、团队合作能力、综合应用知识能力等之外,还应拥有计算思维、算法设计与分析能力、优秀的编码能力、系统项目实施能力等专业能力和专业素质。

1 编译原理在计算机学科中的重要地位及教学现状

国内高校最早于20世纪70年代末开设编译原理课程,该课程经过40余年的发展和改革,现已成为国内大部分高校计算机科学及相关专业的一门专业必修课,是计算机学科的核心课程。编译原理旨在介绍编译程序构造的一般原理、基本设计方法、主要实现技术和一些自动构造工具,具有理论性强、系统性强、实践性强等特点[2]。编译原理被公认为高年级计算机专业课程中最难学的课程之一,它所涉及的形式语言与自动机理论是计算机科学理论的重要基础,可以让学生领悟到计算机理论的精髓,培养学生的抽象思维能力和形式化描述能力,培养计算思维;编译程序的构造原理和技术是计算机科学技术中理论和实践相结合的一个最好典范,它要求学生能够从系统的全局出发去看待、分析、解决问题,在软件工程的指导思想下,通过计算机专业知识的融会贯通完成一个小型编译器的开发,能够多角度地提高学生的逻辑思维能力、综合应用知识能力及学生编程调试、系统项目实施等实践动手能力,切实有效地提高学生的专业能力和专业素质。

虽然编译原理课程在计算机学科中占有如此重要的地位和作用,然而从湖南工业大学计算机与通信学院历届学生的教学反馈情况来看,很多学生并没有获得理想的学习效果,大部分学生认为编译原理课程枯燥、抽象、复杂,课程各章节内容密切连贯,同时又涉及众多专业课程的综合应用,这些都与该校目前纯理论的授课方式、压缩的理论课时形成鲜明的反差。再者有的同学认为,现在有很多优秀的编译器前端和后端可直接采用,只要自己以后不从事编译系统的研究和开发或者计算机科学理论的研究,就无所谓学不学得好这门课程了,甚至一部分同学认为学校可以将该课程从人才培养计划中删除。因此,怎样定位编译原理课程的教学指导思想,提高学生的学习兴趣,从教学内容、教学方法及教学手段等各方面协调保证该课程的教学目标和效果是一个亟待解决的问题。

2 基于培养专业能力和专业素质开展编译原理课程教学

2.1 明确“能力导向”教学目标,开展兴趣教学

根据“A”型人才结构“厚基础、宽口径、强能力、高素质”的高校跨世纪人才培养目标,结合计算机专业人才社会需求以及国际计算机科学课程的未来发展趋势[3],我们把编译原理课程建设目标定义为立足夯实基础,掌握编译原理中的基本概念、原理和方法;理清课程的联系,建立课程的有机衔接,拓宽课程相关领域;结合编译理论和技术中经典的案例培养计算思维;加强实践训练工程素质,培养学生对软件的规划、组织、设计与实现等综合应用能力。心理学研究表明,兴趣是人类最好的导师,是人们力求认识某种事物或爱好某种活动的心理倾向,它能够引导和激发人们从思想和意志上去努力探索某种事物的底蕴。学习一门专业,一门课程,想要学生学得好、钻得精,需要激发他们强烈的学习兴趣,让他们愿意去主动学习。那如何激发和培养学生对编译原理课程的学习兴趣呢?这应从入门开始,在讲授编译原理课程的第一次课时,我们首先要介绍编译原理课程的教学目标,强调课程的重要地位和重要意义,让学生明确学习目标,带着重视而又猎新喜奇的心理开始学习。然后应做到让兴趣教学贯穿整个教学过程,这就要求老师能够根据不同的教学内容采用不同的教学方法(如类比式、启发式、实例式等)来提升学生学习兴趣,增强教学效果。

2.2 理清课程的联系,建立课程的有机衔接,拓宽课程相关领域

编译原理课程涉及许多其他课程知识和技术领域,在该课程授课时,应该让学生理清这些课程之间的联系,建立课程的有机衔接,形成计算机专业人才特有的系统的专业知识结构,培养学生的综合理解和运用知识的能力,从而提高其专业素质。例如,在课程教学中以讨论的方式分析利用C语言或C++语言实现经典算法的思想和技术特征,让学生感受过程式编程和对象式编程的区别,从而进一步准确掌握程序设计语言,学习新的编程范型,提高程序设计能力。让学生在软件工程的指导思想下分析、设计一个小型编译器,应用数据结构的知识存储、组织数据,应用算法设计与分析的知识设计算法,应用操作系统的知识对目标代码进行存储组织、分配并最终实现优化,启发式地让本课程和其他课程的知识点融合或者关联,将专业能力和素质的提升融入教学之中。此外,由于编译程序的算法和技术比较经典,不仅可以广泛应用于一般软件的设计实现中,还可渗透、拓展到其他学科技术中,所以我们还可进一步引导学生思考编译理论对今后学习、工作的指导意义。

2.3 结合编译理论和技术中经典的案例培养计算思维

计算思维是运用计算机科学的基础概念进行问题求解、系统设计及人类行为理解等涵盖计算机科学之广度的一系列思维活动[4]。它包含问题分解、抽象、自动化、递归等一系列经典的计算机科学的思维方法。如何培养计算思维,是当前大学计算机教育教学研究的热点课题之一。编译原理课程知识体系结构完整,在它经典理论和先进技术的发展中,很多编译成果正是应用计算思维的结晶。该课程中许多知识点都为计算思维提供了很好的诠释和生动的案例。例如,课程中介绍的形式化语言与自动机理论,正是运用了计算思维中2个重要的手段——抽象和自动化,用这2个手段去探索词法分析和语法分析等问题的本质,形成一系列将抽象思维的结果在计算机上实现的自动分析方法,将理论成果应用于技术实践。课程中介绍的“自顶向下和自底向上”的分析方法就是2种典型的问题分解的计算思维方法,可以引导学生从宏观到微观分层次考虑问题,鼓励学生关注和掌握系统逻辑,由简到繁、逐渐深入、逐步求精。此外,课程中的属性计算、语法制导翻译就是运用递归求解方法把比较复杂的原始问题逐步化简为一个简易的类似问题,把该问题解决后再逐层向外扩展。实践证明,结合编译理论和技术中经典的案例在编译课程的教学中培养学生的计算思维是值得探索的。

2.4 加强实践,提升系统能力,训练工程素质

编译程序作为一个庞大而复杂的系统程序,包含很多抽象、理论性较强的算法和思想,构造一个编译器是系统的、成规模的、有难度的。它包括多个不同的处理阶段,由多个完成不同功能、执行在不同阶段的子程序组成。它要求学生不仅要对各个子程序的功能和方法有清晰的认识,还应该遵循软件工程的思想和规范,将各个子程序很好地衔接在一起,保证开发出的编译程序具有较好的质量和可维护性。而在湖南工业大学,目前的编译原理课程只有40节纯理论授课课时,这肯定是不科学的,因此必须加强实践,增加实验和课程设计,让学生在透彻地理解掌握编译程序理论的基础上,系统全面地掌握编译技术,真正运用所学的知识去解决实际问题,通过让学生参与较大型系统的设计与实现来培养学生对软件的规划、组织、设计与实现的综合能力,增强学生的系统能力和合作能力,训练工程素质。

3 结语

对于计算机专业教育来说,专业能力和专业素质的培养,它是一个系统的工程,不是哪一门课程的教学就可以解决的问题,它应贯穿于整个大学教育的每一门专业课程。为了更好地完成编译原理课程的教学使命,让学生系统、全面地掌握编译技术,通过计算机专业知识的融会贯通切实有效地提高学生的专业能力和专业素质,高校教师应该不断探索更为合理的教学模式,不断提高教学质量,应该强调实践,保证编译过程的完整性,让学生用最简单的方式完成一个完整的翻译过程。

参考文献

[1]蒋宗礼.编译原理课程与专业能力培养[J].计算机教育,2009(21):4-6.

[2]陈意云.编译原理[M].北京:高等教育出版社,2008.

[3]陈英,计卫星.编译原理课程教学指导思想的思忖[J].计算机教育,2009(21):14-15.

上一篇:2016职业健康培训绩效评估报告下一篇:浅谈多媒体在美术课堂教学示范中的作用