50道100以内的加减法口算习题及它的模块化改造
目录
前言
对50道100以内的加减法口算习题的代码进行模块化改造,使其运用模块化技术进行分解和细化,设由函数组成的、具有一定结构的程序来分离不同的专注点,管理和控制程序的复杂性,使其便亍维护、更新和扩展。提示:以下是本篇文章正文内容
一、未经过模块化设计的基础代码
1.代码示例
/**/
import java.util.Random;
public class BinaryOperation_0 {
public static void main(String[] args) {
int m = 0, n = 0, value = 0;
char o = '+';
Random random = new Random();
int ov = random.nextInt(2); // 0:加号; 1:减号
for (int i = 0; i < 50; i++) {
if(ov == 0) {
o = '+';
do {
m = random.nextInt(101);
n = random.nextInt(101);
value = m + n;
}while(value > 100);
}else {
o = '-';
do {
m = random.nextInt(101);
n = random.nextInt(101);
value = m - n;
}while(value < 0);
}
System.out.println((i+1) + "\t:" + m + o + n + " = " + value);
ov = random.nextInt(2);
}
}
}
2.存在的问题
• 程序没有明确清晰的“算式”、“习题”的含义,没有使用相应的变量、数据结构等程序设计的
方式表达。
• 若干独立的功能集中在一个函数中丌利亍发现和修改程序中的错诨,也丌便扩充程序的功能。
• 程序修改后,每次都要重新设计一些检验的数据,运行程序、观察结果,判断修改过的程序是否正确,我们希望能保留下检测数据、运行结果及其判断,无须改变地反复使用。
• 编程缺乏觃范。
二、分解与模块化
1.分解思想
采用分解的策略对上一版程序进行重构,产生50道100以内的加减法算式习题
- (1)增加一个打印说明 printHeader
- (2)产生加减法算式,并存储在数组里 generateEquations()
- (3)打印输出习题 printExercise
- (4)打印计算结果 printCalculations
2.代码示例
代码如下:
import java.util.Random;
public class BinaryOperation_1 {
static String[] equs = new String[50]; //存储算式集合的数组
static int[] results = new int[50]; // 存储计算结果的数组
public static void main(String[] args) {
printHeader(); //打印说明
generateEquations(); // 产生加减法算式,并存储在数组里
printExercise(); //打印输出习题
printCalculations(); //打印计算结果
}
public static void printHeader() {
System.out.println("----------------------------------------------");
System.out.println("--程序输出50道100以内的加减法算式习题---");
System.out.println("--每次运行可得到一套习题和答案---");
System.out.println("----------------------------------------------");
}
public static void generateEquations() {
int m = 0, n = 0, value = 0;
char o = '+';
Random random = new Random();
int ov = random.nextInt(2); // 0:加号; 1:减号
for (int i = 0; i < 50; i++) {
if(ov == 0) {
o = '+';
do {
m = random.nextInt(101);
n = random.nextInt(101);
value = m +