第二章 举例

1.三角形
简单版本:三角形问题接受三个整数a、b、c作为输入,用做三角形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。
改进版本:三角形问题接受三个整数a、b、c作为输入,用做三角形的三条边。整数a、b、c必须满足以下条件:
C1: 1≤a≤200
C2: 1≤b≤200
C3: 1≤c≤200
C4: a﹤b+c
C5: b﹤a+c
C6: c﹤a+b
程序的输出是由这三条边确定的三角形类型:等边三角形、等腰三角形、不等边三角形或非三角形。如果输入值没有满足这些条件中的任何一个,则程序会通过输出消息来进行通知,例如,"b的取值不在允许取值的范围内。"如果a、b和c取值满足c1、c2和c3,则会给出以下四种相互排斥输出中的一个:
(1)如果三条边相等,则程序的输出是等边三角形。
(2)如果恰好有两条边相等,则程序输出的是等腰三角形。
(3)如果没有两条边相等,则程序输出的是不等边三角形。
(4)如果c4、c5和c6中有一个条件不满足,则程序输出的是非三角形。

传统实现:
在这里插入图片描述
结构化实现:
在这里插入图片描述
这个例子经久不衰的一部分原因就是,包含了清晰而又复杂的逻辑、削弱客户、开发人员和测试人员之间沟通的不完整定义的典型例子。

2.NextData函数:NextDate是一个有三个变量(月份、日期和年)的函数。函数返回输入日期后面的那个日期。变量月份、日期和年都是整数,且满足以下条件:
C1:1≤月份≤12
C2:1≤日期≤31
C3:1812≤年≤2012
对无效的输入日期,比如6月31日,或c1、c2、c3中的任意一个条件失败,则NextDate,都会产生一个输出,指示其为无效日期,或给出具体的无效原因,或笼统的给出"无效日期输入。"提示。

3.佣金问题:步枪销售商销售制造商制造的步枪机(lock)、枪托(stock)和枪管(barrel)。枪机卖45美元,枪托卖30美元,枪管卖25美元。销售商每月至少要售出一只完整的步枪,且生产限额是大多数销售商在一个月内科销售70个枪机、80个枪托和90个枪管。每访问一个镇子之后,销售商都给制造商发出电报,说明在那个镇子中售出的枪机、枪托和枪管数量。到了月末,销售商要发出一封很短的电报,通知-1个枪机被售出。这样步枪制造商就知道当月的销售情况,并计算销售商的佣金如下:销售额不到(含)1000美元的部分为10%,1000(不含)~1800(含)美元的部分15%,超过1800美元的部分20%。佣金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销售商的总销售额以及佣金。
这个问题分为三个不同的部分:输入数据部分,用来处理输入数据有效性;销售额计算部分;以及佣金计算部分。在实现中省略数据输入有效性部分,使用while循环模拟电报规则。

4.为了更好讨论集成和系统测试问题,这里介绍一个适用范围更大的范围。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值