< F2D A839382CC906A2E6A7464>

Similar documents
< F2D A838B838D96402E6A7464>

< F2D82518E9F8AD CC834F CC8CFC82AB82C68D4C>

< F2D82518E9F8AD CC95BD8D7388DA93AE2E6A7464>

< F2D89BA8EE882C E6A7464>

< F2D B838A835882CC8CF68EAE2E6A7464>

< F2D834F838C A815B A CC>

< F2D E E6A7464>

< F2D B825082CC96E291E82E6A7464>

< F2D82518CC282CC D2E6A7464>

< F2D82B682E182F182AF82F12E6A7464>

< F2D F B834E2E6A7464>

< F2D825282CC947B909482CC A815B83682E6A>

< F2D92DE82E8914B82CC977088D32E6A7464>

< F2D8EA CE909482CC92EA82852E6A7464>

< F2D BCA82CC978E89BA82CC8EC08CB12E6A7464>

Java言語 第1回

text_13.dvi

Java言語 第1回

問1

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

text_12.dvi

KeyListener init addkeylistener addactionlistener addkeylistener addkeylistener( this ); this.addkeylistener( this ); KeyListener public void keytyped

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 +=

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

untitled

ガイダンス

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

ガイダンス

ガイダンス

Java言語 第1回

Microsoft PowerPoint - OOP.pptx

Prog1_12th

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

Microsoft PowerPoint prog1_doc2x.pptx

2

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B


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

アプレットの作成

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

Microsoft PowerPoint - prog11.ppt

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

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


Microsoft PowerPoint ppt

Prog1_12th

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

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

Java 2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q 2.

Java言語 第1回

Prog2_11th

Microsoft PowerPoint - prog11.ppt

r3.dvi

<4D F736F F F696E74202D AC C8899E D834F E >

PowerPoint プレゼンテーション

Object MenuComponent MenuBar MenuItem Menu CheckboxMenuItem

GUIプログラムⅣ

Microsoft PowerPoint prog1_doc2.pptx

r6.dvi

アプレットⅤ

PowerPoint Presentation

GUIプログラムⅤ

2008 e-learning T050050

2 p.2 2 Java > javac Hello0.java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.j

AWT setcolor, drawstring Java AWT Abstract Window Toolkit Graphics AWT import import java.awt.* ; // AWT Graphics import java.awt.graphics; // AWT Gra

