「プログラムの基本」
プログラムといえば、何か計算をするもの、というイメージが強いものです。では、Javaで計算をさせてみましょう。
public class Test2 { public static void main (String args []) { int A,B; A = 1; B = 2; int C = A + B; System.out.println (" 1 + 2 = " + C); } }
これを「Test2.java」という名前で保存し、コンパイルしましょう。実行すると、ウィンドウに「1 + 2 = 3」と表示されます。まあ、単純なものですが、これで計算の基本がわかるでしょう。
では、プログラムを見てみましょう。今度はなんだかだいぶプログラムらしくなりました(笑)。プログラムの部分を見ると、こんなふうになってます。
int A,B; A = 1; B = 2; int C = A + B; System.out.println (" 1 + 2 = " + C);まず最初の「int」というのは、ここで使う変数を定義するためのものです。Javaでは、使用する変数は最初に定義しておかないといけません。この「int」というのは、「int型」という形の変数を定義するためのものです。
Javaでは、変数にいくつかの「型」があります。数字を入れる型、文字を入れる型など、収める値によってさまざまな型があります。そして型の異なるものの間では、うまく値をやり取りできなかったりするのです。
この「型」はいろいろありますが、まずは以下の2つだけ覚えておきましょう。
「int型」−−integer(整数)のことです。これは2の32乗の整数を扱えるものです。まあ、整数を使うときは普通これを使う、と考えてください。Javaには他にも整数のための方がいくつかあります。
「String型」−−これは文字列を使うためのものです。
この変数を宣言するときは、変数の型の後に変数名を書きます。たとえば、こんな具合です。
int A; int A,B; String A; String A,B;いくつもの変数をまとめて定義しておくときは、このようにカンマで区切って書きます。
ここで、ちょっと不思議に感じることがあります。「なぜintは全部小文字なのに、Stringは始めの1文字目が大文字なのか?」ということです。通常、型の名前は全て小文字です。最初が大文字というのは、クラス名を書くときだけのはずです。
そう!−−実をいえば、Stringはクラスだったのです。これは、char(キャラクタ、1文字だけの文字を入れる変数)を使って定義されたクラスなのです。まあ、今の段階では「なんで変数の型がクラスで定義されてるんだ?」と悩むと混乱が増すばかりですから、「Stringだけは特別に最初の1文字目を大文字で書く」とだけ覚えておいてください。
値を変数に代入するときは、「=」を使います。例えば、
A = 1; B = "ABC";こんな具合にすると、Javaでは右辺の値を左辺の変数におさめます。上の例なら、変数Aには「1」という数字が、変数Bには「ABC」という文字列がはいるわけです。もちろん、このとき、収める値と型があっていないといけません。
int A; A = "ABC";こんな具合に、int型に文字列を入れたりするとエラーになります。注意してください。
さて、プログラムを見ると、こんな書き方がありますね。
int C = A + B;これは、変数の定義と値の代入をまとめてやっているものです。最初から変数に値を収めてしまいたい場合には、このように、定義の後にそのまま代入する式を書いてしまうこともできます。これは便利ですから覚えておきましょう。
そして、最後のprintln命令。ここでは、
System.out.println (" 1 + 2 = " + C);このようにして「1 + 2 = 答え」というのを表示しています。文字列と文字列をつないでひとつにするときも、計算と同じように「+」を使います。例えば、
A = "ABC"; B = "XYZ"; C = A + B;こんな具合にすれば、変数Cには「ABCXYZ」という文字列が収められるわけです。
でも、ちょっと待って下さい。「あれ、このプログラムでは、変数Cはint型じゃないか。型の違うものは一緒にできないはずじゃないか?」−−と思った人もいるんじゃないでしょうか。
そうなんですが、こんなふうに、そのまま動いてしまうこともあるんです。ところが、動かないこともある(笑)。このへんがややこしいところなんですが…。まあ、printlnは、いろんな型の値をだいたい全部出力できるように作ってあるのだ、と思って下さい。
動かないときのために、型を変換する方法を紹介しておきましょう。それには、以下のようなメソッドを使います。
★int型をString型にする★
《String型変数》= Integer.toString (《int型変数》);
★String型をint型にする★
《int型変数》= Integer.parseInt (《String型変数》);
それぞれ見れば想像がつきますね。「Integer.toString」というのは、Integerクラスに用意されているメソッドです。Integerクラスというのは、整数に関するクラスで、ここにint型で使えるメソッドがまとめてあります。これらは、こんな具合に「《クラス》.《メソッド》(《引数》)」という形で書いて使います。
この2つを覚えておけば、とりあえず数字を文字にしたり、文字を数字にしたりできるようになるわけです。−−あ、ただし、「文字を数字にする」というのは、文字列の「10」を数字として扱えるようにする、ということです。だから「ABC」のように数字として通用しない文字列を変換してもうまくいきませんから注意してくださいね。
さて、これからいろいろプログラムを書くためには、この他に「制御構造」というものも覚えておかないといけません。いわゆる条件文とか、繰り返し命令というものですね。これらも、ここでまとめて説明しておきましょう。まずは、条件文からです。
★条件文−−その1★ if (《条件式》) { ……条件が正しいとき実行する命令…… }要するに、正しくないときは後に「else {…}」というのを付け足せばいいだけのことです。わかりやすいですね。
★条件文−−その2★ if (《条件式》) { ……条件が正しいとき実行する命令…… } else { ……正しくないとき実行する命令…… }
問題は、「条件式」の部分です。ここには、いわゆる「論理式」と呼ばれるものが入ります。「○○は××である」とか「○○は××より大きい」とかいうやつですね。これには、以下のようなものがあります。
○○ == ×× −−○○と××は等しい
○○ != ×× −−○○と××は等しくない
○○ < ×× −−○○は××より小さい
○○ <= ×× −−○○は××と等しいか小さい
○○ > ×× −−○○は××より大きい
○○ >= ×× −−○○は××と等しいか大きい
まあ、簡単なスクリプトやマクロなどを書いたことがあれば、だいたい理解できるでしょう。「==」「!=」というのがちょっと変わってますね。Javaでは、値の代入に「=」を使うので、「等しいかどうか」というときは「==」を使って、代入と区別しているのです。
さて、それでは次に繰り返しにいきましょう。これはいくつかありますが、2つの代表的なものを紹介しておきましょう。
★条件が正しい間繰り返す★ while (《条件式》) { ……繰り返す命令…… }さて、while {}はわかりますね。わかりにくいのは後のほうです。これは、例えばこんなふうにします。
★変数の値を調べて繰り返す★ for (《変数の初期値》;《条件式》;《加算する値》) { ……繰り返す命令…… }
for (i = 1; i <= 10; i = i + 1) { … }こうすると、変数iが1から10になるまで繰り返しを行ないます。繰り返すごとに変数iの値は1ずつ増えていきます。わかりますか? つまり、1つ目の部分に始まりの数を書き、2つ目に「繰り返しを実行している条件」を書きます。ここでは「i <= 10」とありますから、変数iが10以下の間、繰り返しを行なうわけです。
そして3つ目に、繰り返すごとに変数をどう変更するかを書いておくのです。ここでは「i = i + 1」ですから、つまり1回繰り返すごとに変数iは1ずつ増えていくことになります。
なお、こんなふうに「1ずつ増える」「1ずつ減る」という操作は多用しますから、もう少しスマートに「i ++」「i --」なんて書き方もできます。今の例なら、
for (i = 1; i <= 10; i++) { … }となるわけです。なかなかカッコイイ書き方でしょ?
さて、これでちょっとした計算などをJavaで行なえるようになりましたね。では、試しに何か書いてみましょう。
public class Test3 { public static void main (String args []) { int A = 100; int B = 0; int i = 1; for (i = 1; i <= A; i++) { B = B + i; } System.out.println ("GOUKEI: " + B); } }
これは、1から100までの合計を計算して表示するプログラムです。これはTest3というクラスで書いてありますから、「Test3.java」という名前で保存し、コンパイルします。実行して、画面に「GOUKEI: 5050」と表示されればOKです。
皆さんも各自で何かサンプルを書いてみて、ここまでの基本をマスターしてください。