Programming se7
Download
1 / 279

Programming (SE7) - PowerPoint PPT Presentation


  • 145 Views
  • Uploaded on

Programming (SE7). 環境工程系 丁文輝 [email protected] 環境工程系電腦課程 ( 規画案 ). 計算機概論 (BCC) 計算機程式 (Programming) 計算機圖學 (CG) 資料庫管理系統 (DBMS) 數値分析 (NA) 地理資訊系統 (GIS) 環工電腦應用. 逢甲大學水利工程學系工學士 中央大學 ( 教育部委訓 ) 大專資訊師資班 成功大學環境工程學系工學碩士 成功大學環境工程學系博士候選人. 自己紹介 - 澄原日先 ( すみはら ひさき ). 台中市坤財營造廠工地主任

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' Programming (SE7)' - beate


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
Programming se7

Programming (SE7)

環境工程系 丁文輝

[email protected]


環境工程系電腦課程(規画案)

  • 計算機概論 (BCC)

  • 計算機程式(Programming)

  • 計算機圖學 (CG)

  • 資料庫管理系統 (DBMS)

  • 數値分析 (NA)

  • 地理資訊系統 (GIS)

  • 環工電腦應用

Java programming


逢甲大學水利工程學系工學士

中央大學(教育部委訓)大專資訊師資班

成功大學環境工程學系工學碩士

成功大學環境工程學系博士候選人

自己紹介-澄原日先(すみはら ひさき)

  • 台中市坤財營造廠工地主任

  • 台中市政府清潔管理所垃圾處理場場長

  • 崑山工商專校環境工程科講師兼科主任

  • 崑山科技大學環境工程學系助理教授

Java programming


計算機概論

計算機程式

FORTRAN, BASIC, PASCAL, JAVA

組合語言

8086/8088, 80286

資料結構

系統分析

計算機圖學

資料庫管理系統

專業應用軟體

PEⅡ, dBASEⅢ+, Lotus 123, Office, ACAD, SAS/SPSS, Sigma Plot, GIS

數値分析

電腦應用

高等結構, 海洋放流

電腦相關課程研習 (すみはら)

Java programming


教科書‧参考書

  • JAVA2程式設計從零開始 (適用JDK7)

    何嘉益(等),上奇 (2012)

  • Java初學指引 – 使用SE7

    陳錦輝,博碩 (2011)

  • 挑戰Java程式語言

    蔡文輝(等), 全華 (2006)

  • JAVA SE6程式設計基礎與實習手冊

    李廷圭,松崗 (2009)

Java programming


Javaテキスト

  • 東海大学(日本), 坂田圭司

    • http://kgclass.jp/text/java

  • 勤益科大(JAVA Note), 朱孝國

    • http://irw.ncut.edu.tw/peterju/java.html

  • 崑山科大(網路大學), 丁文輝

    • http://elearning.ksu.edu.tw

Java programming


注意事項

  • コンピュータ室は飲食禁止。

  • 紙節約のため、デジタルファイルを請求して下さい。

  • パワーポイントを利用しない授業の方が多かったので、教科書で、よく復習して下さい。

  • 再試験は行いません。4年生は特に心して望むように!

Java programming


成績評価

  • 欠席が3分の1を超えた場合、単位の取得は難しい。

  • 評価はおおよそ出席(40%)、宿題(20%)、最終試験(40%)などを通じて総合的に判定する。

  • ちなみに先学期(101_2)「javaプログラミング」において、受講者100人中、不可は26人,約26%。

(四環一A 20%, 四環一B 31%)

Java programming


オフィスアワー

  • 月曜日(10:00-11:30)

  • 火曜日(10:00-11:30)

  • 金曜日(10:00-11:30)

  • (特に授業に関する)質問,相談にこたえます

    • 設計3棟4F(D3402)

    • メールはいつでもかまいません

      • ting@mail.ksu.edu.tw

Java programming


Java se7 2013

Introduction

Datatype

Input/Output

Assignment

Selection

Iteration

Array

Method

計算機程式 (Java SE7, 2013春)

Java programming


Console

Assignment

Expression

Divisor

If / If-else

Switch-case

For loop

While loop

Random

Bubble sort

Method

Recursive

プログラミング基礎演習

Java programming


プログラミング言語の構成

プログラム

モジュール

手続きと関数

処理の最小単位。「a=b+c;」など。

演算子と非演算子からなる。a*b、a>bなど。

名前、データ、演算子、予約語(for,ifなど)。

文字

英数字、特殊記号等。

Java programming


プログラミング言語発展の歴史

時間

言語以前

低水準言語

オブジェクト指向言語

機械語

Delphi

アセンブリ言語

高水準言語

C++Builder

FORTRAN

PL/1

ビジュアル開発環境

COBOL

ALGOL

ALGOL68

PASCAL

Ada

Object PASCAL

BASIC

C言語

C++

Lisp

Java

超高水準言語

Prolog

Smalltalk

Java programming

参考:河村一樹、斐品正照


FORTRAN

BASIC

Pascal

Java programming

Java (2011)




プログラミング言語

Java programming



代表的なオブジェクト指向言語(1)

  • SmallTalk

    • 最初のオブジェクト指向言語

  • C++

    • C言語の拡張言語

    • 多重継承

Java programming


代表的なオブジェクト指向言語(2)

  • Java

    • C言語をベースにインターネットに適した言語として開発

    • Unix, Windowsなど様々なプラットフォーム上でプログラムが動作(Write Once, Run Anywhere)

    • 単一継承

Java programming


代表的なオブジェクト指向言語(3)

  • Ruby

    • オブジェクト指向スクリプト言語

  • Visual Basic, Visual C++

    • Microsoftのアプリケーション開発言語

  • C#

    • MicrosoftのJava likeなアプリケーション開発言語

Java programming


物件導向程式設計

  • 物件(object)

    • 屬性(property)

    • 方法(method)

  • 類別(class)

    • 物件變數(variable)

    • 物件實體(instance)

Java programming


物件導向程式設計的特點(1)

  • 封裝(encapsulation)

    • 將資料 (屬性) 與操作此資料的函數 (方法) 包在一起的特性

  • 繼承(inheritance)

    • 承接所有父類別 (Parent Class) 所有屬性方法,並可以加以改造的特性

Java programming


物件導向程式設計的特點(2)

  • 多型(polymophism)

    • 呼叫相同的函式,卻會出現不同的行為的現象

      • 過載(Overloading): 將一個函數名稱,賦予一種以上的函數實體,以便依據當時情況,擇一執行

      • 覆寫(Overriding): 將繼承下來的方法,以同名函數蓋掉的特色

Java programming


Java version history
Java version history

JDK 1.0 (January 23, 1996)

JDK 1.1 (February 19, 1997)

J2SE 1.2 (December 8, 1998)

J2SE 1.3 (May 8, 2000)

J2SE 1.4 (February 6, 2002)

J2SE 5.0 (September 30, 2004)

Java SE 6 (December 11, 2006)

Java SE 7 (July 28, 2011)

Java programming


Java的版本

  • Java自第二版(1.2)開始分為三個版本,類別函式庫名稱也由 JDK(Java Deve-lopment Kit) 改成 Java 2 SDK(Software Development Kit)

    • J2EE(Enterprise Edition)

    • J2SE(Standard Edition)

    • J2ME(Micro Edition)

Java programming


Java platforms
Java Platforms

Java Card for smartcards.

Java Platform, Micro Edition (Java ME).

Java Platform, Standard Edition (Java SE).

Java Platform, Enterprise Edition (Java EE).

Java programming


Java platform edition
Java Platform Edition

Java programming


JAVA

國際認證

Java programming


