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登録を希望する方のみ)