我的第一个程序

一、预估与实际

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划 15 10
• Estimate • 估计这个任务需要多少时间 500 500
Development 开发 300 500
• Analysis • 需求分析 (包括学习新技术) 20 35
• Design Spec • 生成设计文档 20 40
• Design Review • 设计复审 20 50
• Coding Standard • 代码规范 (为目前的开发制定合适的规范) 60 60
• Design • 具体设计 120 150
• Coding • 具体编码 180 200
• Code Review • 代码复审 60 120
• Test • 测试(自我测试,修改代码,提交修改) 60 60
Reporting 报告 45 60
• Test Repor • 测试报告 45 30
• Size Measurement • 计算工作量 15 15
• Postmortem & Process Improvement Plan • 事后总结, 并提出过程改进计划 15 20
合计 700

二、需求分析

我通过网络调查方式了解到,小学一、二年级数学有如下的几个特点:

  • 特点1:主要是加减法为基础,后引入乘除法。
  • 特点2: 范围在100以内。
  • 特点3: 较为简单,易于理解。

经过分析,我认为,这个程序应当:

  • 使用计算的数字小于20
  • 易于操作

三、设计

1. 设计思路

说明你如何设计这个程序

  • 输入两个参数。第一个参数为出题数量,第二个参数为适用于学生年级。
  • 数组。我设置多个数组用于存储数字、符号、结果、余数等。

2. 实现方案

写出具体实现的步骤

  • 准备工作:先在Github上创建仓库,克隆到本地
  • 设计大纲:设置算法分类、多次判断、分类输出
  • 技术关键:年级的选择、分类输出

四、编码

请说明你如何按照设计思路进行编码,并记录你在开发中遇到的问题,与解决过程

1. 调试日志

记录编码调试的日志,请记录下开发过程中的 debug 历程

  • 除法余数的判断

    解决方案:都做余数判断,分为两类输出,有余数按模版输出,无余数省略余数输出。
  • 参数(年级的选择)

    解决方案:在整体前做判断。由于我先写的算法,后进行年级选择导致。

2. 关键代码

for (int i = 0; i < n; i++) {//加减法输出

				if (e[i] == 0) {//做加法运算
result = w[i] + h[i];
System.out.println("(" + j + ") " + w[i] + " + " + h[i] + " = " + result);
b[i] = result;
} else {//做减法运算
result = w[i] - h[i];
System.out.println("(" + j + ") " + w[i] + " - " + h[i] + " = " + result);
b[i] = result;
}
j++;
}
for (int i = 0; i < n; i++) {//乘除法输出 if (e[i] == 0) {
result = w[i] * h[i];
System.out.println("(" + j + ") " + w[i] + " * " + h[i] + " = " + result);
b[i] = result;
} else {int y;
result = w[i] / h[i];
y=w[i] % h[i];
k[i] = y;
if(y==0) {//余数判断
System.out.println("(" + j + ") " + w[i] + " / " + h[i] + " = " + result);
}
else {
System.out.println("(" + j + ") " + w[i] + " / " + h[i] + " = " + result+"..."+k[i]);
}
b[i] = result;
}
j++;
}

五、测试

加减法测试

乘除法测试

越界测试

![]

六、总结

1、小白成长。之前落下了很多编程基础,导致前期进行的非常困难,在一步步的恶补,感觉追赶上了一些,可以写出大部分的内容了。

2、坚持。我会继续努力,坚持下去,不抛弃,不放弃。

3、鼓励。我觉得在出现困难、bug的时候同学or室友之间互相帮助、互相鼓励、给予支持,共同进步。

MathExam6378的更多相关文章

随机推荐

  1. ACP敏捷管理

  2. 解决 an app id with identifier is not available. please enter a different string. xcode 7.3

    百度上这帮人,真的服了,没有一个人能解决问题,最后在 stackoverflow 上找到解决方法 The Application ID Name should be same as applicati ...

  3. 在CentOS7.6上安装自动化运维工具Ansible以及playbook案例实操

    前言 Ansible是一款优秀的自动化IT运维工具,具有远程安装.远程部署应用.远程管理能力,支持Windows.Linux.Unix.macOS和大型机等多种操作系统. 下面就以CentOS 7.6 ...

  4. jekyll建站详细教程

    Jekyll是一款静态博客生成器,也是github page支持的后台引擎,所以如果你有以下需求,极力推荐使用jekyll搭建博客,>>浏览我的博客 个性化的展示界面,站点逻辑 个性化的域 ...

  5. PCIE_DMA实例一:xapp1052详细使用说明

    一:前言 很多和我一样初学pcie的硬件工程师都会遇到这样一个问题,看了不少pcie相关的资料,还是搞不清这玩意儿到底该怎么用.于是我们打开ISE的core_generator工具,生成了一个pcie ...

  6. 认识node

    node是一个基于Chrome V8引擎的ECMAScript运行环境,使用了ECMAScript语法规范.有了node之后,js文件就能运行在服务器端了,也可以用来创建web服务器. node的主要 ...

  7. 20155229 2016-2017-2 《Java程序设计》第九周学习总结

    20155229 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 第十六章 JDBC(Java DataBaseConnectivity)即java数据库连接 ...

  8. AtCoder ExaWizards 2019 D Modulo Operations

    题意 给出一个长度为\(n\)的数列和数字\(X\),对于数列的每一种排列,其权值\(X\)依次对排列中的数取模,求出\(n!\)种情况最后剩下的数的权值和 分析 如果大的数字排在小的数字后面,那么大 ...

  9. 洛谷NOIp热身赛题解

    洛谷NOIp热身赛题解 A 最大差值 简单树状数组,维护区间和.区间平方和,方差按照给的公式算就行了 #include<bits/stdc++.h> #define il inline # ...

  10. C#课后练手

    猜拳(三局两胜)请输入您的手势:石头用户手势:石头      电脑手势:剪刀用户胜:1      电脑胜:0 请输入您的手势:石头用户手势:石头      电脑手势:石头用户胜:1      电脑胜: ...