月亮编程
❶ 新手如何学习编程
熟悉以下关键东西,可以边学边做,定期训练,经常思考,长期积累:
1、语法。
2、基础理论(数学、数据结构、算法等)。
3、设计方法(编程原则、设计模式、框架设计等)。
4、库(核心、基础、UI、扩展、游戏引擎等)。
5、计算机相关(操作系统、网络、图形学等)。
6、领域知识(游戏设计、网站设计等)。
7、开发工具(编辑器、IDE、自动部署等)。
8、项目管理(进度管理、分工协作、Bug管理、版本控制等)。
最普遍也是最重要的能力:创造力。努力分析并理解好做什么以及怎么做。要知道上面那些东西一开始都是不存在的。
具体方法包括:
1、快速阅读入门教程和书籍,适合学习语言和基础库。比如我学Java读的《Java编程思想》,练习题做过一点,然后学ActionScript就没读过书,只读过Adobe官方文档《ActionScript 3.0编程》。
2、阅读库的文档、实例、源码。比如Flash、Flex开发,熟悉官方API很重要,很多细节要具体使用时才注意到,这时候最好做个笔记,虽然我从没看过我的笔记。
3、做一个自己感兴趣或熟悉的小项目,比如我就以黑白棋游戏作为多个语言的试水项目,一样的逻辑,便于把关注点放在语言特点上。
4、自己动手丰衣足食。厨师有菜谱,程序员可没菜谱。比如我做游戏,最关键的游戏编程知识全部是动手学出来的,很少有专门针对某个业务领域(如游戏)的编程书籍,要么是入门书,要么是模式书(如算法)、理论书(图形学),很少有书籍教你如何开发一个45度角地图系统加编辑器的,全靠自己思考,以及看前人的代码,需要时找些网络资料。关键是,可以培养最重要的创造力。
对于算法和设计模式,可以研读下,但是关键还是靠平时如何使用了。新手勉强不来的。
项目管理方面的,就得靠工作经验了,多思考多提意见不要只走流程。
❷ 轨道计算的月球轨道计算
由于地球的运动直接影响月球的运动,因此,先来分析一下地球的受力,如图1-3所示。
在图1-3中,o2x2y2z2坐标系是动坐标系,原点在地球中心。该坐标系跟随地球作平动,且三个坐标轴x2,y2,z2始终分别平行于x,y,z三个坐标轴。r1 是地球的位置矢量,r是月球的位置矢量,r2 是月球相对地球的位置矢量。
F月地是月球对地球的引力,F太地是太阳对地球的引力。设r1 与x,y,z轴的夹角分别为α1,β1,γ1,r与x,y,z轴的夹角分别为α,β,γ,r2 与x2,y2,z2轴的夹角分别为α2,β2,γ2,则,地球在x,y,z方向所受合力为:
因此,地球在x,y,z方向的加速度:
月球的受力如图1-4所示。月球在x,y,z方向所受合力为:
其中,F太月为太阳对月球的引力,F地月为地球对月球的引力。因此,月球的加速度为:
设a的初值为的初值为这样,地球和月球从各自的初值点同时出发,经dt时间后,慧迟地球就到达了它的下一点于是可得如下递推式:
(见下页)
控制计算误差的6个条件为:
其中分别为二分前后算出的地球坐标。再次说明一下,以前晌李上月球轨道的计算仅是计算机计算原理,实际编程应采取一些标准化方法,以提高计算精度,减少计算机的计算工作量。
目前,在月球轨道计算上,我已做到了,一天的计算误差e<0.001米(即在x,y,z轴方向的计算误差e),也就是说一年的计算误差e<365×0.001=0.365米。要核实万有引力公式本身和实际情况的相差程度,可取两组实际观测值,一组观测值作为计算的初值,另一组观谨晌测值作核实之用,即核实用万有引力公式来计算的星球轨道的准确程度。下面采用一组实际观测值(注2)作为计算初值,让计算机来计算一下月球的轨道。初值为:
❸ 用最简单的C++程序实现 已知地月平均距离384400千米,地球质量5.98*10^24kg,月球
#include<stdio.h>
//
intmain()
{
constdoubleG=6.67e-11;
doubleR=384400,Me=5.98e24,Mm=7.35e22;
doubleF=G*Me*Mm/(R*R);
printf("F=%gN ",F);
//
return0;
}
❹ 用Java编写程序
public class StringBufferDemo {
public static void main(String[] args) {
StringBuffer s=new StringBuffer("近来天气不太好,有时几天都见不到月亮。可今天却是明月当闷粗空,青天万里无云");
StringBuffer s1=new StringBuffer("明月当空,青天万里无云");
s=s.delete(s.lastIndexOf("明月当空,青天万里无云"),s.length());//将“明月当空,青天万里无云”取出,存到StringBuffer s1中。
System.out.println(s);
s1=s1.delete(3,s1.length());//删除s1从第三个字符开昌罩念始的所有字符。
System.out.println(s1);
StringBuffer s2=new StringBuffer(s.substring(7,10));//取s的一个子串s2(从第7个开始取出3个字符)。
System.out.println(s2);
s2.reverse();//将子串s2反转。
System.out.println(s2);
s1.append(s2);//将s2添加到s1的后面。
System.out.println("字符串'"+s1+"'的长度是:"+s1.length());//计算新字符串的长耐困度L,并打印出结果。
}
}
结果是:
近来天气不太好,有时几天都见不到月亮。可今天却是
明月当
,有时
时有,
字符串'明月当时有,'的长度是:6