月亮編程
❶ 新手如何學習編程
熟悉以下關鍵東西,可以邊學邊做,定期訓練,經常思考,長期積累:
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