Development environments
Development Environments

  • Sun Java Development Kit (JDK)

  • Sun NetBeans

  • IBM Eclipse, GNU Eclipse

  • Borland JBuilder

  • MetroWerks CodeWarrior

  • BlueJ

  • jGRASP

Java programming


Interpretation vs compilation
Interpretation vs. Compilation

C++ Source (*.c)

Java Source (*.java)

C++ Compiler

Java Compiler

Byte-code (*.class)

Java Virtual Machine

Client Platform (hardware/operating system)

Client Platform (hardware/operating system)

Java programming


Jdk java development kit
JDK(Java Development Kit)

Java programming


Jdk java development kit1
JDK(Java Development Kit)

Java programming


Jdk java development kit2
JDK(Java Development Kit)

  • javac(.exe)

    • Java的編譯器, 可將.java原始档編譯為.class類別档。

  • java(.exe)

    • JVM虚擬機器的執行档, 可用來執行Java Application的Bytecode(.class類別档)。

Java programming


J ava virtual machine
Java Virtual Machine

x86

アーキテクチャ

(JavaVM)

MIPS

アーキテクチャ

(JavaVM)

Java

ソースコード

Java

コンパイル

(javac)

Java

バイトコード

SPARC

アーキテクチャ

(JavaVM)

……

Java programming


Java virtual machine
Java Virtual Machine

Java programming


Java virtual machine1
Java Virtual Machine

Java programming


Garbage collection 1
Garbage Collection (1)

  • Garbage Collection 機制可以自動偵測未被任何參考參照到的陣列或物件,「必要時」會將其所佔記憶體空間釋放。

  • [例]:

    int[ ] a = new int[100];

    int[ ] b = new int[200];

    a = b;

Java programming


Garbage collection 2
Garbage Collection (2)

  • 如欲釋放某物件或陣列,只需要停止參照,或指定為null,即可由Garbage Collection 機制將其釋放。

  • [例]:

    int[ ] c = new int[300];

    ……

    c = null;

Java programming


Garbage collection 3
Garbage Collection (3)

  • 由 Garbage Collection 機制管理記憶體可避免人為的錯誤; 但未被參照到的物件之空間並非馬上被釋放回收,且須時間運作,效率較差。

Java programming


Ide integrated development environment
IDE (Integrated Development Environment)

  • NetBeans (Sun)

  • JBuilder (Borland)

  • Eclipse (IBM)

Java programming


Java言語>

<通常の言語>

ソース

ソース

翻訳

翻訳

バイトコード

機械語Windows

機械語Mac

機械語Linux

JVMWindows

JVMMac

JVM Linux

実行

実行

実行

実行

実行

実行

Javaの実行環境

機械語はプラットフォーム毎に異なる。

Java programming


Java 1
Java語言的特點 (1)

簡單(Simple):指的是去除了C/C++中較少使用或可能不安全的功能,例如指標,運算子重載,多重繼承等。

物件導向的(Object-oriented):利用OOP的三種基本特性:PIE(多型,繼承,封裝),來設計出可重複使用的元件,使系統有彈性易於維護。

Java programming


Java 2
Java語言的特點 (2)

網路的(Network-Savvy):提供容易使用的API來撰寫網路程式

直譯式的(Interpreted):bytecode在JVM上執行時,JIT負責轉換為機器碼。

穩健的(Robust):捨棄了對記憶體的指標運作。

Java programming


Java 3
Java語言的特點 (3)

安全性(Secure): 資源回收處理 (Garbage Collection)由JVM自行作記憶體管理,例外處理 (Exception) 可預防突發錯誤的産生。

結構中立(Architecture Neutral):程式執行在虚擬機器上。

Java programming


Java 4
Java語言的特點 (4)

可攜的(Portable): Write once, run any-where指的是由JVM與不同的作業系統溝通。

高效率的(High Performance):利用HotSpot, JIT技術改善效能。

多執行緒的(Multithreaded):Java程序可發出多隻並行的輕量化行程。

Java programming


Java 5
Java語言的特點 (5)

  • 動態的(Dynamic):Java程式執行時動態的連結類別庫。

  • 支援萬國碼(Unicode):變數與類別名稱皆可使用中文

Java programming


Data type
資料型態(Data type)

  • 基本資料型態(primitive data type)

  • 結構化資料型態(structured data type)

  • 抽象資料型態(abstract data type)

Java programming


Java 11
Java的資料型態(1)

Java的資料型態大小不會像C/C++一樣隨著平台不同而不同,它在所有平台上都是一樣的。

由於Java在char的型態部分採用Unicode, 換句話説, 可以用中文取變數名稱。

Java的變數可以指向二種資料型態:

1.原生資料型態2.參考資料型態

Java programming


Java 21
Java的資料型態(2)

  • 參考資料型態(wrapper class)定義在 java.lang 的套件中。

  • 原生資料型態中的整數資料型態(byte, short, int, long)可使用10進位, 8進位與16進位表示。

  • 原生資料型態中的浮點數資料型態(float, double),預設浮點數為double型態。

Java programming


Java 31
Java的資料型態(3)

原生資料型態除boolean之外彼此間可轉型(自動轉型或強制轉型)。

原生資料型與參考資料型態之間必須利用物件的靜態方法來轉型。

在運算子(operators)為「+= , -=, *= , /=」時會發生不明確(隱含)轉型的情況,原來需強制轉型的資料會變成自動轉型。

Java programming


Data type1
データ型(data type)

  • 基本的な型

    • 整数、浮動小数点数、真理値、文字

  • 参照型

    • クラス(など)を参照する型

Java programming


Data type2
資料型態(Data type)

  • 原始資料型態(primitive type)

    • 整數 (byte, short, int, long)

    • 浮點數 (float, double)

    • 布林 (boolean)

    • 字元 (char)

  • 非原始資料型態(non-primitive type)

Java programming


Primitive types
基本型(primitive types)

Java programming


Primitive type
原始資料型態(primitive type)

Java programming



Java 12
Java的内建資料型別 (1)

  • boolean :布林値

    • 僅有兩個常數,true和false 。

  • byte :位元組型別値

    • 長度一個位元組,取値範圍是-128至127 。

  • short:短整數

    • 長度兩個位元組,取値範圍是-32768至32767 。

  • int:整數

    • 長度32位元(四個位元組),取値範圍是

      -2147483648至2147483647 。

Java programming


Java 22
Java的内建資料型別 (2)

  • long:長整數

    • 長度八個位元組,取値範圍是

      -9223372036854775808至9223372036854775807。

  • float:單精度IEEE754浮點數

    • 長度四個位元組。

  • double:倍精度IEEE754浮點數

    • 長度八個位元組。

  • char:字元型

    • 長度16位元,支援所有的UCS-2和ASCII編碼。

Java programming


Java 32
Java的内建資料型別 (3)

  • 若整數資料未指定型別; 範圍在32 bits (-231 ~ 231-1)的會被視為int型別, 超過此範圍者視為long型別。

  • 所有的浮點數資料皆預設為double型別。

Java programming


Default values
Default Values

Java programming


Java fi nal
Java的常數:final 修飾子

Java programming


Primitive data types
Primitive Data Types 的轉型

Java programming


Primitive data type wrapper class
Primitive Data Type 與 Wrapper class型態的轉換

Java programming


資料型態強制轉換

  • 若要指定整數資料為long型別, 在數値後面要加上「L」或「l」。

  • 若要指定浮點數資料為float型別, 在數値後面要加上「F」或「f」。

  • 若要將大範圍型別的數値資料轉換成範圍較小之數値資料, 必須使用指定型別:

    • (指定型別) 資料或變數

Java programming


String 1
基本資料型態轉換成String (1)

String.valueOf(boolean b)

