第六周-总结&结对编程
1.结对编程
结对编程的Partner依旧是郑蕊师姐(博客:http://www.cnblogs.com/zhengrui0452/)
我们一起改进的是郑蕊师姐做的“四则运算”
郑蕊师姐之前完成四则运算的方式是使用枚举,现在要是用逆波兰的方式实现“四则运算”
首先师姐像我介绍了如何使用逆波兰的方式实现运算式的逻辑先后。在一个运算式中包含:运算符、操作数两部分
通过逆波兰的方式实现四则运算的整体思路如下:
1.生成操作数、运算符(为了尽可能的保证思路正确的前提下完成四则运算。我们首先将操作数规定为整数(0-9),运算符只使用“+”“-”“*”“/”)
2.根据已生成操作数、运算符生成运算式(中缀表达式)
3.根据运算式的中缀表达式生成后缀表达式
4.根据后缀表达式计算表达式结果
在将中缀表达式转换为后缀表达式的过程中,要定义运算符的优先级:“+”=“-”<“*”=“/”
通过使用栈 Stack这种数据结构根据如下规则生成后缀表达式
(1)首先,需要分配2个栈,栈s1用于临时存储运算符(含一个结束符号),此运算符在栈内遵循越往栈顶优先级越高的原则;栈s2用于输入逆波兰式,为方便起见,栈s1需先放入一个优先级最低的运算符,在这里假定为'#';
(2)从中缀式的左端开始逐个读取字符x,逐序进行如下步骤:
1.若x是操作数,则分析出完整的运算数(在这里为方便,用字母代替数字),将x直接压入栈s2;
2.若x是运算符,则分情况讨论:
若x是'(',则直接压入栈s1;
若x是')',则将距离栈s1栈顶的最近的'('之间的运算符,逐个出栈,依次压入栈s2,此时抛弃'(';
若x是除'('和')'外的运算符,则再分如下情况讨论:
若当前栈s1的栈顶元素为'(',则将x直接压入栈s1;
若当前栈s1的栈顶元素不为'(',则将x与栈s1的栈顶元素比较,若x的优先级大于栈s1栈顶运算符优先级,则将x直接压入栈s1。否者,将栈s1的栈顶运算符弹出,压入栈s2中,直到栈s1的栈顶运算符优先级别低于(不包括等于)x的优先级,或栈s2的栈顶运算符为'(',此时再则将x压入栈s1;
(3)在进行完(2)后,检查栈s1是否为空,若不为空,则将栈中元素依次弹出并压入栈s2中(不包括'#');
(4)完成上述步骤后,栈s2便为逆波兰式输出结果。但是栈s2应做一下逆序处理,因为此时表达式的首字符位于栈底;
在实现的过程中,师姐先根据上述逻辑写出了伪代码(这点真的很重要),然后将伪代码实现。
由于我们最开始在判断是否是数字的地方写错了(ASCII码 0 – 9 对应 48 - 57),判断条件本应该是<58结果写成了 <57 !!汗
对于去栈元素时要判断栈是否为空的逻辑位置错误,导致开始生产的表达式有问题,后来讲判断空栈提到运算符优先级判断外层,解决了这一问题。
师姐在写代码能力非常6666,赞!偶尔会有一些不注意而出现的错误,如上面判断数字的地方,这种情况我也有过很多,一起前进。互勉!
2.PSP
| Job | Type | Date | Start | End | Total |
| 站立会议 | 会议 | 2016.4.7 | 18:35 | 18:50 | 15 |
| 站立会议 | 会议 | 2016.4.8 | 15:10 | 15:25 | 15 |
| 修改删除 | 编码测试 | 2016.4.8 2016.4.9 |
15:30 14:20 |
17:00 16:00 |
30 140 |
| 站立会议 | 会议 | 2016.4.11 | 15:10 | 15:25 | 15 |
| MPAndroidChart的测试 | 编码测试 | 2016.4.11 | 15:40 | 17:00 | 80 |
| 站立会议 | 会议 | 2016.4.7 | 18:35 | 18:50 | 15 |
| MPAndroidChart的测试 | 编码测试 | 2016.4.12 | 19:00 | 19:30 | 30 |
| 站立会议 | 会议 | 2016.4.13 | 15:10 | 15:25 | 15 |
| 生成饼图测试 | 编码测试 | 2016.4.13 | 15:30 | 16:50 | 80 |
| 第六周作业 | 随笔 | 2016.4.13 | 21:00 | 22:30 | 90 |
饼图

3.工作量表
| 代码行数 | 博客字数 | 知识点 | |
| 第五周 | 280 | 5548 | 逆波兰 |
4.checkList:
- 不同 语言/类型 单元测试工具
- 内聚 耦合
- 测试矩阵
- 站立会议
- psp
- 工作量
第六周-总结&结对编程的更多相关文章
- python第六周:面向对象编程
面向对象编程: 世界万物,皆可分类 世界万物,对象 只要是对象,就肯定属于某种品类 只要是对象,就肯定有属性 oop编程利用"类"和"对象"来创建各种模型来实现 ...
- 20165325 2017-2018-2 《Java程序设计》结对编程_第二周:四则运算
20165325 2017-2018-2 <Java程序设计>结对编程_第二周:四则运算 一.码云链接 FAO项目的码云链接; 1.Git提交日志已经实现一个功能/一个bug修复的注释说明 ...
- ### 20165219 2017-2018-2《Java程序设计》结对编程一 第二周总结
20165219 2017-2018-2<Java程序设计>结对编程一 第二周总结 结对对象 20165219王彦博 20165232何彦达 需求分析 实现一个程序,要求: 1 支持整数运 ...
- 20165323 结对编程之四则运算week2-整体总结
一.需求 实现一个命令行程序,要求: 1.自动生成小学四则运算题目(加.减.乘.除) 2.支持整数 3.支持多运算符(比如生成包含100个运算符的题目) 4.支持真分数 5.能判断错误,在输入错误结果 ...
- 20165223 结对编程之四则运算week1-阶段性总结
目录 一.结对对象 二.需求分析 三.设计思路 四.功能截图 五.结对感受 一.结对对象 担任角色 驾驶员(Driver):20165223 蔡霓(是控制键盘输入的人) 领航员(Navigator): ...
- [2019BUAA软件工程]结对编程感想
结对编程感想 写在前面 本博客为笔者在完成软件工程结对编程任务后对于编程过程.最终得分的一些感想与经验分享.此外笔者还对于本课程的结对编程部分提出了一些建议. Tips Link 作业要求博客 2 ...
- 20165325 2017-2018-2 《Java程序设计》结对编程_第一周:四则运算
一.码云链接 项目名称FAO 码云链接 二.需求分析 实现一个命令行程序: 自动生成小学四则运算题目(加.减.乘.除) 支持整数 支持多运算符(比如生成包含100个运算符的题目) 支持真分数 统计正确 ...
- 20165101刘天野 2017-2018-2 《Java程序设计》 结对编程练习_四则运算(第二周)
20165101刘天野 2017-2018-2 <Java程序设计> 结对编程练习_四则运算(第二周) 一.需求分析 能随机生成n道四则运算题目,n由使用者输入 支持分数运算 支持多运算符 ...
- 程序设计入门—Java语言 第六周编程题 1 单词长度(4分)
第六周编程题 依照学术诚信条款,我保证此作业是本人独立完成的. 1 单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这 ...
随机推荐
- rsync续传大目录一例
场景 要将大约60T的文件从一台服务器上搬到另外一台上.两边分区还不一样大,一边是一个整的60T大分区,另一边是15T一个的小分区. 解决思路 类比茶壶倒水,一个分区一个分区的填,填满一个再填第二个. ...
- 【PAT】B1078 字符串压缩与解压(20 分)
主函数接收下第一个字符,接着一个分支就转到两个函数中的一个 1.压缩简单,只要与下一个一样就只计数,如果不同了就直接输出 2.至于解压不知道数字是几位数,所以我直接用了sscanf,然后判断是几位数字 ...
- rows的参数
ds.Tables[0].Rows[0][0].ToString()中的rows后边的那俩参数分别代表什么 第一个0表示行的索引(如果是0就表示第一行,1表示第二行……)第二个0表示列的索引(如果是0 ...
- Flume-1.8.0_部署与常用案例
该文章是基于 Hadoop2.7.6_01_部署 进行的 Flume官方文档:FlumeUserGuide 常见问题:记flume部署过程中遇到的问题以及解决方法(持续更新) 1. 前言 在一个完整的 ...
- JQuery 获取多个select标签option的text内容
根据option的id属性,修改text值 $("#sel_div .select_class option[id='-选择省-']").text(data.province).a ...
- 写jQuery插件该注意的
写好jQuery插件,有一些注意的地方(持续添加). 支持UMD 现在前端开发讲究模块化,所以jQuery插件也最好能够兼顾模块化. 模块化模式大概有几种: AMD.CommonJs.UMD. AMD ...
- Spring容器技术内幕之BeanDefinition类介绍
引言 org.springframework.beans.factory.config.BeanDefinition是配置文件< bean >元素标签在容器中地内部表示.< bean ...
- MyCat原理及分布式分库分表
1.什么是MyCat: MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL ...
- php数据库单例模式理解
单例模式(职责模式): 简单的说,一个对象(在学习设计模式之前,需要比较了解面向对象思想)只负责一个特定的任务: 单例类: 1.构造函数需要标记为private(访问控制:防止外部代码使用new操作符 ...
- Qt+Qgis二次开发:地理实体抽象
1 概述 地理实体抽象是指点.线.面及其组合而成的,用于描述实际地物的数据结构. 其中包含几何实体和属性数据. GIS中进行几何操作,以各种实体类为基础进行操作. 在OGC中,地理实体可以由WKT表 ...