从锦囊妙计想到的20–在计算机屏幕打印输出

  categories:儿童计算机  author:

前面, 18和19都是围绕计算机屏幕的输出和输入进行的, 本文在进一步说明一下, 主要围绕编写应用程序进行说明

一。 计算机屏幕的坐标

默认的计算机屏幕的坐标情况如下:

通常情况下, 计算机屏幕没有 格着

真正的情况如下:

有了上述事实后, 我们好分析如下程序的编写

二。编写程序在屏幕输出上述的用“*”组成的矩形

一) 分析一下

1. 首先是要在计算机屏幕上输出字符, 并且字符有要求

既然在屏幕上输出, 那么就需要到  System.out

2. 输出的图形由多行组成

3. 每个行由多个字符组成

因此基于上面我们就可以进行如下工作

二) 谋划如何进行

基于上面的系统分析情况计划进行如下

如上图, 采用一行一行的方式进行打印, 然后没行依次打印字符, 最后打印换行字符

三)。 实现代码

如下图

上图是程序执行结果,和部分代码  参考代码: OutputJx

改进代码实现

上述代码最大问题, 就是output1   ~  output11   一共11个函数, 但是他们都是相同的, 因此没有必要重复

改进代码如下:

看图可以知道, 就定义一共函数, 调用11次 就可以完成相关情况

简化处理了!

package cn.iigrowing.java.study;
public class OutputJx2 {
	public static void main(String[] args) {
		output1();
		output1();
		output1();
		output1();
		output1();
		output1();
		output1();
		output1();
		output1();
		output1();
		output1();
	}

	public static void output1()
	{
		// 输出*
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");

		// 输出换行
		System.out.print("\n");
	}
}

 

上面是这个形式下的代码供参考。

五)。 更进一步简化

上面代码中, 还有一个部分可以进行简化

就是主函数你么的重复11次调用, 是否可以简化一下。  目前11次调用还可以接受, 若是100次如何? 1000次如何,因此重复的事情用循环是最好的办法。

采用如下图的代码

具体的代码如下

package cn.iigrowing.java.study;

public class OutputJx3 {
	public static void main(String[] args) {

		for (int i = 0; i < 11; i++) {
			output1();
		}
	}

	public static void output1() {
		// 输出*
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");
		System.out.print("*");

		// 输出换行
		System.out.print("\n");
	}
}

上面程序的流程情况可以为如下:

如上图, 是这个函数参考的流程图, 可以帮助我们理解这个程序的工作过程

六)。在进一步优化子函数

上面程序中, 子函数里面还有很多 重复的语句, 我们可以进一步优化子函数

如下图

相关代码如下:

package cn.iigrowing.java.study;
public class OutputJx5 {
	public static void main(String[] args) {

		for (int i = 0; i < 11; i++) {
			output1();
		}
	}

	public static void output1() {
		// 输出*
		for(int i = 0; i < 11; i++){
			System.out.print("*");
		}

		// 输出换行
		System.out.print("\n");
	}
}

参考流程如下:

上面图形是供参考的流程图

七)。 扩展程序

上面是一个渐进的程序改进过程, 下面是一个更麻烦的程序输出如下

下面的程序的目标是 输出 1000行的 *, 每行 有11个*

如何写这个程序?

若是一行行的输出, 就要1000行的输出函数, 当然更麻烦的定义1000个函数, 不可接受。

采用最后一个版本的程序我们可以改造如下:

代码如下:

package cn.iigrowing.java.study;
public class OutputJx6 {
	public static void main(String[] args) {

		for (int i = 0; i < 1000; i++) {
			output1();
		}
	}

	public static void output1() {
		// 输出*
		for(int i = 0; i < 11; i++){
			System.out.print("*");
		}

		// 输出换行
		System.out.print("\n");
	}
}

 

三。 程序编写过程分析

到了现在, 我们从刚刚开始弄这个程序到现在, 经历了大概这么几个过程

分析这个程序的功能(分析)(有哪些功能, 大致过程) =》  研究如何做这个东西(这个过程仅仅是停留在脑袋里面, 或者绘制一些图表,等)(设计) =》 开始写代码 =》 测试代码执行情况 =》 研究代码是否需要改造=》改造=》测试=》在改造=》在测试 。。。。  =》结束

上面大致的过程就是一个程序的大致过程。

1. 一个程序 大致经过   分析 =》 设计 = 》 开发=》 测试

2. 一个程序在开发等过程中 有很多次的  改造优化过程, 这个过程 通常叫做  重构!!

3. 代码即使完成了, 将来也会发生各种各样的修改等工作,因此程序简洁 方便, 便于更改也是非常重要的!

最后思考一下, 下面的图形如何输出

学完了本文, 考虑一下, 上面的程序如何实现?

本文用到的源代码: c11



快乐成长 每天进步一点点      京ICP备18032580号-1