从锦囊妙计想到的21–函数参数法控制输出

  categories:儿童计算机  author:

前面18,19,20都在围绕图形输出进行说明, 本文仍然采用类似的方法进行说明。

为什么老是围绕字符输出进行说明?

1. 字符输出简单, 是计算机编程里面最简单的有输出的方法之一了

2. 字符图形输出是可以看到的, 这样程序编写的是否正确马上能看到

3. 通过不但修改您编写的称, 您可以体会程序中的各种情况

4. 最后程序输出是以后调试程序的必不可少的技能

本文的内容还是输出一个图形, 现在输出图形如下:

一。 分析图形特点

还是按照前面的文章的办法, 我们要分析一下这个图形输出的特点

如上图, 图形由多行组成, 因此最简单的办法, 是一行一行的输出

如下图

二。编写文档说明程序的实现方法

我们可以定义

函数f1输出  第一行,

函数f2输出 第二行,

。。。

函数f6输出  第六行。

最后需要一个主函数, 然后调用这些函数

如下:

main(){

f1();

f2();

f3();

f4();

f5();

f6();

}

先写完上面代码后,还需要写函数f1()的定义

f1(){

打印输出一个*

*

}

f2(){

打印输出2个**

**

}

f6(){

打印输出6个*

******

}

三。采用java语言进行软件开发

启动eclipse软件工具, 创建一个java项目, 创建一个类,这个是java必须的

如下图, 选择java project项目后, 在下面对话框中按照图示操作

选择完成 finish后, 请参照如下图进行操作

选择项目后, 然后,在src目录上选择右键点击, 然后在弹出的菜单上,选择new, 最后选择class项目,然后参照下图进行

如上图, 进行操作,强调两点: 1. 选择 public static void main的选项

2. 在类名哪里, 这里用汉语拼音方法命名类名, 并且每个拼音的首字母都是大写的, 这样能快速了解类名的含义

然后在main函数里面输入如下图代码:

特别注意上图中2处指向的地方, 这里是编辑自动检测出, 程序中存在的问题, 这里的问题是我们仅仅写了函数的调用, 而没有编写函数的实现。具体操作如下

类似的, 我们要定义f2()。。。。。 f6函数

代码如下:

public class ShuTuXing {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		f1();
		f2();
		f3();
		f4();
		f5();
		f6();
	}
	static void f1(){
	}
	static void f2(){
	}
	static void f3(){
	}
	static void f4(){
	}
	static void f5(){
	}
	static void f6(){
	}
}

上面是一个阶段性的代码编写过程, 在这个过程中我们编写了几个空的函数, 没有任何功能的函数。

下面是逐个从f1  到 f6实现各个函数。具体的过程如下:

编写f1的函数实现

编写完成f1的功能后, 我们马上要运行这个函数看看效果

请特别注意:

通常情况下, 我们写程序都可能有问题, 因此, 我们每编写一些代码就要检验一下, 看看是否正确, 若是不正确, 由于代码还很少, 因此可以方便修改!

如下图:

我们继续完成f2函数

如上图, 完成f2后的 执行结果

继续努力, 知道完成f6函数

完成后如下图:

参考代码如下:

public class ShuTuXing {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		f1();
		f2();
		f3();
		f4();
		f5();
		f6();
	}
	static void f1(){
		System.out.println("*");
	}
	static void f2(){
		System.out.println("**");
	}
	static void f3(){
		System.out.println("***");
	}
	static void f4(){
		System.out.println("****");
	}
	static void f5(){
		System.out.println("*****");
	}
	static void f6(){
		System.out.println("******");
	}
}

通过上面代码确实能实现相关的需求, 但是他不并好, 下面慢慢分析他完善它

四。 调整完善代码(参数化,减少函数数量)

上面的代码中, 几个函数的实现其实非常类似, 近似相同

是否可以把上面的代码优化为一个函数中, 然后通过函数参数来控制输出*

参数? 参数是什么, 就是在函数的定义中, 一个可以变化的量,这样可以大大提高函数的通用性

如上图, 通过在函数f中根据传入的参数, 采用if语句判断需要打印的*的个数, 然后进行处理

代码如下:

public class ShuTuXing2 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		f(1);
		f(2);
		f(3);
		f(4);
		f(5);
		f(6);
	}
	static void f(int count)
	{
		if(count == 1)
		{
			System.out.println("*");
		}
		if(count == 2)
		{
			System.out.println("**");
		}
		if(count == 3)
		{
			System.out.println("***");
		}
		if(count == 4)
		{
			System.out.println("****");
		}
		if(count == 5)
		{
			System.out.println("*****");
		}
		if(count == 6)
		{
			System.out.println("******");
		}
	}
}

上面代码可以输出相关图形

五。 循环语句减少重复代码

上面的办法中, 已经有效的减少了函数的数量, 但是在一个函数里面还有很多重复的代码, 要通过过多的if语句来输出*, 是否还有更好的办法。

通常采用循环语句来减少重复的工作, 参考代码如下:

public class ShuTuXing3 {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		f(1);
		f(2);
		f(3);
		f(4);
		f(5);
		f(6);
	}
	static void f(int count)
	{
		for(int i = 0; i < count; i++)
		{
			System.out.print("*");
		}
		System.out.println("");
	}
}

如上面代码, 函数f中通过循环语句,进行输出, 有效减少了重复的代码

上面代码中f函数中的重复代码已经没有了, 那么主函数还可以继续优化,参考代码如下

public class ShuTuXing5 {
	public static void main(String[] args) {
		for(int i = 1 ; i <= 6 ; i++)
		{
			f(i);
		}
	}
	static void f(int count)
	{
		for(int i = 0; i < count; i++)
		{
			System.out.print("*");
		}
		System.out.println("");
	}
}

 六。 给代码添加注释,方便阅读

上面代码是简单了, 但是很难让人看懂, 特别是时间长了, 可能会忘记, 因此需要给程序添加足够的说明, 就是注释!

参考代码如下:

/**

输出如下图形
*
**
***
****
*****
******

 */


public class ShuTuXing6 {

	// 主函数, 程序从这里开始执行
	public static void main(String[] args) {

		// 循环输出每一行
		for(int i = 1 ; i <= 6 ; i++)
		{
			// 调用行输出函数, 每行的*的数量, 由变量i决定
			f(i);
		}
	}

	/*
	 *
	 输出一行*
	 ***
	 其中*的数量, 有函数的参数 count决定
	 * */
	static void f(int count)
	{
		// 循环输出count个*
		for(int i = 0; i < count; i++)
		{
			System.out.print("*");
		}

		// 最后输出一个 换行符
		System.out.println("");
	}
}

 

 总结一下

1. 采用分析=》设计=》开发=》检验(测试)=》完善的过程  进行开发

2. 程序编写过程中, 采用 化整为  零的办法, 把一个 大的复杂的功能, 划分为若干个小的功能来处理

3. 依次编写每个小功能, 在编写小功能时, 可以变化为更小更小的功能

4. 逐个编写小功能, 每编写一个小功能后, 就运行一下程序检验一下功能是否正确

5. 汇总全部的功能, 然后不断检验功能是否满足了要求。

6. 不断优化完善程序, 知道代码合理完善

7. 代码要添加足够的 说明(注释), 为以后阅读方便

 

参考源代码:ShuChuSanJiaoXing



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