String.valueOf(char c)

String.valueOf(char[] data)

String.valueOf(char[] data, int offset, int count)

Java programming


String 2
基本資料型態轉換成String (2)

String.valueOf(double d)

String.valueOf(float f)

String.valueOf(int i)

String.valueOf(long l)

String.valueOf(Object obj)

Java programming


String
String轉換成數字資料型態

Byte.parseByte(String s)

Double.parseDouble(String s)

Float.parseFloat(String s)

Integer.parseInt(String s)

Long.parseLong(String s)

Java programming


コメント(注釈)

  • // ここにコメントを記述します。

  • a = b + c; /* ここにもコメントを記述します。*/

  • /*

    * 複数行にまたがるコメントも可能です。

    */

  • /**

    * この部分は javadoc コマンドで抜き出すことができます。

    */

Java programming


Commenting
commenting

// This is an example of a single line comment using two slashes

/* This is an example of a multiple line comment using the slash and asterisk. This type of comment can be used to hold a lot of information or deactivate code but it is very important to remember to close the comment. */

/**

* This is an example of a Javadoc comment;

* Javadoc can compile documentation from this text.

*/

Java programming


主要なJavaパッケージ

Java programming


Java lang math
java.lang.Math類別

Java programming


Math.メソッド名(引数);

class MathExample {

public static void main(String[] args) {

System.out.println("-5の絶対値は" + Math.abs(-5));

System.out.println("3.0の平方根は" + Math.sqrt(3.0));

System.out.println

("半径2の円の面積は" +2*2*Math.PI);

System.out.println

("sin60°は" + Math.sin(60.0*Math.PI / 180.0));

}

}

Java programming


I o byte
I/O架構圖(以byte為單位)

Java programming


I o char
I/O架構圖(以char為單位)

Java programming


Bufferedreader
使用BufferedReader類別讀取鍵盤輸入的資料

import java.io.*;

public class 主類別名稱{

public static void main(String args[]) throws IOException

{

BufferedReader buf;

String str1;

buf= new

BufferedReader(new InputStreamReader(System.in));

str1=buf.readLine();

............

}

}

Java programming


キーボードからの入力(1)

import java.io.*;

class Sample1 {

public static void main (String args[])throws IOException

{

System.out.println(“請輸入提示字串…”);

BufferedReader br =

new BufferedReader(new InputStreamReader(System. in));

String str = br.readLine();

System.out.println(“您輸入的字串是…” + str);

}

}

Java programming


キーボードからの入力(2)

import java.io.*;

class Sample2 {

public static void main(String args[]) throws IOException

{

System.out.println(“請輸入一整数…”);

BufferedReader br =

new BuffereReader(new InputStreamReader(System.in));

String str = br.readLine();

int num = Integer.parseInt(str);

System.out.println(“您輸入的整数値 = ” + num);

}

}

Java programming


Console
使用Console物件讀取鍵盤輸入的資料

import java.io.Console;

public class 主類別名稱{

public static void main(String args[])

{

Console console=System.console();

String str1;

str1=console.readLine()

int i = Interger.parseInt(str1);

............

}

}

Java programming


Java util scanner
java.util.Scanner類別

  • Scanner

    • ファイルやキーボードからの入力が容易にできるクラスである。

  • 利点

    • BufferedReaderオブジェクトを作る必要がない。

    • 文字、整数、実数を判断できるメソッドを持っているのでInteger.parselnt()などの型変換がいらない。

Java programming


Scanner
Scannerを用いた読み込み

  • import java.util.Scanner;

  • キーボードからの読み込み

    • Scanner sc = new Scanner(System.in);

  • ファイルからの読み込み

    • Scanner sc =

      new Scanner(new FileStream("filename.txt"));

Java programming


Scanner methods
Scanner Methods

Java programming


Numeric and string methods
Numeric and String Methods

Java programming


Boolean methods
Boolean Methods

Java programming


Scanner 1
Scanner使用範例(1)

import java.util.Scanner;

public class 主類別名稱{

public static void main(String[] args)

{

Scanner sc = new Scanner(System.in);

System.out.println(“請輸入一個整數…”);

int i = sc.nextInt();

}

}

Java programming


Scanner 2
Scanner使用範例(2)

import java.util.Scanner;

public class Input {

public static void main(String[] args) {

Scanner cin = new Scanner(System.in);

//建立輸入處理物件

float a = cin.nextFloat(), b = cin.nextFloat();

//讀取兩個浮點數

System.out.println(a + b); //輸出a+b的運算値

String c = cin.next(); //讀取一個字串

System.out.println(c); //輸出c的字串内容

}

}

Java programming


Escape sequence character
跳脱字元(Escape sequence character)

Java programming


Java util formatter
java.util.Formatter類別

Java programming


Format
format方法

完整的使用格式:

%[argument_index$] [flags] [width] [.precision] conversion

Java programming


Common formatting codes
Common Formatting Codes

Java programming


Conversion 1
Conversion (1)

Java programming


Conversion 2
Conversion (2)

Java programming



flag參數

Java programming


Printf 1
printf使用範例 (1)

  • Example 1: 控制寬度和精度

    • System.out.printf(“%5.3f”, Math.PI),

      控制輸出寬度為5,精度為3,

      結果為“ 3.142”

      (輸出的最前面有一个空格)

Java programming


Printf 2
printf使用範例 (2)

  • Example 2: 使用argument_index

    • System.out.printf(“%s and %s”, “You”, “Me”)

      輸出”You and Me”

    • System.out.printf(“%2$s and %2$s”, “You”, “Me”)

      輸出”Me and Me”

Java programming


Console

Assignment

Expression

Divisor

If / If-else

Switch-case

For loop

While loop

Random

Bubble sort

Method

Recursive

プログラミング基礎演習

Java programming


J ava virtual machine1
Java Virtual Machine

x86

アーキテクチャ

(JavaVM)

MIPS

アーキテクチャ

(JavaVM)

Java

ソースコード

Java

コンパイル

(javac)

Java

バイトコード

SPARC

アーキテクチャ

(JavaVM)

……

Java programming


プログラムの作成

Java programming


java程式的編輯器

整合式編輯器

Eclipse, JCreator LE 等

視覺化編輯器

Jbuilder, IntelliJ IDEA, Visual Cafe, Workshop, Forte for Java等

純文字編輯器

免費軟體:Crimson, ConText, NotePad等

共享軟體:UltraEdit, EditPlus等

Java programming


Jdk java development kit3
JDK(Java Development Kit)

  • javac(.exe)

    • Java的編譯器, 可將.java原始档編譯為.class類別档。

  • java(.exe)

    • JVM虚擬機器的執行档, 可用來執行Java Application的Bytecode(.class類別档)。

Java programming



Java言語プログラム作成の流れ

1) プログラムソースファイルの作成

  • プログラムを書く(クラスを書く)

  • ファイルの拡張子は.java(例えばTest.java)

    2) プログラムのコンパイル

  • javac ファイル名(例えばjavac Test.java)

    3) プログラムの実行

  • java クラス名(クラス名がTestならjava Test)

Java programming


Java 10 1 by david reilly
Java程式寫作上的10大錯誤排行榜 (1)By David Reilly

  • 10:Accessing non-static member variables from static methods (such as main)

  • 9: Mistyping the name of a method when overriding

  • 8: Comparison assignment ( = rather than == )

  • 7: Comparing two objects ( == instead of .equals)

Java programming


Java 10 2 by david reilly
Java程式寫作上的10大錯誤排行榜 (2)By David Reilly

  • 6: Confusion over passing by value, and passing by reference

  • 5: Writing blank exception handlers

  • 4: Forgetting that Java is zero-indexed

  • 3: Preventing concurrent access to shared variables by threads

  • 2: Capitalization errors

  • 1: Null pointers

