Pascal との比較 - 1

「こんにちは、私の名前はラガ・ビラーボです。この船で医者をやってる宇宙人です。仲良くなれるといいですね。」

「そうですね。」

「私の故郷の惑星では、時代遅れの Java プログラミング言語じゃなくて、進歩した Pascal プログラミング言語を使っています。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.

「これは同じプログラムを 2 つの異なる言語で書いています。見て分かるように、Pascal の方が行数が少ないので、Java より優れた言語であることが分かります。」

「Pascal のコードを見たことがあるなら、この例を見て Java の理解を深めることができると思ったんですよ。」

「Pascal は見たことないです。でも、2 つのプログラミング言語を比較するのは興味深いですね。」

「いいでしょう。では続けますよ。」

「Pascal では、コードをプログラム本体、procedure (プロシージャ)、または function (関数) の中に記述します。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 (関数)
Function Sqr(a: Real): Real
Begin
   Sqr := a * a;
End;
戻り値の型が void の関数
void doubleWrite(String s)
{
   System.out.println(s);
   System.out.println(s);
}
Procedure (プロシージャ)
Procedure DoubleWrite(s: String);
Begin
   WriteLn(s);
   WriteLn(s);
End;

「Pascal の方は 'プログラム本体'、'function (関数)'、そして 'procedure (プロシージャ)' という言葉が使われていますが、Java では全部メソッドになっていますね。ちょっと変な感じがしますね。」

「そうなんです、私たち宇宙人にとってはとても違和感があるんですよ。でも人間は全部 1 つにまとめたがるんです。」

「Java では、すべてのコードがメソッドの一部になっているから、メソッドを宣言するときに、Pascal でやるようにわざわざ Function って言葉を書く必要はありません。」

「すべてシンプルになっています。もし 型 + 名前 と書かれたコードがあれば、それはメソッドか変数の宣言です。その名前の後に丸括弧が続いていたら、それは新しいメソッドの宣言です。丸括弧がなかったら、変数の宣言ということになります。

「Java では変数とメソッドの宣言はよく似ているんです。自分の目で確認してみてください。」

コード 説明
String name;
name という変数は String です。
String getName()
{
}
getName を返す String というメソッド。

「でもこれだけではありません。Java のメソッドは孤立して存在することができないので、クラスの中に置く必要があります。したがって、Java で小さなプログラムを 1 つ書くだけでも、地球人はわざわざ最初にクラスを作成しその中で main メソッドを宣言してから、 やっとメソッドにコードを書くという作業を行っているんです。地球人って本当に変ですよね!」

「先ほどディエゴが来て、あなたにタスクを置いていきましたよ。楽しいタスクだといいですね。」

1
タスク
Java の構文,  レベル 1レッスン 8
ロック未解除
大掃除
このプログラムを書いた人は明らかに急いでやってしまった感じですね。いや、違うなぁ。このプログラムは勉強用として書かれたものだから、制作者はわざと余分な変数を詰め込んで、同時に必要な変数を宣言するのを忘れてしまったんですね。ではこれを修正しましょう。不要な変数をコメントアウトしてから、足りない変数を宣言してください。そうすれば、プログラム全体がいい具合にかみ合うでしょう。
1
タスク
Java の構文,  レベル 1レッスン 8
ロック未解除
やる気がしないときも、頑張りましょう。
トップクラスのプログラマーでさえ怠けてしまうことはあるでしょう。それはプログラマーに限ったことではないですけどね。でも、プロになる人たちは独学してその道を歩んでいるものです。だから、怠けるのは良くありません。代わりに、こちらのスローガンを画面に表示しましょう。「やる気があるときは、タスクをしましょう。やる気がないときも、頑張りましょう」。これを 16 回表示して、しっかりと頭に焼き付けましょう。
5
タスク
Java の構文,  レベル 1レッスン 8
ロック未解除
数字の 2 乗
数字を 2 乗する方法はいくつかあります。例えば、人によっては数字を書いてから、その回りに正方形を描いて計算したりします。この方法は学校で勉強したことがない人が使います。他のみんなは乗算をします、2 乗の早見表 (table of squares) は覚えていますか?また、プログラムに計算させることもできます。5 の 2 乗を表示するプログラムを書いてみましょう。
5
タスク
Java の構文,  レベル 1レッスン 8
ロック未解除
2+2 と同じくらい簡単
Java のアプリケーションでは、すべてのアクションは関数によって行われます。正確には、メソッドによって行われます。私たちのプログラムでは、親切なメンターが既に 2 つの数字の合計を計算するメソッドを実装してくれています (つまり、メソッドのコードを書いてくれています)。私たちは引数 2 と 2 を使ってこのメソッドを呼び出すだけで OK です。これは main メソッドで行う必要があります。
1
タスク
Java の構文,  レベル 1レッスン 8
ロック未解除
フルーツのようなヘルシーな食べ物を選びましょう!
フルーツの名前を値として持つ変数を表示しましょう。各変数をそれぞれ新しい行に表示してください。
1
タスク
Java の構文,  レベル 1レッスン 8
ロック未解除
お気に入りの詩
最近のプログラマーはテクノロジーとガジェットのことしか頭にないといった従来の典型的なエンジニアとは少し違うみたいですね。中には詩に情熱を持ってる人もいるようです。あなたも詩の愛好家なら、次のタスクは簡単でしょうね。お気に入りの詩から 四行連句 (もしくはそれ以上) を表示してみましょう。