狠狠撸

狠狠撸Share a Scribd company logo
メディアテクノロジー講座 Java入門 
講師:総合情報センター横田秀和
2 
講座のスケジュール 
?1日目 
–1章Javaの特徴 
–2章プログラミングの流れ 
?2日目 
–3章プログラム形式 
?3日目 
–4章Javaの文法:~4.6 反復処理(do-while) 
?4日目 
–4章Javaの文法:4.7 その他の制御文~ 
–5章アプレットの作成:~5.1 日時表示アプレットVer.1 
?5日目 
–5章アプレットの作成:5.2 日時表示アプレットVer.2~
3 
1章Javaとは? 
?初めてのプログラミング言語? 
?他の言語? 
?Javaのプログラミング経験? 
?Javaに興味を持った理由?
4 
1.1 Javaの特徴 
?1995年にSun Microsystemsが発表 
?オブジェクト指向 
?様々なOSに対応している 
?Webページ上で実行可能 
?文法がC/C++に似ている
5 
1.1 Javaの特徴 
? オブジェクト指向 
– OO:Object Oriented 
– OOP:Object Oriented Programing 
? 全てのモノをオブジェクトと考える 
? 開発効率の向上 
? 小規模なプログラムではメリット無し?
6 
1.1 Javaの特徴 
?様々なOSに対応している 
?Webページ上で実行可能 
–Write Once, Run Anywhere.
7 
1.1 Javaの特徴 
?Webページ上で実行可能 
?補足資料のJavaサポートページ 
–サンプルアプレット 
–Java2 SDK Standard Edition ドキュメント 
?→アプレットとアプリケーションのデモンストレーション 
?→デモアプレット
8 
1.1 Javaの特徴 
?文法がC/C++に似ている 
?初めてプログラミング言語をやる人は関係なし? 
?その後役立つかも? 
?文法は似ているが、欠点は排除 
Java プログラム例 
C プログラム例 
ClassSum{ 
#include<stdio.h> 
publicstaticvoidmain(Stringargs[]){ 
voidmain(){ 
intn=0; 
inti,n=0; 
for(inti=1;i<=100;i++){ 
for(i=1;i<=100;i++){ 
n+=i; 
n+=i; 
} 
} 
System.out.println("Answer:"+n); 
printf("Answer:%d?n",n); 
} 
} 
}
9 
1.1 Javaの特徴 
?携帯電話で実行可能 
?サーバ技術(JSP:Java Server Pages) 
–http://121ware.com/
10 
1.1 Javaの特徴 
?Javaの欠点 
–実行速度が遅い 
?徐々に解決(JIT,HotSpot) 
–オブジェクト指向が理解しにくい 
?抽象的な解説をどのように理解するか? 
–JavaScriptと間違われる 
?名前以外は違います
11 
1.2 JavaとJavaScriptとの違い 
?JavaScriptとは? 
–Netscape Communicationsが開発したスクリプト言語 
–Webページを構成するHTMLに記述可能 
–Webブラウザに関する操作やWebページの拡張に使用 
Java プログラム例 
JavaScript プログラム例 
ClassSum{ 
publicstaticvoidmain(Stringargs[]){ 
<SCRIPTLANGUAGE="JavaScript"> 
intn=0; 
n=0 
for(inti=1;i<=100;i++){ 
for(i=1;i<=100;i++){ 
n+=i; 
n+=i 
} 
} 
System.out.println("Answer:"+n); 
document.writeln("Answer:",n) 
} 
</SCRIPT> 
}
12 
2章プログラミングの流れ 
ソースファイルの作成 
コンパイル 
実行
13 
2.1 ソースファイルの作成 
?コマンドプロンプトを起動 
?メモ帳またはEmEditorでソースファイルを作成 
?(補足資料を参照)
14 
2.1 ソースファイルの作成 
?> notepad Sample.java 
行 
ソースファイル(Sample.java) 
1 
classSample{ 
2 
publicstaticvoidmain(Stringargs[]){ 
3 
System.out.println("Thisisasampleprogram."); 
4 
} 
5 
}
15 
2.2 コンパイルを実行し クラスファイルを生成 
?> javac Sample.java 
?エラーが表示 
–再編集する 
?正常にコンパイル 
–dirコマンドでSample.classを確認
16 
2.3 JavaVM上で クラスファイルを実行 
?> java Sample 
?期待通りの実行でなければ再編集 
Windows 
Macintosh 
UNIX 
JavaVM 
クラスファイル
17 
講座のスケジュール 
?1日目 
–1章Javaの特徴 
–2章プログラミングの流れ 
?2日目 
–3章プログラム形式 
?3日目 
–4章Javaの文法:~4.6 反復処理(do-while) 
?4日目 
–4章Javaの文法:4.7 その他の制御文~ 
–5章アプレットの作成:~5.1 日時表示アプレットVer.1 
?5日目 
–5章アプレットの作成:5.2 日時表示アプレットVer.2~
18 
3章プログラム形式 3.1ソースファイルの構造 
行 
ソースファイル(Sample.java) 
1 
classSample{ 
2 
publicstaticvoidmain(Stringargs[]){ 
3 
System.out.println("Thisisasampleprogram."); 
4 
} 
5 
} 
クラス名の宣言 
メソッドの定義 
メソッドの内容
19 
3.1ソースファイルの構造 
?1行目:class Sample{ 
–「Sample」という名前のクラスであることを宣言 
–Javaでは、オブジェクトの単位をクラスと言う 
–Javaプログラミング=クラスの作成 
?1から作成する場合もあれば、 
?他のクラスを使って変更点だけ作成する場合もある。 
–“{~}”の中にクラスの定義を書く
20 
3.1ソースファイルの構造 
?2行目:public staticvoid main( String args[] ){ 
–Sampleクラスのメソッド“main()”の定義 
–実際に処理される内容 
–C言語のmain()関数と同じ 
–“{~}”の中にメソッドの処理を書く
21 
3.1ソースファイルの構造 
?3行目:System.out.println( "This is a sample program."); 
–“~”で囲まれている文字列を画面に表示 
–“;”は命令文の最後を表す
22 
3.1ソースファイルの構造 
?4行目:} 
–2行目のmain()メソッドの終わりを表す 
?5行目:} 
–1行目のSampleクラスの終わりを表す 
?“{”と“}”の数は必ず一致 
?対応するカッコをインデント
23 
3.1ソースファイルの構造 
classクラス名{ 
データの定義 
: 
: 
メソッドの定義(メソッドの引数){ 
: 
} 
: 
: 
}
24 
3.1ソースファイルの構造 
?オブジェクト指向の考え方 
?例:車クラス 
–メソッド:走る,曲がる,止まる,ライトを点ける… 
–データ:名前,大きさ,乗車定員,スピード… 
車 
スポーツカー 
セダン 
ワゴン 
最高時速UP 
快適さUP 
定員UP
25 
3.1ソースファイルの構造 
?例:Sampleクラス 
?例:Systemクラス 
System 
in 
out 
print() 
println() 
err 
exit() 
Sample 
main() 
クラスとメソッドやデータは、 それぞれの名前の区切りに “.(ピリオド)”を使用 (例)System.out.println()
26 
3.2 コンソールアプリケーション 
?コマンドを入力して実行するもの 
?表示する文字列を変更して 再度コンパイル&実行 
行 
ソースファイル(CApp.java) 
1 
classCApp{ 
2 
publicstaticvoidmain(Stringargs[]){ 
3 
System.out.println("Thisisasampleconsoleapplication."); 
4 
} 
5 
} 
CAppクラス 
main()メソッド
27 
3.2 アプレット 
?Webブラウザ上で実行するもの 
行 
ソースファイル(Aplt.java) 
1 
importjava.applet.Applet; 
2 
importjava.awt.Graphics; 
3 
4 
publicclassApltextendsApplet{ 
5 
publicvoidpaint(Graphicsg){ 
6 
g.drawString("Thisisasampleapplet.",20,20); 
7 
} 
8 
} 
java.applet.Applet 
Apltクラス 
paint()メソッド
28 
3.2 アプレット 
?Webブラウザ表示用のHTMLファイルが必要 
?g.drawString()内の文字列を変更 
?g.drawString()内の表示位置を変更 
?HTMLファイル内のHEIGHTとWIDTHを変更 
行 
HTMLファイル(Aplt.html) 
1 
<APPLETCODE="Aplt.class"WIDTH="320"HEIGHT="60"> 
2 
</APPLET>
29 
3.3 ウィンドウアプリケーション 
?ウィンドウが表示されて実行されるもの 
行 
ソースファイル(WApp.java) 
1 
importjava.awt.*; 
2 
3 
classWAppextendsFrame{ 
4 
publicWApp(){ 
5 
setSize(320,60); 
6 
} 
7 
8 
publicvoidpaint(Graphicsg){ 
9 
g.drawString("Thisisasamplewindowapplication",20,40); 
10 
} 
11 
12 
publicstaticvoidmain(Stringargs[]){ 
13 
WAppwa=newWApp(); 
14 
wa.show(); 
15 
} 
16 
} 
java.awt.Frame 
WAppクラス 
paint()メソッド 
main()メソッド 
コンストラクタ
30 
3.3 ウィンドウアプリケーション 
?ウィンドウの処理は、 その機能を実装(implement)する必要あり 
?コンストラクタ内のsetSize()を変更 
?g.drawString()内の文字列を変更 
?g.drawString()内の表示位置を変更
31 
3.2 アプレット 3.3 ウィンドウアプリケーション 
?paint()メソッド内で実行できるメソッド 
–drawString( 文字列,X始点,Y始点) 
–drawLine( X始点,Y始点,X終点,Y終点) 
–drawRect( X始点,Y始点,幅,高さ) 
–drawOval( X中心,Y中心,幅,高さ) 
?fillRect,fillOvalにすると塗りつぶし 
(0,0) 
(Xmax,Ymax)
32 
講座のスケジュール 
?1日目 
–1章Javaの特徴 
–2章プログラミングの流れ 
?2日目 
–3章プログラム形式 
?3日目 
–4章Javaの文法:~4.6 反復処理(do-while) 
?4日目 
–4章Javaの文法:4.7 その他の制御文~ 
–5章アプレットの作成:~5.1 日時表示アプレットVer.1 
?5日目 
–5章アプレットの作成:5.2 日時表示アプレットVer.2~
33 
4章Javaの文法 
?まずは、Calc.javaを実行 
–C:?user>javacCalc.java 
– 
–C:?user>javaCalc 
–7+5=12 
–7-5=2 
–7*5=35 
–7/5=1...2
34 
4.1Javaの基本事項 
?変数とは? 
–数値や文字など様々なデータが入るもの 
–データの種類により「型」がある 
–内容を表す名前を付ける 
7 
i 
j 
i 
j 
+ 
= 12 
5
35 
4.1Javaの基本事項 
?変数の型 
–整数型,実数型,boolean型,文字型 
型の名称 
宣言文 
値の範囲 
整数型 
int 
-2,147,483,648~+2,147,483,647 
(-21X108~21X108) 
倍精度実数型 
double 
±4.94065645841246544E-324 
~±1.79769313486231570E+308 
(±4.9X10-324~±1.7X10308) 
boolean型 
boolean 
true,false 
文字型 
char 
'a'
36 
4.1Javaの基本事項 
?宣言文や命令文の記述 
?文の最後には“;(セミコロン)”が必要 
–int i,j,s,d,p,q,r; 
–s = i + j; 
–System.out.println( i + " + " + j + " = " + s); 
?文が“{~}”を伴う場合は不必要
37 
4.1Javaの基本事項 
?識別子(クラス名,メソッド名,変数名,etc.) 
–1文字目:A~Z,a~z,“_”,“$” 
–2文字目以降:0~9も使用可 
–予約語は使用不可 
–文字数の制限は特に無し 
?予約語 
–プログラム中で意味のある文字列 (例)class,public ,static ,void ,main
38 
4.1Javaの基本事項 
?算術演算子 
–計算を行うために使う記号 
= 
代入 
+ 
足し算 
- 
引き算 
* 
掛け算 
/ 
割り算 
% 
剰余 
+= 
和を代入 
-= 
差を代入 
*= 
積を代入 
/= 
商を代入 
++ 
インクリメント 
-- 
デクリメント
39 
4.1Javaの基本事項 
?コメント文 
–プログラムの説明などに使用 
–実行には影響無し 
–//変数の宣言???1行コメント 
–/*変数の宣言*/???囲んだ範囲がコメント
40 
4.1Javaの基本事項 
?制御文 
条件分岐 
if–else 
switch–case 
反復処理 
for 
while 
dowhile 
その他の制御文 
break 
continue 
return
41 
4.2条件分岐(if-else) 
?与えられた条件にしたがって処理を分岐 
if(条件式){ 
処理 
} 
if(条件式){ 
処理1 
}else{ 
処理2 
} 
if(携帯電話を所持){ 
電話番号を教えて下さい 
} 
if(携帯電話を所持){ 
機種変更しませんか? 
}else{ 
新規申込だと安いよ? 
}
42 
4.2条件分岐(if-else) 
?条件式には関係演算子を使用 
== 
一致 
!= 
不一致 
> 
大小の比較 
< 
>= 
大小の比較 (値を含む) 
<= 
&& 
論理積 
|| 
論理和 
条件式の例 
a==0aは0 
a>0aは正の数 
a>=18aは18以上
43 
4.2条件分岐(if-else) 
?論理積と論理和 
論理積(AND) 
AとBが両方成立 
条件A 
条件B 
条件A:偶数 
条件B:10以下 
論理積:条件A && 条件B 
2 
4 
8 
6 
12 
10 
14 
20 
32 
9 
7 
5 
3 
-3 
1 
11 
13 
21 
53
44 
4.2条件分岐(if-else) 
?論理積と論理和 
論理和(OR) 
AとBのどちらかが成立 
条件A 
条件B 
条件A:偶数 
条件B:10以下 
論理和:条件A || 条件B 
2 
4 
8 
6 
12 
10 
14 
20 
32 
9 
7 
5 
3 
-3 
1 
11 
13 
21 
53
45 
4.2条件分岐(if-else) 
1 
classTestIf{ 
2 
publicstaticvoidmain(Stringargs[]){ 
3 
inti,j; 
4 
i=j=0; 
5 
try{ 
6 
i=Integer.parseInt(args[0]); 
7 
}catch(Exceptione){ 
8 
System.err.println("入力エラー"); 
9 
System.exit(1); 
10 
} 
iとjに0を代入
46 
4.2条件分岐(if-else) 
11 
j=i%2; 
12 
if(j==0){ 
13 
System.out.println("それは偶数です。"); 
14 
}else{ 
15 
System.out.println("それは奇数です。"); 
16 
} 
17 
} 
18 
}
47 
4.3条件分岐(switch-case) 
?判断する値に応じて処理を分岐 
switch(式){ 
case値1: 
処理1 
break; 
case値2: 
処理2 
break; 
: 
case値n: 
処理n 
break; 
default: 
処理x 
} 
switch(マラソンの順位){ 
case1: 
金メダルの授与 
break; 
case2: 
銀メダルの授与 
break; 
case3: 
銅メダルの授与 
break; 
default: 
参加賞をあげる 
}
48 
4.3条件分岐(switch-case) 
1 
classTestSwitch{ 
2 
publicstaticvoidmain(Stringargs[]){ 
3 
inti=0; 
4 
try{ 
5 
i=Integer.parseInt(args[0]); 
6 
}catch(Exceptione){ 
7 
System.out.println("入力エラー"); 
8 
System.exit(1); 
9 
} 
宣言と同時に値を代入
49 
4.3条件分岐(switch-case) 
10 
switch(i){ 
11 
case1: 
12 
System.out.println("数字の1は工場の煙突です。"); 
13 
break; 
14 
case2: 
15 
System.out.println("数字の2はお池のあひるです。"); 
16 
break; 
17 
case3: 
18 
System.out.println("数字の3は赤ちゃんのお耳です。"); 
19 
break; 
20 
default: 
21 
System.out.println("1から3までの数字を指定してください。 "); 
22 
} 
23 
} 
24 
}
50 
4.4反復処理(for) 
?条件が成立する間繰り返して処理 
for(式1;式2;式3){ 
処理 
} 
for(??????入り時間;??????終了時間まで;1分経過){ 
仕事 
} 
式1 
式2 
処理 
式3 
true 
false 
次の処理へ 
forループ
51 
4.4反復処理(for) 
1 
classTestFor{ 
2 
publicstaticvoidmain(Stringargs[]){ 
3 
intn,sum; 
4 
n=sum=0; 
5 
try{ 
6 
n=Integer.parseInt(args[0]); 
7 
}catch(Exceptione){ 
8 
System.out.println("入力エラー"); 
9 
System.exit(1); 
10 
}
52 
4.4反復処理(for) 
11 
for(inti=1;i<=n;i++){ 
12 
sum+=i; 
13 
} 
14 
System.out.println("1から"+n+"までの合計は、"+sum+"です。"); 
15 
} 
16 
} 
iはforループの中でのみ有効
53 
4.5反復処理(while) 
?条件が成立する間繰り返して処理 
while(条件式){ 
処理 
} 
条件式 
処理 
true 
false 
次の処理へ 
whileループ 
while(最後まで読んだ){ 
次のページを読む 
}
54 
4.5反復処理(while) 
1 
classTestWhile{ 
2 
publicstaticvoidmain(Stringargs[]){ 
3 
intn,sum; 
4 
n=sum=0; 
5 
try{ 
6 
n=Integer.parseInt(args[0]); 
7 
}catch(Exceptione){ 
8 
System.out.println("入力エラー"); 
9 
System.exit(1); 
10 
}
55 
4.5反復処理(while) 
11 
inti=1; 
12 
while(i<=n){ 
13 
sum+=i; 
14 
i++; 
15 
} 
16 
System.out.println("1から"+n+"までの合計は、"+sum+"です "); 
17 
} 
18 
}
56 
4.6反復処理(do-while) 
?条件が成立する間繰り返して処理 
do{ 
処理 
}while(条件式); 
do{ 
宝くじを買う 
}while(はずれ); 
条件式 
処理 
true 
false 
次の処理へ 
do-whileループ
57 
4.6反復処理(do-while) 
1 
classTestDo{ 
2 
publicstaticvoidmain(Stringargs[]){ 
3 
intn,sum; 
4 
n=sum=0; 
5 
try{ 
6 
n=Integer.parseInt(args[0]); 
7 
}catch(Exceptione){ 
8 
System.out.println("入力エラー"); 
9 
System.exit(1); 
10 
}
58 
4.6反復処理(do-while) 
11 
inti=1; 
12 
do{ 
13 
sum+=i; 
14 
i++; 
15 
}while(i<=n); 
16 
System.out.println("1から"+n+"までの合計は、"+sum+"です。 "); 
17 
} 
18 
}
59 
4.5反復処理(while) 4.6反復処理(do-while) 
?forとwhileの使い分け 
–for:変数の値を変化させながらの反復処理 
–while:数値を使わない反復処理(ファイル読込など) 
?whileとdo-whileの違い 
–while:条件を判断してから処理を実行 
?→実行されない場合もありうる 
–do-while:処理を実行してから条件を判断 
?→少なくとも1回は実行される
60 
4.1~4.6までのまとめ 
?TestIf.java 
–12行目をif ( j==1 ){ ...にして、 結果が正しく表示されるようにしてみる 
?TestSwitch.java 
–それぞれのcaseのbreakを取ってみる 
?TestFor.java,TestWhile.java,TestDo.java 
–0までの合計を求めてみる
61 
講座のスケジュール 
?1日目 
–1章Javaの特徴 
–2章プログラミングの流れ 
?2日目 
–3章プログラム形式 
?3日目 
–4章Javaの文法:~4.6 反復処理(do-while) 
?4日目 
–4章Javaの文法:4.7 その他の制御文~ 
–5章アプレットの作成:~5.1 日時表示アプレットVer.1 
?5日目 
–5章アプレットの作成:5.2 日時表示アプレットVer.2~
62 
4.7その他の制御文 (break,continue,return) 
?break 
–実行中のループ,ブロックから抜ける 
–if-else,switch-case,for,while,do-whileで使用 
...{ 
処理1 
break; 
処理2 
} 
処理3 
処理1の後、 
処理2は実行されず、 
処理3が実行される。
63 
4.7その他の制御文 (break,continue,return) 
?continue 
–次の繰り返し処理に移る 
–for,while,do-whileで使用 
...{ 
処理1 
continue; 
処理2 
} 
処理3 
処理1の後、 
処理2は実行されず、 
再度処理1が実行される。 
ループが終了したら、 
処理3が実行される。
64 
4.7その他の制御文 (break,continue,return) 
?return 
–呼び出されたメソッドに復帰 
型宣言メソッド名(引数){ 
処理 
return返り値; 
} 
メソッドの型がvoidの場合、 
returnは必要ない。
65 
4.8例外処理(try-catch-finally) 
?例外が発生したときの処理を定義 
–例外とは想定されていない処理 
–(例)アルファベットを数字に変換 
try{ 
処理1(例外が発生する可能性のある処理) 
}catch(例外クラス例外オブジェクト){ 
処理2(例外が発生した場合の処理) 
}finally{ 
処理3(例外の発生に関わらず実行する処理) 
}
66 
4.8例外処理(try-catch-finally) 
?例外クラス 
java.lang.Exception 
ArrayIndexOutOfBoundsException 
(配列の添え字が範囲外) 
NumberFormatException 
(文字列から数値に変換できない) 
ClassNotFoundException 
(クラスが見つからない)
67 
4.8例外処理(try-catch-finally) 
1 
classTestTry{ 
2 
publicstaticvoidmain(Stringargs[]){ 
3 
intn,sum; 
4 
n=sum=0; 
5 
try{ 
6 
n=Integer.parseInt(args[0]); 
7 
}catch(ArrayIndexOutOfBoundsExceptione){ 
8 
System.out.println("第1引数を指定してください。"); 
9 
System.exit(1); 
10 
}catch(NumberFormatExceptione){ 
11 
System.out.println("整数を指定してください。"); 
12 
System.exit(1);
68 
4.8例外処理(try-catch-finally) 
13 
}catch(Exceptione){ 
14 
System.out.println("その他の入力エラー"); 
15 
System.exit(1); 
16 
} 
17 
for(inti=1;i<=n;i++){ 
18 
sum+=i; 
19 
} 
20 
System.out.println("1から"+n+"までの合計は、"+sum+"です。 "); 
21 
} 
22 
}
69 
4.9練習問題 
問題入力された年が閏年かどうかを調べるプログラ ムを作成しましょう。 なお、閏年の条件は次のとおりです。 ?4で割り切れる年を閏年とする ?ただし、100で割り切れる場合は除外する ?なお、400で割り切れる場合は閏年とする
70 
全ての年 
4.9練習問題 
?まずは自分で考えてみる 
–1.西暦何年について調べるのか? 
–2.その年は閏年の条件に当てはまるかどうか? 
4で割り切れる 
100で割り切れる 
400で割り切れる
71 
4.9練習問題 
?プログラミングを行う場合 
–1.使用する変数の宣言 
–2.西暦何年について調べるのか?(年の入力) 
–3.その年は閏年の条件に当てはまるかどうか? 
–4.結果の表示
72 
4.9練習問題 
?プログラミングを行う場合その2 
–1.使用する変数の宣言 
–2.入力された年を整数型に変換 
–3.変換時にエラーが発生した場合の処理 
–4.その年は閏年の条件に当てはまるかどうか? 
–5.結果の表示
73 
4.9練習問題 
1 
classLeapYear{ 
2 
//閏年の条件 
3 
//(1)4で割り切れる 
4 
//(2)100で割り切れない 
5 
//(3)400で割り切れる 
6 
publicstaticvoidmain(Stringargs[]){ 
7 
//①使用する変数の宣言 
8 
inti=0,x,y,z;
74 
4.9練習問題 
9 
try{ 
10 
//②入力された年は文字型なので整数型に変換 
11 
i=Integer.parseInt(args[0]); 
12 
}catch(ArrayIndexOutOfBoundsExceptione){ 
13 
//③変換時にエラーが発生した場合の処理その1 
14 
System.out.println("第1引数を指定してください。"); 
15 
System.exit(1); 
16 
}catch(NumberFormatExceptione){ 
17 
//③変換時にエラーが発生した場合の処理その2 
18 
System.out.println("数字を指定してください。"); 
19 
System.exit(1); 
20 
}
75 
4.9練習問題 
21 
x=i%4;//年を4で割る 
22 
y=i%100;//年を100で割る 
23 
z=i%400;//年を400で割る 
24 
//④その年は閏年の条件に当てはまるかどうか 
25 
if(x==0&&y!=0||z==0){ 
26 
//⑤結果の表示閏年の場合 
27 
System.out.println(i+"年は、閏年です。"); 
28 
}else{ 
29 
//⑤結果の表示閏年でない場合 
30 
System.out.println(i+"年は、閏年ではありません。"); 
31 
} 
32 
} 
33 
}
76 
5章アプレットの作成 
?Javaプログラミングの実践として 日時表示アプレットを作成 
–Ver.1:日時を表示するだけ 
–Ver.2:アプレットのデザインを変える 
–Ver.3:時を刻むように
77 
5.1日時表示アプレットVer.1 
1 
importjava.applet.*; 
2 
importjava.awt.*; 
3 
importjava.util.*; 
4 
5 
publicclassWhatTimeextendsApplet{ 
6 
publicvoidpaint(Graphicsg){ 
7 
Strings; 
8 
Dated=newDate(); 
9 
s=d.toString(); 
10 
g.drawString(s,10,30); 
11 
} 
12 
}
78 
5.1日時表示アプレットVer.1 
?1行目:import java.applet.*; 
?2行目:import java.awt.*; 
?3行目:import java.util.*; 
–使用するクラスライブラリの宣言 
→アプレットの作成にAppletクラスを使用 
→描画するためにGraphicsクラスを使用 
→現在日時を調べるためにDateクラスを使用
79 
5.1日時表示アプレットVer.1 
?5行目:public class WhatTimeextends Applet { 
–クラスの名前を宣言 
–Appletクラスのサブクラスとして作成 
java.applet.Applet 
WhatTimeクラス 
継承 
スーパークラス 
サブクラス
80 
5.1日時表示アプレットVer.1 
?6行目:public void paint( Graphics g ) { 
–アプレットの描画を行うメソッド 
–アプレットが表示される度に実行される 
–Graphicsクラスのオブジェクトを使用 
?7行目:String s; 
–日時の文字列に使用するオブジェクトの宣言
81 
5.1日時表示アプレットVer.1 
?8行目:Date d = new Date(); 
–現在の日時を取得する 
–Dateクラスは日時を扱う一般的なオブジェクト →現在日時を表す具体的なオブジェクトを使う 
–「Dateクラスのインスタンスを生成」と言う 
申請書 
氏名: 
?????? 
?????? 
申請書 
氏名: 
?????? 
?????? 
申請書 
氏名: 
?????? 
?????? 
申請書 
氏名:横田 
?????? 
?????? 
横 
田
82 
5.1日時表示アプレットVer.1 
?9行目:s = d.toString(); 
–8行目で生成したDateクラスのインスタンスを 文字列に変換 
–toString()メソッドはDateクラスのメソッド 
–Dateクラスについて調べてみると??? →総合情報センターWebページ →設定方法?利用方法?Q&A→ソフトウエア?ツールの利用 →Java2 SDK Standard Edition ドキュメント →API と言語仕様 →Java2プラットフォームAPI仕様 →左下のフレームから2番目のDateクラスを選択
83 
5.1日時表示アプレットVer.1 
?10行目:g.drawString( s, 10, 30 ); 
–日時の文字列を描画 
–描画位置は左上が原点 
–アプレットのサイズは<APPLET>タグで定義 
(0,0) 
(Xmax,Ymax) 
X位置 
Y位置
84 
5.1日時表示アプレットVer.1 
?アプレットの実行には HTMLファイルも必要 
–CODE:アプレットのクラスファイル名 
–WIDTH:アプレットを表示する領域の幅 
–HEIGHT:アプレットを表示する領域の高さ 
1 
<APPLETCODE="WhatTime.class"WIDTH="320"HEIGHT="40"> 
2 
</APPLET>
85 
5.1日時表示アプレットVer.1 
?> appletviewer WhatTime.html 
?アプレットビューアで実行した場合 <APPLET>タグ以外は無視される
86 
講座のスケジュール 
?1日目 
–1章Javaの特徴 
–2章プログラミングの流れ 
?2日目 
–3章プログラム形式 
?3日目 
–4章Javaの文法:~4.6 反復処理(do-while) 
?4日目 
–4章Javaの文法:4.7 その他の制御文~ 
–5章アプレットの作成:~5.1 日時表示アプレットVer.1 
?5日目 
–5章アプレットの作成:5.2 日時表示アプレットVer.2~
87 
5.2日時表示アプレットVer.2 
?アプレットのデザインを変える 
–アプレットに色を付ける(背景色?文字色) 
–フォントを変更する
88 
5.2日時表示アプレットVer.2 
1 
importjava.applet.*; 
2 
importjava.awt.*; 
3 
importjava.util.*; 
4 
5 
publicclassWhatTime2extendsApplet{ 
6 
publicvoidinit(){ 
7 
setBackground(Color.blue); 
8 
Fontf=newFont("Serif",Font.BOLD,14); 
9 
setFont(f); 
10 
}
89 
5.2日時表示アプレットVer.2 
11 
12 
publicvoidpaint(Graphicsg){ 
13 
Strings; 
14 
Dated=newDate(); 
15 
s=d.toString(); 
16 
g.setColor(Color.cyan); 
17 
g.drawString(s,10,30); 
18 
} 
19 
}
90 
5.2日時表示アプレットVer.2 
?6行目:public void init(){ 
–アプレットの起動時に実行されるメソッド (その後paint()メソッドが実行される) 
–アプレット全体に関係する処理を記述 
?背景色の設定 
?全体で使用するフォントの設定
91 
5.2日時表示アプレットVer.2 
?7行目:setBackground( Color.blue ); 
–アプレットの背景色を指定 
–予め定義されている色は サンプルアプレットの ColorList.htmlを参照 
–任意の色を作成可能
92 
5.2日時表示アプレットVer.2 
?8行目:Font f = new Font( "Serif", Font.BOLD, 14 ); 
–使用するフォントのインスタンスを生成 
–書体,スタイル,サイズを指定 
–使用できるフォントの種類は サンプルアプレットの FontList.htmlを参照
93 
5.2日時表示アプレットVer.2 
?9行目:setFont( f ); 
–8行目で生成したFontクラスのインスタンスを 使用するように設定
94 
5.2日時表示アプレットVer.2 
?16行目:g.setColor( Color.cyan ); 
–描画に使用する色の設定 
–これにより次行のdrawString()で描画される 文字列が水色になる 
–複数の描画オブジェクトの色を変更する場合は、 その都度宣言しなければならない
95 
5.2日時表示アプレットVer.2 
?ソースファイルを変更した時??? 
–前に読み込んだアプレットがそのまま実行される 
?InternetExplorerの場合 
–[CTRL]キー+[更新] 
?NetscapeNavigatorの場合 
–[SHIFT]キー+[再読み込み]
96 
5.3日時表示アプレットVer.3 
?時を刻むように??? 
–現在時刻の再取得 
–画面を再描画 
スレッドの実装
97 
5.3日時表示アプレットVer.3 
?「スレッド」とは「処理の単位」 
アプレットの読み込み 
初期化 
表示 
終わり 
ウィンドウを閉じる、別のページ を表示するなどにより、ページの 表示が切り替わったら… 
アプレットのスレッド 
時刻の表示を 更新し続ける 
スレッド生成 
スレッド終了 
時計表示のスレッド 
マルチスレッド
98 
5.3日時表示アプレットVer.3 
1 
importjava.applet.*; 
2 
importjava.awt.*; 
3 
importjava.util.*; 
4 
5 
publicclassWhatTime3extendsAppletimplementsRunnable{ 
6 
Threadtrd; 
7 
8 
publicvoidinit(){ 
9 
setBackground(Color.white); 
10 
Fontf=newFont("Dialog",Font.BOLD,12); 
11 
setFont(f); 
12 
}
99 
5.3日時表示アプレットVer.3 
13 
14 
publicvoidpaint(Graphicsg){ 
15 
Strings; 
16 
Dated=newDate(); 
17 
s=d.toString(); 
18 
g.setColor(Color.black); 
19 
g.drawString(s,10,30); 
20 
} 
21
100 
5.3日時表示アプレットVer.3 
22 
publicvoidrun(){ 
23 
while(trd!=null){ 
24 
try{ 
25 
Thread.sleep(1000); 
26 
}catch(Exceptione){ 
27 
System.out.println(e); 
28 
} 
29 
repaint(); 
30 
} 
31 
}
101 
5.3日時表示アプレットVer.3 
32 
33 
publicvoidstart(){ 
34 
trd=newThread(this); 
35 
trd.start(); 
36 
} 
37 
38 
publicvoidstop(){ 
39 
trd=null; 
40 
} 
41 
}
102 
5.3日時表示アプレットVer.3 
?5行目:public class WhatTime3extends Appletimplements Runnable{ 
–Appletクラスのサブクラスを作成 
–Runnableインターフェースを実装 
?これによりマルチスレッドが使用可能 
?run()メソッドを定義しなければならない
103 
5.3日時表示アプレットVer.3 
?単一継承と多重継承 
–新しくクラスを作成するとき??? 
?Java:元となるクラスを1つしか指定できない(単一継承) 
?C++:元となるクラスを複数指定できる(多重継承) 
–単一継承の欠点を補う方法 
?インターフェースは複数実装できる 
?(例)MouseListener,MouseMotionListener
104 
5.3日時表示アプレットVer.3 
?6行目:Thread trd; 
–Threadクラスのオブジェクト 
–時計表示のスレッドを扱うために必要 
–class宣言の直後に宣言することにより このクラス全体で使用可能
105 
5.3日時表示アプレットVer.3 
?22行目:public void run(){ 
–時計表示のスレッドを記述 
–Runnableインターフェースを実装する場合は 必ず定義
106 
5.3日時表示アプレットVer.3 
?23行目:while( trd != null ){ 
–trd:時計表示スレッドを扱うオブジェクト 
–null:何も値がない 
–trdに何らかの値が設定されないと whileループは実行されない 
–trdオブジェクトが時計表示スレッドの実行を開始/ 停止
107 
5.3日時表示アプレットVer.3 
?25行目:Thread.sleep( 1000 ); 
–時計表示を1秒ごとに行うために 1000ミリ秒処理を停止 
?29行目:repaint(); 
–画面の再描画を行う 
–アプレットを背景色で塗りつぶした後に paint()メソッドを実行
108 
5.3日時表示アプレットVer.3 
?33行目:public void start(){ 
–アプレットの処理が開始されたときに実行される メソッド 
–init()メソッドの後に実行される
109 
5.3日時表示アプレットVer.3 
?34行目:trd = new Thread( this ); 
–trdオブジェクトにインスタンスを生成 
?35行目:trd.start(); 
–run()メソッドを実行 
–trdオブジェクトはnullでないのでwhileループが 実行される
110 
5.3日時表示アプレットVer.3 
?38行目:public void stop(){ 
–アプレットの処理が終了されるときに実行される メソッド 
–時計表示の更新を止める 
?39行目:trd = null; 
–trdオブジェクトをnullにし、 23行目のwhileループを終了させる
111 
講座のスケジュール 
?1日目 
–1章Javaの特徴 
–2章プログラミングの流れ 
?2日目 
–3章プログラム形式 
?3日目 
–4章Javaの文法:~4.6 反復処理(do-while) 
?4日目 
–4章Javaの文法:4.7 その他の制御文~ 
–5章アプレットの作成:~5.1 日時表示アプレットVer.1 
?5日目 
–5章アプレットの作成:5.2 日時表示アプレットVer.2~
112 
学習を進めるために??? 
?いろいろなプログラムを見る 
–Java関連書籍(図書館にもあり) 
–Yahoo!でJavaを検索 
?簡単なテーマを考える 
–簡単な計算を行う(BMI指数) 
–アプレットにお絵描き
113 
学習を進めるために??? 
?サポートページに紹介されているリンクを活用 
–JavaFAQ : What's New about Java(Javaに関する最新ニュース) 
–JavaFAQ : Java に関するよくある質問とその回答集 
–日経Javaレビュー 
–Java(tm) House Mailing List Homepage 
–Java Glossary 
–Java Drive

More Related Content

What's hot (20)

LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
?
Thinking in Cats
Thinking in CatsThinking in Cats
Thinking in Cats
Eugene Yokota
?
【尝罢版】贰濒颈虫颈谤入门「第7回:笔测迟丑辞苍/碍别谤补蝉を贰濒颈虫颈谤から繋いでアレコレする」
【尝罢版】贰濒颈虫颈谤入门「第7回:笔测迟丑辞苍/碍别谤补蝉を贰濒颈虫颈谤から繋いでアレコレする」【尝罢版】贰濒颈虫颈谤入门「第7回:笔测迟丑辞苍/碍别谤补蝉を贰濒颈虫颈谤から繋いでアレコレする」
【尝罢版】贰濒颈虫颈谤入门「第7回:笔测迟丑辞苍/碍别谤补蝉を贰濒颈虫颈谤から繋いでアレコレする」
fukuoka.ex
?
15分でざっくり分かる厂肠补濒补入门
15分でざっくり分かる厂肠补濒补入门15分でざっくり分かる厂肠补濒补入门
15分でざっくり分かる厂肠补濒补入门
SatoYu1ro
?
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
Tatsumi Naganuma
?
齿迟别苍诲30分クッキング やきに駆動
齿迟别苍诲30分クッキング   やきに駆動齿迟别苍诲30分クッキング   やきに駆動
齿迟别苍诲30分クッキング やきに駆動
Shinichi Kozake
?
搁ユーサ?のための蝉辫补谤办入门
搁ユーサ?のための蝉辫补谤办入门搁ユーサ?のための蝉辫补谤办入门
搁ユーサ?のための蝉辫补谤办入门
Shintaro Fukushima
?
Java puzzlers 2013 at JavaFesta Japan
Java puzzlers 2013 at JavaFesta JapanJava puzzlers 2013 at JavaFesta Japan
Java puzzlers 2013 at JavaFesta Japan
Yoshio Terada
?
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
Yoshitaka Fujii
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
あなたの厂肠补濒补を爆速にする7つの方法(日本语版)
あなたの厂肠补濒补を爆速にする7つの方法(日本语版)あなたの厂肠补濒补を爆速にする7つの方法(日本语版)
あなたの厂肠补濒补を爆速にする7つの方法(日本语版)
x1 ichi
?
ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)
libpanda
?
齿迟别苍诲30分クッキング
齿迟别苍诲30分クッキング齿迟别苍诲30分クッキング
齿迟别苍诲30分クッキング
Shinichi Kozake
?
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
?
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
emorins
?
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
?
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
Fujio Kojima
?
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
ShinichiAoyagi
?
【尝罢版】贰濒颈虫颈谤入门「第7回:笔测迟丑辞苍/碍别谤补蝉を贰濒颈虫颈谤から繋いでアレコレする」
【尝罢版】贰濒颈虫颈谤入门「第7回:笔测迟丑辞苍/碍别谤补蝉を贰濒颈虫颈谤から繋いでアレコレする」【尝罢版】贰濒颈虫颈谤入门「第7回:笔测迟丑辞苍/碍别谤补蝉を贰濒颈虫颈谤から繋いでアレコレする」
【尝罢版】贰濒颈虫颈谤入门「第7回:笔测迟丑辞苍/碍别谤补蝉を贰濒颈虫颈谤から繋いでアレコレする」
fukuoka.ex
?
15分でざっくり分かる厂肠补濒补入门
15分でざっくり分かる厂肠补濒补入门15分でざっくり分かる厂肠补濒补入门
15分でざっくり分かる厂肠补濒补入门
SatoYu1ro
?
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
Tatsumi Naganuma
?
齿迟别苍诲30分クッキング やきに駆動
齿迟别苍诲30分クッキング   やきに駆動齿迟别苍诲30分クッキング   やきに駆動
齿迟别苍诲30分クッキング やきに駆動
Shinichi Kozake
?
搁ユーサ?のための蝉辫补谤办入门
搁ユーサ?のための蝉辫补谤办入门搁ユーサ?のための蝉辫补谤办入门
搁ユーサ?のための蝉辫补谤办入门
Shintaro Fukushima
?
Java puzzlers 2013 at JavaFesta Japan
Java puzzlers 2013 at JavaFesta JapanJava puzzlers 2013 at JavaFesta Japan
Java puzzlers 2013 at JavaFesta Japan
Yoshio Terada
?
闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义闯补惫补セキュアコーディングセミナー东京第3回讲义
闯补惫补セキュアコーディングセミナー东京第3回讲义
JPCERT Coordination Center
?
あなたの厂肠补濒补を爆速にする7つの方法(日本语版)
あなたの厂肠补濒补を爆速にする7つの方法(日本语版)あなたの厂肠补濒补を爆速にする7つの方法(日本语版)
あなたの厂肠补濒补を爆速にする7つの方法(日本语版)
x1 ichi
?
ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)ActionScriptを使わないFlash勉強会 #1(前日版)
ActionScriptを使わないFlash勉強会 #1(前日版)
libpanda
?
齿迟别苍诲30分クッキング
齿迟别苍诲30分クッキング齿迟别苍诲30分クッキング
齿迟别苍诲30分クッキング
Shinichi Kozake
?
社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI社内Java8勉強会 ラムダ式とストリームAPI
社内Java8勉強会 ラムダ式とストリームAPI
Akihiro Ikezoe
?
DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話DoActionからJava VMバイトコードに変換する話
DoActionからJava VMバイトコードに変換する話
emorins
?
SQLチューニング入門 入門編
SQLチューニング入門 入門編SQLチューニング入門 入門編
SQLチューニング入門 入門編
Miki Shimogai
?
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
Fujio Kojima
?

Viewers also liked (9)

2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
?
Hello Java
Hello JavaHello Java
Hello Java
Chihiro Ito
?
13 java in oracle
13 java in oracle13 java in oracle
13 java in oracle
Graham Royce
?
础苍诲谤辞颈诲アプリケーション开発入门
础苍诲谤辞颈诲アプリケーション开発入门础苍诲谤辞颈诲アプリケーション开発入门
础苍诲谤辞颈诲アプリケーション开発入门
OESF Education
?
良质なコードを高速に书くコツ
良质なコードを高速に书くコツ良质なコードを高速に书くコツ
良质なコードを高速に书くコツ
Shunji Konishi
?
Javaアプリケーションサーバ 構築?運用の勘所
Javaアプリケーションサーバ 構築?運用の勘所Javaアプリケーションサーバ 構築?運用の勘所
Javaアプリケーションサーバ 構築?運用の勘所
Takahiro YAMADA
?
闯补惫补プログラミングをスッキリ学ぶ10のコツ
闯补惫补プログラミングをスッキリ学ぶ10のコツ闯补惫补プログラミングをスッキリ学ぶ10のコツ
闯补惫补プログラミングをスッキリ学ぶ10のコツ
Kiyotaka NAKAYAMA
?
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
?
オブジェクト指向の设计と実装の学び方のコツ
オブジェクト指向の设计と実装の学び方のコツオブジェクト指向の设计と実装の学び方のコツ
オブジェクト指向の设计と実装の学び方のコツ
増田 亨
?
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
?
础苍诲谤辞颈诲アプリケーション开発入门
础苍诲谤辞颈诲アプリケーション开発入门础苍诲谤辞颈诲アプリケーション开発入门
础苍诲谤辞颈诲アプリケーション开発入门
OESF Education
?
良质なコードを高速に书くコツ
良质なコードを高速に书くコツ良质なコードを高速に书くコツ
良质なコードを高速に书くコツ
Shunji Konishi
?
Javaアプリケーションサーバ 構築?運用の勘所
Javaアプリケーションサーバ 構築?運用の勘所Javaアプリケーションサーバ 構築?運用の勘所
Javaアプリケーションサーバ 構築?運用の勘所
Takahiro YAMADA
?
闯补惫补プログラミングをスッキリ学ぶ10のコツ
闯补惫补プログラミングをスッキリ学ぶ10のコツ闯补惫补プログラミングをスッキリ学ぶ10のコツ
闯补惫补プログラミングをスッキリ学ぶ10のコツ
Kiyotaka NAKAYAMA
?
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
?
オブジェクト指向の设计と実装の学び方のコツ
オブジェクト指向の设计と実装の学び方のコツオブジェクト指向の设计と実装の学び方のコツ
オブジェクト指向の设计と実装の学び方のコツ
増田 亨
?

Similar to 讲座闯补惫补入门 (20)

Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
Tomoya Nakayama
?
JavaLearning_1.pptx
JavaLearning_1.pptxJavaLearning_1.pptx
JavaLearning_1.pptx
RyuuGaku
?
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
?
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
?
第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016
kyoto university
?
Gorinphp0729
Gorinphp0729Gorinphp0729
Gorinphp0729
akitsukada
?
闯补惫补8から17へ
闯补惫补8から17へ闯补惫补8から17へ
闯补惫补8から17へ
onozaty
?
笔别谤濒と出会い、笔别谤濒を作る
笔别谤濒と出会い、笔别谤濒を作る笔别谤濒と出会い、笔别谤濒を作る
笔别谤濒と出会い、笔别谤濒を作る
goccy
?
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
?
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
?
Project lambda
Project lambdaProject lambda
Project lambda
Appresso Engineering Team
?
10分て?分かるr言語入門ver2.9 14 0920
10分て?分かるr言語入門ver2.9 14 0920 10分て?分かるr言語入門ver2.9 14 0920
10分て?分かるr言語入門ver2.9 14 0920
Nobuaki Oshiro
?
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
?
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
?
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
?
とある贵濒补蝉丑の自动生成
とある贵濒补蝉丑の自动生成とある贵濒补蝉丑の自动生成
とある贵濒补蝉丑の自动生成
Akineko Shimizu
?
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
?
JavaLearning_1.pptx
JavaLearning_1.pptxJavaLearning_1.pptx
JavaLearning_1.pptx
RyuuGaku
?
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
Masao Kato
?
Kink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based languageKink: invokedynamic on a prototype-based language
Kink: invokedynamic on a prototype-based language
Taku Miyakawa
?
第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016第四回 JavaScriptから始めるプログラミング2016
第四回 JavaScriptから始めるプログラミング2016
kyoto university
?
闯补惫补8から17へ
闯补惫补8から17へ闯补惫补8から17へ
闯补惫补8から17へ
onozaty
?
笔别谤濒と出会い、笔别谤濒を作る
笔别谤濒と出会い、笔别谤濒を作る笔别谤濒と出会い、笔别谤濒を作る
笔别谤濒と出会い、笔别谤濒を作る
goccy
?
中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
?
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
Haruka Ozaki
?
10分て?分かるr言語入門ver2.9 14 0920
10分て?分かるr言語入門ver2.9 14 0920 10分て?分かるr言語入門ver2.9 14 0920
10分て?分かるr言語入門ver2.9 14 0920
Nobuaki Oshiro
?
T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門T69 c++cli ネイティブライブラリラッピング入門
T69 c++cli ネイティブライブラリラッピング入門
伸男 伊藤
?
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
?
あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)あんなテスト、こんなテスト(this and that about testing)
あんなテスト、こんなテスト(this and that about testing)
Takuya Tsuchida
?
とある贵濒补蝉丑の自动生成
とある贵濒补蝉丑の自动生成とある贵濒补蝉丑の自动生成
とある贵濒补蝉丑の自动生成
Akineko Shimizu
?
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
?

More from Tokai University (20)

讲座尝颈苍耻虫入门?サーバ翱厂としての尝颈苍耻虫
讲座尝颈苍耻虫入门?サーバ翱厂としての尝颈苍耻虫讲座尝颈苍耻虫入门?サーバ翱厂としての尝颈苍耻虫
讲座尝颈苍耻虫入门?サーバ翱厂としての尝颈苍耻虫
Tokai University
?
讲座尝颈苍耻虫入门?デスクトップ翱厂としての尝颈苍耻虫
讲座尝颈苍耻虫入门?デスクトップ翱厂としての尝颈苍耻虫讲座尝颈苍耻虫入门?デスクトップ翱厂としての尝颈苍耻虫
讲座尝颈苍耻虫入门?デスクトップ翱厂としての尝颈苍耻虫
Tokai University
?
讲座颁入门
讲座颁入门讲座颁入门
讲座颁入门
Tokai University
?
灾害を想定した情报セキュリティ対策の検讨
灾害を想定した情报セキュリティ対策の検讨灾害を想定した情报セキュリティ対策の検讨
灾害を想定した情报セキュリティ対策の検讨
Tokai University
?
サイバー攻撃への危机意识の共有と连携体制の検讨
サイバー攻撃への危机意识の共有と连携体制の検讨サイバー攻撃への危机意识の共有と连携体制の検讨
サイバー攻撃への危机意识の共有と连携体制の検讨
Tokai University
?
情报セキュリティの概要
情报セキュリティの概要情报セキュリティの概要
情报セキュリティの概要
Tokai University
?
大学におけるサイバー攻撃の事例绍介
大学におけるサイバー攻撃の事例绍介大学におけるサイバー攻撃の事例绍介
大学におけるサイバー攻撃の事例绍介
Tokai University
?
大学における危机管理体制に関するグループディスカッション
大学における危机管理体制に関するグループディスカッション大学における危机管理体制に関するグループディスカッション
大学における危机管理体制に関するグループディスカッション
Tokai University
?
东海大学研究教育用システム见学资料
东海大学研究教育用システム见学资料东海大学研究教育用システム见学资料
东海大学研究教育用システム见学资料
Tokai University
?
私立大学における学术情报基盘の课题~学认参加に向けての考察~
私立大学における学术情报基盘の课题~学认参加に向けての考察~私立大学における学术情报基盘の课题~学认参加に向けての考察~
私立大学における学术情报基盘の课题~学认参加に向けての考察~
Tokai University
?
情报セキュリティの概要
情报セキュリティの概要情报セキュリティの概要
情报セキュリティの概要
Tokai University
?
プレゼンテーション讲义スライド
プレゼンテーション讲义スライドプレゼンテーション讲义スライド
プレゼンテーション讲义スライド
Tokai University
?
グループディスカッションのイントロダクション
グループディスカッションのイントロダクショングループディスカッションのイントロダクション
グループディスカッションのイントロダクション
Tokai University
?
情报セキュリティの概要
情报セキュリティの概要情报セキュリティの概要
情报セキュリティの概要
Tokai University
?
プレゼンテーション讲义スライド
プレゼンテーション讲义スライドプレゼンテーション讲义スライド
プレゼンテーション讲义スライド
Tokai University
?
不适切な掲示板投稿への対応
不适切な掲示板投稿への対応不适切な掲示板投稿への対応
不适切な掲示板投稿への対応
Tokai University
?
プレゼンテーション讲义スライド
プレゼンテーション讲义スライドプレゼンテーション讲义スライド
プレゼンテーション讲义スライド
Tokai University
?
东海大学湘南キャンパス?情报环境见学会
东海大学湘南キャンパス?情报环境见学会东海大学湘南キャンパス?情报环境见学会
东海大学湘南キャンパス?情报环境见学会
Tokai University
?
奥别产アプリケーションのセキュリティ
奥别产アプリケーションのセキュリティ奥别产アプリケーションのセキュリティ
奥别产アプリケーションのセキュリティ
Tokai University
?
大学におけるユーザ认証
大学におけるユーザ认証大学におけるユーザ认証
大学におけるユーザ认証
Tokai University
?
讲座尝颈苍耻虫入门?サーバ翱厂としての尝颈苍耻虫
讲座尝颈苍耻虫入门?サーバ翱厂としての尝颈苍耻虫讲座尝颈苍耻虫入门?サーバ翱厂としての尝颈苍耻虫
讲座尝颈苍耻虫入门?サーバ翱厂としての尝颈苍耻虫
Tokai University
?
讲座尝颈苍耻虫入门?デスクトップ翱厂としての尝颈苍耻虫
讲座尝颈苍耻虫入门?デスクトップ翱厂としての尝颈苍耻虫讲座尝颈苍耻虫入门?デスクトップ翱厂としての尝颈苍耻虫
讲座尝颈苍耻虫入门?デスクトップ翱厂としての尝颈苍耻虫
Tokai University
?
灾害を想定した情报セキュリティ対策の検讨
灾害を想定した情报セキュリティ対策の検讨灾害を想定した情报セキュリティ対策の検讨
灾害を想定した情报セキュリティ対策の検讨
Tokai University
?
サイバー攻撃への危机意识の共有と连携体制の検讨
サイバー攻撃への危机意识の共有と连携体制の検讨サイバー攻撃への危机意识の共有と连携体制の検讨
サイバー攻撃への危机意识の共有と连携体制の検讨
Tokai University
?
情报セキュリティの概要
情报セキュリティの概要情报セキュリティの概要
情报セキュリティの概要
Tokai University
?
大学におけるサイバー攻撃の事例绍介
大学におけるサイバー攻撃の事例绍介大学におけるサイバー攻撃の事例绍介
大学におけるサイバー攻撃の事例绍介
Tokai University
?
大学における危机管理体制に関するグループディスカッション
大学における危机管理体制に関するグループディスカッション大学における危机管理体制に関するグループディスカッション
大学における危机管理体制に関するグループディスカッション
Tokai University
?
东海大学研究教育用システム见学资料
东海大学研究教育用システム见学资料东海大学研究教育用システム见学资料
东海大学研究教育用システム见学资料
Tokai University
?
私立大学における学术情报基盘の课题~学认参加に向けての考察~
私立大学における学术情报基盘の课题~学认参加に向けての考察~私立大学における学术情报基盘の课题~学认参加に向けての考察~
私立大学における学术情报基盘の课题~学认参加に向けての考察~
Tokai University
?
情报セキュリティの概要
情报セキュリティの概要情报セキュリティの概要
情报セキュリティの概要
Tokai University
?
プレゼンテーション讲义スライド
プレゼンテーション讲义スライドプレゼンテーション讲义スライド
プレゼンテーション讲义スライド
Tokai University
?
グループディスカッションのイントロダクション
グループディスカッションのイントロダクショングループディスカッションのイントロダクション
グループディスカッションのイントロダクション
Tokai University
?
情报セキュリティの概要
情报セキュリティの概要情报セキュリティの概要
情报セキュリティの概要
Tokai University
?
プレゼンテーション讲义スライド
プレゼンテーション讲义スライドプレゼンテーション讲义スライド
プレゼンテーション讲义スライド
Tokai University
?
不适切な掲示板投稿への対応
不适切な掲示板投稿への対応不适切な掲示板投稿への対応
不适切な掲示板投稿への対応
Tokai University
?
プレゼンテーション讲义スライド
プレゼンテーション讲义スライドプレゼンテーション讲义スライド
プレゼンテーション讲义スライド
Tokai University
?
东海大学湘南キャンパス?情报环境见学会
东海大学湘南キャンパス?情报环境见学会东海大学湘南キャンパス?情报环境见学会
东海大学湘南キャンパス?情报环境见学会
Tokai University
?
奥别产アプリケーションのセキュリティ
奥别产アプリケーションのセキュリティ奥别产アプリケーションのセキュリティ
奥别产アプリケーションのセキュリティ
Tokai University
?
大学におけるユーザ认証
大学におけるユーザ认証大学におけるユーザ认証
大学におけるユーザ认証
Tokai University
?

讲座闯补惫补入门

  • 2. 2 講座のスケジュール ?1日目 –1章Javaの特徴 –2章プログラミングの流れ ?2日目 –3章プログラム形式 ?3日目 –4章Javaの文法:~4.6 反復処理(do-while) ?4日目 –4章Javaの文法:4.7 その他の制御文~ –5章アプレットの作成:~5.1 日時表示アプレットVer.1 ?5日目 –5章アプレットの作成:5.2 日時表示アプレットVer.2~
  • 3. 3 1章Javaとは? ?初めてのプログラミング言語? ?他の言語? ?Javaのプログラミング経験? ?Javaに興味を持った理由?
  • 4. 4 1.1 Javaの特徴 ?1995年にSun Microsystemsが発表 ?オブジェクト指向 ?様々なOSに対応している ?Webページ上で実行可能 ?文法がC/C++に似ている
  • 5. 5 1.1 Javaの特徴 ? オブジェクト指向 – OO:Object Oriented – OOP:Object Oriented Programing ? 全てのモノをオブジェクトと考える ? 開発効率の向上 ? 小規模なプログラムではメリット無し?
  • 6. 6 1.1 Javaの特徴 ?様々なOSに対応している ?Webページ上で実行可能 –Write Once, Run Anywhere.
  • 7. 7 1.1 Javaの特徴 ?Webページ上で実行可能 ?補足資料のJavaサポートページ –サンプルアプレット –Java2 SDK Standard Edition ドキュメント ?→アプレットとアプリケーションのデモンストレーション ?→デモアプレット
  • 8. 8 1.1 Javaの特徴 ?文法がC/C++に似ている ?初めてプログラミング言語をやる人は関係なし? ?その後役立つかも? ?文法は似ているが、欠点は排除 Java プログラム例 C プログラム例 ClassSum{ #include<stdio.h> publicstaticvoidmain(Stringargs[]){ voidmain(){ intn=0; inti,n=0; for(inti=1;i<=100;i++){ for(i=1;i<=100;i++){ n+=i; n+=i; } } System.out.println("Answer:"+n); printf("Answer:%d?n",n); } } }
  • 9. 9 1.1 Javaの特徴 ?携帯電話で実行可能 ?サーバ技術(JSP:Java Server Pages) –http://121ware.com/
  • 10. 10 1.1 Javaの特徴 ?Javaの欠点 –実行速度が遅い ?徐々に解決(JIT,HotSpot) –オブジェクト指向が理解しにくい ?抽象的な解説をどのように理解するか? –JavaScriptと間違われる ?名前以外は違います
  • 11. 11 1.2 JavaとJavaScriptとの違い ?JavaScriptとは? –Netscape Communicationsが開発したスクリプト言語 –Webページを構成するHTMLに記述可能 –Webブラウザに関する操作やWebページの拡張に使用 Java プログラム例 JavaScript プログラム例 ClassSum{ publicstaticvoidmain(Stringargs[]){ <SCRIPTLANGUAGE="JavaScript"> intn=0; n=0 for(inti=1;i<=100;i++){ for(i=1;i<=100;i++){ n+=i; n+=i } } System.out.println("Answer:"+n); document.writeln("Answer:",n) } </SCRIPT> }
  • 13. 13 2.1 ソースファイルの作成 ?コマンドプロンプトを起動 ?メモ帳またはEmEditorでソースファイルを作成 ?(補足資料を参照)
  • 14. 14 2.1 ソースファイルの作成 ?> notepad Sample.java 行 ソースファイル(Sample.java) 1 classSample{ 2 publicstaticvoidmain(Stringargs[]){ 3 System.out.println("Thisisasampleprogram."); 4 } 5 }
  • 15. 15 2.2 コンパイルを実行し クラスファイルを生成 ?> javac Sample.java ?エラーが表示 –再編集する ?正常にコンパイル –dirコマンドでSample.classを確認
  • 16. 16 2.3 JavaVM上で クラスファイルを実行 ?> java Sample ?期待通りの実行でなければ再編集 Windows Macintosh UNIX JavaVM クラスファイル
  • 17. 17 講座のスケジュール ?1日目 –1章Javaの特徴 –2章プログラミングの流れ ?2日目 –3章プログラム形式 ?3日目 –4章Javaの文法:~4.6 反復処理(do-while) ?4日目 –4章Javaの文法:4.7 その他の制御文~ –5章アプレットの作成:~5.1 日時表示アプレットVer.1 ?5日目 –5章アプレットの作成:5.2 日時表示アプレットVer.2~
  • 18. 18 3章プログラム形式 3.1ソースファイルの構造 行 ソースファイル(Sample.java) 1 classSample{ 2 publicstaticvoidmain(Stringargs[]){ 3 System.out.println("Thisisasampleprogram."); 4 } 5 } クラス名の宣言 メソッドの定義 メソッドの内容
  • 19. 19 3.1ソースファイルの構造 ?1行目:class Sample{ –「Sample」という名前のクラスであることを宣言 –Javaでは、オブジェクトの単位をクラスと言う –Javaプログラミング=クラスの作成 ?1から作成する場合もあれば、 ?他のクラスを使って変更点だけ作成する場合もある。 –“{~}”の中にクラスの定義を書く
  • 20. 20 3.1ソースファイルの構造 ?2行目:public staticvoid main( String args[] ){ –Sampleクラスのメソッド“main()”の定義 –実際に処理される内容 –C言語のmain()関数と同じ –“{~}”の中にメソッドの処理を書く
  • 21. 21 3.1ソースファイルの構造 ?3行目:System.out.println( "This is a sample program."); –“~”で囲まれている文字列を画面に表示 –“;”は命令文の最後を表す
  • 22. 22 3.1ソースファイルの構造 ?4行目:} –2行目のmain()メソッドの終わりを表す ?5行目:} –1行目のSampleクラスの終わりを表す ?“{”と“}”の数は必ず一致 ?対応するカッコをインデント
  • 23. 23 3.1ソースファイルの構造 classクラス名{ データの定義 : : メソッドの定義(メソッドの引数){ : } : : }
  • 24. 24 3.1ソースファイルの構造 ?オブジェクト指向の考え方 ?例:車クラス –メソッド:走る,曲がる,止まる,ライトを点ける… –データ:名前,大きさ,乗車定員,スピード… 車 スポーツカー セダン ワゴン 最高時速UP 快適さUP 定員UP
  • 25. 25 3.1ソースファイルの構造 ?例:Sampleクラス ?例:Systemクラス System in out print() println() err exit() Sample main() クラスとメソッドやデータは、 それぞれの名前の区切りに “.(ピリオド)”を使用 (例)System.out.println()
  • 26. 26 3.2 コンソールアプリケーション ?コマンドを入力して実行するもの ?表示する文字列を変更して 再度コンパイル&実行 行 ソースファイル(CApp.java) 1 classCApp{ 2 publicstaticvoidmain(Stringargs[]){ 3 System.out.println("Thisisasampleconsoleapplication."); 4 } 5 } CAppクラス main()メソッド
  • 27. 27 3.2 アプレット ?Webブラウザ上で実行するもの 行 ソースファイル(Aplt.java) 1 importjava.applet.Applet; 2 importjava.awt.Graphics; 3 4 publicclassApltextendsApplet{ 5 publicvoidpaint(Graphicsg){ 6 g.drawString("Thisisasampleapplet.",20,20); 7 } 8 } java.applet.Applet Apltクラス paint()メソッド
  • 28. 28 3.2 アプレット ?Webブラウザ表示用のHTMLファイルが必要 ?g.drawString()内の文字列を変更 ?g.drawString()内の表示位置を変更 ?HTMLファイル内のHEIGHTとWIDTHを変更 行 HTMLファイル(Aplt.html) 1 <APPLETCODE="Aplt.class"WIDTH="320"HEIGHT="60"> 2 </APPLET>
  • 29. 29 3.3 ウィンドウアプリケーション ?ウィンドウが表示されて実行されるもの 行 ソースファイル(WApp.java) 1 importjava.awt.*; 2 3 classWAppextendsFrame{ 4 publicWApp(){ 5 setSize(320,60); 6 } 7 8 publicvoidpaint(Graphicsg){ 9 g.drawString("Thisisasamplewindowapplication",20,40); 10 } 11 12 publicstaticvoidmain(Stringargs[]){ 13 WAppwa=newWApp(); 14 wa.show(); 15 } 16 } java.awt.Frame WAppクラス paint()メソッド main()メソッド コンストラクタ
  • 30. 30 3.3 ウィンドウアプリケーション ?ウィンドウの処理は、 その機能を実装(implement)する必要あり ?コンストラクタ内のsetSize()を変更 ?g.drawString()内の文字列を変更 ?g.drawString()内の表示位置を変更
  • 31. 31 3.2 アプレット 3.3 ウィンドウアプリケーション ?paint()メソッド内で実行できるメソッド –drawString( 文字列,X始点,Y始点) –drawLine( X始点,Y始点,X終点,Y終点) –drawRect( X始点,Y始点,幅,高さ) –drawOval( X中心,Y中心,幅,高さ) ?fillRect,fillOvalにすると塗りつぶし (0,0) (Xmax,Ymax)
  • 32. 32 講座のスケジュール ?1日目 –1章Javaの特徴 –2章プログラミングの流れ ?2日目 –3章プログラム形式 ?3日目 –4章Javaの文法:~4.6 反復処理(do-while) ?4日目 –4章Javaの文法:4.7 その他の制御文~ –5章アプレットの作成:~5.1 日時表示アプレットVer.1 ?5日目 –5章アプレットの作成:5.2 日時表示アプレットVer.2~
  • 33. 33 4章Javaの文法 ?まずは、Calc.javaを実行 –C:?user>javacCalc.java – –C:?user>javaCalc –7+5=12 –7-5=2 –7*5=35 –7/5=1...2
  • 34. 34 4.1Javaの基本事項 ?変数とは? –数値や文字など様々なデータが入るもの –データの種類により「型」がある –内容を表す名前を付ける 7 i j i j + = 12 5
  • 35. 35 4.1Javaの基本事項 ?変数の型 –整数型,実数型,boolean型,文字型 型の名称 宣言文 値の範囲 整数型 int -2,147,483,648~+2,147,483,647 (-21X108~21X108) 倍精度実数型 double ±4.94065645841246544E-324 ~±1.79769313486231570E+308 (±4.9X10-324~±1.7X10308) boolean型 boolean true,false 文字型 char 'a'
  • 36. 36 4.1Javaの基本事項 ?宣言文や命令文の記述 ?文の最後には“;(セミコロン)”が必要 –int i,j,s,d,p,q,r; –s = i + j; –System.out.println( i + " + " + j + " = " + s); ?文が“{~}”を伴う場合は不必要
  • 37. 37 4.1Javaの基本事項 ?識別子(クラス名,メソッド名,変数名,etc.) –1文字目:A~Z,a~z,“_”,“$” –2文字目以降:0~9も使用可 –予約語は使用不可 –文字数の制限は特に無し ?予約語 –プログラム中で意味のある文字列 (例)class,public ,static ,void ,main
  • 38. 38 4.1Javaの基本事項 ?算術演算子 –計算を行うために使う記号 = 代入 + 足し算 - 引き算 * 掛け算 / 割り算 % 剰余 += 和を代入 -= 差を代入 *= 積を代入 /= 商を代入 ++ インクリメント -- デクリメント
  • 39. 39 4.1Javaの基本事項 ?コメント文 –プログラムの説明などに使用 –実行には影響無し –//変数の宣言???1行コメント –/*変数の宣言*/???囲んだ範囲がコメント
  • 40. 40 4.1Javaの基本事項 ?制御文 条件分岐 if–else switch–case 反復処理 for while dowhile その他の制御文 break continue return
  • 41. 41 4.2条件分岐(if-else) ?与えられた条件にしたがって処理を分岐 if(条件式){ 処理 } if(条件式){ 処理1 }else{ 処理2 } if(携帯電話を所持){ 電話番号を教えて下さい } if(携帯電話を所持){ 機種変更しませんか? }else{ 新規申込だと安いよ? }
  • 42. 42 4.2条件分岐(if-else) ?条件式には関係演算子を使用 == 一致 != 不一致 > 大小の比較 < >= 大小の比較 (値を含む) <= && 論理積 || 論理和 条件式の例 a==0aは0 a>0aは正の数 a>=18aは18以上
  • 43. 43 4.2条件分岐(if-else) ?論理積と論理和 論理積(AND) AとBが両方成立 条件A 条件B 条件A:偶数 条件B:10以下 論理積:条件A && 条件B 2 4 8 6 12 10 14 20 32 9 7 5 3 -3 1 11 13 21 53
  • 44. 44 4.2条件分岐(if-else) ?論理積と論理和 論理和(OR) AとBのどちらかが成立 条件A 条件B 条件A:偶数 条件B:10以下 論理和:条件A || 条件B 2 4 8 6 12 10 14 20 32 9 7 5 3 -3 1 11 13 21 53
  • 45. 45 4.2条件分岐(if-else) 1 classTestIf{ 2 publicstaticvoidmain(Stringargs[]){ 3 inti,j; 4 i=j=0; 5 try{ 6 i=Integer.parseInt(args[0]); 7 }catch(Exceptione){ 8 System.err.println("入力エラー"); 9 System.exit(1); 10 } iとjに0を代入
  • 46. 46 4.2条件分岐(if-else) 11 j=i%2; 12 if(j==0){ 13 System.out.println("それは偶数です。"); 14 }else{ 15 System.out.println("それは奇数です。"); 16 } 17 } 18 }
  • 47. 47 4.3条件分岐(switch-case) ?判断する値に応じて処理を分岐 switch(式){ case値1: 処理1 break; case値2: 処理2 break; : case値n: 処理n break; default: 処理x } switch(マラソンの順位){ case1: 金メダルの授与 break; case2: 銀メダルの授与 break; case3: 銅メダルの授与 break; default: 参加賞をあげる }
  • 48. 48 4.3条件分岐(switch-case) 1 classTestSwitch{ 2 publicstaticvoidmain(Stringargs[]){ 3 inti=0; 4 try{ 5 i=Integer.parseInt(args[0]); 6 }catch(Exceptione){ 7 System.out.println("入力エラー"); 8 System.exit(1); 9 } 宣言と同時に値を代入
  • 49. 49 4.3条件分岐(switch-case) 10 switch(i){ 11 case1: 12 System.out.println("数字の1は工場の煙突です。"); 13 break; 14 case2: 15 System.out.println("数字の2はお池のあひるです。"); 16 break; 17 case3: 18 System.out.println("数字の3は赤ちゃんのお耳です。"); 19 break; 20 default: 21 System.out.println("1から3までの数字を指定してください。 "); 22 } 23 } 24 }
  • 50. 50 4.4反復処理(for) ?条件が成立する間繰り返して処理 for(式1;式2;式3){ 処理 } for(??????入り時間;??????終了時間まで;1分経過){ 仕事 } 式1 式2 処理 式3 true false 次の処理へ forループ
  • 51. 51 4.4反復処理(for) 1 classTestFor{ 2 publicstaticvoidmain(Stringargs[]){ 3 intn,sum; 4 n=sum=0; 5 try{ 6 n=Integer.parseInt(args[0]); 7 }catch(Exceptione){ 8 System.out.println("入力エラー"); 9 System.exit(1); 10 }
  • 52. 52 4.4反復処理(for) 11 for(inti=1;i<=n;i++){ 12 sum+=i; 13 } 14 System.out.println("1から"+n+"までの合計は、"+sum+"です。"); 15 } 16 } iはforループの中でのみ有効
  • 53. 53 4.5反復処理(while) ?条件が成立する間繰り返して処理 while(条件式){ 処理 } 条件式 処理 true false 次の処理へ whileループ while(最後まで読んだ){ 次のページを読む }
  • 54. 54 4.5反復処理(while) 1 classTestWhile{ 2 publicstaticvoidmain(Stringargs[]){ 3 intn,sum; 4 n=sum=0; 5 try{ 6 n=Integer.parseInt(args[0]); 7 }catch(Exceptione){ 8 System.out.println("入力エラー"); 9 System.exit(1); 10 }
  • 55. 55 4.5反復処理(while) 11 inti=1; 12 while(i<=n){ 13 sum+=i; 14 i++; 15 } 16 System.out.println("1から"+n+"までの合計は、"+sum+"です "); 17 } 18 }
  • 56. 56 4.6反復処理(do-while) ?条件が成立する間繰り返して処理 do{ 処理 }while(条件式); do{ 宝くじを買う }while(はずれ); 条件式 処理 true false 次の処理へ do-whileループ
  • 57. 57 4.6反復処理(do-while) 1 classTestDo{ 2 publicstaticvoidmain(Stringargs[]){ 3 intn,sum; 4 n=sum=0; 5 try{ 6 n=Integer.parseInt(args[0]); 7 }catch(Exceptione){ 8 System.out.println("入力エラー"); 9 System.exit(1); 10 }
  • 58. 58 4.6反復処理(do-while) 11 inti=1; 12 do{ 13 sum+=i; 14 i++; 15 }while(i<=n); 16 System.out.println("1から"+n+"までの合計は、"+sum+"です。 "); 17 } 18 }
  • 59. 59 4.5反復処理(while) 4.6反復処理(do-while) ?forとwhileの使い分け –for:変数の値を変化させながらの反復処理 –while:数値を使わない反復処理(ファイル読込など) ?whileとdo-whileの違い –while:条件を判断してから処理を実行 ?→実行されない場合もありうる –do-while:処理を実行してから条件を判断 ?→少なくとも1回は実行される
  • 60. 60 4.1~4.6までのまとめ ?TestIf.java –12行目をif ( j==1 ){ ...にして、 結果が正しく表示されるようにしてみる ?TestSwitch.java –それぞれのcaseのbreakを取ってみる ?TestFor.java,TestWhile.java,TestDo.java –0までの合計を求めてみる
  • 61. 61 講座のスケジュール ?1日目 –1章Javaの特徴 –2章プログラミングの流れ ?2日目 –3章プログラム形式 ?3日目 –4章Javaの文法:~4.6 反復処理(do-while) ?4日目 –4章Javaの文法:4.7 その他の制御文~ –5章アプレットの作成:~5.1 日時表示アプレットVer.1 ?5日目 –5章アプレットの作成:5.2 日時表示アプレットVer.2~
  • 62. 62 4.7その他の制御文 (break,continue,return) ?break –実行中のループ,ブロックから抜ける –if-else,switch-case,for,while,do-whileで使用 ...{ 処理1 break; 処理2 } 処理3 処理1の後、 処理2は実行されず、 処理3が実行される。
  • 63. 63 4.7その他の制御文 (break,continue,return) ?continue –次の繰り返し処理に移る –for,while,do-whileで使用 ...{ 処理1 continue; 処理2 } 処理3 処理1の後、 処理2は実行されず、 再度処理1が実行される。 ループが終了したら、 処理3が実行される。
  • 64. 64 4.7その他の制御文 (break,continue,return) ?return –呼び出されたメソッドに復帰 型宣言メソッド名(引数){ 処理 return返り値; } メソッドの型がvoidの場合、 returnは必要ない。
  • 65. 65 4.8例外処理(try-catch-finally) ?例外が発生したときの処理を定義 –例外とは想定されていない処理 –(例)アルファベットを数字に変換 try{ 処理1(例外が発生する可能性のある処理) }catch(例外クラス例外オブジェクト){ 処理2(例外が発生した場合の処理) }finally{ 処理3(例外の発生に関わらず実行する処理) }
  • 66. 66 4.8例外処理(try-catch-finally) ?例外クラス java.lang.Exception ArrayIndexOutOfBoundsException (配列の添え字が範囲外) NumberFormatException (文字列から数値に変換できない) ClassNotFoundException (クラスが見つからない)
  • 67. 67 4.8例外処理(try-catch-finally) 1 classTestTry{ 2 publicstaticvoidmain(Stringargs[]){ 3 intn,sum; 4 n=sum=0; 5 try{ 6 n=Integer.parseInt(args[0]); 7 }catch(ArrayIndexOutOfBoundsExceptione){ 8 System.out.println("第1引数を指定してください。"); 9 System.exit(1); 10 }catch(NumberFormatExceptione){ 11 System.out.println("整数を指定してください。"); 12 System.exit(1);
  • 68. 68 4.8例外処理(try-catch-finally) 13 }catch(Exceptione){ 14 System.out.println("その他の入力エラー"); 15 System.exit(1); 16 } 17 for(inti=1;i<=n;i++){ 18 sum+=i; 19 } 20 System.out.println("1から"+n+"までの合計は、"+sum+"です。 "); 21 } 22 }
  • 69. 69 4.9練習問題 問題入力された年が閏年かどうかを調べるプログラ ムを作成しましょう。 なお、閏年の条件は次のとおりです。 ?4で割り切れる年を閏年とする ?ただし、100で割り切れる場合は除外する ?なお、400で割り切れる場合は閏年とする
  • 70. 70 全ての年 4.9練習問題 ?まずは自分で考えてみる –1.西暦何年について調べるのか? –2.その年は閏年の条件に当てはまるかどうか? 4で割り切れる 100で割り切れる 400で割り切れる
  • 71. 71 4.9練習問題 ?プログラミングを行う場合 –1.使用する変数の宣言 –2.西暦何年について調べるのか?(年の入力) –3.その年は閏年の条件に当てはまるかどうか? –4.結果の表示
  • 72. 72 4.9練習問題 ?プログラミングを行う場合その2 –1.使用する変数の宣言 –2.入力された年を整数型に変換 –3.変換時にエラーが発生した場合の処理 –4.その年は閏年の条件に当てはまるかどうか? –5.結果の表示
  • 73. 73 4.9練習問題 1 classLeapYear{ 2 //閏年の条件 3 //(1)4で割り切れる 4 //(2)100で割り切れない 5 //(3)400で割り切れる 6 publicstaticvoidmain(Stringargs[]){ 7 //①使用する変数の宣言 8 inti=0,x,y,z;
  • 74. 74 4.9練習問題 9 try{ 10 //②入力された年は文字型なので整数型に変換 11 i=Integer.parseInt(args[0]); 12 }catch(ArrayIndexOutOfBoundsExceptione){ 13 //③変換時にエラーが発生した場合の処理その1 14 System.out.println("第1引数を指定してください。"); 15 System.exit(1); 16 }catch(NumberFormatExceptione){ 17 //③変換時にエラーが発生した場合の処理その2 18 System.out.println("数字を指定してください。"); 19 System.exit(1); 20 }
  • 75. 75 4.9練習問題 21 x=i%4;//年を4で割る 22 y=i%100;//年を100で割る 23 z=i%400;//年を400で割る 24 //④その年は閏年の条件に当てはまるかどうか 25 if(x==0&&y!=0||z==0){ 26 //⑤結果の表示閏年の場合 27 System.out.println(i+"年は、閏年です。"); 28 }else{ 29 //⑤結果の表示閏年でない場合 30 System.out.println(i+"年は、閏年ではありません。"); 31 } 32 } 33 }
  • 76. 76 5章アプレットの作成 ?Javaプログラミングの実践として 日時表示アプレットを作成 –Ver.1:日時を表示するだけ –Ver.2:アプレットのデザインを変える –Ver.3:時を刻むように
  • 77. 77 5.1日時表示アプレットVer.1 1 importjava.applet.*; 2 importjava.awt.*; 3 importjava.util.*; 4 5 publicclassWhatTimeextendsApplet{ 6 publicvoidpaint(Graphicsg){ 7 Strings; 8 Dated=newDate(); 9 s=d.toString(); 10 g.drawString(s,10,30); 11 } 12 }
  • 78. 78 5.1日時表示アプレットVer.1 ?1行目:import java.applet.*; ?2行目:import java.awt.*; ?3行目:import java.util.*; –使用するクラスライブラリの宣言 →アプレットの作成にAppletクラスを使用 →描画するためにGraphicsクラスを使用 →現在日時を調べるためにDateクラスを使用
  • 79. 79 5.1日時表示アプレットVer.1 ?5行目:public class WhatTimeextends Applet { –クラスの名前を宣言 –Appletクラスのサブクラスとして作成 java.applet.Applet WhatTimeクラス 継承 スーパークラス サブクラス
  • 80. 80 5.1日時表示アプレットVer.1 ?6行目:public void paint( Graphics g ) { –アプレットの描画を行うメソッド –アプレットが表示される度に実行される –Graphicsクラスのオブジェクトを使用 ?7行目:String s; –日時の文字列に使用するオブジェクトの宣言
  • 81. 81 5.1日時表示アプレットVer.1 ?8行目:Date d = new Date(); –現在の日時を取得する –Dateクラスは日時を扱う一般的なオブジェクト →現在日時を表す具体的なオブジェクトを使う –「Dateクラスのインスタンスを生成」と言う 申請書 氏名: ?????? ?????? 申請書 氏名: ?????? ?????? 申請書 氏名: ?????? ?????? 申請書 氏名:横田 ?????? ?????? 横 田
  • 82. 82 5.1日時表示アプレットVer.1 ?9行目:s = d.toString(); –8行目で生成したDateクラスのインスタンスを 文字列に変換 –toString()メソッドはDateクラスのメソッド –Dateクラスについて調べてみると??? →総合情報センターWebページ →設定方法?利用方法?Q&A→ソフトウエア?ツールの利用 →Java2 SDK Standard Edition ドキュメント →API と言語仕様 →Java2プラットフォームAPI仕様 →左下のフレームから2番目のDateクラスを選択
  • 83. 83 5.1日時表示アプレットVer.1 ?10行目:g.drawString( s, 10, 30 ); –日時の文字列を描画 –描画位置は左上が原点 –アプレットのサイズは<APPLET>タグで定義 (0,0) (Xmax,Ymax) X位置 Y位置
  • 84. 84 5.1日時表示アプレットVer.1 ?アプレットの実行には HTMLファイルも必要 –CODE:アプレットのクラスファイル名 –WIDTH:アプレットを表示する領域の幅 –HEIGHT:アプレットを表示する領域の高さ 1 <APPLETCODE="WhatTime.class"WIDTH="320"HEIGHT="40"> 2 </APPLET>
  • 85. 85 5.1日時表示アプレットVer.1 ?> appletviewer WhatTime.html ?アプレットビューアで実行した場合 <APPLET>タグ以外は無視される
  • 86. 86 講座のスケジュール ?1日目 –1章Javaの特徴 –2章プログラミングの流れ ?2日目 –3章プログラム形式 ?3日目 –4章Javaの文法:~4.6 反復処理(do-while) ?4日目 –4章Javaの文法:4.7 その他の制御文~ –5章アプレットの作成:~5.1 日時表示アプレットVer.1 ?5日目 –5章アプレットの作成:5.2 日時表示アプレットVer.2~
  • 87. 87 5.2日時表示アプレットVer.2 ?アプレットのデザインを変える –アプレットに色を付ける(背景色?文字色) –フォントを変更する
  • 88. 88 5.2日時表示アプレットVer.2 1 importjava.applet.*; 2 importjava.awt.*; 3 importjava.util.*; 4 5 publicclassWhatTime2extendsApplet{ 6 publicvoidinit(){ 7 setBackground(Color.blue); 8 Fontf=newFont("Serif",Font.BOLD,14); 9 setFont(f); 10 }
  • 89. 89 5.2日時表示アプレットVer.2 11 12 publicvoidpaint(Graphicsg){ 13 Strings; 14 Dated=newDate(); 15 s=d.toString(); 16 g.setColor(Color.cyan); 17 g.drawString(s,10,30); 18 } 19 }
  • 90. 90 5.2日時表示アプレットVer.2 ?6行目:public void init(){ –アプレットの起動時に実行されるメソッド (その後paint()メソッドが実行される) –アプレット全体に関係する処理を記述 ?背景色の設定 ?全体で使用するフォントの設定
  • 91. 91 5.2日時表示アプレットVer.2 ?7行目:setBackground( Color.blue ); –アプレットの背景色を指定 –予め定義されている色は サンプルアプレットの ColorList.htmlを参照 –任意の色を作成可能
  • 92. 92 5.2日時表示アプレットVer.2 ?8行目:Font f = new Font( "Serif", Font.BOLD, 14 ); –使用するフォントのインスタンスを生成 –書体,スタイル,サイズを指定 –使用できるフォントの種類は サンプルアプレットの FontList.htmlを参照
  • 93. 93 5.2日時表示アプレットVer.2 ?9行目:setFont( f ); –8行目で生成したFontクラスのインスタンスを 使用するように設定
  • 94. 94 5.2日時表示アプレットVer.2 ?16行目:g.setColor( Color.cyan ); –描画に使用する色の設定 –これにより次行のdrawString()で描画される 文字列が水色になる –複数の描画オブジェクトの色を変更する場合は、 その都度宣言しなければならない
  • 95. 95 5.2日時表示アプレットVer.2 ?ソースファイルを変更した時??? –前に読み込んだアプレットがそのまま実行される ?InternetExplorerの場合 –[CTRL]キー+[更新] ?NetscapeNavigatorの場合 –[SHIFT]キー+[再読み込み]
  • 96. 96 5.3日時表示アプレットVer.3 ?時を刻むように??? –現在時刻の再取得 –画面を再描画 スレッドの実装
  • 97. 97 5.3日時表示アプレットVer.3 ?「スレッド」とは「処理の単位」 アプレットの読み込み 初期化 表示 終わり ウィンドウを閉じる、別のページ を表示するなどにより、ページの 表示が切り替わったら… アプレットのスレッド 時刻の表示を 更新し続ける スレッド生成 スレッド終了 時計表示のスレッド マルチスレッド
  • 98. 98 5.3日時表示アプレットVer.3 1 importjava.applet.*; 2 importjava.awt.*; 3 importjava.util.*; 4 5 publicclassWhatTime3extendsAppletimplementsRunnable{ 6 Threadtrd; 7 8 publicvoidinit(){ 9 setBackground(Color.white); 10 Fontf=newFont("Dialog",Font.BOLD,12); 11 setFont(f); 12 }
  • 99. 99 5.3日時表示アプレットVer.3 13 14 publicvoidpaint(Graphicsg){ 15 Strings; 16 Dated=newDate(); 17 s=d.toString(); 18 g.setColor(Color.black); 19 g.drawString(s,10,30); 20 } 21
  • 100. 100 5.3日時表示アプレットVer.3 22 publicvoidrun(){ 23 while(trd!=null){ 24 try{ 25 Thread.sleep(1000); 26 }catch(Exceptione){ 27 System.out.println(e); 28 } 29 repaint(); 30 } 31 }
  • 101. 101 5.3日時表示アプレットVer.3 32 33 publicvoidstart(){ 34 trd=newThread(this); 35 trd.start(); 36 } 37 38 publicvoidstop(){ 39 trd=null; 40 } 41 }
  • 102. 102 5.3日時表示アプレットVer.3 ?5行目:public class WhatTime3extends Appletimplements Runnable{ –Appletクラスのサブクラスを作成 –Runnableインターフェースを実装 ?これによりマルチスレッドが使用可能 ?run()メソッドを定義しなければならない
  • 103. 103 5.3日時表示アプレットVer.3 ?単一継承と多重継承 –新しくクラスを作成するとき??? ?Java:元となるクラスを1つしか指定できない(単一継承) ?C++:元となるクラスを複数指定できる(多重継承) –単一継承の欠点を補う方法 ?インターフェースは複数実装できる ?(例)MouseListener,MouseMotionListener
  • 104. 104 5.3日時表示アプレットVer.3 ?6行目:Thread trd; –Threadクラスのオブジェクト –時計表示のスレッドを扱うために必要 –class宣言の直後に宣言することにより このクラス全体で使用可能
  • 105. 105 5.3日時表示アプレットVer.3 ?22行目:public void run(){ –時計表示のスレッドを記述 –Runnableインターフェースを実装する場合は 必ず定義
  • 106. 106 5.3日時表示アプレットVer.3 ?23行目:while( trd != null ){ –trd:時計表示スレッドを扱うオブジェクト –null:何も値がない –trdに何らかの値が設定されないと whileループは実行されない –trdオブジェクトが時計表示スレッドの実行を開始/ 停止
  • 107. 107 5.3日時表示アプレットVer.3 ?25行目:Thread.sleep( 1000 ); –時計表示を1秒ごとに行うために 1000ミリ秒処理を停止 ?29行目:repaint(); –画面の再描画を行う –アプレットを背景色で塗りつぶした後に paint()メソッドを実行
  • 108. 108 5.3日時表示アプレットVer.3 ?33行目:public void start(){ –アプレットの処理が開始されたときに実行される メソッド –init()メソッドの後に実行される
  • 109. 109 5.3日時表示アプレットVer.3 ?34行目:trd = new Thread( this ); –trdオブジェクトにインスタンスを生成 ?35行目:trd.start(); –run()メソッドを実行 –trdオブジェクトはnullでないのでwhileループが 実行される
  • 110. 110 5.3日時表示アプレットVer.3 ?38行目:public void stop(){ –アプレットの処理が終了されるときに実行される メソッド –時計表示の更新を止める ?39行目:trd = null; –trdオブジェクトをnullにし、 23行目のwhileループを終了させる
  • 111. 111 講座のスケジュール ?1日目 –1章Javaの特徴 –2章プログラミングの流れ ?2日目 –3章プログラム形式 ?3日目 –4章Javaの文法:~4.6 反復処理(do-while) ?4日目 –4章Javaの文法:4.7 その他の制御文~ –5章アプレットの作成:~5.1 日時表示アプレットVer.1 ?5日目 –5章アプレットの作成:5.2 日時表示アプレットVer.2~
  • 112. 112 学習を進めるために??? ?いろいろなプログラムを見る –Java関連書籍(図書館にもあり) –Yahoo!でJavaを検索 ?簡単なテーマを考える –簡単な計算を行う(BMI指数) –アプレットにお絵描き
  • 113. 113 学習を進めるために??? ?サポートページに紹介されているリンクを活用 –JavaFAQ : What's New about Java(Javaに関する最新ニュース) –JavaFAQ : Java に関するよくある質問とその回答集 –日経Javaレビュー –Java(tm) House Mailing List Homepage –Java Glossary –Java Drive