2002
-1106 ver 0.00 第1草稿開始
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃.&&&& **** %%%%. JavaScript&Javaで目指そう!基本情報技術者試験 ┃
┃&&&&&&******%%%%%% http://www.yscon.co.jp/j/java/jmaga/ ┃
┃'&┃&''*┃*''%┃%' (C)2002 斎藤末広 jmaga@yscon.co.jp ┃
┗━┻━━┻━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
★解除・登録 :http://www2.odn.ne.jp/~egu33/jmaga/java-maga.html
★バンクナンバー :http://www.yscon.co.jp/j/java/jmaga/
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
第31号 2002/11/20
基本テクニック編 乱数
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
プログラムを作成する上での注意事項:
Windows98SE, SDK(JDK) 1.4.0,IE 5.5 を前提としています。
拡張子を表示するに設定してください。
=========================================================================
交換広告(交換希望の方は,jmaga@yscon.co.jpまで)
----☆PR☆--------------------------------------------------------------
コンピュータ関係の資格を取りたい方へ
毎日届く,宿題メールの勉強仲間に入りませんか?
.&&&& **** %%%%.
&&&&&&******%%%%%% 登録: http://backno.mag2.com/reader/Back?id=0000001414
'&┃&''*┃*''%┃%' 発行元:末広ページ http://3721p.com
--------------------------------------------------------------☆PR☆----
========================================================================
プレゼント Java2対策本プレゼント 締切 次号発行日の前日
ソフトバンクパブリッシングさんが,サンのJava2試験の対策本を出されました。
著者の原さんは,ソフトバンク発行「合格へるぱー」でJavaの連載をされていた
方です。
サンのJava2の資格は,基本情報でJavaを選択する人が基本情報と併せて狙う
といい資格です。出版社より,Jマガ読者に1冊,プレゼントしていただきまし
た。
以下,出版社からコメントです。
------------------------------------------------------
Sunテキスト Sun Certified Programmer for the Java2 Exam310-035
A5判 384頁
定価:本体3600円+税
2002年10月29日発売
ISBN4-7973-2036-2
著者:原 一郎ほか
出版:ソフトバンクパブリッシング(株)
http://books.softbank.co.jp/bm_detail.asp?sku=4797320362
------------------------------------------------------
Sun Certified Programmer for the Java2試験対策本として、初の書き下ろし
本が登場!Java文法のポイントをページ単位で簡潔に解説し、各章末の演習問題
と巻末の模擬試験で実戦力も強化できるように配慮されています。付録CD-ROMに
は、サンプルコードのほか、電子模試システムTen-TrexやJDK1.4.1、e-Learing
システムJava Tutorも収録されています!!本書で、Java文法を系統的にマスター
した後、電子模試システムでパソコン上の模擬試験も体験しておけば、試験対策
はばっちりです。Java言語の習得だけでは飽き足らない読者の方、是非、Sun認
定の資格も取得されてはいかがでしょうか?!
プレゼントの応募この下のアンケート部分だけを返信して下さい。
------------------------------------------------------------------------
プレゼント 『Robocodeプログラミング・ガイド』(p16) IBMより提供 先着20名
IBM developerWorks さんより,Jマガ読者の方に,『Robocodeプログラミング・
ガイド』(p16)のプレゼントがあります。
Cマガジンに付録として付いたものと同じものです。
関連サイト:http://www.ibm.com/developerWorks/jp/
関連Jマガ:http://www.yscon.co.jp/j/java/jmaga/jmaga030.txt
========================================================================
▼ 基本テクニック編開始
自分の好きなプログラムを作成したいと思ったとき,基本的なテクニックが分
かっていないとなにもできません。Jマガでは,これから,しばらく,基本テク
ニックを解説していきたいと思います。
基本テクニックを解説すると同時に,オブジェクト指向の概念を説明してい
きます。
------------------------------------------------------------------------
▼ 乱数とは
コンピュータでサイコロを作るときなど,どの目が出るか,そのつど,ばらば
らの数字を使いたいときがあります。ばらばらの数字をコンピュータで作るとき
に利用するのが,ランダム関数(メソッド)です。
この号では,そのランダム関数の使い方を説明します。
------------------------------------------------------------------------
▼ JavaScript の乱数
まず,JavaScript での乱数の利用方法です。サイコロの目を出す,JavaScript
のサンプルです。
例:j31-01.htm サイコロ
http://www.yscon.co.jp/j/java/jmaga/j31/j31-01.htm
1:
2:
3: サイコロ
4:
5:
6:
7: 「更新」を押すと,新しい目がでます。
8:
9:
15:
16:
17:
11 行目の Math.random() で,バラバラの数字を作っています。できる数字は,
0 以上,1より小さい数字です。12 行目で,その数字を 6 倍して,0 以上,6
より小さい数字にして,Math.floor() で,小数部分を切り捨てして,さらに,そ
れに +1 して,1 から 6 までの整数にしています。
ランダムな数字のうち,小さい数字と大きい数字を例にすると以下のようです。
Math.random() 0.00106… 0.999997…
6倍して 0.00636… 5.999982…
小数部分切捨て 0 5
+1して, 1 6
------------------------------------------------------------------------
▼ クラスメソッド
j31-01 のサンプルで登場した,Math.random() は,Math クラスのメソッドで
す。インスタンス(分身)を作成せずに,Math クラスが直接実行するので,
インスタンス名.メソッド名() という形ではなく,クラス名.メソッド名()という
形で書きます。
クラスメソッドとインスタンスメソッドを比較してみましょう。
---------------------------------------------------------------
クラスメソッド インスタンスメソッド
===============================================================
定義 クラス内 クラス内
---------------------------------------------------------------
使うとき クラス名.メソッド名(); インスタンスを生成しておいて
インスタンス名.メソッド名;
例
xd = Math.random() Date xday = new Date();
xhour = xday.getHour();
---------------------------------------------------------------
実行の クラス自ら実行 インスタンスが実行
イメージ
---------------------------------------------------------------
影響する クラスとそこから生成 そのインスタンスのみ
範囲 されたインスタンス全体
---------------------------------------------------------------
キーワード static 実行時○○
---------------------------------------------------------------
補足
Mathクラスは,インスタンスを生成しませんので,インスタンスメソッドは
ありません。
------------------------------------------------------------------------
▼ Javaアプリケーションの乱数
さいころのサンプルを Java アプリケーションで書き直しをしましょう。
Java アプリケーションは,DOSプロンプト画面で実行します。
Javaは,変数が実数か整数か明確に区別されるため,実数の値を強制的に整数
にすることで,切り捨てを実現できます。そのため,Math.floor()を使用せずに,
xi = (int)実数
のようにすることで,強制的に整数にすることが出来ます。この機能をキャスト
機能といいます。キャストは,配置するという意味です。実数を無理矢理に整数
のところに投げ入れて配置されるイメージです。
例 j31-02 xRandom.java サイコロ
ソース http://www.yscon.co.jp/j/java/jmaga/j31/xRandom.java
ダウンロード http://www.yscon.co.jp/j/java/jmaga/j31/xRandom.class
1: import java.lang.Math;
2:
3: public class xRandom{
4:
5: static double xd;
6: static int xi;
7:
8: public static void main(String [] xargs){
9: xd = Math.random();
10: xi = (int)(xd * 6) + 1;
11: System.out.println("さいころ:"+ xi);
12: }
13: }
10 行目のところで,キャスト機能を使って整数化しています。
5, 6 行目のところで,変数の宣言をしています。ここで,static とついて
います。static というのは,クラスメソッドで使用する,また,このクラスから
作ったインスタンス全体で共有するという変数になります。
------------------------------------------------------------------------
▼ クラスメソッドとクラス変数
上のプログラムをもう一度見ましょう。static がついているところを注目し
て下さい。
例 j31-02 xRandom.java サイコロ
ソース http://www.yscon.co.jp/j/java/jmaga/j31/xRandom.java
ダウンロード
http://www.yscon.co.jp/j/java/jmaga/j31/xRandom.class
1: import java.lang.Math;
2:
3: public class xRandom{
4:
5: static double xd;
6: static int xi;
7:
8: public static void main(String [] xargs){
9: xd = Math.random();
10: xi = (int)(xd * 6) + 1;
11: System.out.println("さいころ:"+ xi);
12: }
13: }
static がついているのは,
5: static double xd;
6: static int xi;
と
8: public static void main(String [] xargs){
でした。
8 行目は,main メソッドを定義しています。ここに,static を付けると,
クラスメソッドとして定義するという意味になります。
クラスメソッドは,インスタンスで,利用できません。クラス自ら実行する
ため,このところで,インスタンスのもつ変数は利用できません。クラスメソッ
ドが使用する変数は,クラスのみが使用できる特別な変数になります。
これを,クラス変数といいます。クラス変数の宣言は,static をつけます。
5: static double xd;
6: static int xi;
ですね。
この号では扱いませんが,インスタンスメソッドは,インスタンス変数,クラ
ス変数ともに利用できます。
------------------------------------------------------------------------
▼ Java アプレットの乱数
Java アプレットでの乱数のサンプルをみてみましょう。
例 j31-03 xRandom_let01.java サイコロ
ソース http://www.yscon.co.jp/j/java/jmaga/j31/xRandom_let01.java
動作 http://www.yscon.co.jp/j/java/jmaga/j31/xRandom_let01.htm
1: import java.applet.Applet;
2: import java.awt.Graphics;
3: import java.lang.Math;
4:
5: public class xRandom_let01 extends Applet {
6:
7: double xd;
8: int xi;
9:
10: public void paint(Graphics xg){
11: xd = Math.random();
12: xi = (int)(xd * 6) + 1;
13:
14: xg.drawString("さいころ:"+ xi, 100, 120);
15: }
16: }
Java アプリケーションのサンプルとの違いは,アプレットということで,
1: import java.applet.Applet;
2: import java.awt.Graphics;
と Applet クラスと Graphics クラスを利用することと
7: double xd;
8: int xi;
で,クラス変数ではなくて,インスタンス変数として,変数を定義しています。
今まで,Jマガでは扱ってきませんでしたが,アプレットの paint メソッドは,
インスタンスメソッドです。そのため,インスタンス変数が使えます。下のプロ
グラムのようにクラス変数も利用可能です。クラス変数は,このクラスから,生
成されたインスタンスで共有しますので,副作用が大きいため,共有が必要な特
別な理由がないとき以外は,使用しません。
例 j31-03 xRandom_let02.java サイコロ よくない例
ソース http://www.yscon.co.jp/j/java/jmaga/j31/xRandom_let02.java
動作 http://www.yscon.co.jp/j/java/jmaga/j31/xRandom_let02.htm
1: import java.applet.Applet;
2: import java.awt.Graphics;
3: import java.lang.Math;
4:
5: public class xRandom_let01 extends Applet {
6:
7: static double xd;
8: static int xi;
9:
10: public void paint(Graphics xg){
11: xd = Math.random();
12: xi = (int)(xd * 6) + 1;
13:
14: xg.drawString("さいころ:"+ xi, 100, 120);
15: }
16: }
------------------------------------------------------------------------
▼ 次号の予定
次号は,スレッドを扱います。
------------------------------------------------------------------------
▼ 著作権について
このメールマガジンで公開しているプログラムソースは,著作権を当方スタッ
フが所有しますが,商用を含めて,再利用,改変,発表を制限しません。
本文に関しては,斎藤末広が著作権を所有します。再利用に関しては,承諾を
必要とします。
------------------------------------------------------------------------
▼アンケート(以下を返信してください)
この号のJマガに対するご意見をお待ちしてます。ぜひ,ご返信下さい。
内容のレベルは
1 難しいのでもっと簡単にしてほしい
2 ちょうどよい
3 もっと難しくてもよい
その他ご要望
*応募する場合は,「応募しない」を消して下さい。
プレゼント(応募する,応募しない)抽選で1名
『Sun Certified Programmer for the Java2 Exam310-035』原 一郎 他箸
http://www.amazon.co.jp/exec/obidos/ASIN/4797320362/suehirospage-22
プレゼント(応募する,応募しない) 先着20名
『Robocodeプログラミング・ガイド』(p16)
http://www.ibm.com/developerWorks/jp/robojcup/
YSC DM番号 dm-0
DM番号が無い人は以下を記入
郵便番号
住所(必ずアパート名等もお願いします)
お名前
さらに,YSC DM(http://www.yscon.co.jp/dm/)に登録される場合
生年月日(DM登録を希望する方のみ)