zoukankan      html  css  js  c++  java
  • 第六周-总结&结对编程

    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

    饼图

    image

    3.工作量表

      代码行数 博客字数 知识点
    第五周 280 5548 逆波兰

    4.checkList:

    • 不同 语言/类型 单元测试工具
    • 内聚 耦合
    • 测试矩阵
    • 站立会议
    • psp
    • 工作量
  • 相关阅读:
    setTimeout中0毫秒延时
    javascript中call和apply方法
    javascript闭包
    apns 服务
    新的开始,新的起点
    心情笔记
    如何解决控件附件上传时超大附件无法上传的问题
    BPM实例分享——日期自动计算
    BPM实例分享——金额规则大写
    分享一个程序猿在流程数据查看权限问题的总结
  • 原文地址:https://www.cnblogs.com/WeSure6/p/5389096.html
Copyright © 2011-2022 走看看