< F2D92DE82E8914B82CC977088D32E6A7464>

Similar documents
< F2D82B682E182F182AF82F12E6A7464>

< F2D82518CC282CC D2E6A7464>

< F2D825282CC947B909482CC A815B83682E6A>

< F2D B838A835882CC8CF68EAE2E6A7464>

< F2D834F838C A815B A CC>

< F2D F B834E2E6A7464>

< F2D89BA8EE882C E6A7464>

< F2D8EA CE909482CC92EA82852E6A7464>

< F2D A838B838D96402E6A7464>

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

< F2D E E6A7464>

< F2D A839382CC906A2E6A7464>

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>

< F2D B825082CC96E291E82E6A7464>


Microsoft PowerPoint - OOP.pptx

Java言語 第1回

アプレットの作成

ガイダンス

ガイダンス

try catch Exception Java try catch try { } catch ( Exception e ) { } e 16-1 try catch 0 try { int x = 0; int y = 10 / x; } catch ( Exception e ) { Sys

Microsoft PowerPoint prog1_doc2x.pptx

表示の更新もそういた作業のひとつに当たる スレッドの使用アニメーション アニメーションやシミュレーションなどは画面の更新が一定のタイミングで行われていく この連続した画面の更新をスレッドを利用して行う しかし paint() メソッドを直接呼び出して表示を更新することはできない その理由

ガイダンス

Java言語 第1回

ガイダンス

2

ガイダンス

Safari AppletViewer Web HTML Netscape Web Web 15-1 Applet Web Applet init Web paint Web start Web HTML stop destroy update init Web paint start Web up

Local variable x y i paint public class Sample extends Applet { public void paint( Graphics gc ) { int x, y;... int i=10 ; while ( i < 100 ) {... i +=

Java言語 第1回

r3.dvi

GUIプログラムⅣ

Thread

GUIプログラムⅤ

IE6 2 BMI chapter1 Java 6 chapter2 Java 7 chapter3 for if 8 chapter4 : BMI 9 chapter5 Java GUI 10 chapter6 11 chapter7 BMI 12 chap

untitled

text_12.dvi

Prog1_12th

Chapter 20. [ ] ; [ ] = new [ ] ; Color colors [ ] = new Color[ 20 ]; // 20 Button operations [ ] = new Button[ 10 ]; // 10 colors[ 3 ] = new Color( 1

Assignment_.java /////////////////////////////////////////////////////////////////////// // 課題 星の画像がマウスカーソルを追従するコードを作成しなさい 次 ///////////////////

r2.dvi

問題1 以下に示すプログラムは、次の処理をするプログラムである

Microsoft PowerPoint prog1_doc2.pptx

Microsoft PowerPoint ppt

Applet java.lang.object java.awt.component java.awt.container java.awt.panel java.applet.applet

text_13.dvi

Prog2_11th

Java演習(4) -- 変数と型 --

Microsoft PowerPoint - prog11.ppt

2

Prog1_12th

問1

6 p.1 6 Java GUI GUI paintcomponent GUI mouseclicked, keypressed, actionperformed mouseclicked paintcomponent thread, 1 GUI 6.0.2, mutlithread C

アプレットⅤ

2 static final int DO NOTHING ON CLOSE static final int HIDE ON CLOSE static final int DISPOSE ON CLOSE static final int EXIT ON CLOSE void setvisible

教材ドットコムオリジナル教材 0から始めるiアフ リ リファレンス i アプリ簡易リファレンス ver i アプリ Java 独自のメソッド (1)iアプリの命令を使えるようにする import com.nttdocomo.ui.*; (2) 乱数を使う import java.u

2008 e-learning T050050

vol.30.}...`.X...b.h

226

PowerPoint Presentation

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

問題1 以下に示すプログラムは、次の処理をするプログラムである

Taro-korattsu.jtd

I. (i) Java? (A). 2Apples (B). Vitamin-C (C). Peach21 (D). Pine_Apple (ii) Java? (A). Java (B). Java (C). Java (D). JavaScript Java JavaScript Java (i

Microsoft PowerPoint - prog11.ppt

Microsoft PowerPoint - prog13.ppt

Java演習(2) -- 簡単なプログラム --

I. java.awt.rectangle java.lang.math random Java TM API java.awt Rectangle Rectangle (x,y)... public int x Rectangle X public int y Rectangle Y public

Microsoft PowerPoint - prog13.ppt

r4.dvi

ただし 無作為にスレッドを複数実行すると 結果不正やデッドロックが起きる可能性がある 複数のスレッド ( マルチスレッド ) を安全に実行する ( スレッドセーフにする ) ためには 同期処理を用いるこ とが必要になる 同期処理は 予約語 synchronized で行うことができる ここでは sy

Microsoft PowerPoint - prog10.ppt

I HTML HashMap (i) (ii) :.java import java.net.*; import java.io.*; import java.util.hashmap; public class SimpleStopWatch { public static voi

次の演習課題(1),(2)のプログラムを完成させよ

PowerPoint プレゼンテーション

public class Kadai _02 { public static void main(string[] args) { MyFrame frame = new MyFrame("Kadai _02"); (2) フレームのクラス名は MyFrame とし 以下

Java演習(9) -- クラスとメソッド --

( ) p.1 x y y = ( x ) 1 γ γ = filtergamma.java import java.applet.*; public class filtergamma extends Applet{ Image img; Image new_img; publi

10/31 Java AWTの基本構造(Frameクラスの継承) 演習課題資料

awt の主要なクラスを下記に示す クラス Component Container Button Label Panel Frame 説明画面にユーザインターフェイス要素として表示し, ユーザとのやり取りを行うコンポーネントを表すすべてのコンポーネントのスーパークラスになる ほかのコンポーネントを含

Microsoft PowerPoint - prog12.ppt

Microsoft PowerPoint - prog10.ppt

PowerPoint Presentation

Java言語 第1回

シミュレーションの簡単な例 GUI 無しのシミュレーションを作る GUI を作る パラメタを設定するデモンストレーションをする 2 オブジェクト指向プログラミング特論

19 3!! (+) (>) (++) (+=) for while 3.1!! (20, 20) (1)(Blocks1.java) import javax.swing.japplet; import java.awt.graphics;

II Java :30 12:00 I. I IV II. III. IV. ( a d) V. : this==null, T == N A ActionListener C class D actionperformed G getsource I implements K

PowerPoint プレゼンテーション

(Microsoft PowerPoint - \223\306\217KJAVA\221\346\202R\224\ ppt)

Programming-C-9.key

Java プログラミング Ⅰ 3 回目変数 変数 変 数 一時的に値を記憶させておく機能型 ( データ型 ) と識別子をもつ 2 型 ( データ型 ) 変数の種類型に応じて記憶できる値の種類や範囲が決まる 型 値の種類 値の範囲 boolean 真偽値 true / false char 2バイト文


Microsoft PowerPoint - OOP.pptx

IT プロジェクト

ÿþ˜u#u·0¹0Æ0à0

PowerPoint プレゼンテーション

Microsoft PowerPoint ppt

<4D F736F F F696E74202D AC C8899E D834F E >

Transcription:

釣り銭の用意の実験 [Java アプレット ] [Java アプリケーション ] 1. はじめに クラス会などの幹事を務めることはありませんか 幹事になったつもりで考えてみてください 仮に クラス会への参加者人数は 35 人で 会費は 3500 円であるとします また 参加者は 1000 円札 4 枚でお釣りを必要とする人と 1000 円札 3 枚と 500 円玉 1 個でお釣りの要らない人の 2 通りだけであるとします 会費は 会場に到着した者から順に集めて お釣りの要る人にはその時その場でお釣りの 500 円玉を渡します ただし 経験上 お釣りの要る人と要らない人の割合は半々であるとします さあ 幹事のあなたはお釣りの 500 円玉を何個用意しておけばよいのでしょうか シミュレーションの考え方 お釣りの必要な人と必要でない人の割合は半々なので 1 枚のコインを投げて 表が出たらお釣りの必要でない人が来たと考え 裏が出たらお釣りの必要な人が来たと考えます つまり 表が出たら 3000 円と 500 円が支払われるので 幹事の手元に 500 円玉が 1 個増えることになります また 裏が出たら 4000 円が支払われるので お釣りが必要となり 幹事の手元から 500 円玉が 1 個減ることになります シミュレーションソフト 釣り銭の用意の実験 を使って お釣りの 500 円玉を何個用意しておけばよいのかを観察してみてください 2.Java アプレット (1) Java プログラムリスト / 釣り銭の用意の実験 Copyright ( C) K.Niwa 2001.12.20 (Javaアプレット) クラスの読み込み import java.applet.applet; import java.awt.*; import java.awt.event.*; -71-

import java.lang.math; public class Turisen2 extends Applet implements Runnable { スレッドを使えるようにする Thread myth; スレッド型で宣言する Button[] mybtn; ボタン型で宣言する Panel mypanel; パネル型で宣言する int imgno; 整数型で宣言する Image[] img; MediaTracker mymt; イメージ型で宣言する メディアトラッカー型で宣言する int flag=0; 整数型で宣言し 0を代入する double r; 乱数 int ct1; long t; 実験回数 時間かせぎ int d=0; int ct; 釣り銭の個数 コインの裏表の点滅ループカウンター int min=0; 現時点での釣り銭の最高必要個数 int N=1000; 速度 /****** public void init () メソット **************************************************************/ public void init(){ setbackground( Color.lightGray ); 背景色の設定 myth=null; スレッドの初期化 int count; ループカウンター imgno=0; img=new Image[ 2 ]; イメージの実体化 img[ 0 ] =getimage( getdocumentbase (),"coin1.jpg"); コイン表画像の読み込み img[ 1 ] =getimage( getdocumentbase (),"coin2.jpg"); コイン裏画像の読み込み mymt=new MediaTracker( this ); メディアトラッカーの実体化 for ( count=0;count < =1;count++ ){ mymt.addimage( img[ count ],0); メデイアトラッカーにイメージの貼り付け try{ mymt.waitforid( 0 ); catch( InterruptedException e){ mybtn=new Button[ 4 ]; mybtn[ 0 ] =new Button (" 初期化 "); ボタンの実体化 mybtn[ 1 ] =new Button (" 高 速 "); mybtn[ 2 ] =new Button (" 低 速 "); mybtn[ 3 ] =new Button (" 停 止 "); mypanel=new Panel (); パネルの実態化 mypanel.setlayout( new GridLayout( 1,4 )); パネルをグリッドレイアウトにする for ( count=0;count < =3;count++ ){ mypanel.add( mybtn[ count ]); パネルにボタンを貼り付ける setlayout( new BorderLayout ()); 全体をボーダーレイアウトにする add ("South",myPanel); パネルを南に貼り付ける mybtn[ 0 ].addactionlistener( new ActionListener (){ 初期化ボタン flag=0; 識別子 ); r=0.1; repaint () ; paint () メソッドを呼び出す -72-

mybtn[ 1 ].addactionlistener( new ActionListener (){ 高速ボタン flag=1; 識別子 ); N=100; repaint () ; paint () メソッドを呼び出す mybtn[ 2 ].addactionlistener( new ActionListener (){ 低速ボタン flag=2; 識別子 N=1000; paint() メソッドを呼び出す ); mybtn[ 3 ].addactionlistener( new ActionListener (){ 停止ボタン flag=3; 識別子 paint() メソッドを呼び出す ); public void init() /****** public void start () メソット *************************************************************/ public void start(){ if ( myth==null){ myth=new Thread( this ); スレッドを実体化する myth.start (); スレッドを開始する /****** public void run () メソット ***** < イベントが発生しなくても処理する > ***********************/ public void run (){ ( ){ while true try { 例外処理 myth.sleep( N ); 休む catch ( InterruptedException e) { if ( flag==1 flag==2){ /****** public void paint( Graphics g ) メソット ****************************************************/ public void paint( Graphics g){ if ( mymt.checkid( 0)){ 初期状態と初期化ボタンを押したときのイベント処理 if ( flag==0){ g.clearrect( 0,0,300,360 ); 全体のクリア ct1=0; 実験回数 d=0; 釣り銭の個数の初期化 min=0; 現時点での釣り銭の最高必要個数の初期化 実験回数 = "+ct1,100,20); 実験回数の表示 g.drawimage( img[ 0 ],135,30,this); コインの表示 コイン ",135,75); 現時点での釣り銭 (500 円玉 ) の最高必要個数 ="+ (-1*min),20,150-10); 作者表示 Copyright( C) K.Niwa 2001.12",80,180+5+40 ); -73-

if ( flag==0) 高速ボタンまたは低速ボタンを押したときのイベント処理 else if ( flag==1 flag==2){ ct1++; g.drawimage( img[ 0 ],135,30,this); コインの表示 コイン ",135,75); 実験回数 = "+ct1,100,20); 実験回数の表示 作者表示 Copyright( C) K.Niwa 2001.12",80,180+5+40 ); 判断前のコインの裏表の点滅 for ( ct=1;ct < =3;ct++ ){ g.drawimage( img[ 0 ],135,30,this); for ( t=1;t < =3000000;t++ ){ g.drawimage( img[ 1 ],135,30,this); for ( t=1;t < =3000000;t++ ){ コインの表裏の判断 r=math.random (); if (< r 0.5){ g.drawimage( img[ 0 ],135,30,this); 表が出た d=d+1; else{ g.drawimage( img[ 1 ],135,30,this); 裏が出た d=d-1; g.clearrect( 0,100,300,60 ); 部分消去 現時点での釣り銭 (500 円玉 ) の最高必要個数の判断 if ( d < =min){ min=d; 実験回数の表示 実験回数 = "+ct1,100,20); else if ( flag==1 flag==2) 停止ボタンを押したときのイベント処理 else if ( flag==3){ g.drawimage( img[ 0 ],135,30,this); コインの表示 コイン ",135,75); 実験回数の表示 実験回数 = "+ct1,100,20); -74-

else if ( flag==3) if ( mymt.checkid( 0)) public void paint( Graphics g) public class Turisen2 extends Applet implements Runnable 作者表示 Copyright( C) K.Niwa 2001.12",80,180+5+40 ); コインの表示 if (< r 0.5){ g.drawimage( img[ 0 ],135,30,this); 表が出た else{ g.drawimage( img[ 1 ],135,30,this); 裏が出た g.clearrect( 0,100,300,60 ); 部分消去 現時点での釣り銭 (500 円玉 ) の最高必要個数の判断 if ( d < =min){ min=d; 実験回数の表示 実験回数 = "+ct1,100,20); (2) HTML リスト < HTML> < HEAD> <!------------------------------------------------------------------------------------------------------------------------------------- 釣り銭の用意の実験 Copyright ( C) K.Niwa 2001.12.20 --------------------------------------------------------------------------------------------------------------------------------------> < /HEAD> < BODY > < CENTER< > B > 釣り銭の用意の実験 < /B> < BR>< BR> < APPLET CODE="Turisen2.class" WIDTH="300" HEIGHT="250" >< /APPLET> < BR>< BR> < /CENTER> < /BODY> < /HTML> 3.Java アプリケーション プログラムリスト F 釣り銭の用意の実験 Copyright ( C) K.Niwa 2002.08.18 (Javaアプリケーション) -75-

クラスの読み込み import java.awt.*; import java.awt.event.*; import java.lang.math; public class FTurisen2 extends Frame implements Runnable { スレッドを使えるようにする Thread myth; スレッド型で宣言する Button[] mybtn; Panel mypanel; ボタン型で宣言する パネル型で宣言する int imgno; Image[] img; MediaTracker mymt; イメージ型で宣言する メディアトラッカー型で宣言する int flag=0; double r; 乱数 int ct1; 実験回数 long t; 時間かせぎ int d=0; 釣り銭の個数 int ct; コインの裏表の点滅ループカウンター int min=0; 現時点での釣り銭の最高必要個数 int N=1000; 速度 /***** フレームとイベントの定義 **********************************************************/ public FTurisen2 (){ setsize ( 300+10,360 ) ; フレームの大きさ addwindowlistener( new WindowAdapter (){ 閉じるボタンイベント処理 public void windowclosing( WindowEvent e){ System.exit( 0 ); ); myth=null; if ( myth==null ){ スレッドの初期化 myth=new Thread( this ); スレッドの実体化 myth.start (); スレッドの開始 setbackground( Color.magenta ); 背景色の設定 int count; ループカウンター imgno=0; img=new Image[ 2 ]; イメージの実体化 img[ 0 ] =Toolkit.getDefaultToolkit ().getimage("coin1.jpg"); コイン表画像の読み込み img[ 1 ] =Toolkit.getDefaultToolkit ().getimage("coin2.jpg"); コイン裏画像の読み込み mymt=new MediaTracker( this ); メディアトラッカーの実体化 for ( count=0;count < =1;count++ ){ mymt.addimage( img[ count ],0); メテ イアトラッカーにイメーシ の貼り付け try { 例外処理 mymt.waitforid( 0 ); catch( InterruptedException e){ mybtn=new Button[ 4 ]; ボタンの実体化 mybtn[ 0 ] =new Button (" 初期化 "); mybtn[ 1 ] =new Button (" 高 速 "); mybtn[ 2 ] =new Button (" 低 mybtn[ 3 ] =new Button (" 停 速 "); 止 "); -76-

mypanel=new Panel (); パネルの作成 mypanel.setlayout( new GridLayout( 1,4 )); パネルをグリッドレイアウトにする for ( count=0;count < =3;count++ ){ パネルにボタンを貼り付ける mypanel.add( mybtn[ count ]); setlayout( new BorderLayout ()); 全体をボーダーレイアウトにする add ("South",myPanel); mybtn[ 0 ].addactionlistener( new ActionListener (){ 初期化ボタン flag=0; r=0.1; ); mybtn[ 1 ].addactionlistener( new ActionListener (){ 高速ボタン flag=1; N=100; ); mybtn[ 2 ].addactionlistener( new ActionListener (){ 低速ボタン flag=2; N=1000; ); mybtn[ 3 ].addactionlistener( new ActionListener (){ 停止ボタン flag=3; ); public void init() /****** public void run () メソット ****** < イベントなしでも処理が行われる > ************************/ public void run (){ ( ){ while true try { 例外処理 myth.sleep( N ); catch ( InterruptedException e) { if ( flag==1 flag==2){ /****** public void paint( Graphics g ) メソット *****************************************************/ public void paint( Graphics g){ if ( mymt.checkid( 0)){ 初期状態と初期化ボタンを押したときのイベント処理 if ( flag==0){ g.clearrect( 0,0,300,360 ); 全体のクリア ct1=0; 実験回数 d=0; 釣り銭の個数の初期化 -77-

min=0; 現時点での釣り銭の最高必要個数の初期化 実験回数 = "+ct1,100,20); 実験回数の表示 g.drawimage( img[ 0 ],135,30,this); コインの表示 コイン ",135,75); 現時点での釣り銭 (500 円玉 ) の最高必要個数 ="+ (-1*min),20,150-10); Copyright( C) K.Niwa 2002.08",80,320 ); 作者表示 if ( flag==0) 高速ボタンまたは低速ボタンを押したときのイベント処理 else if ( flag==1 flag==2){ ct1++; g.drawimage( img[ 0 ],135,30,this); コインの表示 コイン ",135,75); 実験回数 = "+ct1,100,20); 実験回数の表示 作者表示 Copyright( C) K.Niwa 2002.08",80,320 ); 判断前のコインの裏表の点滅 for ( ct=1;ct < =3;ct++ ){ g.drawimage( img[ 0 ],135,30,this); for ( t=1;t < =3000000;t++ ){ g.drawimage( img[ 1 ],135,30,this); for ( t=1;t < =3000000;t++ ){ コインの表裏の判断 r=math.random (); if (< r 0.5){ g.drawimage( img[ 0 ],135,30,this); 表が出た d=d+1; else{ g.drawimage( img[ 1 ],135,30,this); 裏が出た d=d-1; g.clearrect( 0,100,300,60 ); 部分消去 現時点での釣り銭 (500 円玉 ) の最高必要個数の判断 if ( d < =min){ min=d; else if ( flag==1 flag==2) 実験回数 = "+ct1,100,20); 実験回数の表示 停止ボタンを押したときのイベント処理 else if ( flag==3){ g.drawimage( img[ 0 ],135,30,this); コインの表示 コイン ",135,75); -78-

else if ( flag==3) if ( mymt.checkid( 0)) public void paint( Graphics g) 実験回数 = "+ct1,100,20); 実験回数の表示 作者表示 Copyright( C) K.Niwa 2002.08",80,320 ); コインの表示 if (< r 0.5){ g.drawimage( img[ 0 ],135,30,this); 表が出た else{ g.drawimage( img[ 1 ],135,30,this); 裏が出た g.clearrect( 0,100,300,60 ); 部分消去 現時点での釣り銭 (500 円玉 ) の最高必要個数の判断 if ( d < =min){ min=d; 実験回数 = "+ct1,100,20); 実験回数の表示 /****** public static void main メソット************************************************************/ public static void main( String[] args){ Frame w=new FTurisen2 (); w.show (); public static void main( String[] args) public class FTurisen2 extends Frame implements Runnable -79-