失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 编译原理公式计算器C语言 编译原理课程设计-简单计算器实现.doc

编译原理公式计算器C语言 编译原理课程设计-简单计算器实现.doc

时间:2020-07-19 05:12:07

相关推荐

编译原理公式计算器C语言 编译原理课程设计-简单计算器实现.doc

编译原理课程设计-简单计算器实现

课程设计报告课程:编译原理学号:姓名:班级:11级嵌入式应用技术班教师:时间:6月计算机科学与技术系

设计名称:简单计算器的实现设计内容、目的与要求:设计内容:

计算器的功能要求如下:可以支持加(+)、减(-)、乘(*)、除(/)运算,如3+4-5*2/2;支持括号运算,如(4+5)*5/8。用户输入表达式后,转化为逆波兰式并执行计算,最后输出该表达式的结果。

设计目的:

1、对单词的构词规则有明确的定义;?

2、编写的分析程序能够正确识别源程序中的语法符号;

3、计算器源程序的以.c格式输出;?

4、对于源程序中的语法错误,能够做出简单的错误处理,给出简单的错误提示, 保证顺利完成整个源程序的分析;?

5、计算器能够实现加,减,乘,除,混合运算,多项式运算

设计要求:

将非后缀式用来表示的算术表达式转换为用逆波兰式来表示的算术表达式,并计算用逆波兰式来表示的算术表达式的值。?

掌握利用算符优先分析法完成中缀表达式到逆波兰式的转化。计划与进度安排:

5月日月日月日月日月日月日月日

2.2.3逆波兰式生成的设计思想及算法

首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。

读入一个用中缀表示的简单算术表达式,从左至右扫描该算术表达式,从第一个字符开始判断,如果该字符是数字,则分析到该数字串的结束并将该数字串直接输出。

如果不是数字,该字符则是运算符,此时需比较优先关系。

做法如下将该字符与运算符栈顶的运算符的优先关系相比较。如果,该字符优先关系高于此运算符栈顶的运算符,则将该运算符入栈。倘若不是的话,则将此运算符栈顶的运算重复上述操作直至扫描完整个简单算术表达式,确定所有字符都得到正确处理,我们便可以将中缀式表示的简单算术表达式转化为逆波兰表示的简单算术表达式。

图三 实现计算器加法功能

图四 实现计算器减法功能

图五 实现计算器乘法功能

图六 实现计算器除法功能

图七 实验计算器混合运算功能设计体会与建议: 在期末的课程设计中,我们小组讨论选择一个比较熟悉的课题——简单计算器的实现。本课题的设计要求是实现具有加、减、乘、除、括号等运算的简单计算器,输入表达式,输出该表达式的值。从大一学习C语言,到大三学习JAVA,我们都接触过实现计算器的实验,对于本次的课程设计,我们还是有点基础。而这次的课程设计我们选择是用C语言编写的。设计的主要原理是用后缀表达式和堆栈实现对表达式的分析后进行计算。

在编程的过程中,有些C语言的知识已经忘记,我重新找出C语言的书,一边重温之前学习的知识,一边编写代码。在此,我运用到编译原理中间代码生成的一种形式——逆波兰式。逆波兰式生成的要点是运算对象顺序不变,运算符紧跟运算对象之后。掌握了这个要点,理解起来还是很容易的。在这次的课程设计中,通过我们小组的积极配合,共同努力,我们很顺利的完成这次任务。但是我感觉有两点不足,就是我们不能实现小数的计算,再者就是运行的界面不够美观。这两点需要提升。总的来说,对于这次课程设计我很满意。

这学期学习编译原理这门课程,一开始我认为学习编译原理就是了解一些原理,理论的知识,是不需要编写代码的,但是在第一堂课经过老师的介绍之后,我了解到,虽然本课程是编译原理,书本上讲到的都是一些理论知识,但是无论是哪一门课程都是需要有实践作为基础才能够将其学习的更好。在第一次课上,老师就声明这门课比较难,要认真学,所以我很认真的对待这门课程。

本次课程设计是实现一个简易的计算器,经过大一以到大三的学习,再重新运用C语言编程感觉还挺上手的,这也可以让我重新复习一下C语言的知识。这次课程设计采用逆波兰式的知识,这可以很好的表示简单算术表达式,其优点在于易于计算机处理表达式。本次设计使我进一步端正了我的学习态度,学会了实事求是,对自己要严格要求。我觉得动手做设计之前,头脑里必须清楚该怎么做,这一点是很重要的。就目前来说,我的动手能力虽然差一点,但我想,通过我的不懈努力,在这方面,我总会得到提高。在此次的课程设计中我最大的体会就是进一步认识到了理论联系实践的重要性。总而言之,此次课程设计让我学到了好多平时在课堂上学不到的东西,增加了我的知识运用能力,增强我的实际操作能力。我相信经过实践后的学习我可以将编译原理这门课程掌握的更好。

编译原理是一门比较难懂但是又非常核心的计算机课程,在学习的过程中对什么是编译程序,编译程序工作的基本过程及其各阶段的基本任务,熟悉了编译程序总流程框图,了解了编译程序的生成过程、构造工具及其相关的技术#include

#include

如果觉得《编译原理公式计算器C语言 编译原理课程设计-简单计算器实现.doc》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。