なんとなくわかるJava入門#2 変数編
こんにちは。
今回は変数編です。ちょっと新しく覚えるところも多いですが、最も基本的な要素となるので、しっかりと理解していきましょう!今回の目標は「変数を理解することと、コンピュータによる実行のイメージをつかむこと」です!
イメージしてみよう
プログラムのことは忘れて、今から問題を出すので、ちょっと頭で考えてみて下さい。メモとかは取らないでくださいね。
問題1.(1×2)+(3×4)を計算してみて下さい。
どんな感じで計算しましたか?
(1×2)を計算して、「左側の計算結果は2」と憶えておいて、
(3×4)を計算して、「右側の計算結果は12」と憶えておいて、
右側の計算結果(2)+左側の計算結果(12)を計算して、
「最終的な解答は14」と憶えたと思います。
つまり、計算する途中で、部分的な計算結果を憶えておくということをしました。
問題2.タロウは100円持っています。ハナコも100円持っています。タロウは母から300円もらいました。ハナコは父から200円もらいました。タロウは祖母から100円もらいました。ハナコは祖父から200円もらいました。タロウとハナコはそれぞれいくら持っていますか?
どんな感じで計算しましたか?
タロウは100円
ハナコは100円
タロウはいくらだっけ?100円だ!これに300円足して、400円
ハナコはいくらだっけ?100円だ!これに200円足して、300円
タロウはいくらだっけ?400円だ!これに100円足して、500円
ハナコはいくらだっけ?300円だ!これに200円足して、500円
というように考えたと思います。
つまり、ただ憶えておくだけでなく、思い出しては、計算して、最新の計算結果の状態に更新しました。
問題3.ところで問題1.の計算結果は何でしたか?
どんな感じで計算しましたか?
あらためて問題1.を計算することはしなかったと思います。
思い出す、もしくは、上にスクロールしたと思います。
つまり、何度も計算せずに繰り返し計算結果を利用するということをしました。
この「計算結果を憶えておくということ」これを、プログラム上でも「変数」というものによって実現することができます。
変数でできること
・部分的な計算結果を憶えておく
・思い出しては、計算して、最新の計算結果の状態に更新する
・何度も計算せずに計算結果を再利用する(利点)
どんな仕組み?
あまり細かいことは説明しませんが、どんな仕組みで実現されるのかをイメージできるようになりましょう。プログラムを読み書きするうえで、「頭の中で実行できること」がとても重要になります。したがって、早いうちから頭の中にコンピュータを作り上げていきましょう。
といっても、難しいハナシではありません。
先ほど、頭の中の記憶領域で、「左側の計算結果」と「右側の計算結果」を憶えておきました。
Javaではスタック領域(いわば、脳みそ)と呼ばれる場所に、「左側の計算結果」と「右側の計算結果」を憶えておく場所を用意します。そして、それぞれに2と12という値を憶えておく(保存しておく)ことができます。この「憶えておく場所」が変数です。
タロウとハナコについても同じです。タロウとハナコという名前で計算結果の最新の状態を憶えておく場所(変数)を用意しておいて、計算過程で繰り返し、現在の状態を思い出し(確認し)、更新していきます。
タロウは100と憶えているところに、直接300を足すのではなく、頭で考えたことと同じように、100を思い出して、これに300を足して、400を憶えておきます。
最後の問題も頭の中でやったことと同じですね。毎回同じ計算をするのではなく、左側の計算結果、右側の計算結果、タロウ、ハナコ、それぞれを憶えていれば、思い出すだけで良いです。
コンピュータにこういった計算をさせるよう命令するために、プログラムを書きます。
プログラムを書いてみる
では、実際にコンピュータに対する命令書であるプログラムを作ってみましょう。
1) Eclipse を起動し、次の名前のプロジェクトとJavaファイルを作って下さい。
やり方が分からない人は、前回の記事を参照してください。
プロジェクト名:Variable
クラス名:VariableMain
2) 以下のコードを書いてください。
コピペ(コピー&ペースト)でもOKですが、タイピングが不慣れな人は、みながら入力して少しでも慣れておいたほうが良いです。
public class VariableMain {
public static void main(String[] args) {
int left;
int right;
int answer;
left = 1 * 2;
right = 3 * 4;
answer = left + right;
System.out.println("計算結果:" + answer);
int tarou = 100;
int hanako = 100;
tarou = tarou + 300;
hanako = hanako + 200;
tarou = tarou + 100;
hanako = hanako + 200;
System.out.println("タロウ:" + tarou);
System.out.println("ハナコ:" + hanako);
}
}
3) 書けたら保存して、実行してみましょう。
次のような実行結果がコンソールに表示されることを確認して下さい。
プログラムと実行結果を観察してみる
先ほど書いたプログラムを観察してみましょう。
前回のとおり、public static void main ... の { } カッコの中身が実行されています。
プログラムの「;(セミコロン)」までの記述のまとまりを「文」と呼びます。
以降より1文ずつ確認していきます。
1) まず、「int left;」について、
int left は、leftという名前の付いた憶えておく場所(変数)を用意してください。という命令です。この命令のことを「変数宣言」と呼びます。leftという名前の憶えておく場所を確保します!!と宣言するんですね。このleftは、イメージしてみようで話した「左側の計算結果」という名前の付いた憶えておく場所にあたります。
2) 「int right;」、「int answer;」について、
同じくですね。「右側の計算結果」「最終的な解答」という名前の付いた憶えておく場所にあたります。
3) left = 1*2;について、
Javaでは「×かける」は「*」で表記します。
「=」は、右側の数値を左側の「憶えておく場所」に保存する(代入する)ことを意味します。
計算過程は、1*2を実行し、2に置き換えます ( left = 2; になる )。
さらに、left = 2; を実行し、leftに2を代入します。
このプログラムの命令をひとつずつ実行することを「評価する」と言います。
命令には実行順序があり、「保存(代入)」は一番最後に実行されます。
4) right = 3 * 4;について、
同じくですね。
どういった計算過程になるのか考えてみて下さい。
3*4を実行し、12に置き換え、rightに保存(代入)します。
「=」の命令、つまり保存(代入)は一番最後に評価されるんでしたよね。
5) answer = left + right;について、
leftは、仕組みのところの例で話した「思い出す」という命令にあたります。
つまり、leftとrightの数値を思い出して、足し算して、answerに保存(代入)が行われます。実行順序は「思い出す」が一番先で、思い出す > 四則演算 > 保存(代入)の順に実行されます。
6) System.out.println("計算結果:" + answer);について、
これまでの学習内容から理解できます。
前回の復習になりますが、
- System.out.println() は、()カッコの中の文字が表示される
- さらに、""で囲むと、文字列として扱われ、文字列 + 数値は、数値を文字列にして、文字列同士を結合する
ということを憶えていますでしょうか?
これに、今回の学習内容である
- answerは、保存されている数値を思い出す(置き換える)
- 思い出す、四則演算、保存(代入)という順に実行される
を組み合わせて考えると、結果は、
answerは、14に置き換えられ、
文字列 + 数値なので14は文字列"14"に変換され、
文字列同士の足し算を計算して"計算結果:14"となり、
この文字列が出力されます。
ここまでが、前半の内容です。
後半の内容については、すべて確認するのではなく、重要な2点について話させて頂きたいと思います。
7) int tarou = 100;について、
実は、「憶えておく場所を用意すること(変数宣言)」とその他の命令を1文にまとめて書くことができます。
まず、int tarou から、tarouという名前の憶えておく場所(変数)が用意されます。
次に、100という値がtarouに保存(代入)されます。
8) 次に、tarou = tarou + 300; について、
「tarou + 300」はこれまで学習した内容です。tarouの値を思い出して、これに300を足します。
この計算結果を tarou に保存(代入)しています。つまり、最初に100の値を持っていたtarouが、400に変わりました。
これが重要な特徴で、変数はその名前のとおり、憶えている数を変えることができます。
長くなりましたが、ここまでをまとめると、
- int 名前; で覚えておく場所を用意する。
- 憶えておく場所のことを変数と呼ぶ。
- 憶えておく場所を用意する命令を変数宣言と呼ぶ。
- 憶えておく場所に保存することを代入と呼ぶ。
- 「+」は足し算、「=」は代入を表す。
- 命令を実行することを評価と呼ぶ。
- 思い出す > 四則演算 > 保存するの順に評価される。
- 変数は代入されている値を変化させることができる
こまけぇハナシ
今回はこまけぇハナシはやめておきましょう。
すでに細かすぎかなとも思いましたが、
私の経験上、この「イメージを付ける」ということをいい加減にやると、発展的な内容になったときにつまづく方が多いです。
終わりに
次回は基本データ型編です。今回は一番基礎の部分だったので、かなり丁寧に説明しましたが、この先どんどんシンプルに、いい加減に説明して、「なんとなく分かった」と思っていただけるようにしたいと思います!ほんじゃ、また。
励みになるので、良ければ下の☆ボタン、読者になるボタンを押していって下さい。