public static void main(... ) { Copyright by Tatsuo Minohara 2004 rev. Oct. 6 Macintosh Java Primer Chapter 3-2

r2.dvi

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

r4.dvi

Java 3 p.2 3 Java : boolean Graphics draw3drect fill3drect C int C OK while (1) int boolean switch case C Calendar java.util.calendar A

Microsoft PowerPoint - prog10.ppt

I. (i) Foo public (A). javac Foo.java java Foo.class (C). javac Foo java Foo (ii)? (B). javac Foo.java java Foo (D). javac Foo java Foo.class (A). Jav

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

JAVA入門

I 4 p.2 4 GUI java.awt.event.* import /* 1 */ import mouseclicked MouseListener implement /* 2 */ init addmouselistener(this) this /* 3 */ this mousec

PowerPoint プレゼンテーション

AWT setcolor, drawstring Java AWT Abstract Window Toolkit Graphics AWT import import java.awt.* ; // AWT Graphics import java.awt.graphics; // AWT Gra

Microsoft PowerPoint - prog10.ppt

2 p.2 2 Java Hello0.class JVM Hello0 java > java Hello0.class Hello World! javac Java JVM java JVM : Java > javac 2> Q Foo.java Java : Q B

PowerPoint Presentation

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

: : : TSTank 2

Taro-twokansu3.jtd

Microsoft PowerPoint - prog12.ppt

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

Microsoft PowerPoint - prog13.ppt

Microsoft PowerPoint - prog13.ppt

ガイダンス

Chapter JDK KeyListener keypressed(keyevent e ) keyreleased(keyevent e ) keytyped(keyevent e ) MouseListener mouseclicked(mouseeven

Microsoft PowerPoint - OOP.pptx

5 p Point int Java p Point Point p; p = new Point(); Point instance, p Point int 2 Point Point p = new Point(); p.x = 1; p.y = 2;

ガイダンス

Color.cyan, Color.yellow, Color.pink, Color.orange, Color.white, Color.black, Color.gray, Color.darkGray, Color.lightGray ; Button barray [ ] = new Bu

2

Microsoft PowerPoint ppt

10K

Microsoft Word - Java3.DOC

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

入門Java解答.doc

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

Transcription:

ビュホンの針 1. はじめに [Java アプレット ] [Java アプリケーション ] ビュホン ( Buffon 1707-1788) は 針を投げて円周率 πを求めることを考えました 平面上に 幅 2aの間隔で 平行線を無数に引いておきます この平面上に長さ2bの針を落とすと この針が平行線と交わる確立 pは p=(2b) (aπ) 1 となります ただし b<aとします 平面上にたくさんの針を落としたとき 平行線に交わった針の本数の相対度数をrとすると r p 2 となります 1 2より π (2b) (ar) 3 となります 3より 相対度数 rを実験で求めれば 円周率 πの近似値が分かるというわけです シミュレーションソフト ビュホンの針 を使って 円周率 πの近似値を求めてみてください 2.Java アプレット (1) Java プログラムリスト ビュホンの針 ( 針をまいて円周率 πを求める!!) Copyright ( C) K.Niwa 2001.11. 6 (Javaアプレット) import java.applet.applet; import java.awt.*; import java.awt.event.*; import java.lang.math; public class Buffon extends Applet{ Button[] mybtn; Panel mypanel; ボタン型として宣言する パネル型として宣言する int flag=0; double x; 変数宣言 -1-

int N; 針の本数 int count; ループカウンター public void init() init メソット ( void は値を返さないメソッドの意 )******************************** public void init(){ setbackground( Color.lightGray ); mybtn=new Button[ 4 ]; ボタンの実体化 mybtn[ 0 ] =new Button (" 初期化 "); mybtn[ 1 ] =new Button (" 自動 500 本 "); mybtn[ 2 ] =new Button (" 自動 5000 本 "); mybtn[ 3 ] =new Button (" 自動 50000 本 "); 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; ); 自動 500 本ボタンを押したときのイベント処理 mybtn[ 1 ].addactionlistener( new ActionListener(){ flag=1; N=500; ); 自動 5000 本ボタンを押したときのイベント処理 mybtn[ 2 ].addactionlistener( new ActionListener(){ flag=2; N=5000; ); 自動 50000 本ボタンを押したときのイベント処理 mybtn[ 3 ].addactionlistener( new ActionListener(){ flag=3; N=50000; ); public void init() public void paint( Graphics g ) paint メソット ********************************************** public void paint( Graphics g ){ paint メソット 初期化ボタンを押したとき if ( flag==0){ int i,sum=0,px1,py1,px2,py2,yy; 変数宣言と変数初期化 g.clearrect( 0,0,300,350 ); 全体のクリア -2-

g.drawstring ("Copyright ( C) K.Niwa 2001.11",80,20 ); for ( yy=50;yy < =250;yy=yy+50){ g.setcolor( Color.red ); g.drawline( 0,yy,300,yy ); 平行線の描写 if ( flag==0) 自動ボタンを押したとき else if ( flag==1 flag==2 flag==3){ double x1,y1,x2,y2,pai,t; 変数宣言 int i,sum=0,px1,py1,px2,py2,yy; 変数宣言と変数初期化 g.clearrect( 0,0,300,350 ); 全体のクリア for ( yy=50;yy < =250;yy=yy+50){ g.setcolor( Color.red ); g.drawline( 0,yy,300,yy ); 平行線の描写 針のばらまき開始 - g.setcolor( Color.blue ); for ( i=1;i < =N;i++ ){ for ( t=0;t< 5000;t++ ){ 時間稼ぎ x1=25+250*math.random (); y1=25+250*math.random (); x2=x1+25*math.cos( 2*3.14159263*Math.random ()); y2=y1+25*math.sin( 2*3.14159263*Math.random ()); px1= ( int)( x1 ); py1= ( int)( y1 ); px2= ( int)( x2 ); py2= ( int)( y2 ); if ( py1> py2 ){ if ( py1> 50 && py2< 50){ else if ( py1> 100 && py2< 100){ else if ( py1> 150 && py2< 150){ else if ( py1> 200 && py2< 200){ else if ( py1> 250 && py2< 250){ else if ( py1==50 py2==50){ else if ( py1==100 py2==100){ -3-

else if ( py1==150 py2==150){ else if ( py1==200 py2==200){ else if ( py1==250 py2==250){ if ( py1> py2) else if ( py1< py2){ if ( py1< 50 && py2> 50) { else if ( py1< 100 && py2> 100){ else if ( py1< 150 && py2> 150){ else if ( py1< 200 && py2> 200){ else if ( py1< 250 && py2> 250){ else if ( py1==50 py2==50){ else if ( py1==100 py2==100){ else if ( py1==150 py2==150){ else if ( py1==200 py2==200){ else if ( py1==250 py2==250){ else if ( py1< py2) else if ( py1==py2){ if ( py1==50 py1==100 py1==150 py1==200 py1==250){ else if ( py1==py2) -4-

g.clearrect( 0,280,300,320 ); 部分クリア g.drawstring (" ばらまいた針の本数 = "+i+" / "+N,70-10,320); g.setcolor( Color.blue ); for ( i=1;i < =N;i++ ) g.clearrect( 0,280,300,320 ); 部分クリア if ( flag==3){ sum=sum-1000; 調整!! else if ( flag==2){ sum=sum-100; 調整!! else if ( flag==1){ sum=sum-10; 調整!! pai= ( double) N/sum; g.drawstring (" 平行線に交わった針の数 = "+sum,70,320); Font f=new Font(( g.getfont ()).getname(),font.bold,20); g.setfont() f ; g.drawstring (π= " "+pai,35+10,300); else if ( flag==1 flag==2 flag==3) public void paint( Graphics g )paint メソット public class Buffon extends Applet (2) HTML リスト < HTML> < HEAD> <!------------------------------------------------------------------------------------------------------------------------------------- 針をまいて円周率 πを求める ( ビュホンの針によるπの近似 ) Copyright( C) K.Niwa 2001.11. 6 --------------------------------------------------------------------------------------------------------------------------------------> < /HEAD> < BODY > < CENTER< > B > 針をまいて円周率 πを求める!! < /B> < BR> ( ビュホンの針によるπの近似 ) < BR>< BR> < APPLET CODE="Buffon.class" WIDTH="300" HEIGHT="350" >< /APPLET> < BR>< BR> 針を 50,000 本まいて πの近似値を求めます... < /CENTER> < /BODY> < /HTML> -5-

3.Java アプリケーション プログラムリスト ビュホンの針 ( 針をまいて円周率 πを求める!!) Copyright ( C) K.Niwa 2002.08.24 (Javaアプリケーション) import java.awt.*; import java.awt.event.*; import java.lang.math; public class FBuffon extends Frame{ Button[] mybtn; Panel mypanel; ボタン型として宣言する パネル型として宣言する int flag=0; 変数宣言 double x; int N; int count; 針の本数 ループカウンター フレームとイベントの定義 ***************************************************************** public FBuffon(){ setsize( 305,360 ); フレームの大きさ addwindowlistener( new WindowAdapter (){ フレームの定義 public void windowclosing( WindowEvent e){ System.exit( 0 ); ); mybtn=new Button[ 4 ]; ボタンの実体化 mybtn[ 0 ] =new Button (" 初期化 "); mybtn[ 1 ] =new Button (" 自動 500 本 "); mybtn[ 2 ] =new Button (" 自動 5000 本 "); mybtn[ 3 ] =new Button (" 自動 50000 本 "); 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; ); 自動 500 本ボタンを押したときのイベント処理 mybtn[ 1 ].addactionlistener( new ActionListener(){ flag=1; N=500; ); -6-

自動 5000 本ボタンを押したときのイベント処理 mybtn[ 2 ].addactionlistener( new ActionListener(){ flag=2; N=5000; ); 自動 50000 本ボタンを押したときのイベント処理 mybtn[ 3 ].addactionlistener( new ActionListener(){ flag=3; N=50000; ); public FBuffon() public void paint( Graphics g )**************************************************************** public void paint( Graphics g ){ paint メソット 初期化ボタンを押したとき if ( flag==0){ int i,sum=0,px1,py1,px2,py2,yy; 変数宣言と変数初期化 g.clearrect( 0,0,300,350 ); 全体のクリア g.drawstring ("Copyright ( C) K.Niwa 2001.11",80,20 ); for ( yy=50;yy < =250;yy=yy+50){ g.setcolor( Color.red ); g.drawline( 0,yy,300,yy ); 平行線の描写 if ( flag==0) 自動ボタンを押したとき else if ( flag==1 flag==2 flag==3){ double x1,y1,x2,y2,pai,t; 変数宣言 int i,sum=0,px1,py1,px2,py2,yy; 変数宣言と変数初期化 g.clearrect( 0,0,300,350 ); 全体のクリア for ( yy=50;yy < =250;yy=yy+50){ g.setcolor( Color.red ); g.drawline( 0,yy,300,yy ); 平行線の描写 針のばらまき開始 g.setcolor( Color.blue ); for ( i=1;i < =N;i++ ){ for ( t=0;t< 5000;t++ ){ 時間稼ぎ x1=25+250*math.random (); y1=25+250*math.random (); x2=x1+25*math.cos( 2*3.14159263*Math.random ()); y2=y1+25*math.sin( 2*3.14159263*Math.random ()); px1= ( int)( x1 ); py1= ( int)( y1 ); px2= ( int)( x2 ); py2= ( int)( y2 ); -7-

if ( py1> py2 ){ if ( py1> 50 && py2< 50){ else if ( py1> 100 && py2< 100){ else if ( py1> 150 && py2< 150){ else if ( py1> 200 && py2< 200){ else if ( py1> 250 && py2< 250){ else if ( py1==50 py2==50){ else if ( py1==100 py2==100){ else if ( py1==150 py2==150){ else if ( py1==200 py2==200){ else if ( py1==250 py2==250){ if ( py1> py2) else if ( py1< py2){ if ( py1< 50 && py2> 50){ else if ( py1< 100 && py2> 100){ else if ( py1< 150 && py2> 150){ else if ( py1< 200 && py2> 200){ else if ( py1< 250 && py2> 250){ -8-

else if ( py1==50 py2==50){ else if ( py1==100 py2==100){ else if ( py1==150 py2==150){ else if ( py1==200 py2==200){ else if ( py1==250 py2==250){ else if ( py1< py2) else if ( py1==py2){ if ( py1==50 py1==100 py1==150 py1==200 py1==250){ else if ( py1==py2) g.clearrect( 0,280,300,320 ); 部分クリア g.drawstring (" ばらまいた針の本数 = "+i+" / "+N,70-10,320); g.setcolor( Color.blue ); for ( i=1;i < =N;i++ ) g.clearrect( 0,280,300,320 ); 部分クリア if ( flag==3){ sum=sum-1000; 調整!! else if ( flag==2){ sum=sum-100; 調整!! else if ( flag==1){ sum=sum-10; 調整!! pai= ( double) N/sum; g.drawstring (" 平行線に交わった針の数 = "+sum,70,320); Font f=new Font(( g.getfont ()).getname(),font.bold,20); g.setfont() f ; g.drawstring (π= " "+pai,35+10,300); else if ( flag==1 flag==2 flag==3) public void paint( Graphics g )paint メソット /****** public static void main メソット ********************************************************** public static void main( String[] args){ Frame w=new FBuffon (); w.show (); public static void main( String[] args) public class FBuffon extends Frame -9-