image-ru-01-05

「嗨!我叫拉嘎·畢拉阿伯。我是個外星人,也是這艘船上的醫生。希望我們可以變成好朋友。」

「我也希望。」

「在我的母星,我們使用先進的 Pascal 程式語言,而不是這個落後的 Java 語言。讓我們看看下面這個 Java 和 Pascal 代碼擺在一起的對照:」

Java Pascal
public class MyFirstClass
{
   public static void main(String[] args)
   {
      int a, b, c;
      String s1, s2;
      System.out.println("Enter two numbers");
      a = new Scanner(System.in).nextInt();
      b = new Scanner(System.in).nextInt();
      c = a + b;
      System.out.println("The sum is " + c);
   }
}
Program MyFirstProgram;
Var
   a, b, c: Integer;
   s1, s2: String;
Begin
   WriteLn("Enter two numbers");
   ReadLn(a);
   ReadLn(b);
   c := a + b;
   WriteLn("The sum is ", c);
End.

「這是用兩個不同的語言寫的同一個程式。你應該看得出來,Pascal 的行數比較少,這就是 Pascal 比 Java 厲害的證據。」

「如果你有看過 Pascal,我覺得這個例子應該可以讓你更容易了解 Java。」

「我沒看過 Pascal。不過比較兩種程式語言還是很有趣。」

「好吧。那我就繼續了。」

「在 Pascal 裡,我們會把代碼放在程式主體、程序 (procedure) 或函式中。在 Java,這個過程比較簡單:程式主體、程序以及函式都被取代為叫做方法的函式。」

Java Pascal
Main 方法
public static void main(String[] args)
{
   System.out.println("Ho-ho-ho!");
}
程式主體
Begin
   WriteLn("Ho-ho-ho!");
End.
函式/方法
double sqr(double a)
{
   return a * a;
}
函式
Function Sqr(a: Real): Real
Begin
   Sqr := a * a;
End;
以 void 為返回型別的函式
void doubleWrite(String s)
{
   System.out.println(s);
   System.out.println(s);
}
程序
Procedure DoubleWrite(s: String);
Begin
   WriteLn(s);
   WriteLn(s);
End;

「在 Pascal 那半邊,我看到『程式主體』、『函式』和『程序』這些詞,但在 Java 裡它們都叫方法。這有點怪。」

「是的,我們外星人也覺得很怪。但人類就是喜歡把所有東西都統一。」

「在 Java 裡,所有的代碼都是方法的一部份,所以你不用像 在 Pascal 裡面,把 Function 這個詞寫出來宣告一個方法。

「一切都很簡單。如果一行代碼看起來像是 型別 + 名稱,那就是方法或變量的宣告。如果名字後面還跟著括號,那這是一個新方法的宣告。如果沒有跟著括號,那就是變量的宣告。

「在 Java 裡,變量和方法的宣告長得很像。你自己看:」

代碼 描述
String name;
叫做 name 的變量,是一個 String
String getName()
{
}
叫做 getName 的方法,返回一個 String

「還沒說完喔。在 Java 裡,方法不能單獨存在。它們必須被包在類別裡。所以,當人類需要在 Java 裡寫一個小小的程式時,他們必須先建立一個類別在裡面宣告一個 main 方法、然後才能夠把代碼寫在那個方法裡。這些地球生物真是太奇怪了!」

「迪亞哥今天有順道過來,他叫我把這些任務交給你。希望你喜歡。」

1
任務
Java 語法,  等級 1課堂 8
上鎖
大清掃
寫這支程式的人顯然寫得很趕。事實上,上面那句話不對:這支程式是為了教育意義而寫的,作者刻意塞了很多累贅的變量,同時還故意不宣告必要的變量。我們要來修正它:把不需要的變量註解掉,宣告被漏掉的變量。然後程式就會充滿無上和諧了。
1
任務
Java 語法,  等級 1課堂 8
上鎖
不是很想?還是做吧。
甚至是最好的程式員也難逃懶惰的魔掌。而且不只是程式員會受害。然而,人們還是有辦法靠著自學成為專家。所以呢,我們建議不要屈服於懶惰。改在螢幕上顯示這個口號:「如果你願意,就做這個任務。如果你不是很想,還是做吧」。為了把這句話切實記在心裡,要顯示 16 次。
5
任務
Java 語法,  等級 1課堂 8
上鎖
數字的平方
有很多方法可以對數字求平方。舉例來說,有些人可能會把數字寫在牌子上,然後在心裡求它把平方告訴自己。用這個方法的人可能沒上過學。一般人會用乘法,背平方表…,或用程式來算。你的程式應該顯示數字 5 的平方。
5
任務
Java 語法,  等級 1課堂 8
上鎖
跟 2+2 一樣簡單
在 Java 應用中,所有的動作都由函式執行。更精確一點地說,是方法。我們的程式裡已經有個好心導師實作出來的方法(意思是方法的代碼已經寫好了),這個方法可以計算兩個數字的和。你只要以 2 和 2 作為引數來呼叫這個方法就可以了。你需要在 main 方法中進行呼叫。
1
任務
Java 語法,  等級 1課堂 8
上鎖
選擇健康食物!選擇水果!
顯示值為水果名稱的變量。把每個變量顯示在新的一行上。
1
任務
Java 語法,  等級 1課堂 8
上鎖
最愛的詩
現代的程式員很少是除了對科技和裝置痴狂、對其他事都毫無興趣的純種工程師。有些程式員對詩也充滿了熱情。如果你也喜歡詩的話,接下來的任務你會覺得很簡單喔:從你最愛的詩裡挑四行(或更多),然後顯示出來。