对于小学四则混合运算出题软件的设计,通过分析设计要求,我觉得为了这个软件在今后便于功能上的扩充,可以利用上学期所学习的《编译原理》一课中的LL1语法分析及制导翻译的算法来实现。这样做的好处有以下几点:

1. 由于LL1制导翻译是一项成熟且可靠的技术,并且其递归下降算法易于改编为算式生成算法;

2. 我们有系统的方法可以获得较复杂表达式的LL1文法,则可以方便地生成形式丰富的算式;

3.由于四则混合运算中需要考虑运算优先级的问题,那么采用LL1分析器可以很方便的实现计算表达式的功能;

4.当用户需求给出一个解题过程而不仅仅是一个答案时,LL1分析器可提供一个正确的解题过程(可以将LL1制导翻译中四元式的生成改写为计算过程)。

当然,在实现中也有一些问题需要分析解决的,比如控制算式的长度、避免算式中出现多余的括号、避免出现无运算符的算式、避免出现无意义的算式等等。

目前我的 Version 1.00 已经实现采用改写的LL1分析器来产生算式并且能够同时获得答案的功能,但同时也出现了上述问题中的一部分。毕竟1.00版本的程序挺粗糙的,接下来我会逐个分析并解决,之后发布 Version 1.01。

基于LL1文法的混合运算生成器 1.00 调试:

转载于:https://www.cnblogs.com/MrAJKO/p/5255748.html

软件工程学习之小学四则混合运算出题软件 Version 1.00 设计思路及感想相关推荐

  1. 【数据结构】支持四则混合运算的计算器(转)

    1.给出两个数,用户再指定操作符,要求计算结果,这实现起来很容易:   2.多个数,但只涉及同一优先级的操作符,做起来也很容易:   3.多个数,不同优先级的操作符,怎么办呢? 想想就头痛,不过还好前 ...

  2. C语言编程学习:写的秒速计算四则混合运算项目

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  3. 分数混合运算简便方法_分数四则混合运算

    第一课时 分数四则混合运算 教学内容:教科书第80页的例1."练一练",练习十五第1-5题. 教学目标: 1.使学生结合解决实际问题的过程,理解并掌握分数四则混合运算的运算顺序,并 ...

  4. java简单运算程序_JAVA实现简单四则混合运算

    JAVA实现简单四则混合运算,说明:该计算器支持实则混合运算,如 2*(3+1 )/ 4-3 *9+ 8/ 3*4- 5,则输出:-19.333332 需要说明的事括号必须是英文的.源码如下仅供学习: ...

  5. 四则混合运算c语言程序例,C++实现四则混合运算计算器

    本文实例为大家分享了C++实现四则混合运算的计算器,供大家参考,具体内容如下 计算器是带括号的四则运算实际上利用的是栈后进先出的原则 转换思想: #define _CRT_SECURE_NO_WARN ...

  6. java实现四则混合运算

    最近在看数据结构.想要实现四则混合运算.用栈来实现. 去网上看了好些代码(想偷懒来着)结果代码都不全.思路不清晰. 看的难受,最后觉得还是自己写吧.学习嘛,偷懒不得. 栈的本质就是个线性表.结构就是个 ...

  7. java 四则混合运算_Java实现四则混合运算代码示例

    使用栈来实现,可以处理运算优先级. 使用自然四则运算表达式即可,如:4+(3*(3-1)+2)/2.无需把表达式先转换为逆波兰等形式. package com.joshua.cal; import j ...

  8. c# 四则混合运算算法

    对于四则混合运算其实在大三的时候就接触过,但是由于当时自己太菜,只顾着玩游戏跳课了.所以这个算法一直没有用代码实现过.当时学霸还给我简单的讲了一下方法,只因身为学渣的我,只想对学霸说一句,道理我都懂, ...

  9. 四则混合运算表达式分析程序的原理及其实现

    意义: 四则混合运算表达式可以看作一定语言中的表达式分析及求值,虽然它很小,却是一个语法分析的很好的例子! 一.目标:可以对输入的四则混合运算表达式进行分析,并求出其结果.程序须支持:整数及小数运算. ...

最新文章

  1. PostgreSQL 的 MVCC 机制解析
  2. 百一测评mysql数据库答案_MySQL练习题,百炼成神~
  3. 【错误记录】-eclipse 导入类 提示The import XXX cannot be resolved
  4. android模拟器启动没有拨号功能
  5. buck变换器设计matlab_2.5V/2A 高质量电源设计
  6. dash 和 bash 切换
  7. TensorFlow 实例一:线性回归模型
  8. js 免费语音合成 (百度AI)- 代码篇
  9. python - super 寻找继承关系
  10. 【小贴士】工作中的”闭包“与事件委托的”阻止冒泡“
  11. 广联达软件未检测到加密锁
  12. 计算机专业立项课题研究,计算机类课题研究选题参考
  13. Centos系统升级到7.6
  14. FaWave(发微)多微博版内测
  15. E.密码(算法选修)
  16. 邮件编码介绍及乱码的解决
  17. Word文档如何进行压缩文件?
  18. textarea禁止拉伸样式
  19. WEB API新增整理(三)
  20. 《英语口语900句 (624页+360分钟录音)》(Oral English 900 Expressions)

热门文章

  1. 从GitHub火到了博客,共计1658页的《Java岗面试核心MCA版》,拿走不谢
  2. 服务器怎么部署静态网站,纯静态网站部署服务器
  3. 项目记录: HEVC单帧码流硬解渲染
  4. 华为HCNA之SNMP基础配置实验
  5. 小程序 微信位置详情页打开小程序
  6. dfs暴力模拟 Moo(洛谷 P1885)
  7. 六边形战士—雷达图实现
  8. Opera全球CEO:计划近期推出中国版浏览器
  9. 新一代Json解析库Moshi使用及原理解析
  10. c语言数组中插入新数据