pi-10. 時間,スリープ,疑似乱数,タイマー

>100 Views

January 26, 22

スライド概要

Java の基本
URL: https://www.kkaneko.jp/cc/pi/index.html

profile-image

金子邦彦(かねこくにひこ) 福山大学・工学部・教授 ホームページ: https://www.kkaneko.jp/index.html 金子邦彦 YouTube チャンネル: https://youtube.com/user/kunihikokaneko

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

pi-10. 時間,スリープ,疑似乱数,タイ マー (Java の基本) URL: https://www.kkaneko.jp/cc/pi/index.html 金子邦彦 1

2.

アウトライン 番号 項目 説明時間の 目安 10-1 オンライン開発環境 3分 10-2 Java の標準ライブラリ 8分 10-3 時間、スリープ 9分 10-4 スリープに関する演習 8分 10-5 疑似乱数 4分 10-6 マルチスレッド 10分 各自、資料を読み返したり、課題に取り組んだりも行う この授業では、Java を用いて基礎を学び、マスターする 2

3.

全体まとめ • Java で標準ライブラリには、次のような機能があ る • スレッド • 時間,タイマー • 疑似乱数 • Java で標準ライブラリの機能を使うとき,標準ラ イブラリのクラスを継承して使う場合がある 3

4.

j10-1. オンライン開 発環境 Java を基礎から学びた い人へ(入門者向け) 金子邦彦 4

5.

プログラム作成ができるウエブサービス (オンラインの開発環境)の例 Python Tutor http://pythontutor.com/ Online GDB https://www.onlinegdb.com/ 開発環境では、コマンド(javac, java)を入れなくても、クリック等の 操作でコンパイル(ビルド)や起動ができる 5

6.

オンライン開発環境 Online GDB • プログラミングを行える Web サービス https://www.onlinegdb.com • ウェブブラウザを使う • たくさんの言語を扱うことができる Python3, Java, C/C++, C#, JavaScript, R, アセンブリ言語,SQL など オンラインなので、「秘密にしたいプログラム」を 扱うには十分な注意が必要 6

7.

GDBonline で Java を動かす手順 ① ウェブブラウザを起動する ② 次の URL を開く https://www.onlinegdb.com 7

8.

③ 「Language」のところで,「Java」を選ぶ 8

9.

実行ボタン エディタ画面 プログラムを 書き換えること ができる 9

10.

① 次のソースコードを入れる Student クラス 10

11.

② 実行.実行結果を確認 「Run」をクリック. 11

12.

j10-2. Java の標準ラ イブラリ Java を基礎から学びた い人へ(入門者向け) 金子邦彦 12

13.

ライブラリ • 複数のプログラムが共有して使 えるような機能を持ったプログ ラムのこと • プログラミング言語処理系に元 から備わっているライブラリの ことを,標準ライブラリという 13

14.

Java の標準ライブラリの機能 • コレクション (ArrayList, HashMap など) • ラッパクラス(Integer, Double など) • 文字列 (String) • その他 • • • • • • 時間,スリープ 疑似乱数 スレッド 標準入出力 数値処理 ファイル読み書き など 14

15.

j10-3. 時間,スリー プ Java を基礎から学びた い人へ(入門者向け) 金子邦彦 15

16.

時間,スリープ • いまの日時(日付、時刻)を知る • 日時に関する計算 • 処理を一定時間止める(タイミング,一定時間ご との監視など) 16

17.

Java での時間,スリープ • いまの日時(日付、時刻)を知る java.time.LocalDateTime.now() • 日時に関する計算 plusHours(1) 1時間後 plusMinutes(1) 1分後 plusSeconds(1) 1秒後 • 処理を一定時間止める(タイミング,一定時間ごとの 監視など) • Thread.sleep(2000) 2秒止まる. 「2000」とあるのはミリ秒単位 17

18.

日時に関する計算 ① 次のソースコードを入れる ② 実行結果の確認 世界標準時が表示される.9時間ずれている. 18

19.

日時に関する計算 ① 次のソースコードを入れる ② 実行結果の確認 19

20.

処理を一定時間止める ① 次のソースコードを入れる ② 実行結果の確認 2秒止まる 「2000」 とあるのは ミリ秒単位 20

21.

j10-4. スリープに関 する演習 Java を基礎から学びた い人へ(入門者向け) 金子邦彦 21

22.

Ball クラスのオブジェクト y 属性 x の値を 2 増やし, 属性 y の値を 3 増やすメソッド move x x 22

23.

① 次のソースコードを入れる 次のページに続く 23

24.

② 実行結果の確認 動く前は 0 と0.動いた後は 2 と 3. 24

25.

• 10回動かす for 文,メソッド move • 動かす前に1秒止まる Thread.sleep(1000) 25

26.

① public class Main の中を次のように書き換える 26

27.

② 実行結果の確認 1つ表示のたびに, 1秒止まる 27

28.

j10-5. 疑似乱数 Java を基礎から学びた い人へ(入門者向け) 金子邦彦 28

