Submit Search
Java初心者勉強会(2015/08/07)資料
6 likes
•
2,092 views
Toshio Ehara
Java初心者勉強会(2015/08/07) ご参加ありがとうございました。
Software
Read more
1 of 35
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
More Related Content
PDF
Java電卓勉強会資料
Toshio Ehara
PDF
関数型プログラミング in javascript
Ryuma Tsukano
KEY
Clojure programming-chapter-2
Masao Kato
PPTX
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
PPTX
機械学習
ssusere8ae711
PDF
Replace Output Iterator and Extend Range JP
Akira Takahashi
PDF
これからのJavaScriptー関数型プログラミングとECMAScript6
TanUkkii
PDF
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
Java電卓勉強会資料
Toshio Ehara
関数型プログラミング in javascript
Ryuma Tsukano
Clojure programming-chapter-2
Masao Kato
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
Fujio Kojima
機械学習
ssusere8ae711
Replace Output Iterator and Extend Range JP
Akira Takahashi
これからのJavaScriptー関数型プログラミングとECMAScript6
TanUkkii
Scalaで萌える関数型プログラミング[1.1.RC1]
Ra Zon
What's hot
(19)
PPTX
メタプログラミング C#
Fujio Kojima
PDF
What is template
Akira Takahashi
PDF
error handling using expected
Akira Takahashi
PDF
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Fujio Kojima
PDF
JavaScript入門
Ryo Maruyama
PPTX
for関数を使った繰り返し処理によるヒストグラムの一括出力
imuyaoti
PPTX
Map
kikairoya
PDF
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
PPTX
ぱっと見でわかるC++11
えぴ 福田
PDF
JavaScript 講習会 #1
Susisu
PDF
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
PDF
Emcjp item21
MITSUNARI Shigeo
PDF
命令プログラミングから関数プログラミングへ
Naoki Kitora
PPTX
競技プログラミングのためのC++入門
natrium11321
PDF
研究生のためのC++ no.2
Tomohiro Namba
PDF
Aedlabo program 20150125
としゆき 高橋
PDF
研究生のためのC++ no.4
Tomohiro Namba
PDF
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
TanUkkii
PDF
Processing
Akifumi Nambu
メタプログラミング C#
Fujio Kojima
What is template
Akira Takahashi
error handling using expected
Akira Takahashi
C# ドキドキ ライブ コーディング!! ~ 小島の分 ~ | BuriKaigi 2020
Fujio Kojima
JavaScript入門
Ryo Maruyama
for関数を使った繰り返し処理によるヒストグラムの一括出力
imuyaoti
Map
kikairoya
競技プログラミングにおけるコードの書き方とその利便性
Hibiki Yamashiro
ぱっと見でわかるC++11
えぴ 福田
JavaScript 講習会 #1
Susisu
C++ ポインタ ブートキャンプ
Kohsuke Yuasa
Emcjp item21
MITSUNARI Shigeo
命令プログラミングから関数プログラミングへ
Naoki Kitora
競技プログラミングのためのC++入門
natrium11321
研究生のためのC++ no.2
Tomohiro Namba
Aedlabo program 20150125
としゆき 高橋
研究生のためのC++ no.4
Tomohiro Namba
プログラミング言語のパラダイムシフトーScalaから見る関数型と並列性時代の幕開けー
TanUkkii
Processing
Akifumi Nambu
Ad
Similar to Java初心者勉強会(2015/08/07)資料
(20)
PDF
Programming24 第3回Androidアプリ勉強会
codeal
PDF
型超ざっくり入門@ハンズラボ社内勉強会
Yusuke Usui
PDF
[コデアル][Programming24]Androidアプリ勉強会01
codeal
PDF
Javaセキュアコーディングセミナー東京第1回演習の解説
JPCERT Coordination Center
PPTX
2018/2/20 Kotlin勉強会
虎の穴 開発室
PDF
Java SE 8 lambdaで変わる プログラミングスタイル
なおき きしだ
PPTX
第1回Java講義資料
XMLProJ2014
PDF
Javaセキュアコーディングセミナー東京第4回講義
JPCERT Coordination Center
PDF
たのしい関数型
Shinichi Kozake
PDF
第2回関数型言語勉強会 大阪
Naoki Kitora
PDF
【LiT Leaders】Android0309
Ryo Yamamoto
PPTX
Javaプログラミング入門【第3回】
Yukiko Kato
PDF
Material
_TUNE_
PDF
Javaセキュアコーディングセミナー東京第1回 演習
JPCERT Coordination Center
PDF
Ruby4章後半(演算子)
Hiroshi Isimaru
PDF
Programming24 第2回androidアプリ勉強会
codeal
PDF
JavaScript 基礎文法のまとめ
Yossy Taka
PPTX
Javaプログラミング入門【第2回】
Yukiko Kato
PPTX
Project lambda
Appresso Engineering Team
PPTX
Javaプログラミング入門【第4回】
Yukiko Kato
Programming24 第3回Androidアプリ勉強会
codeal
型超ざっくり入門@ハンズラボ社内勉強会
Yusuke Usui
[コデアル][Programming24]Androidアプリ勉強会01
codeal
Javaセキュアコーディングセミナー東京第1回演習の解説
JPCERT Coordination Center
2018/2/20 Kotlin勉強会
虎の穴 開発室
Java SE 8 lambdaで変わる プログラミングスタイル
なおき きしだ
第1回Java講義資料
XMLProJ2014
Javaセキュアコーディングセミナー東京第4回講義
JPCERT Coordination Center
たのしい関数型
Shinichi Kozake
第2回関数型言語勉強会 大阪
Naoki Kitora
【LiT Leaders】Android0309
Ryo Yamamoto
Javaプログラミング入門【第3回】
Yukiko Kato
Material
_TUNE_
Javaセキュアコーディングセミナー東京第1回 演習
JPCERT Coordination Center
Ruby4章後半(演算子)
Hiroshi Isimaru
Programming24 第2回androidアプリ勉強会
codeal
JavaScript 基礎文法のまとめ
Yossy Taka
Javaプログラミング入門【第2回】
Yukiko Kato
Project lambda
Appresso Engineering Team
Javaプログラミング入門【第4回】
Yukiko Kato
Ad
More from Toshio Ehara
(20)
PDF
iPhoneアプリを Javaで書くよ?
Toshio Ehara
PDF
BABELで、ES2015(ES6)を学ぼう!
Toshio Ehara
PDF
AngularJSで業務システムUI部品化
Toshio Ehara
PDF
traceur-compilerで ECMAScript6を体験
Toshio Ehara
PDF
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
PDF
AngularJS入門の巻2
Toshio Ehara
PDF
JenkinsをJava開発でこんな感じで使っています
Toshio Ehara
PDF
AngularJS入門の巻
Toshio Ehara
PDF
AngularJS+TypeScriptを試してみた。
Toshio Ehara
PDF
AngularJSのDirectiveで俺俺タグつくっちゃお
Toshio Ehara
PDF
HTML5のCanvas入門 - Img画像を編集してみよう -
Toshio Ehara
PDF
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
Toshio Ehara
PDF
福岡のIT勉強会情報の集め方(LT資料)
Toshio Ehara
PDF
BACKBONE.JSによるWebアプリケーション開発について
Toshio Ehara
PDF
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
Toshio Ehara
PDF
JavaScriptのテストコード 一緒に勉強しませんか??
Toshio Ehara
PDF
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
Toshio Ehara
PDF
LT Leap MotionとJavaScriptで遊ぼう!
Toshio Ehara
PDF
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
Toshio Ehara
PDF
BACKBONE.JSでMVC始めませんか?
Toshio Ehara
iPhoneアプリを Javaで書くよ?
Toshio Ehara
BABELで、ES2015(ES6)を学ぼう!
Toshio Ehara
AngularJSで業務システムUI部品化
Toshio Ehara
traceur-compilerで ECMAScript6を体験
Toshio Ehara
traceur-compilerで未来のJavaScriptを体験
Toshio Ehara
AngularJS入門の巻2
Toshio Ehara
JenkinsをJava開発でこんな感じで使っています
Toshio Ehara
AngularJS入門の巻
Toshio Ehara
AngularJS+TypeScriptを試してみた。
Toshio Ehara
AngularJSのDirectiveで俺俺タグつくっちゃお
Toshio Ehara
HTML5のCanvas入門 - Img画像を編集してみよう -
Toshio Ehara
BACKBONEJS+SCSS+JavaEE(JAX-RS) 今風のWebアプリをNetBeansで入門!
Toshio Ehara
福岡のIT勉強会情報の集め方(LT資料)
Toshio Ehara
BACKBONE.JSによるWebアプリケーション開発について
Toshio Ehara
BACKBONE.JSにJasmineでテストコード書いてみた (LT資料)
Toshio Ehara
JavaScriptのテストコード 一緒に勉強しませんか??
Toshio Ehara
【未発表】Backbone.jsとJavaEE7でWebアプリを作ろう!(第1回) 〜GETで一覧編〜
Toshio Ehara
LT Leap MotionとJavaScriptで遊ぼう!
Toshio Ehara
JavaScriptもBACKBONE.JSならスッキリ ~MVCぽいのを初体験!~
Toshio Ehara
BACKBONE.JSでMVC始めませんか?
Toshio Ehara
Java初心者勉強会(2015/08/07)資料
1.
Java初心者勉強会 電卓を作ってJavaを学ぼう 2015/08/07(金)
2.
目的 ● Javaを基礎から習得する ● 実際に手を動かして理解を深める ● アプリ作成を通じプログラムを学ぶ
3.
今日の内容 ● 逆ポーランド記法の説明 ● 足し算を作る ● 掛け算を追加 ● 休憩 ● 計算処理を追加しやすい形にする
4.
逆ポーランド記法の説明 ● 3 + 4
を 3 4 + と書く ● ( 1+5) * ( 2+3) を 1 5 + 2 3 + * と書く ● 詳しくは... https://ja.wikipedia.org/wiki/ %E9%80%86%E3%83%9D%E3%83%BC %E3%83%A9%E3%83%B3%E3%83%89% E8%A8%98%E6%B3%95
5.
1 2 +
の場合 1 2 31 1を PUSH 2を PUSH 1 2 POP 計算結果を PUSH 2 + 1 => 3
6.
3 2 1
+ * の場合 3 2 33 1を PUSH 2を PUSH 3 2 POP 計算結果を PUSH 1 + 2 => 3 2 1 3を PUSH 3 1 3 3 3 POP 3 * 3 => 9 9 計算結果を PUSH
7.
まずは 足し算のみで作る
8.
プログラム開始を記述 public class Main
{ public static void main(String... args) { System.out.println("Hello Calculator!"); } } Main.java mainメソッド から始まります Main.java を新規作成してください。 (補足: public 外から見える static 一つしかない)
9.
実行結果 Hello Calculator! コマンドプロンプトの場合は Javac
Main.java でコンパイルします java Main で実行します
10.
計算クラスを作る(中は適当 import java.util.Stack; public class
Calculator { public Calculator() { } public int execute(String input) { Stack<Integer> stack = new Stack<>(); stack.push(Integer.valueOf("1")); stack.push(Integer.valueOf("2")); return stack.pop(); } } Calculator.java 1 2 1、2と数値の入った箱を積む(PUSHする)プログラムを書きます 上から取り出します(POPする)
11.
計算クラスを呼び出す public class Main
{ public static void main(String... args) { System.out.println("Hello Calculator!"); Calculator cal = new Calculator(); String test = ""; System.out.format(" %s = %d ", test, cal.execute(test)); } } Main.java クラス(Calculator)をnewするとインスタンス(cal)が作れます。 クラス classnew!
12.
実行結果 Hello Calculator! = 2
13.
計算クラスを呼び出す public class Main
{ public static void main(String... args) { System.out.println("Hello Calculator!"); Calculator cal = new Calculator(); String test = "1 2 +"; System.out.format(" %s = %d ", test, cal.execute(test)); } } Main.java [1] [2] [+] を Calculatorクラスのインスタンスに計算させて 3 を返します
14.
計算クラスを作る import java.util.Stack; public class
Calculator { public Calculator() { } public int execute(String input) { Stack<Integer> stack = new Stack<>(); for (String s : input.split("s")) { if ("+".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 + num2)); } else { stack.push(Integer.valueOf(s)); } } return stack.pop(); } } Calculator.java 1 2 1 2 +
15.
実行結果 Hello Calculator! 1 2
+ = 3
16.
掛け算の処理を追加する
17.
掛け算処理を追加 public class Main
{ public static void main(String... args) { System.out.println("Hello Calculator!"); Calculator cal = new Calculator(); String test = "3 2 1 + *"; System.out.format(" %s = %d ", test, cal.execute(test)); } } Main.java [3] [1] [2] [+] [*] を Calculatorクラスのインスタンスに計算させて 9 を返します
18.
掛け算処理を追加 for (String s
: input.split("s")) { if ("+".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 + num2)); } else if ("*".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 * num2)); } else { stack.push(Integer.valueOf(s)); } } Calculator.java Calculatorクラスに [*] が来た場合の処理を追加します
19.
実行結果 Hello Calculator! 3 2
1 + * = 9
20.
- 休憩 -
21.
処理の追加を分業可能にする
22.
インターフェースを作る for (String s
: input.split("s")) { if ("+".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 + num2)); } else if ("*".equals(s)) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(Integer.valueOf(num1 * num2)); } else { stack.push(Integer.valueOf(s)); } } Integer execute(Integer num1, Integer num2); 処理が増える度に 条件分岐を 増やすと大変 処理は共通して 二つの数字を引数に 一つの数字を返す Calculator.java
23.
起動クラスの修正 import java.util.HashMap; import java.util.Map; public
class Main { public static void main(String... args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); Calculator cal = new Calculator(operators); String test = "3 2 1 + *"; System.out.format(" %s = %d ", test, cal.execute(test)); } } 処理が増えると ここが増える Main.java
24.
インターフェースを作る public interface Operator
{ Integer execute(Integer num1, Integer num2); } 処理は共通して 二つの数字を引数に 一つの数字を返す Operator.java
25.
足し算と掛け算クラス public class Add
implements Operator { @Override public Integer execute(Integer num1, Integer num2) { return Integer.valueOf(num1 + num2); } } public class Multi implements Operator { @Override public Integer execute(Integer num1, Integer num2) { return Integer.valueOf(num1 * num2); } } Add.java Multi.java
26.
計算クラスを修正import java.util.*; public class
Calculator { private final Map<String, Operator> operators; public Calculator(Map<String, Operator> operators) { this.operators = operators; } public int execute(String input) { Stack<Integer> stack = new Stack<>(); for (String s : input.split("s")) { Operator operator = operators.get(s); if (operator != null) { Integer num1 = stack.pop(); Integer num2 = stack.pop(); stack.push(operator.execute(num1, num2)); } else { stack.push(Integer.valueOf(s)); } } return stack.pop(); } } 処理が増えても 条件分岐を 増やさなくてもよく なりました Calculator.java
27.
実行結果 Hello Calculator! 3 2
1 + * = 9
28.
匿名クラスで追加 package com.company; import java.util.HashMap; import
java.util.Map; public class Main { public static void main(String[] args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); operators.put("-", new Operator() { @Override public Integer execute(Integer num1, Integer num2) { return num2 - num1; } }); Calculator cal = new Calculator(operators); String test = "15 3 2 1 + * -"; System.out.format(" %s = %d ", test, cal.execute(test)); } } 処理を匿名クラスで 追加する Main.java
29.
実行結果 Hello Calculator! 15 3
2 1 + * - = 6
30.
Java8のラムダで書くと package com.company; import java.util.HashMap; import
java.util.Map; public class Main { public static void main(String[] args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); operators.put("-", (Integer num1, Integer num2) -> { return num2 - num1; }); Calculator cal = new Calculator(operators); String test = "15 3 2 1 + * -"; System.out.format(" %s = %d ", test, cal.execute(test)); } } 短くシンプルに Main.java
31.
もう少し短く package com.company; import java.util.HashMap; import
java.util.Map; public class Main { public static void main(String[] args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); operators.put("-", (num1, num2) -> num2 - num1); Calculator cal = new Calculator(operators); String test = "15 3 2 1 + * -"; System.out.format(" %s = %d ", test, cal.execute(test)); } } もっと短くシンプルに Main.java
32.
実行結果 Hello Calculator! 15 3
2 1 + * - = 6
33.
割り算を加えて完成 package com.company; import java.util.HashMap; import
java.util.Map; public class Main { public static void main(String[] args) { System.out.println("Hello Calculator!"); Map<String, Operator> operators = new HashMap<>(); operators.put("+", new Add()); operators.put("*", new Multi()); operators.put("-", (num1, num2) -> num2 - num1); operators.put("/", (num1, num2) -> num2 / num1); Calculator cal = new Calculator(operators); String test = "12 15 3 2 1 + * - /"; System.out.format(" %s = %d ", test, cal.execute(test)); } } Main.java
34.
実行結果 Hello Calculator! 12 15
3 2 1 + * - / = 2
35.
- 本日はここまでです。お疲れ様でした -
Download