第1章 变幻姿图表
图表简洁直观种场合广泛应强视觉击常难忘怀程序中果够灵活应图表定程序增色少章带进入变换姿图表世界体会图表编程带乐趣
11 金字塔图案
1.问题描述
印出金字塔图案图11示
2.问题分析
问题典循环应题目知道印输出时候左端输出里第星号中间实际星号前空格问号表示空格实际输出效果应该图12形式
图11 金字塔 图12 金字塔分析图
图12分析发现题目奥秘
(1)确定程序框架
图12中发现需印5行行印空格然印星号样写出程序框架程序框架代码:
public class Ch1_1
{
public static void main(String[] args)
{
**************
for(i1i<5i++) 循环5次印5行
{
印干空格
印干星号
}
}
}
里明确知道印行数for循环实现面需考虑印行星号
(2)寻找空格星号规律
图12中发现:第1行空格4第2行3第3行2……行次递减直行空格数0星号数目第1行1第2行3第3行5……行次递增2直行星号数9总结数表11示规律
表11 空格星号规律
行数
空格数
星号数
1
4
5–1
1
1*2–1
2
3
5–2
3
2*2–1
3
2
5–3
5
3*2–1
4
1
5–4
7
4*2–1
5
0
5–5
9
5*2–1
规律
次递减1
5–行数
次递增2
行数*2–1
表11中难发现行数空格数星号数间种趣联系根联系考虑完善面程序
(3)印空格数
行空格数着5–行数规律第i行时候空格数5–i5–i空格印出应代码:
for(i1i
{
for(j1j Systemoutprint( )
}
然行空格数特定行空格数固定循环印次数确定里样适for循环
(4)印星号数
行星号数着行数*2–1规律第i行时候星号数2*i–12*i–1星号印出应代码:
for(i1i<5i++)
{
for(k1k<2*i1k++) 根外层行号输出星号数
Systemoutprintf(*)
}
(5)完整程序
现需刚程序进行组合构成完整程序
import javautilScanner
public class Ch1_1
{
public static void main(String[] args)
{
int ijkn
Scanner inputnew Scanner(Systemin)
Systemoutprint(请输入金字塔层数:)
ninputnextInt()
外层循环控制层数
for(i1i {
根外层行号输出星号左边空格
for(j1j Systemoutprint( )
根外层行号输出星号数
for(k1k<2*i1k++)
Systemoutprintf(*)
行结束换行
Systemoutprintf(\n)
}
}
}
(6)扩展训练
方便家训练提供金字塔图案胞兄弟——倒金字塔直角三角形图13示家尝试招
图13 种形状图案
12 九九法表
1.问题描述
输出九九法口诀表图14示
图14 九九法口诀表
2.问题分析
观察九九法口诀表出图表规律:总9行第行表达式时注意行表达式规律:第j行表达式j*1开始直j*j结束j表达式效果通次循环实现样话正通双重循环控制输出外层循环控制行数层循环控制列方需注意层外层间联系层列数根外层行数控制
(1)确定程序框架
图14中发现需印9行行干表达式通双重循环实现外层循环控制行数层循环控制列样写出程序框架程序框架代码:
public class Ch1_2
{
public static void main(String[] args)
{
外循环控制行数
for(int i1i<10i++)
{
循环控制行表达式数
for(int j1 j {
输出表达式
}
行结束换行
Systemoutprintln()
}
}
}
(2)寻找行表达式数规律
图14中发现第1行表达式第2行两表达式第3行三表达式……第行表达式循环控制列数变量n等控制外循环数变量i循环代码写成形式:
for(int j1 j
(3)表达式写法
表达式写法致:数1*数2积图14中发现行表达式规律:第i行表达式i*1开始直i*j结束数1变直i实行数数21变化j正循环变量变化样数2j表示表达式写法:
i+*+j++i*j i代表行j代表列
(4)完整程序
现需刚程序进行组合构成完整程序:
public class Ch1_2
{
public static void main(String[] args)
{
外循环控制行数
for(int i1i<10i++)
{
循环控制行表达式数
for(int j1 j {
Systemoutprint( +i+*+j++(i*j))
}
行结束换行
Systemoutprintln()
}
}
}
(5)运行结果
运行程序结果图15示
图15 程序输出结果
13 余 弦 曲 线
1.问题描述
屏幕画出余弦函数cos(x)曲线图16示
图16 余弦函数cos(x)曲线
2.问题分析
连续曲线点组成点点间距离较曲线画图关键画出点Java提供三角函数方法直接调cos()方法根x坐标计算出y坐标需注意cos()方法输入参数弧度值进行坐标转换样结果进行转换处理图16中出条余弦曲线两周期x坐标控制0~720
(1)确定程序框架
图16中发现整图形包括x轴y轴余弦曲线控制台方便输出图形里Applet形式输出样写出程序框架代码:
public class Ch1_3 extends Applet
{
int xy
public void start() Applet系统调时系统会动调 start()方法
{
Graphics ggetGraphics() 画画前必须先取画笔
画x轴
画y轴
画cos(x)曲线
}
}
(2)画x轴
画出图16示效果坐标原点设定(360200)x轴左右点组成通循环语句容易实现代码:
for(x0x<750x+1)
{
gdrawString(·x200) 画x轴
}
细心读者会发现x轴箭头实现呢实简单两条线段交汇成方便起见两条线段x轴成45°角容易表达式方程:yx–550y950–x代码:
for(x740x<750x+1)
{
gdrawString(·xx550) x轴方斜线
gdrawString(·x950x) x轴方斜线
}
(3)画y轴
参考面x轴绘制容易画出y轴代码:
y轴
for(y0x<385y+1)
{
gdrawString(·360y) 画y轴
}
y轴箭头
for(x360x<370x+1)
{
gdrawString(·x10375x)
gdrawString(·xx355)
}
(4)画cox(x)曲线
图形体cox(x)曲线图16中出条余弦曲线两周期x坐标控制0~720cox(x)返回结果1图16效果必须进行放处理里放80倍时图形移200素代码:
两周期4Л
for(x0x<720x+1)
{
aMathcos(x*Math PI180)
y(int)(200+80*a) 放80倍移200素
gdrawString(·xy)
}
(5)完整程序
现需刚程序进行组合构成完整程序:
import javaapplet*
import javaawt*
public class Ch1_3_2 extends Applet
{
int xy
public void start()
{
画画前必须先取画笔
Graphics ggetGraphics()
画x轴y轴
for(x0x<750x+1)
{
gdrawString(·x200)
if(x<385) gdrawString(·360x)
}
gdrawString(Y33020)
画y轴箭头
for(x360x<370x+1)
{
gdrawString(·x10375x)
gdrawString(·xx355)
}
画x轴箭头
gdrawString(X735230)
for(x740x<750x+1)
{
gdrawString(·xx550)
gdrawString(·x950x)
}
画cox()曲线
for(x0x<720x+1)
{
double aMathcos(x*Math PI180+MathPI)
y(int)(200+80*a) 放80倍移200素
gdrawString(·xy)
}
}
}
Ch1_3html网页代码:
余弦曲线测试
<调Ch1_3字节码文件 >