Java programming


プログラミング演習

  • 請將程式碼及執行結果貼在MS Word 上 (filename = ‶A4010N099_09″), 儲存在桌面備用。

  • 同學若來不及於下課前完成作業繳交程序, 另請在習作完成後, 儘速mail給

    任課教師([email protected])。

(班別, 學號, _, 作業回數)

Java programming



Java程式

  • 應用程式(Application)

    • Java應用程式是可以獨立執行的程式

  • 小程式(X-let)

    • 瀏覽器端執行的小程式(Applet):Java applet是嵌在HTML中的程式

    • 伺服器端執行的小程式(Servlet)

Java programming


Java application
Java Application 基本結構

Java programming


Application
Application的結構(例)

/*只有註解可以放在 package 區之前*/package exam.test;import java.awt.Button; import java.util.*;

public class HelloWorld {public static void main( String[] args ) {System.out.println( “Hello World ” ); tmp obj = new tmp(); obj.i = 6; System.out.println( obj.i );}}class tmp{int i = 5; }

Java programming


Java語言的寫作風格

Class Name請首字大寫

Variable Name和Method Name請首字小寫

如果名稱由數個英文字組成,第2個英文字以後首字大寫

内縮4個空格

註解部分如要變成説明文件,請遵照javadoc這個工具的寫作規則

Java programming


Java 13
Java程式碼慣例(1)

一行不超過80個字元

一行一個宣告

使用 if 時,永遠加上括號

在變數宣告的地方進行初始化(除非它的値需要經過某些運算)。

Java programming


Java 23
Java程式碼慣例(2)

class名稱應該是名詞

method名稱應該是動詞

變數名稱應該是有意義的短單字

常數名稱應該是以底線("_")分隔的全大寫字

Java programming


Java 33
Java程式碼慣例(3)

  • 更多詳盡的程式慣例,請參考官方文章 

    • “Code Conventions for the Java Program-ming Language”

      http://www.oracle.com/technetwork/java/

      codeconvtoc-136057.html

Java programming


System out println print
System.out.println() /.print()

  • System.out.println(内容)

    • 輸出”内容”加上”斷行\r\n”至Console(螢幕)

  • System.out.print(内容)

    • 輸出”内容”至Console(螢幕)

  • 如果要輸出的内容需要有字串、文字、日期等,可以利用字串的連接(+)來把字串串連起來進行輸出。

Java programming


System out printf
System.out.printf()

Java programming


System out printf1
System.out.printf() -(續)

Java programming


java程式的編寫與執行

  • D:\>md myjava

  • D:\>cd myjava

  • D:\myjava>

  • 開啓記事本,鍵入程式碼並以filename: Ex01.java存到D:\myjava

  • D:\myjava>javac Ex01.java //編譯

  • D:\myjava>java Ex01 //執行

Java programming


Hello java
Hello.java

public class Hello

{

public static void main(String args[ ])

{

System.out.println("Hello");

}

}

Java programming


Ex01 java

/*

習題1: Hello, java!

档名: Ex01.java

四環一A, 4010N901, 李大仁

*/

package myjava.ex01;

import java.lang.*;

import java.io.Console;

Ex01: 我的第一個java程式

Java programming


(續前頁)

public class Ex01

{

public static void main (String args[])

{

System.out.println(“Hello, java!”);

}

}

Java programming


K r kernighan ritchie
K&R(Kernighan & Ritchie)縮排

if (……) {

for (… ; … ; …) {

while (……) {

}

}

}

Java programming


Java 14
java程式的編輯(1)

註解可使用「/*......*/」與「//...............」,如要變成説明文件, 請依循 javadoc 這個工具的規則「/**........*/」

必須以 .java 作為副档名存档

類別名稱必須與主档名相同

毎個档案可以有許多的 class, 但只能有一個是 public

Java programming


Java 24
java程式的編輯(2)

  • 若程式中有多個class, 則編譯時亦會産生多個 .class档案

  • Java會區分識別字的大小寫

  • 必須以分號作為毎一行的結束

Java programming


Java 15
Java 程式中的各項命名(1)

識別字可使用 Unicode,因此可以使用中文,但須注意中間不可有空白,開頭不可有數字,不可為關鍵字(Keywords)

建議Class Name首字大寫 ,Variable Name 和 Method Name 請首字小寫

Java programming


Java 25
Java 程式中的各項命名(2)

  • 建議名稱若由數個英文字組成,第二個英文字以後首字大寫(camelcase) ,而不要使用匈牙利命名法 (Hungarian Notation)

  • 建議名稱必須有意義

Java programming



Class
class類別宣告

class的名稱與档案名稱必須相同

毎個档案可以有許多的 class 存在, 但只能有一個是public

Java programming


Package 1
package宣告區(1)

  • package宣告本程式屬於何類套件

  • 若未指定package則預設為目前目録

  • Java中同性質的classes可被組織為packages,它們對應於档案系統的目録結構,可觀看JDK目録中的 src.zip

    • (例)java.awt.Button.java程式碼中的package設定為 package java.awt

Java programming


Package 2
package宣告區(2)

  • package名稱就像是姓氏,而class名稱就像是名字。 package名稱有很多的,就好像是複姓。 不同的package之中可以有相同的class名稱。

    • (例) java.io.InputStream則是複姓java.io,名字為InputStream的類別,

  • classpath + 程式内的package =档案完整路徑

Java programming


Import 1
import敘述區(1)

Java的 import 與 C 的 include 意義相仿而實質不大相同,java的 import 只是告知VM要到哪裡尋找套件,並不會佔用記憶體

若我們想使用 java.io 這個套件中的FileReader,需在程式中指定為 import java.io.FileReader

Java programming


Import 2
import敘述區(2)

  • 若想在程式中引入 java.io 整個套件, 可在程式中指定import java.io.*

  • import 僅能引用該層,下一層必須另行 import; 例如 import java.io.File只能使用 File,不能使用位於上層的FileReader

Java programming


Import 3
import敘述區(3)

  • 因為 java.lang 這個套件實在是太常用到了,幾乎沒有程式不用它的, 所以不管你有沒有寫 import java.lang;,編譯器都會自動幫你補上

Java programming


Import 4
import敘述區(4)

  • java的API中會有相同名稱的class存在不同package的情形,例如  java.util 與 java.sql 都有 Date 這個class, 這時引入時若都採取import整個 package 的方式,則編譯會出錯,建議放棄其中之一的 import 敘述,在程式碼中直接使用完整路徑取用class即可。

Java programming


Java 16
java常用的套件(1)

java.lang

預設引用的套件,包括了基本語言特性與處理陣列與字串的函式

java.io

java.util

javax.swing

Java programming


Java 26
java常用的套件(2)

  • java.awt

    • JDK1.1提出的GUI

  • java.awt.event

    • GUI的事件驅動器

  • java.awt.image

    • GUI的Image

Java programming


Class interface enum
class, interface, enum

類別宣告

class的名稱與档案名稱必須相同

毎個档案可已有許多的 class 存在, 但只能有一個是public

Java programming


キーボードからの入力(1)

  • imoport java.io.console;

  • Console 変数 = System.console();

  • String str = 変数.readLine();

[注]: 読み込んだデータはString型(文字列)

Java programming


キーボードからの入力(2)

  • imoport java.util.Scanner;

  • Scanner 変数 = new Scanner (System.in);

  • String str = 変数.next();

[注]: 読み込むデータの型に合わせたメソッドを使って読み込み。

Java programming


Scanner1
Scannerクラスを使ってデータを読み込むときのメソッド

Java programming


