50道100以内的加减法口算习题及它的模块化改造

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 +
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值