软件工程学习之小学四则混合运算出题软件 Version 1.00 设计思路及感想
对于小学四则混合运算出题软件的设计,通过分析设计要求,我觉得为了这个软件在今后便于功能上的扩充,可以利用上学期所学习的《编译原理》一课中的LL1语法分析及制导翻译的算法来实现。这样做的好处有以下几点:
1. 由于LL1制导翻译是一项成熟且可靠的技术,并且其递归下降算法易于改编为算式生成算法;
2. 我们有系统的方法可以获得较复杂表达式的LL1文法,则可以方便地生成形式丰富的算式;
3.由于四则混合运算中需要考虑运算优先级的问题,那么采用LL1分析器可以很方便的实现计算表达式的功能;
4.当用户需求给出一个解题过程而不仅仅是一个答案时,LL1分析器可提供一个正确的解题过程(可以将LL1制导翻译中四元式的生成改写为计算过程)。
当然,在实现中也有一些问题需要分析解决的,比如控制算式的长度、避免算式中出现多余的括号、避免出现无运算符的算式、避免出现无意义的算式等等。
目前我的 Version 1.00 已经实现采用改写的LL1分析器来产生算式并且能够同时获得答案的功能,但同时也出现了上述问题中的一部分。毕竟1.00版本的程序挺粗糙的,接下来我会逐个分析并解决,之后发布 Version 1.01。
基于LL1文法的混合运算生成器 1.00 调试:
软件工程学习之小学四则混合运算出题软件 Version 1.00 设计思路及感想的更多相关文章
- 软件工程学习之小学四则混合运算出题软件 Version 1.1 设计思路及感想
继上次采用形式文法来生成混合运算的算式,由于算法中没有引入控制参数而导致容易产生形式累赘(多余的括号等)的算式.本次更新决定采用一种更为简单有效的生成方式,由给出的一个随机的最终答案S,通过给定的一个 ...
- C语言编程学习:写的秒速计算四则混合运算项目
C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...
- MathExamV2.0四则混合运算计算题生成器
MathExamV2.0四则混合运算计算题生成器----211606360 丁培晖 211606343 杨宇潇 一.预估与实际 PSP2.1 Personal Software Process Sta ...
- 如何处理加括号的四则混合运算表达式——基于二叉树的实现(Eclipse平台 Java版)
记得上<数据结构>课程时,利用栈的特性解决过四则混合运算表达式.而如今在编写小型关系数据库的时候,编译部分要处理where后面的逻辑表达式——检查语法正确与否的同时,还要将信息传给下一个接 ...
- java 解析四则混合运算表达式并计算结果
package ch8; import java.util.LinkedList; import java.util.List; import java.util.Stack; /** * 四则混合运 ...
- 用C++实现的有理数(分数)四则混合运算计算器
实现目标 用C++实现下图所示的一个console程序: 其中: 1.加减乘除四种运算符号分别用+.-.*./表示, + 和 - 还分别用于表示正号和负号. 2.分数的分子和分母以符号 / 分隔. 3 ...
- web四则混合运算2
一.设计思路: 先出题(String型)(上周已经实现),再写方法计算结果,加入控制有无乘除法,范围,参与计算数,出题数,页码显示等简单功能,有无括号和分数的计算目前还没能实现. 二.代码: 界面 & ...
- web四则混合运算3
一.程序要求: 可以控制下列参数: 是否有乘除法: 是否有括号(最多可以支持十个数参与计算): 数值范围: 加减有无负数: 除法有无余数! 二.设计思路 要求能够通过参数来控制有无乘除法,加减有无 ...
- Web四则混合运算
一.代码1: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...
随机推荐
- BZOJ4300:绝世好题(DP)
Description 给定一个长度为n的数列ai,求ai的子序列bi的最长长度,满足bi&bi-1!=0(2<=i<=len). Input 输入文件共2行. 第一行包括一个整数 ...
- JAVA 对基础知识的加强
一.我们在写类的时候.设置字段的时候含义: 简单的javabean类: package jd.com.vo; import jd.com.mybaitstest.account; public cla ...
- CentOS配置Hive
hive搭建共分为三种模式:1.embedded,2.local,3.remote server 在这里,主要是配置第3种模式:remote server模式,如下图所示: 我的环境共三台虚拟机:Ho ...
- Leetcode——338. 比特位计数
题目描述:题目链接 对于求解一个十进制数转化为二进制时里面1的个数,可以先看一下概况: 十进制数 二进制数 1的个数 1 1 1 2 10 1 3 11 2 4 100 1 5 101 2 ...
- python:'ascii' codec can't encode character
python默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错,python没办法处理非ascii编码的, 此时需要自己设置python的默认编码,一般设置为u ...
- day76
昨日回顾: 1 ajax 什么是ajax:异步的JavaScript 和xml 2 特点:异步,局部刷新 3 简单的与后台交互:(携带数据:可以拼到url上---->从GET中取,) ...
- 【本地服务器】利用openssl生成证书
(一)下载openssl软件,解压,进入bin目录 下载地址 (二)1.在当前bin目录,按住shift键右击,选择"在此处打开命令窗口" 2.打开cmd命令窗口之后,在窗口中输入 ...
- python_分布式进程中遇到的问题
看文档学习分布式进程中遇到了一下问题,文档里面例题是python2.X,我用的python3.x,就出现了一下莫名奇妙的问题,最终版代码先呈上: taskManager.py # coding:utf ...
- XSS跨站攻击(二)
本人最近在学习XSS,想总结一下常见的XSS攻击的几种情况,刚好看到<防御 XSS 的七条原则>这篇文章,里面讲的七条防御原则不正是针对XSS的几种利用方式吗?于是,借来学习一下. 原则1 ...
- PYQT5实现控制台显示功能
首先,写一个信号,用来发射标准输出作为信号 class EmittingStream(QtCore.QObject): textWritten = QtCore.pyqtSignal(str) #定义 ...