キーボードからの入力(3)

  • import java.io.*

  • main(String args[]) throws IOException

  • BufferedReader 変数 = new BufferedReader (new InputStreamReader (System.in));

  • String str = 変数.readLine();

[注]: 読み込んだデータはString型(文字列)

Java programming



演習1:文字列

  • 寫一程式,可以在螢幕上顯示「Hello, java SE7 !」;在程式中須加入單行及多行註解,在註解中要有自己的班級、學號、姓名及程式完成日期等資訊。

Java programming


演習1:文字列

  • 文字の表示

Java programming


Assignment
指定敘述 (assignment)

  • 變數 = 資料、變數或運算式;

Java programming


變數的宣告

  • 使用變數前,必須先宣告此變數的資料型態

  • 變數的宣告不必在程式最前面,可以在需要時再宣告

  • 資料型別 變數名稱1[=初値1], 變數名稱2[=初値2];

Java programming


Arithmetic
算術(Arithmetic)運算符號

Java programming


除法(/)型別的問題

  • 當分子與分母皆為double時,除法運算的結果為double。

  • 當分子與分母其一為double而另一為int時,除法運算的結果仍為double。

  • 當分子與分母皆為int時,除法運算的結果為int。若結果具有小數,則截斷小數部分,僅保留整數部分。

Java programming


Logic
邏輯(Logic)運算符號

Java programming


位元(Bit)運算符號

Java programming


其他運算符號

Java programming


Operator precedence 1 2
Operator Precedence (1/2)

Java programming


Operator precedence 2 2
Operator Precedence (2/2)

Java programming


Operator
運算符號(Operator)的優先權

Java programming


Java printf method
Java printf( ) method

System.out.printf(“format-string” [, arg1, arg2, … ]);

Java programming


Format string
Format String

  • % [flags] [width] [.precision] conversion-character

Java programming


Flags
Flags

  • - : left-justify ( default is to right-justify )

  • + : output a plus ( + ) or minus ( - ) sign for a numerical value

  • 0 : forces numerical values to be zero-padded ( default is blank padding )

  • , : comma grouping separator (for numbers > 1000)

  • : space will display a minus sign if the number is negative or a space if it is positive

Java programming


Conversion characters
Conversion-Characters

  • d : decimal integer [byte, short, int, long]

  • f : floating-point number [float, double]

  • c : character. Capital C will uppercase the letter

  • s : String. Capital S will uppercase all the letters in the string

  • h : hashcode. A hashcode is like an address. This is useful for printing a reference

  • n : newline. Platform specific newline character- use %n instead of \n for greater compatibility

Java programming


Printf format specifiers
printf format specifiers

Java programming


Special printf characters
special printf characters

Java programming


演習2: データの型と変数 (1)

  • 簡単な計算

  • Celsiustemperature (攝氏温度)

  • Fahrenheit temperature (華氏温度)

  • ℉ = ℃ + 32

Java programming


演習2: データの型と変数 (1)

Java programming


肥満症の定義(日本肥満学会)

http://www2.health.ne.jp/theme/index.html

  • 肥満症とは肥満に起因ないし関連する健康障害を合併するか、その合併が予測される場合で、医学的に減量を必要とする病態をいい、疾患単位として取り扱う。

Java programming


肥満症診断基準(日本肥満学会)

http://www2.health.ne.jp/theme/index.html

BMI≧25かつ、健康障害があるまたは内臓脂肪が蓄積している。

*B:内臓脂肪蓄積の判定基準

A:肥満による健康障害

BMI≧25

スクリーニング検査

ウエスト周囲径計測

男性:85cm ≦

女性:90cm ≦

(上半身肥満)

●Ⅱ型糖尿病・耐糖能異常

●脂質代謝異常

●高血圧

●高尿酸血症・痛風

●冠動脈疾患:心筋梗塞・狭心症

●脳梗塞:脳血栓症・一過性虚血発作

●睡眠時無呼吸症候群:Pickwick症候群

●脂肪肝

●整形外科的疾患:変形性関節症・腰椎症

●月経異常

あり   なし

肥満

非肥満

腹部CT検査

内臓脂肪面積100cm2 ≦

(内臓脂肪型肥満)

A:肥満による健康障害

または

B:内臓脂肪蓄積

(*詳細は右図を参照)

内臓脂肪蓄積

肥満症

肥満症

Java programming


肥満症は内臓脂肪蓄積が問題

http://www2.health.ne.jp/theme/index.html

Java programming


成年人之血壓分期(18才以上之成人)

1999年2月世界衞生組織公佈 "高血壓定義與分類"

Java programming


予防と治療(食事療法)

http://www2.health.ne.jp/theme/index.html

(出典:肥満・肥満症の指導マニュアル 日本肥満学会編集委員会)

  • 摂取エネルギーの設定

  • 栄養素の配分

  • 食習慣の改善から成る

Java programming


予防と治療(運動療法)

http://www2.health.ne.jp/theme/index.html

(出典:肥満・肥満症の指導マニュアル 日本肥満学会編集委員会)

  • どんな運動がいい?

    • 歩行、ジョギング、ラジオ体操、水泳などの全身を使う有酸素運動。また、1日1万歩以上の歩行も!

  • どのくらいの運動がいいの?

    • トレーニングは週に3回以上行う必要がある。軽いものなら毎日から1日おきとし、また休日などを利用して十分な時間をとるのがよいとされている。

    • 運動の強度については、いきなり強い運動をしないこと。軽い運動から始めて徐々にならしていこう。

(jogging)

(training)

Java programming


Java programming

98.5.14. 中國時報 A8 版


Java programming

98.5.14. 中國時報 A8 版


高血壓患者應注意事項:

  • 充分的睡眠與休息,避免過度勞累與精神緊張。

  • 適度輕鬆的運動,維持理想的體重。

  • 保持大便通暢,預防便秘。

  • 避免用太冷太熱的水洗澡或浸浴。

  • 選擇新鮮的食物,避免醃製及加工食品,如鹹菜、蔭瓜、醬瓜罐頭等。

  • 忌食含鈉量極高的食品及蔬菜,如麵線、蜜餞、餅干、芹菜、胡蘿蔔、海帶、紫菜、發芽蠶豆等不要大量食用。

  • 避免抽菸、喝酒;節制茶葉、咖啡、可樂等含咖啡因的飲料。

Java programming


遠離高血壓 健康生活六守則

  • 減鹽

  • 減重

    • 維持BMI 18.5-24的健康體位,男生腰圍不超過90公分,女生腰圍不超過80公分

  • 戒菸

  • 運動

Java programming

國民健康局


遠離高血壓 健康生活六守則

  • 節制飲酒

    • 每天男性不宜超過2個酒精當量(drinks/day,每個酒精當量為15公克,約相當於啤酒360毫升,葡萄酒120~150毫升,白蘭地等烈酒30~40毫升),女性不宜超過1個酒精當量

  • 量血壓

    • 血壓超過140/90 mmHg就應該諮詢醫師

Java programming

國民健康局


BMI=体重kg/(身長m)2 ; 標準体重kg=22×(身長m)2

http://www.uemura-clinic.com/dmlecture/bmi.htm

Java programming


Java programming

日本肥満学会(2000)


演習3: データの型と変数 (2)

  • 変数の使い方

  • BMI = [体重(kg)] ÷ [身長(m)]2

  • 標準体重(kg) =22×(身長m)2

  • 参考) BMI(Body Mass Index :体格指数)

Java programming


演習3: データの型と変数 (2)

Java programming


演習4: 算術演算子

  • 整數除法

  • 1呎 = 12吋

  • 1吋 = 2.54公分

Java programming


Mathクラス基本的な算術メソッド

Java programming


Mathクラス指数関数メソッド

Java programming


