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

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

* 関数の定義 [#w3cd8065]

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

&ref(MethodTest.java,,,MethodTest.java ダウンロード);/[[ソースコードファイルを見る>http://yoslab.net/netprog/source/MethodTest.java]]


*** 説明 [#d40cb1b0]

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

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

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

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

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

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

*** 練習 [#h7c4ef3b]

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

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

 i = i + 1;
 i++;

 x = x + 0.5;
 x += 0.5;

#br

&color(green,lightcyan){'' タブ(tab)とは ''}; 

- タブの書きかたの例
- "\t"はタブを表す記号です.
- キーボードの「tab」キーの同じ意味です.
- 普通,「タブ」というと,書類の分類などの見出しを意味します.
- Webブラウザのページの切り替えも「タブ」といいます.
- "\t"は,そのタブとは&color(red){"違います!"}
- "\t"は,「tabular」(表)の意味で,表を作るために,
- 一定間隔で カーソルの位置が移動します.
- 文字の左端をそろえる機能があります.

#br

&color(green,lightcyan){'' ヒント2: ''}; 

- \tは文字と同じなので,普通の文字と同じように使えます!    


* 変数のスコープ(有効範囲) [#p5203079]

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

&ref(ScopeTest.java,,,ScopeTest.java ダウンロード);/[[ソースコードファイルを見る>http://yoslab.net/netprog/source/ScopeTest.java]]

*** 説明 [#ga82707e]

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

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

同じメソッド内でも,あるブロック内(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のブロック内だけで有効です.

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


&ref(Scope.key.png);~
図1-6 変数aの範囲(SCOPE)



&size(16){[[&ref(http://yoslab.net/netprog/next.gif,nolink); 小課題>小課題 Javaプログラミングの確認]]};


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   一覧 単語検索 最終更新     最終更新のRSS