29.

疑似乱数とは • 疑似乱数は,コンピュータによって生成されたラ ンダムな数や数の列 • 「乱数」ということもある 疑似乱数 アルゴリズムにより生成される数である.再現が 可能.その意味で「疑似」 29

30.

① 次のソースコードを入れる nextInt(10) は、0から9までの数(10通り)の中から 1つをランダムに得る 実行のたびに 結果は変わる 30

31.

j10-6. マルチスレッ ド Java を基礎から学びた い人へ(入門者向け) 金子邦彦 31

32.

スレッド • スレッドとは,処理の流れのこと. • 複数の処理を並行させたいときには,マルチス レッド(複数のスレッド)で処理を行う 32

33.

通常のプログラム実行 (シングルスレッド) マルチスレッド ここではスレッド数は2. (スレッド数は3以上にもできる)33

34.

シングルスレッドの例 ① 次のソースコードを入れる Hello を 100回表示.表示のたびに 1秒止まる. 34

35.

② 実行結果の確認 1つ表示のたびに, 1秒止まる 35

36.

マルチスレッドの例 起動 メイン 別スレッド 36

37.

マルチスレッドの例 ③ 前のソースコードは消して,次のソースコードを入れる Java では標準ライブラリのクラス Thread のサブクラスを定義 run メソッドの中に, 別スレッドでの処 理を書く オブジェクトを生成 新しいスレッドを起動 37

38.

④ 実行結果の確認 2秒ごとに Morning を表示 38

39.

マルチスレッドの例 起動 メイン 別スレッド 別スレッド 39

40.

マルチスレッドの例 ⑤ 前のソースコードに書き加える 40

41.

⑥ 実行結果の確認 2秒ごとに Morning を表示 3秒ごとに Hello を表示 41

42.
[beta]
10-1
class Student {
String id;
String name;
String address;
public Student(String id, String name, String address) {
this.id = id;
this.name = name;
this.address = address;
}
public void printout() {
System.out.printf("%s %s %s", this.id, this.name, this.address);
}
};
public class Main
{
public static void main(String[] args) {
Student k = new Student("t001", "kaneko", "matsunaga");
k.printout();
}
}

42

43.

10-3 public class Main { public static void main(String[] args) { java.time.LocalDateTime d; d = java.time.LocalDateTime.now(); System.out.println(d); } } ----------------------public class Main { public static void main(String[] args) { java.time.LocalDateTime d; d = java.time.LocalDateTime.now(); System.out.println(d); System.out.println(d.plusHours(1)); System.out.println(d.plusMinutes(1)); System.out.println(d.plusSeconds(1)); } } ----------------------public class Main { public static void main(String[] args) { java.time.LocalDateTime d; d = java.time.LocalDateTime.now(); System.out.println(d); try { Thread.sleep(2000); } d = java.time.LocalDateTime.now(); System.out.println(d); } } 43

44.
[beta]
10-4
class Ball {
double x;
double y;
public Ball(double x, double y) {
this.x = x;
this.y = y;
}
public void move() {
this.x = this.x + 2;
this.y = this.y + 3;
}
public void printout() {
System.out.printf("%f %f\n", this.x, this.y);
}
};

public class Main
{
public static void main(String[] args) {
Ball b = new Ball(0, 0);
k.printout();
}
}
-----------------------------class Ball {
double x;
double y;
public Ball(double x, double y) {
this.x = x;
this.y = y;
}
public void move() {
this.x = this.x + 2;
this.y = this.y + 3;
}
public void printout() {
System.out.printf("%f %f\n", this.x, this.y);
}
};
public class Main
{
public static void main(String[] args) {
Ball b = new Ball(0, 0);
b.printout();
for(int i = 1; i <= 10; i++) {
try {
Thread.sleep(1000);
} catch(InterruptedException e) {}
b.move();
b.printout();
}
}
}

44

45.

10-5 public class Main { public static void main(String[] args) { int a; java.util.Random r = new java.util.Random(); a = r.nextInt(10); System.out.println(a); } } 45

46.
[beta]
10-6
class Morning extends Thread {
public void run() {
for(int i = 0; i < 50; i++) {
try {
Thread.sleep(2000);

} catch(InterruptedException e) {}
System.out.println("Morning");
}
}

}

public class Main
{

public static void main(String[] args) {
Morning m = new Morning();
m.start();
}

}

46

47.
[beta]
10-6
class Morning extends Thread {
public void run() {
for(int i = 0; i < 50; i++) {
try {
Thread.sleep(2000);
} catch(InterruptedException e) {}
System.out.println("Morning");
}
}
}

class Hello extends Thread {
public void run() {
for(int i = 0; i < 50; i++) {
try {
Thread.sleep(3000);
} catch(InterruptedException e) {}
System.out.println("Hello");
}
}
}
public class Main
{
public static void main(String[] args) {
Morning m = new Morning();
m.start();
Hello h = new Hello();
h.start();
}
}

47