Java lang math round x
java.lang.Math – round(x)

Java programming


演習4: 算術演算子

Java programming


分支選擇敘述句 (1)

  • 單向

    • if (expression) statement;

  • 雙向

    • if (expression) statement_true; else statement_false;

Java programming


多向

switch (expression) { case value_1: [statement_1;] [break;]

case value_2: [statement_2;] [break;]

...

default: statement;

[break;]

}

分支選擇敘述句 (2)

Java programming


單向條件敘述

  • if (條件式) 敘述;

  • if (條件式)

    敘述;

  • if (條件式) {

    敘述區段;

    }

Java programming


if (條件式)

敘述A;

else

敘述B;

if (條件式) {

敘述區段A;

}

else {

敘述區段B;

}

雙向條件敘述

Java programming


條件運算子

  • 變數 = (條件式) ? Y結果 : N結果;

  • [例]

    • int n1 = -20, n2 = 5;

      String compare;

      compare = (n1 >= n2) ? “大於等於” : “小於”;

Java programming


if (主條件) {

if (次條件1) {

敘述區段A;

}

else {

敘述區段B;

}

}

else {

if (次條件2) {

敘述區段C;

}

else {

敘述區段D;

}

}

巣状條件敘述

Java programming


5 if else
演習5: if else 文

  • If ステートメント

    • If...

    • If...Else ...

  • 台湾自來水公司水費採累進計価方式:

    • 應繳水費=基本月費(34.0元)

      + [毎度單價×實用水量-累進差額]

    • 總水費之計收至元為止(角以下四捨五入)

Java programming


水費速算表

台湾自來水公司

(1). 用水費=(毎度單價 × 實用水量 - 累進差額)

(2). 總水費之計收至元為止,角以下四捨五入。

Java programming


表燈電價表

單位:元/度

[註]:6月1日~9月30日依夏月計價

Java programming


5 if else1
演習5: if else 文

Java programming


6 switch
演習6: switch 文

  • Select Case ステートメント、例外処理 (VB6 例)

    • Case is <= 5

    • Case 6, 7, 8

    • Case 9 To 14

    • Case is >= 15

    • Case Else

Java programming


switch (變數或運算式) {

case 結果1:

敘述區段1;

break;

case 結果2:

敘述區段2;

break;

:

case 結果n:

敘述區段n;

break;

default:

敘述區段default;

[break;]

}

多重選擇

只能是: char, byte, short, int或enum列舉型別

只能是: 常數或是由常數所構成的運算式

Java programming


6 switch1
演習6: switch 文

  • 試設計一程式,可以輸入一學生某科之考試成績(整數資料型別),並依下示加分處理原則將加分後之新成績(注意:取整數,且滿分仍以100分為限)顯示在螢幕上。

  • 加分處理原則:

    • 0 - 49分,加15%

    • 50 - 79分,加10%

    • 80 - 100分,加5%

Java programming


6 switch2
演習6: switch 文

Java programming


迴圈敘述句 (1)

計次 : for

for( init_Statement ; condition ; incre_statement ) statement

Java programming


迴圈敘述句 (2)

  • 前測 : while

    • while( expression ) statement

Java programming


迴圈敘述句 (3)

  • 後測 : do while

    • do statement while( expression ) ;

Java programming


跳耀敘述句 (1)

  • label

    • 多與break或continue合用,可跳出多層迴圈(multi-level loop)

  • break

    • 針對 for, while, do while,switch迴圈作跳離

Java programming


跳耀敘述句 (2)

  • continue

    • 針對 for, while, do while本次迴圈略過其後的敘述句,然後回到重複執行的條件處判斷是否繼續進入迴圈

  • return

    • 中斷目前程序的執行, 跳回上一層的呼叫點 , 但不可中斷有回傳型態的函數

Java programming


For loop
迴圈敘述 (for loop)

  • for (初値; 條件式; 增値運算式) 敘述;

  • for (初値; 條件式; 增値運算式) {

    敘述區段;

    }

Java programming


While loop

<前測試迴圈>

while (條件式) {

敘述區段;

}

<後測試迴圈>

do {

敘述區段;

} while (條件式);

迴圈敘述 (while loop)

Java programming


迴圈敘述

  • sum = 1 + 2 + 3 + … + 100

  • sum = 2 + 4 + 6 + … + 100

  • sum = 1 + 1/2 + 1/3 + … + 1/20

  • sum = 1 - 1/2 + 1/3 ± … ±1/20

Java programming


円周率を求めるプログラム

  • 円周率とは

    • 円周率とはπで表わされる数学定義のひとつで、 正円の直径に対する円周の比のことである。

    • 1400年頃,インドのマーダヴァが無限級数を得る。

Java programming


円周率を求めるプログラム

  • 三角関数のテーラー展開による導出

    • 直角二等辺三角形における tanθの値は 1 である。θは π/4 なので、 tan-1(1) を計算することで π/4 を算出することができる。

    • ここで、 tan-1(1) をテーラー展開すると以下のようになる。 tan-1(1) = 1 – 1/3 + 1/5 - 1/7 + 1/9 +/- … この式で求めた値を 4 倍することで円周率を求めることができる。

Java programming


7 for
演習7: for 文

Java programming


8 while
演習8: while 文

  • 假設有一條繩子長1,000公尺,毎天剪去一半的長度,請設計一程式,可以計算出需花費幾天的時間,繩子的長度將不足3公尺?

Java programming


8 while1
演習8: while 文

Java programming


8 1 while
演習8-1: while 文

Java programming


Randomize statement and the rnd function
Randomize Statement and the Rnd Function

  • The Randomize statement initializes Visual Basic’s random-number generator.

  • The Rnd function generates random decimal numbers within the 0 to 1 range, including 0 but not including 1.

Java programming


Rnd function
Rnd Function

  • To generate random decimal numbers in a range other than 0 to 1:

    (upperbound - lowerbound + 1) * Rnd + lowerbound

  • To generate random integers:

    Int((upperbound - lowerbound + 1) * Rnd + lowerbound)

Java programming


乱数(VB6)

  • Rnd

    • 0以上1未満の単精度浮動小数点型の数値を返すという命令

    • Int((最大値 - 最小値 + 1) * Rnd + 最小値)

  • Randomize Timer

    • VBの乱数ジェネレータを初期化

    • 乱数の出現パターンを変える

Java programming


Math random
乱数函式 - Math.random()

  • import java.lang.Math;

  • Math.random()

    • 回傳一個 0.0 - 1.0(不含)的倍精度(double)浮点数

  • 選取一段範圍之整數:

    • (int) (Math.random() * (最大値 - 最小値 + 1) + 最小値)

Java programming


Mathクラスランダムメソッド

【例】 randomメソッドを使用し、1から10までの間でランダムな数値を算出します。

public class Example {

public static void main(String[] args) {

int randomNumber = (int) (Math.random() * 10 + 1);

System.out.println(randomNumber);

}

}

Java programming


乱数(物件)の生成

  • Randomクラスを用いると、乱数を生成することができる。

  • import java.util.Random;

    Random r = new Random();

    r.nextInt(n)//取得0 - (n-1)的整數

    r.nextDouble()

    //取得0.0 – 1.0(未滿)的倍精度浮點數

Java programming


指定亂數範圍

  • private int randomInRange(int min, int max)

    {

    return min + random.nextInt(max – min + 1);

    }

  • int lotto;

    lotto = randomInRange(1, 49);

Java programming


π = 4 × 円内部の点の数 ÷ 全ての点の数

点の数が多いほど、精確な値になる。

モンテカルロ法によるπ計算

Java programming


モンテカルロ法とは確率には直接関係ない問題を確率も用いて解くという方法です。

円内にあった点の数÷打った全数

