┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃.&&&& **** %%%%. JavaScript&Javaで目指そう!基本情報技術者試験 ┃
┃&&&&&&******%%%%%% 執筆&編集 斎藤末広 suehiro@he.mirai.ne.jp ┃
┃'&┃&''*┃*''%┃%' 発行 江口昌宏 *** ┃
┗━┻━━┻━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
広告募集:http://www2.odn.ne.jp/~egu33/jmaga/java-maga.html
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
第13号 2002/01/xx
関数からメソッド
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
プログラムを作成する上での注意事項:
Windows とIE を前提としています。
拡張子を表示するに設定してください。
------------------------------------------------------------------------
▼ 関数,引数,実引数,仮引数,戻り値
中学や高校の数学でおなじみの関数です。数学の世界の関数をプログラムの世
界でも利用します。
関数の一般的な書き方は,
y = f(x)
この場合,x を引数(ひきすう),f を関数,y を戻り値といいます。
今,1,2,3,,,n と足す関数を考えます。xtasu という関数名とします。
y = xtasu (x) で,1+2+3+…+x を計算します。
xtasu の中身の概略は,
s = 0;
for (i=1;i<=x;i++){
s = s + i;
}
return s;
この関数を利用するときは,
xkei = xtasu(10);
のように使います。関数の中身を定義するときに使用する引数を,例でいうと
x を 仮引数(かりひきすう),実際に利用するときの引数を実引数(じつひきす
う)と言います。例では,xtasu(10) の 10 が実引数です。
------------------------------------------------------------------------
▼ JavaScript で関数を書くと
xtasu を JavaScript で書くと次のようになります。関数の定義を,head 部に
書き,実際にその関数を利用するところを,body 部に書くのが基本的な書き方
です。
例 j13-01 関数サンプル
関数 j13-01.htm
------------------------------------------------------------------------
▼ 数学の関数との違い
数学の関数は,y = f(x) という書式で表されると,x を与えると,y が求まる
ということで,x と y に視点があります。プログラムの場合は,数学のように
y を求めるという結果だけではなくて,動作に視点が置かれるときがあります。
戻り値としての y があるかどうかはあまり重要ではなくて,関数を実行すると
きにどんな仕事をどうやってくるが比重が置かれる場合があります。このように
どのようにやるかということから,関数をオブジェクト指向の世界では,メソッド
(method)と呼びます。
j13-01.htm のサンプルを次のように変形してみます。
xkei関数は,1 から n までの合計を求めました。関数内で,計を求めるだけで
なくて,画面表示まで,仕事をしてもらうことにします。xDspKei という関数名
に変えます。
例 j13-02 関数サンプル 続
関数サンプル j13-02.htm
この場合,関数 xDspKeiの戻り値は完全に無視されており,表示する仕事が
中心になっています。
------------------------------------------------------------------------
▼ Java で関数を書くと
xtasu を Java で書いてみます。
例 j13-03 xJ13.java
public class xJ13 {
static int xtasu(int x){
int s = 0;
for(int i=1; i<=x; i++){
s = s + i;
}
return s;
}
public static void main(String[] args) {
int xkei;
xkei = xtasu(10);
System.out.println( "1から10までの合計は," + xkei);
}
}
どこが JavaScriptと違っているか気づきましたか?
-------------------------------------------------------------------------
▼ JavaScipt と Java の 関数の違い
JavaScript は,変数の型は自動的に決定していくため,変数の型を宣言する
必要はありません。変数(variable)であるということを宣言するために,var を
付けています。この var は,
var s = 0;
for(var i=1; i<=x; i++){
s = s + i;
}
を
s = 0;
for(i=1; i<=x; i++){
s = s + i;
}
のように省略することも可能です。省略するのはトラブルの元ですので,あまり
お勧めしません。詳しくは,変数の有効範囲(スコープ)を扱う号で説明します。
Java では,変数を宣言するために,型も明確に指示します。
JavaScript Java
------------------------------
var s = 0; int s = 0;
関数の見出しの宣言も違います。
JavaScript Java
-----------------------------------------------------
function xtasu(x){ static int xtasu(int x){
JavaScript は,ここで関数の定義していると,明確にするために,function
で始まっています。Java では,戻り値の型 int を付けているだけで,function
という用語をつけていません。
Java の方には,関数の定義のところで,static という主記憶上での関数の配
置を明示する用語がついています。これは,実行時に,xJ13 というクラス
(モジュール)が主記憶に持ってこられたときに,同時に,この xtasu という関
数も配置するということを意味します。利用時に動的に配置するのではなく,
ロード時(主記憶にモジュールを持ってくるとき)に配置するということで,
static がついています。
------------------------------------------------------------------------
▼ void は,バキューム(vacuum)で空(から)
xDspKei 関数の Java 版を作ってみます。
例 j12-04 xJ13b.java
public class xJ13b {
static void xDspKei(int x){
int s = 0;
for(int i=1; i<=x; i++){
s = s + i;
}
System.out.println( "1から10までの合計は," + s);
}
public static void main(String[] args) {
xDspKei(10);
}
}
関数の宣言のところ
JavaScript Java
-----------------------------------------------------
function xDspKei(x){ static void xDspKei(int x){
Java の方に,static がついているのは先ほどの xtasu の場合と同じです。
Java の方についている void は,xtasu の int の代わりをするものです。xtasu
関数では,戻り値が整数でしたので,それを示す,int を付けました。xDspKei
は,戻り値がありません。それを示すために,空という意味の void を付けます。
この void は,main関数のところにもついていました。
------------------------------------------------------------------------
▼ 関数のまとめ
この号では,関数の基本を確認しました。引数,仮引数,実引数,戻り値の意
味が分かりましたか。オブジェクト指向では,関数のことを,メソッドと呼びま
す。
Java のメソッド(関数)の定義のところの,static は,修飾子と呼ばれるもの
です。別の号で詳しく扱います。
------------------------------------------------------------------------
▼ 次号の予定
再帰関数
感想は,斎藤まで,suehiro@he.mirai.ne.jp
広告等のお問い合わせ:***
------------------------------------------------------------------------
▼ 誤字・脱字等の修正,プログラムの修正など,以下の場所で確認できます。
過去の修正版等
http://www.mirai.ne.jp/~suehiro/java/jmaga/
登録・削除および広告の案内
http://www2.odn.ne.jp/~egu33/jmaga/java-maga.html
------------------------------------------------------------------------
▼ 著作権について
このメールマガジンで公開しているプログラムソースは,著作権を当方スタッ
フが所有しますが,商用を含めて,再利用,改変,発表を制限しません。
本文に関しては,斎藤末広が著作権を所有します。再利用に関しては,承諾を
必要とします。
広告募集 http://www2.odn.ne.jp/~egu33/jmaga/java-maga.html
------------------------------------------------------------------------
▼アンケート(以下を返信してください)
この号のJマガは役立ったあるいは勉強になりましたか?
該当するものだけ残してください。
5: 大いに,YES
4: YES
3: 普通
2: NO
1: 大いに,NO
その他