哈工大-软件构造-Lab2-P1相关问题

哈工大-软件构造-Lab2-P1相关问题

前言

第二次做实验了,可能是有了一点方法论,P1遇到的问题没有上此实验遇到的那么多了,占比最大的还是由于马虎不细心,感谢Eclipse强大的改错功能让很多的错误按给出的意见改就好了,下面就说一下我这次试验花费时间比较多的几个问题吧

对checkRep()的理解

其实在开始实验的第一周,我是一直没有写checkRep()函数的,因为我一直都没搞明白Rep是个什么东西,知道第二轴老师讲了之后才开始写。
在我的理解里面,不管你要实现一个什么样的ADT,都是一个有特色的东西,举个例子:在P1的要求下:一张图,它之所以是一张图,是因为它里面有点,它里面有边,从一个起点到一个终点至多有一条边,一条边的起点和终点不能是同一个点。你可能会把一张图的某一条边(A->B)的起点搞错成C,但你要始终保证你得到的东西它是一张图。
换点抽象的说法:
我们先来介绍两种类型空间的值:
Space of representation values(表示空间,R):表示空间由事实上实现的实体值构成。换句话说,由不同的、对抽象类型的实现的对象相应表示(Representation)的值组成。
Space of abstract values (抽象空间,A):抽象空间由抽象类型设计支持的类型组成。直观来说,就是抽象类型中设计的域或者说是支持变量。它们不是实际存在的实体,但是我们透过它们来理解抽象类型的元素。
一个例子:
在这里插入图片描述我们在这个例子里我们使用字符串来表示字母的集合。
R和A之间的映射:
在这里插入图片描述

  1. 每一个抽象空间的值都被映射到,是一个满射(surjective)
  2. 一些抽象类型的值被不止一个表示变量值映射,所以不是一个单射(not injective)
  3. 不是所有表示变量值都在映射当中,不是一个双射(not bijective)
    表示不变量(Rep Invariant):表示不变量将表示变量值映射成一个布尔值。
    在这里插入图片描述
    可以将RI理解成一个表示值的子集,如果一个RI的值在到AF的映射当中,那么这个RI也就在这个子集当中,相应地,布尔值为真。

注释的撰写

其实我也一直是在照葫芦画瓢,话不多说,直接上图,不知道写的对不对,西望批评指正
(关于里面的英文都代表什么意思,这个都是老师上课讲的内容,再次就不多赘述)
首先是一个class一个的
在这里插入图片描述还有就是每个函数一个的
在这里插入图片描述反正我的都是找这个格式来的,希望正确吧

去标点符号的问题

这是在poet的里面碰到的问题,就是十分纠结要不要去标点符号,这个我纠结了一周的时间,最后的方法是:因为输出的是一句话,在我考虑的范畴之内,输出的答案只有最后一个单词是带标点的,所以,我把input的最后一个单词备份,之后,把整句话都去掉标点(当然,生成的树也是去掉标点的),然后在输出的时候,最后一个单词输出为我们之前备份好的,带有标点的那个此词。
去标点的函数,在网上找了一下,发现比较好用的是:
在这里插入图片描述是不是一目了然

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值