= ((L/2)2×π) / L2

= π/4

モンテカルロ法による円周率の計算

Java programming


モンテカルロ法による 円周率の計算

四分の一円内にあった点の数

÷正方形内打った全数

= (1×1×π/4) / (1×1)

= π/4

if (x*x + y*y <= 1)

hit = hit + 1;

y

1

*

(x,y)

x

0

1

Java programming


Monte carlo method
Monte Carlo method

Monte Carlo method applied to approximating the value of π.

After placing 30000 random points, the estimate for π is within 0.07% of the actual value.

Java programming


演習 9: モンテカルロ法

Java programming


Array
陣列 (Array)

Java programming


Array1
陣列 (Array)

  • 陣列是一種特殊的類別(class)必須使用new才能建立實體

  • 宣告方式可以有2種

    • 型態[ ]變數;

      • 例如: int[] arr1, int[ ][ ][ ] arr3;

    • 型態 變數[ ];

      • 例如: int arr1[ ];

Java programming


Declaring a reference to refer to an array
Declaring a Reference to Refer to an Array

  • 宣告陣列主要分成兩部分:宣告陣列的 type 以及陣列參考(reference)的name。其格式如下:

    type[ ] name;

  • [例]:

    • int[ ] intArray;

    • float[ ] floatArray;

Java programming


Creating an array
Creating an Array

  • Java 陣列是使用new 指令所産生,其格式如下:

  • new elementType[arrayLength];

  • [例]:

    • int[ ] intArr;

    • intArr = new int[100];

    • double[ ] doubleArr = new double[200];

Java programming


Array initializers
Array Initializers

  • 産生一陣列並設定其陣列元素的初値。

  • 所産生陣列的長度,等於 { } 間初値的數目。

    • int[ ] anArray = {0,10,20,30,40};

    • //Create and initialize an array called anArray

    • //The length of anArray is “5”

Java programming


Accessing an array element
Accessing an Array Element

  • 陣列參考可以[ ]算符配合索引値(index)來存取個別陣列元素。

  • [例]:

    • intArray[3] = 10;

    • float val = floatArray[3];

  • 陣列之長度,可由arrayReference.length方法求得。

Java programming


Sorting searching an array
Sorting/Searching an Array

  • bubble sort

  • binary search on a sorted array

Java programming


Multiple subscripted arrays
Multiple-Subscripted Arrays

  • Java 可使用以下方式産生多維陣列,其中x、y 均可為變數,或整數。

    • int[ ][ ] a;

    • a = new int[x][y];

  • 亦可使用 Array Initializers,其中毎一列之構成元素長度可以不同。

    • int[ ][ ] b = { { 1, 2}, { 3, 4, 5}};

Java programming


公益彩券

  • 2002年1月起, 北銀發行公益彩券(小樂透), 由1至42的號碼中, 任選6碼; 選號不得重複。

  • 2004年1月起, 北銀開始發行大樂透, 由1至49的號碼中, 任選6碼(6/49樂合彩); 選號不得重複。

Java programming


中獎機率

  • 小樂透可能出現的號碼組合共有:

  • 大樂透可能出現的號碼組合共有:

Java programming


大樂透 (6/49樂合彩)

  • 大樂透是使用電腦連線接受投注的樂透型機率遊戲

  • 投注購券者須從01 - 49的號碼中任意選出6個不重覆號碼以作為投注號碼

  • 於公益彩券開獎時,開獎執行單位便會由開獎機中之號碼範圍内隨機開出六個號碼及一個特別號。

Java programming



④ ‧ ‧ ‧ 以此類推‧ ‧ ‧

Java programming

出處:上奇, EB631, p.6-36


Java2
不重複的随機乱数 (Java2)

class BBKMath {

void GenRnd( int[] x, int min, int max, int rnd_no) {

int tot_no, rem_no, t_no;

int i, j;

tot_no = max - min + 1;

int[] t = new int[tot_no];

for(i = 0; i < tot_no; i++) {

t[i] = min + i;

}

rem_no = tot_no;

for( i = 0; i < rnd_no; i++) {

t_no = (int)Math.floor(Math.random() * rem_no);

x[i] = t[t_no];

for(j = t_no; j < (rem_no - 1); j++) {

t[j] = t[j+1];

}

rem_no--;

}

}

}

Java programming

出處:上奇, EB631, p.6-37


Java21
不重複的随機乱数 (Java2)

for(int j=1;j<=i;j++) { //産生指定組數號碼的迴圈

int[] lotto= new int[49]; // 建立樂透號碼陣列

for (int k=0;k<49;k++) // 將陣列元素値設為 1~49

lotto[k]=k+1;

int count=0; // 用來記綠已産生幾個號碼

do {

int guess = (int)(Math.random()*49);

if(lotto[guess]==0) // 若號碼所指的元素値為 0, 表示此數字已

continue; // 出現過, 就重新執行迴圈, 産生另一亂數

else {

System.out.print(lotto[guess]+“\t");

lotto[guess]=0; // 將號碼所指的元素値設為 0, 以免重複用到

count++;

}

} while (count<6); // 産生 6 個號碼才停止

}

Java programming

出處:旗標, FS720, p.17-32~33


Java22
不重複的随機乱数 (Java2)

import java.util.*;

public class ListLotto {

public static void main(String args[]) {

System.out.println("樂透電腦選號──Java/ArrayList 版");

ArrayList num = new ArrayList();

for (int i=1;i<50;i++)

num.add(new Integer(i)); //初始化集合元素値

Collections.shuffle(num); //將集合『洗牌』

System.out.println(num.subList(1,7));

} //取集合中前 6 個元素的子集合

}

Java programming

出處:旗標, FS720, p.17-60~61


Vb2008
不重複的随機乱数 (VB2008)

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As _

System.EventArgs) Handles Button1.Click

Dim guess, A(5) As Integer

Randomize()

For index As Integer = 0 To 5

While A(index) = 0

guess = CInt(Int(Rnd() * 59) + 1)

If Array.IndexOf(A, guess) = -1 Then

A(index) = guess

End If

End While

Next

TextBox1.Text = A(0)

TextBox2.Text = A(1)

TextBox3.Text = A(2)

TextBox4.Text = A(3)

TextBox5.Text = A(4)

TextBox6.Text = A(5)

End Sub

End Class

Java programming

出處:上奇, HB0902, p.11-28


Vb6 0
不重複的随機乱数 (VB6.0)

Dim A(6) as Integer

Dim i, j, k, y as Integer

Dim temp, check as Integer

Randomize Timer

i = 0

While i <= 6

check = 0

A(i) = Int(49*Rnd() + 1)

For y = 0 to i – 1

If A(i) = A(y) Then

check = -1

End if

Next y

If check = 0 Then

i = i + 1

End if

Wend

Java programming


With vb net
重複なしの 乱数配列生成 with VB.NET

Function GenerateArray(ByVal size As Integer) _ As Integer()

'乱数生成Dim arr(size - 1) As Integer  Dim i As Integer  For i = 0 To size - 1    arr(i) = i  Next i

Java programming

blog.craft-works.jp/uru/id/vb1


' ランダムに並び替えDim r As Random = New Random()  Dim tmp As Integer  For i = 0 To size - 1    Dim src As Integer = r.Next(i, size)    tmp = arr(src)    arr(src) = arr(i)    arr(i) = tmp  Next i  Return arr

End Function

Java programming


乱数 の作成(1)

public class Ran{

public static void main(String[] args){

int ran = (int)(Math.random()*10);

System.out.println(ran);

}

}

Mathクラスのrandom()メソッド

0~9の乱数を作成する例です。

Java programming


乱数 の作成(2)

import java.util.Random;

