TopPage > 演習課題 > 演習1-6

演習1-6では,2つのプログラムファイルについて見ていきます.

関数の定義

まず,下記のプログラムをダウンロードしてください.

fileMethodTest.java ダウンロードソースコードファイルを見る

説明

クラスには,データと機能を書くことができます.この機能のことをメソッドといいます. メソッドはC言語の関数に該当します.

メソッドは原則的に終了すると,値を返します. (値を返さない場合はvoidを指定します)

public static int square(int num)

このように宣言されていると,intの値を返しますので, メソッド内にreturnにintが指定されている必要があります.

MethodTest.javaには,squareのメソッドが2つあります.

もし,int用の二乗のプログラムをsquareすると, double用の二乗のプログラムをsquareDoubleとしないとけません. 両方二乗するという仕事は同じですから, 同じsquareという名前で使えたら便利ですよね.

Javaでは,引数(メソッドに渡す値)の型や数が異なれば一つのクラスに 同じ名前で複数のメソッドを書くことができます. これをオーバーロードと言います.

練習

3乗を計算するcube()を追加して,下記の表を出力するように, プログラムを修正せよ.

xは0から10まで(0.5ずつ).

x   x^2    x^3
0.0    0.0       0.0
0.5    0.25      0.125
1.0    1.0       1.0
1.5    2.25      3.375
:
10.0   100.0     1000.0

ヒント:

  • 各項目の要素間は"\t"(¥t =タブ文字)を入れるとよいでしょう.
  • printlnは改行あり,printは改行なしで出力します.文字列と変数を結合する記号も思い出してください!
  • 単純作業の繰り返しなので,for文を使うとよいでしょう.なお,下記の二行はそれぞれ同じ処理を行います.
i = i + 1;
i++;
x = x + 0.5;
x += 0.5;
 

変数のスコープ(有効範囲)

まず,下記のプログラムをダウンロードしてください.

fileScopeTest.java ダウンロードソースコードファイルを見る

説明

変数には,その変数が利用できるスコープ(有効範囲)があります.

変数は宣言された場所以外からはアクセスできません.あるメソッド内で宣言されればその変数名は当該メソッド内でしか有効ではないということです.別のメソッドで同じ変数名を参照しても,全く別の変数が参照されます.

同じメソッド内でも,あるブロック内(if文,for文,while文など)で宣言されれば,当該ブロック内でしか有効ではありません.一つのメソッド内に複数のブロックがある場合,あるブロック内で変数名 a が宣言されていても,別のブロックで a を参照しても,全く別の変数が参照されます.

このように,メソッド内で宣言された変数は有効範囲が制限されています.変数を参照できる範囲(変数の有効範囲)をスコープと呼びます.

プログラムの3行目の

static int a;

は,class ScopeTestの有効範囲内ではどこからでもアクセスできます.

たとえば,メソッドscope1では,aは宣言なしで,で代入しているように見えますが, 実際には,3行目のaに代入されます.

また,メソッドscope2では,int a=20;の宣言があるので, メソッド内での出力は,20がでます. しかし,mainに戻った直後は,20の値は格納した変数aは, メソッドscope2の中だけで有効なので, 出力は10となります.

for文の中をみると,

int a = 0;

の宣言があるので,変数aは,このforのブロック内だけで有効です.

各自,プログラムを実行して,変数のスコープを確認してください.

next.gif 小課題


添付ファイル: fileScopeTest.java 992件 [詳細] fileMethodTest.java 566件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   一覧 単語検索 最終更新     最終更新のRSS
Last-modified: 2015-11-05 (木) 15:51:52 (3089d)