public class Ran{

public static void main(String[] args){

Random rnd = new Random();

int ran = rnd.nextInt(10);

System.out.println(ran);

}

}

Randomクラスの nextInt()メソッド

0~9の乱数を作成する例です。

Java programming


import java.util.Random; public class Test{public static void main(String args[]){Random random = new Random(); int number = 0;;int array[] = new int[6];boolean b;for(int i=0; i<6; i++){b = true;while(b) {b = false;number = random.nextInt(49)+1;for(int j=0; j<array.length; j++) {if(array[j] == number) {b = true;}}}array[i] = number;System.out.printf("array[%d]=%d\n",i,number);}}}

Java programming


データの並び替え (例)

  • int[] data = {10, 4, 55, 20, 15, 12};

    for (int i = 0; i < data.length - 1; i++){

    for (int j = i + 1; j < data.length; j++){

    if (data[i] >data[j]){

    int tmp = data[i];

    data[i] = data[j];

    data[j] = tmp;

    }

    }

    }

Java programming


Sorting
排序 (sorting) – 基本排序法

  • 氣泡排序法(bubble sort)

  • 選擇排序法(selection sort)

  • 插入排序法(insertion sort)

  • 謝耳排序法(Shell sort)

Java programming


Sorting1
排序 (sorting) – 高等排序法

  • 快速排序法(quick sort)

  • 合併排序法(merge sort)

  • 堆積排序法(heap sort)

  • 基數排序法(radix sort)

Java programming


Bubble sort method
Bubble sort method

          source[i + 1] = exchange;

        } // if end

      } //for end

    } //for end

    for (short i = 0;

i < source.length; i++) {

      System.out.print(source[i] + " ");

    }

  } //main method end

} //class end

public class BubbleSort {

  public static void main(String args[]) {

    short source[] = {

 540, 94, 458, 47, 64};

    short exchange = 0;

    for (short pass = 1;

pass < source.length; pass++) {

      for (short i = 0; i < source.length - 1;

i++) {

        if (source[i] > source[i + 1]) {

          exchange = source[i];

          source[i] = source[i + 1];

Java programming


Sorting array in java
Sorting Array in Java

import java.util.Arrays;

public class HowToSortAnArray {  

public static void main(String[] args) {  

//Array of Integers

int[] myIntArray = new int[]{20,100,69,4};  

//SORTS ARRAY FROM SMALLEST TO LARGEST INT

Arrays.sort(myIntArray);  

//for loop to print Array values to console

for (int a = 0; a < myIntArray.length; a++) {

System.out.println(myIntArray[a]);

}  

}

}

Java programming


演習 10: 配列‧乱数の利用

Java programming


*

**

***

****

*****

演習11: 二重ループ (1)

*

**

***

**

*

***

**

*

**

***

Java programming


*

***

*****

*******

*********

演習11: 二重ループ (2)

*****

***

*

***

*****

*

***

*****

***

*

Java programming


1

12

123

1234

12345

123

12

1

12

123

演習11: 二重ループ (3)

1

12

123

12

1

Java programming


1

121

12321

1234321

123454321

1

121

12321

121

1

演習11: 二重ループ (4)

32123

212

1

212

32123

Java programming


演習 11: 二重ループ (出力_1)

Java programming


演習 11: 二重ループ (出力_2)

Java programming


Method
方法 (method)

  • [public | private | protected] static [傳回値資料型別 | void]方法名稱 ([引数串列]) [throws 例外名稱]

    {

    敘述區段;

    [return 運算式;]

    }

Java programming


呼叫 java方法

  • 函式無回傳値:

    [物件名稱].方法名稱([引数串列]);

  • 函式有回傳値:

    變數 = [物件名稱].方法名稱([引数串列]);

Java programming


メソッド定義

[修飾子] [戻り値型] メソッド名(<引数リスト>)

{

ステートメント

}

Java programming


メソッド

戻り値型 メソッド名(メソッド引数リスト)

{

処理

return 戻り値;

}

Java programming


java 方法的引數傳遞

  • 傳値呼叫(call by value)

  • 參考呼叫(call by reference)

    [註]:All parameters to methods in Java are

    pass-by-value.

Java programming


Defining methods
Defining methods ( 例)

public double calculateAnswer(double

wingSpan, int numberOfEngines,

double length, double grossTons)

{

//do the calculation here

}

Java programming


Method declaration
method declaration

All parameters to methods in Java arepass-by-value.

Modifiers—such as public, private, and others you will learn about later.

The return type—the data type of the value returned by the method, or void if the method does not return a value.

Java programming


Method definition 1
method definition (1)

class MyClass {

...

public ReturnType methodName(Type1 param1,

Type2 param2 ) throws ExceptionName {

ReturnType retType;

...

return retType;

}

...

}

Java programming


Method definition 2
method definition (2)

private void methodName(

String param1, String param2 )

{

...

return;

}

Java programming


Create a simple java method
Create a simple Java method

public class Hi { public static void main(String[] args) {sayHi();    System.out.println(“The second Hi!!”); } public static void sayHi() {   System.out.println(“The first Hi!”); }}

Java programming


演習 12: メソッド

  • Functionプロシージャ

  • BMI = bmi(height, weight)

    • BMI = [体重(kg)] ÷ [身長(m)]2

  • 標準体重 = std_weight(height)

    • 標準体重 = 22×(身長m)2

Java programming


演習 12: メソッド

Java programming


Method1
method

modifier returnValueType

methodName(list of parameters)

{

// Method body;

}

Java programming


Recursive method
Recursive method

Method that invokes itself.

The arguments passed to the recursion take us closer to the solution with each call.

Java programming


Recursive algorithms
recursive algorithms

if (the stopping case is reached){ solve it}else{reduce the problem using recursion}

Java programming


Recursive method1
Recursive method ( 例)

public class RecursiveFactorial{  public static void main( String [] args )  {    // compute factorial of 7 and output it    System.out.println( “Factorial ( 7 ) is “ + factorial( 7 ) );  }  public static int factorial( int n )  {if ( n <= 0 ) // base casereturn 1;else// general casereturn ( n * factorial ( n - 1 ) );  }}

Java programming


Int n 1 2 3 n
寫一函數 , 輸入參數(int n)傳回1+2+3+ ... +n的總合

public class Example {

public static void main(String[] argv) {

System.out.println(sum(100));

}

public static int sum(int n) {

int total = 0;

for (int i = 1; i <= n; i++)

total += i;

return total;

}

}

Java programming


Recursion 1 2 3 n
遞迴 (recursion)範例求1+2+3+...+n

public class Example {

public static void main(String[] argv) {

System.out.println(sum(100));

}

public static int sum(int n) {

if (n <= 1)

return 1;

else

return (n + sum(n - 1));

}

}

Java programming


Searching
搜尋 (searching)

  • 循序搜尋法(sequential search)

  • 二元搜尋法(binary search)

  • 内插搜尋法(interpolation search)

  • 費氏搜尋法(Fibonacci search)

Java programming


Recursive binary search
Recursive Binary Search

public static int search (int[] a, int first, int size, int target) {   int middle;

  if (size <= 0)     return -1;   else   {     middle = first + size/2;     if (target == a[middle])       return middle;     else if (target < a[middle])       // the target is less than a[middle], so search before the middle       return search(a, first, size/2, target);     else       // the target must be greater than a[middle], so search after the middle       return search(a, middle+1, (size-1)/2, target);   } }

Java programming


演習 13: 再帰呼び出し

Java programming


ご清聴ありがとう 御座居ました。

  • 今後とも、よろしくお願いいたします。

  • メールはいつでもかまいません。

Java programming


Java プログラミングの終わりです。 ご苦労様でした。

Java programming


ad