! " #$%# #$ %&"'(&)#$) * +, -#$)&.&.&)$ /0(0,&.&0 #$-.1&2&-2.&/"&.&/"0,.&, " ' /03"&),0/ '.&0,1, !! "# $$$ !"#$% &'(&) '*+

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "! " #$%# #$ %&"'(&)#$) * +, -#$)&.&.&)$ /0(0,&.&0 #$-.1&2&-2.&/"&.&/"0,.&, " ' /03"&),0/ '.&0,1, !! "# $$$ !"#$% &'(&) '*+"

Transcript

1 !"! " #$%# #$ %&"'(&)#$) * +, -#$)&.&.&)$ /0(0,&.&0 #$-.1&2&-2.&/"&.&/"0,.&, " ' /03"&),0/ '.&0,1,!! "#!"#$% &'(&) '*+ $$$

2 &'()*+*, -./ '&4,,-),15 '*61,&4,,.&)$+,,75 **61,&4),,8 +,9:#5,/;,<&4+/;1.&"# )J*61,)02&KL&"#, %&'()*)+,-./)012 )34564)78#7 %&&()*)+,-./)9:;<) )=$'')5)6$>&)7)$ /66/01/ :1;<8=>:?@,-./0122%!3, %!33, %!333, %!33!,-4607$8#,-490:#;,<4=,-4/0:#;2%>8,-4.0:#;33 01)>?@44)2)55)A)>5%45@$6)8#7 2)6)7)B)CDCEFG)6$%>H))CIJKDL;9)MFNC ('H)02O)%4)P,-4-0:#;2?@A#B%! <55,0C?D!@:#; E>B! <55<0$:#;

3 " MFANGFAB&#$ %&"'(&)#$) * D@OPGFAB&#$)$+&MFANGFAB&.&,*1,, 7$.&,"/ AB?CDB?: QBRPAFS&TA@UBDDVRW&XRVP&4QTX5!Q7R7S?)7?)?)T)UT V)?BY@AZ!! [\] :!"?@G ECF ECF 3HI 3HI )WX)YS)S)Z! S))$$$[ 1:E>?B9F?;G:@@HEIJEH> 1FJ.&,".&)$7$.&,"+.&,/" " '&4,,.&)$+,,75 (.&,*)0,#$,2 ".&)$ O2\ 02!T) B 7$ -KLD])^DKL;NC?)-KLD])/D]DFEK?)-KLD])_LFEKJ.`a?.ab)cDEK?)_NK_<IF9D?)-da)^EeDF^/?)$$$ YVUA@^A@UBDD@A

4 1FJ K) <;9EfIgIh-- L:<;?M L:<;?M '(".&)$.&,*&QTX '(*).& ( % (0>, CI;K)CDCEFG!"#$%&"''())&(&%!* id9ekmifg)ilefijd +,+-./012, 3"!$$4)567/89 6/:/89 6&(&%!*);4'56111

5 (* YS)S)YS))S)Z Z!Z8)! SZ!)! 7 )0 #)"* X)! S)Z)T)Z R*S*T '&*!(U _VP&`&,0')",))&4_VRFAZ&NVWVP5 _ZPB&`&L&_VPD G@AN&`&.&,,&_ZPBD&7$ #$ %/")" QTX&H&abb?cde&fghicd jk?&h&fhl?m cfannvdn&h&lbime&ofbba^y TAVRPBA&H&lbbN^Ve&Kb^^Y p@qrn&h&rrgkscd&kl`_vp&dpbab@?@nby&h&hls_^d V "K$R W:9HBXH9H>M j ai;kkficd j a;k;h9ec<nldf j ^DFiEKI])/EC<NLDF j,dleefl)/ec<nldf j ^DFiEKI])b;J;LI]).ii;iLIKL! "!#$! %&'( )!$! *+, -!)$!. /0+", --1!2$!

6 Y2.-1Z-15 J KLM1:/9:NO,66:PQR J PLF%A@#L:1O,55:NH8R<5SN J L$8=!AA!T@$U!0,99:N J ELVMI:0W5X [\] >4?444) J YS1;#@T01SC,/:N J :?Z$A?@0,W[4WPQ#A455\/555<4"" J K?>ZT;#@T0CE31>T$?E?T!;-. J 71N;#@T0]X,5H,55 J :?T!"0Y-5W/^BH8 [;\>DB?: ".&)$02&-6$)$+&MFANGFAB&.&,*1,,7$.&,"/ '(&D@OPGFAB&/+,&DBU@RNFAZ DP@AFWB&4MFANNVDne&Qt`j]?e&tut`j]?5 ((,.&&4 #&S@FN5&D@OPGFAB&7$ +, YFVR&YBY@AZ&#$+, [;\>DB?: AB?CDB?:][;\>DB?: pzdpby&d@opgfab m<dfil;kj)igildc)wn;kmeei)c^?)o;kn5?)ai9)m_?)$$$[ _GiLDC)LEE]i)WIKL;g;FNi?)p;<qNKp;<?)rI9lN<qFDiLEFD?)$$$[ bdgd]e<cdkl)lee]i)w9ec<;]df?)mdrnjjdf?)$$$[ $$$ k^^svufpv@r&d@opgfab mkk;9d)wdci;]?)eefm)<fe9diief?)i<fdimi:ddl?)$$$[,dleefl)i<<];9il;eki)wrfeeidf?)9:il?)$$$[ +KLDFLI;KCDKL)WCEg;Di?)CNi;9i?)JICDi?)$$$[ $$$ k^^svufpv@r&p@opgfab pzdpby&p@opgfab cfangfab vbpg@an

7 ^:X_;B?C [;\>DB?: *7,I Z!1#!T) Us BXt!7S!7S027 T)2 public double sqrt(double a) { double x = 1.0; for (int i = 0; i < 20; i++) { x = 0.5 * (x + a / x); return x; 2@?_@#""!@8 "#;`$Z!;?T! &," &4!5! ((*1,,J7/*!.&I *1,,J77$(( ")(= ( /*I

8 S* S*!uB 1# 2 j 01YT) j 01Y 7v)YS "S j!ub X (( T) ) 01 7v) 01 "S!T)Q7 = = "S X S* import import jlab.jlabio; jlab.jlabio; public public class class Stat Stat { public public static static void void main(final main(final String[] String[] args) args) { int int n = JLabIO.readInt("Enter the the number number of of data data : "); "); if if (n (n > 0) 0) { double double sum sum = 0.0; 0.0; for for (int (int i = 0; 0; i < n; n; i++) i++) { sum sum += += JLabIO.readDouble("data #" #" + i + " = "); "); System.out.println(" "); System.out.println("mean = " + sum sum / n); n); System.out.println(" "); Enter Enter the the number number of of data data : 5 data data #0 #0 = 2 data data #1 #1 = 3 data data #2 #2 = data data #3 #3 = data data #4 #4 = mean mean = BNVP&H&*7,I "8 U@Y^VSB&H&I 7$*7,+>, ) #$ BxBUqPB&H&)$, ) #$7$/" NB_qW&H&7$%""*I +&[RPBWAFPBN&^A@WAFYYVRW BRyVA@RYBRP&D@OPGFAB&>, #$#+, w,-;z ((('") ').& ( {BNVP`U@Y^VSB`BxBUqPB`NB_qW

9 a6bx

10 !"" #$" %" &'" ($'& )*" )*+!"" )*!"## // // : Computer Programming // // First First Java Java Program public class class Hello1 { // // main main method begins Java Java application execution public static void void main(final String[] args) args) { System.out.print("Hello "); "); System.out.println(" "); // // end end of of class class Hello1! "#$"" %&'()*+,","+-.(,# $,#"+*+/ )# // // : Computer Programming // // First First Java Java Program public class class Hello1 { // // main main method begins Java Java application execution public static void void main(final String[] args) args) { System.out.print("Hello "); "); System.out.println(" "); // // end end of of class class Hello *#01233$)# / /89:/" public class Hello1

11 $!"##%&'()* +&'()*,-./0 // // : Computer Programming // // First First Java Java Program public class class Hello1 { // // main main method begins Java Java application execution public static void void main(final String[] args) args) { System.out.print("Hello "); "); System.out.println(" "); // // end end of of class class Hello1 ;5<=6>"+, / ;5<=6>./89:/"";5<=6> // // : Computer Programming // // First First Java Java Program public class class Hello1 { // // main main method begins Java Java application execution public static void void main(final String[] args) args) { System.out.print("Hello "); "); System.out.println(" "); // // end end of of class class Hello1 /,"-"#?,@A35;B0616CD System.out.print-./8,E.% println,)print*+," 11./0 0 %"23%&'()* // // : Computer Programming // // First First Java Java Program // // : Computer Programming // // First First Java Java Program public class class Hello1 { public class class Hello1 { // // main main method begins Java Java application execution public static void void main(final String[] args) args) { System.out.print("Hello "); "); System.out.println(" "); // // end end of of class class Hello1 JLab>javac Hello1.java JLab>java Hello1 Hello JLab> // // main main method begins Java Java application execution public static void void main(final String[] args) args) { System.out.print("Hello "); "); System.out.println(" "); // // end end of of class class Hello1 F2G212HC0=5IE $;2BC;5<=6>01233 ""+,E &#,#;2BC;5<=6>01233"+

12 $)%%&3' // // : Computer Programming // // First First Java Java Program public class class Hello1 { // // main main method begins Java Java application execution public static void void main(final String[] args) args) { System.out.print("Hello "); "); System.out.println(" "); // // end end of of class class Hello1 J6;;5C<&#KKA"&L)#D!06;;5C<)#- "06;;5C<,&+8",)& public public class class Hello1{public Hello1{public static static void void main(final main(final String[] String[] args){system.out.print("hello "); "); System.out.println (" "); (" "); -+,)" "M public public class class Hello1 Hello1 { public public static static void void main(final main(final String[] String[] args) args) { System.out.print("Hello "); "); System.out.println(" "); $"&',,*,"'* -!" +&, ($&' ",,"*,",-!".89:; 5,.4</5606=>4 ********************************************************* * p u b l i c c l a s s H e l l o 1 { * * * * PUBLIC PUBLIC STATIC STATIC VOID VOID main(final main(final String[] String[] args) args) { * * * * System.out.print("Hello "); "); * * * * System.out.println(" "); * * * * * * * * * *********************************************************!"## $%&' #(&) * +!&, -$. $+ #(&) * +!&, -$/, 0 // // : Computer Programming public class class Hello1 { public static void void main(final String[] args) args) { System.out.print("Hello "); "); System.out.print(" "); System.out.print('A');

13 5,.4</.0:1./ // // : Computer Programming public Class Class Hello1 { public static void void main(fina1 String[] args) args) { System.out.print("Hello); System.out.print(" "); Systen.out.print('A'); ClassNclass AN0"/8D fina1nfinal AN"//8$/7D "Hello); N"Hello"); A"O?,D SystenNSystemAN;D --N--P %)#"/.("+-E-/ +$. )*"/")*+* + )*#$", public public class class PrintStars PrintStars { public public static static void void main(final main(final String[] String[] args) args) { System.out.println("*******"); System.out.println("* *"); *"); System.out.println("* *"); *"); System.out.println("* *"); *"); System.out.println("*******"); JLab>javac PrintStars.java JLab>java PrintStars ******* * * * * * * ******* JLab>.0 60./0? import javax.swing.joptionpane;! public class class HelloDialog { public static void void main(final String[] args) args) { JOptionPane.showMessageDialog(null, Hello"); System.exit(0); g.setcolor(color.red); g.filloval(x, g.filloval(x, y, y, w, w, h); h);! " # $/"01233QEjavax.swing.JOptionPane g.setcolor(color.red); g.drawoval(x, g.drawoval(x, y, y, w, w, h); h); #,"import +$JOptionPane " &System.exit(0) %)#R,

14 60? public public void void paint(graphics paint(graphics g) g) { g.setcolor(color.red); g.filloval(20, g.filloval(20, 20, 20, 100, 100, 100); 100); g.setcolor(color.blue); g.filloval(40, g.filloval(40, 40, 40, 60, 60, 60); 60); public public void void paint(graphics paint(graphics g) g) { g.setcolor(color.blue); g.filloval(40, g.filloval(40, 40, 40, 60, 60, 60); 60); g.setcolor(color.red); g.filloval(20, g.filloval(20, 20, 20, 100, 100, 100); 100); import import java.awt.*; java.awt.*; import import java.awt.event.*; import import java.applet.*; java.applet.*; public public class class Monster Monster extends extends Applet Applet { // // main main method method public public static static void void main(string[] main(string[] args) args) { Frame Frame frame frame = new new Frame("JLab"); Frame("JLab"); frame.addwindowlistener(new WindowAdapter() WindowAdapter() { public public void void windowclosing(windowevent e) e) { System.exit(0); System.exit(0); ); ); frame.add(new frame.add(new Monster(), Monster(), BorderLayout.CENTER); frame.setsize(210, 210); 210); frame.setvisible(true); 60?A6B :1C=0 public public void void paint(graphics paint(graphics g) g) { g.setcolor(color.red); g.filloval(0, g.filloval(0, 0, 0, 200, 200, 100); 100); g.setcolor(color.yellow); g.filloval(20, g.filloval(20, 20, 20, 160, 160, 160); 160); g.setcolor(color.green); g.filloval(40, g.filloval(40, 40, 40, 120, 120, 120); 120); g.setcolor(color.blue); g.filloval(60, g.filloval(60, 60, 60, 80, 80, 80); 80); g.setcolor(color.white); g.filloval(80, g.filloval(80, 80, 80, 40, 40, 40); 40); // // end end of of Monster Monster class class public class class Add1to10 { public static void void main(string [] [] args) args) { System.out.println(55); public class class Add1to10 { public static void void main(string [] [] args) args) { System.out.println( ); public class class Add1to10 { public static void void main(string [] [] args) args) { double x = ; System.out.println(x);

15 6D14/0.4/9 import jlab.jlabio; public class class Mean Mean { public static void void main(string [] [] args) args) { double x = 0.0; 0.0; x += += JLabIO.readDouble("data #1 #1 : "); "); x += += JLabIO.readDouble("data #2 #2 : "); "); x += += JLabIO.readDouble("data #3 #3 : "); "); x += += JLabIO.readDouble("data #4 #4 : "); "); System.out.println("mean = " + x / ); ); JLab>javac Mean.java JLab>java Mean data #1 : 10 data #2 : 12 data #3 : 14 data #4 : 14 mean = 12.5 JLab> 0123*4*%" +' :0*4* %$%"&'/" # ($ 0;06<30*4*#$" # ($%$.+' &'*=>30?@A301*9@7?@A882>? 0>B2@7>80>3*C7D3EA@0*/" ($(&" F"GHI J+# J#)* K0123L67892:0L0;06<30L10M<?N #)* "%! &'*OPAM*/"GHI &",F" EF"G EF"G.0HI

16 EF"G.0HI EF"G4 EF"G1 EF"G 4/:;

17 EF"G./05 0 EF"G = EF"G.0HJ EF"G.0HJ

18 EF"G4 E!"G1 EF"G./0 0.- *OABA* +'*6:ACC )*"*OABA*A99:26A327>* $%$*8A2> %" &',",Q +)*#$,Q*'R+'+'*C08267:7>*S )*")*%)*#$)*+", )* /" 0123L67892:0L0;06<30L10M<?

19 %!"#$#!"#$% & % '( &% %)* #+##,##-##.##/!! &'(( )*+( 0 (1!"# $%&'! "#!!!() *+, - $!./ 0! % '( %!&0!#%! 1( - 102&-$%3"#!0 0 2*2! 0 "# & 34!434! 0 04#5(!6#788/9 public class Hello1 { "%& Public static void main(string [] [] a) a) { system.out.println('hello ') "#$ & ' ' ( )!

20 ,-,-. =GHI;F#HJF#;IA;F#A=HKLGF#MMM9 >N;?OK>?A#B#P%)* &' CC!#D8#P 5!#+F#,F#-F#.F#/F#+QF#MMM9 IHR?O?<#B#"#(!4ST $ S S04%U!V!#5!#AW?KF#L>AF A>?KF#LI>X;F##Y;KZH[;\>X;F#Y;K]>LOI;F Y;K^>?@_XAKOXL;F#MMM9 *+, -, % 'VC!`! 4&0. % / byte, short, int, long. 0 / float1 double."&0 / char. 00& / boolean $((- 5! % '#LIOAA $(( 6(1-$((.2 String1 Text1 Rectangle1 333 $((- 5! /0,.## '**S!VC! "# ' byte)7( +,8short)9( +,8int):( +,8 long)4( +,8float):( +,8double )4( +,8 char)9( +, '**% '3 % 'P %66 int 72&66 long8 L>[NHI;?# *6($% & 04 3(!*4% '( S( "#!!a#50 4!9 7;9<8=>94?8;87;8@>=<?9 (!4#(bC!* ("#!!S byte )A794"B79=, short )A<9>=4"B<9=>=, int )A97:=:4<>:4"B97:=:4<>:=, long )A9 "B9 A7,!V!!(S$% & 04 $40%S#int

21 .##.286:;4<=>689 "#!!4! :3-;-<= a*"#!! &**#JI>OKHXY#N>HXK &%6 +3-A &%6 +3-9A-+ (!4#(bC!*'4("#!!a* float(*>a? $ %C50 ), double (*7DA7= $ %C50 ), $40%S#double )?.##1.##.#@.A #float#a*(s! #int#c #int#a*(04c#%u!0%04s! #float#a*04*!c!#5 'a*"#!! (4!04"#49 int(397:=:4<>:=5! float(397:=:4<>:=5! "!55!(E9F7:=:4<>DG7; &0!#%- 6%H%5!- 55$%I+5$+(0J5 2BC:8:B5689,*2String9 (&**#char#v( '!b ( '#5LGO?OLK;?9#V ')&' K, LML8LNL8LOL8LPL8LQL8LRL8LL8LL %;A?)&' K, L7L8L9L8LSL8LTL 1/%'*+-')&' K, LUL8LVL8LWL8LXL 13(3CC*+ '\n' B (05 '\t' YMN #String V"#4*(#char#"#!!!(bC!0% "engineering" "webboy@universe.org" " " "Hello How are you?" "" "1004"#0 V!*#788D ""##& #''#0

22 2>DD;6:49 #boolean 04& V#true#&'#false!C! 7#0 04&!#true###8#0 04&!#false 2E:83:>;69 &% %U!a*( ($% & &% V&'% '("#* % '&%!'!"#S public class class Zombie { public static void void main(final String[] args args ) { int int counter = 0; 0; double radius = 5.225; boolean success = false; String name name = "somchai"; & &% %U!a*(!"#(a*S!&% S#0 "#S( a*s!&% T!"#(S a*s &% #%U! &!( 4#5 '**0 a*"#!(409 de int numcircles = 27, k; int numcircles System.out.println( numcircles ); System.out.println( numcircles ); k = 35; fg numcircles = k; int numcircles ee int k fg int k int int counter = 0; 0; double radius = 5.225; boolean success = false; char char korkai = ''; ''; String name name = "somchai"; 50BCD 2EF"50 0FD C(F&%6#"50 50&G600C" H" 0E7#0F&%7 int int i = 100, 100, j = 200; 200; double x0, x0, y0, y0, z0; z0; double x1, x1, y1 y1 = 4.5, 4.5, z1 z1 = 7.8; 7.8;

23 77 5K CH600C" H ) int int counter #0FC(F 50BC int int counter = 0.75; 0.75; double radius = "15.25"; boolean success = 1; 1; H50BCDC(F70D"& integer counter; double radius = "15.25"; string title title = WWW"; "I2EF"50 &J int int boolean; double public = 12.7; 12.7; String 12X 12X = WWW"; H"I!- V% '*41 #(##h# V#i#a04 V(bC!!4( Vc#040 %U!0 1 ST 0 V!a 0 2"C#*"#!(1 0 2"C#*VV!c#($% & #42 2EF LMM 8 "HND& int17 int17 buttercup Public int2string day_of_week "H 7zean 7zean I.love.you public ohoh! ohoh! ed-edd-n-eddy,#j#(. K#?*#*J#"I!- abstract assert boolean break byte case catch char class const continue default do double else extends false final finally float for goto if implements import instanceof int interface long native new null package private protected public return short static strictfp super switch synchronized this throw throws transient true try void volatile while!31 E $ &% #B#(bC!!41 a LIOAA#B#(bC!!41 ST S#i#&'#h V 6V% '*4"#"##(!&**#j`j numstudents dayofweek imagebuffer tvchannel customerid initialvelocity

24 !"#$#.##1!"#$#.##. *#*## #&'1V 5#+##,##-##.##/#9 int i int j int k int i=1, j=2, k; - 9 O *#*## #&'1V 5#+##,##-##.##/#9 double x=1.0, y=2.0; double x double y ! k = i + j; i = k * j; j = i / 2; k = i % 2; - 9 : * 9 : * : : * : + "#$ %!&'()"! x = y + 5.0; y = x / 2.0; x = y % 3.0; y = (x * 3.0) + 2.0; P P3+ :3< +3< P3+ +3< :3< "#$ %!&'()" i = (j + k) * 3; = : + x = y; > ;3+ :3< J%@2LMM374=6459 #.#2NOP86MM3D49 S V#Q &% #Q#!!#k!" #$ %"&'() x = (-b (-b + Math.sqrt(b*b - 4*a*c)) / (2.0*a); double x -, + *+, double a double b double c #&% #lm!#5 V#[;KG>@9# V!( #&% #lm!#!! 4%)* #&' Va*%n4%n4# 6"#! 04 ((9.0 ((9.0 * c) c) / 5.0) 5.0) (((9.0) * (c)) (c)) / (5.0)) + (32.0) 9.0*c/ (-b (-b + Math.sqrt(b*b - 4.0*a*c)) / (2.0*a).$)/(012!')!34$'567'!!(01)834$' %)1 )1

25 i = j; j; i = i + j; j; %!&'()"j/59!5()"i %!&'()"ij1) 7):) #$/7/59!5()"i + x = -x; -x; f = ((9.0 ((9.0 * c) c) / 5.0) 5.0) ; 32.0; int i=1, j=2; int i int j - 9 c = 5 * (f (f ) 32.0) / 9.0; 9.0; i = i + j; : 9 + d = Math.sqrt(dx*dx + dy*dy); j = j + j + j; : * + H.+G #+ 1 %#GG #+ "#S!a*"#! S! %)* #"#"#4*4!C!Z[Y\]^ _`Mab@ f "#20%(#5*0 ]g[amy]a5 h09 x = ((9.0 ((9.0 * c) c) / 5.0) 5.0) * / +

26 %#GG #+ x = (-b (-b + Math.sqrt(b*b - 4.0*a*c)) / (2.0*a) - + * * - Math.sqrt() * * int int i, i, k = 9; 9; double x = 1.0; 1.0; k = i; i; // // i is is uninitialized i = x; x; // // assign double to to int int i = 3k; 3k; // // no no operator * x ; 5.78; // // not not a complete statement i = 3--k; 3--k; // // should be be i = 3 - (-k) (-k) i = (k (k + 5; 5; // // incomplete parentheses / %#@*G?*#R#& F# G, o;wph?;[;xk J$(C E5$%!$%E qxoi<aha (CGEH0$i--+ G530( π $15C E0 5!0&- r;ahyx H _[NI;[;XKOKH>X J$ 0F&0C 0"6 4LQLR8 &%6#"50 A <P39=* S A 6&0C import import jlab.jlabio; jlab.jlabio; public public class class Radian2Degree Radian2Degree { public public static static void void main(string[] main(string[] args) args) { double double x, x, d; d; x = JLabIO.readDouble("input radian radian : "); "); d = * x; x; System.out.println(d); JLab>java Radian2Degree input radian : JLab>

27 π j 3!! j Math.PI = :3-;-<=9*<:<?=P=:9:?;* import import jlab.jlabio; jlab.jlabio; public public class class Radian2Degree Radian2Degree { public public static static void void main(string[] main(string[] args) args) { double double x, x, d; d; x = JLabIO.readDouble("input radian radian : "); "); d = * x / Math.PI; Math.PI; System.out.println( x + " radians radians = " + d + " degrees"); degrees"); JLab>java Radian2Degree input radian : radians = degrees JLab> %S.@ST ## o;wph?;[;xk J$ 3! 3!0< $(( qxoi<aha (33!0)k]\Zl,< $i--+ $ &- + + r;ahyx H _[NI;[;XKOKH>X J$ F# G, %,, 0F&0C 0" &0C import import jlab.jlabio; jlab.jlabio; public public class class ParallelResistance { public public static static void void main(string[] main(string[] args) args) { double double r1, r1, r2, r2, r3, r3, r; r; r1 r1 = JLabIO.readDouble("r1 (Kohms) (Kohms) = "); "); r2 r2 = JLabIO.readDouble("r2 (Kohms) (Kohms) = "); "); r3 r3 = JLabIO.readDouble("r3 (Kohms) (Kohms) = "); "); r = / (1.0/r1 (1.0/r /r2 1.0/r /r3); 1.0/r3); System.out.println("R (parallel) (parallel) = " + r + " Kohms"); Kohms"); JLab>java ParallelResistance r1 (Kohms) = 22 r2 (Kohms) = 33 r3 (Kohms) = 100 R (parallel) = Kohms JLab> o;wph?;[;xk J$ 1 qxoi<aha (MN$%mH0$i--+ 3*11# ± = $ !0&- r;ahyx H _[NI;[;XKOKH>X J$ + + =

28 F# G, 0F&0C import import jlab.jlabio; jlab.jlabio; 0"6 L T + = public public class class QRoot QRoot { public public static static void void main(string[] main(string[] args) args) { double double a, a, b, b, c, c, x1, x1, x2; x2; a = JLabIO.readDouble("a = "); "); b = JLabIO.readDouble("b = "); "); c = JLabIO.readDouble("c = "); "); ± = = A-1 A9 6&0C double double t = Math.sqrt(b Math.sqrt(b * b * a * c); c); x1 x1 = (-b (-b + t) t) / (2.0 (2.0 * a); a); x2 x2 = (-b (-b - t) t) / / a; a; JLab>java QRoot System.out.println("x1 = " + x1); x1); a = 1 System.out.println("x2 = " + x2); x2); b = 4 c = 3 x1 = -1.0 x2 = -3.0 JLab>

29 '$%!"# $%&!"#$%&'()* %()$%+)),!"+)) ( ) "%&' ($!) '*+! import import jlab.jlabio; jlab.jlabio; x = x - 5.0; 5.0; x = * x; x; x = x % (y (y + z * a); a); x = x / (2.0 (2.0 * x); x); x -= -= 5.0; 5.0; x *= *= 3.0; 3.0; x %= %= (y (y + z * a); a); x /= /= (2.0 (2.0 * x); x); public public class class Mean Mean { public public static static void void main(string main(string [] [] args) args) { double double x = 0.0; 0.0; x += += JLabIO.readDouble("data #1 #1 : "); "); x += += JLabIO.readDouble("data #2 #2 : "); "); x += += JLabIO.readDouble("data #3 #3 : "); "); x += += JLabIO.readDouble("data #4 #4 : "); "); x += += JLabIO.readDouble("data #5 #5 : "); "); System.out.println("mean = " + (x (x / 5.0) 5.0) ); ); JLab>java Mean data #1 : 12 data #2 : 35.5 data #3 : 16.8 data #4 : 19.0 data #5 : 2.2 mean = 17.1 JLab>

30 ,-",./*0 $(")* (-! a++ a a ++a a int i=1, j=2, k; int i int j int k,-",./*0 #$(")* (-! a-- a a --a a int i=10, j=4, k; int i! int j int k i++; ++j; j = i++; k = ++j + i++; i--; --j; j = --i; k = --j - --i; " " # #! k = j i; k = j i;!*... $!*. 1,- double x=10.0, y=20.0, z; z; z = x++ x y; ++y; z = x-- x y; --y; $%&'()*+,-. z = x++-++y; &.$(/ &6#&#&3 789!, 7:;$< =)->&%() #&?9&)$?< =)!#>& #&? =)->& #&?@ 1 z = x--+--y; z = x+++++y; z = x-----y; $%&'()*+ int int base10 = 2545; 2545; int int base8 base8 = 04761; int int base16 = 0x9F1; long long base10 = 2545L; long long base8 base8 = 04761L; long long base16 = 0x9F1L; (x++)++; /0,-.,

31 $!*. 1,,. A302B&6#&#&A 7C D0EF3G6#&#&D 7H 7.$(,.#& %():) '!$( ( '#&I?+.#&$)!"#######$#% 123E7 567/8! E8 567/:8! E11 567/:8! 9 ; ::: &#$###'()% -567E-6 567/<#8! E-4 567/<:#8! E-3 567/<!:#8! 9 ; ::: 2*344, 3=>03?@04-!"# $.$%& J & ( )%&' ")*. ( ")* $) *+, -./-.00/1, /88, 0.8 9/0/1,.8, 0 0*-:0.-- 0;< => ;, *0?=>-- 0@, $$$ int int dx, dx, dy, dy, halfdist; halfdist; halfdist halfdist = * Math.sqrt(dx*dx Math.sqrt(dx*dx + dy*dy); dy*dy); = :;< :&$K# "!!.$K$) public public class class TypeChecking TypeChecking { public public static static void void main(string[] main(string[] args) args) { double double x = 1.0; 1.0; short short k = ; ; float float f = 1.2; 1.2; JLab>javac TypeChecking!"#$%&'()(*+*,-../01, #$:7; <=:>!<?@A$*.2!"#$%&'()(*2*,-../01, B<@C?7D?<(:>!<?@A$*.2 JLab> $%&'()AB(%C*++%+!"# $.$%& /2LB0MGN2B0N>:-$7 ":$:),.&)&))( & :&( ) public public class class TypeCasting TypeCasting { public public static static void void main(string[] main(string[] args) args) { int int j = 3; 3; System.out.println("int : " + (1 (1 / j)); j)); System.out.println("float : " + (1.0F (1.0F / (float) (float) j)); j)); System.out.println("double : " + (1.0 (1.0 / (double) (double) j )); )); JLab>java TypeCasting int : 0 int j float : / (double) j 3 double : JLab> D

32 $%&,=&>'!?!"# $%& ( )+)) O)+)),P"Q'#J ( ).O) "( $%&'.#&!$ %&'-';!!R ///F///G public public class class LossFromTypeCasting { public public static static void void main(string[] main(string[] args) args) { int int i = (int) (int) ; ; int int k = ; ; // // 0x3000B ///G 0x3000B ///G short short tiny tiny = (short) (short) k; k; System.out.println("i = " + i); i); System.out.println("tiny = " + tiny); tiny); JLab>java LossFromTypeCasting i = 12 tiny = 11 $(==<E#$%=#A#:#)!<$)=;#<$ byte?char short?byteechar char?byteeshort int?bytefshortfechar long?bytefshortfcharfeint float?bytefshortfcharfintfelong double?bytefshortfcharfintflongfefloat "..).!"# $.$%&!*. /2LB0MGN2B0N"Q'+$)STUVW!$9<!"E42NXST public public class class PrecedenceOfCasting { public public static static void void main(string[] main(string[] args) args) { double double x = 1.9, 1.9, y = 10.9; 10.9; System.out.println("(int) x * y = " + ((int) ((int) x * y)); y)); System.out.println("(int) y * x = " + ((int) ((int) y * x)); x)); System.out.println("(int) (x (x * y) y) = " + ((int) ((int) (x (x * y))); y))); System.out.println("(int) (y (y * x) x) = " + ((int) ((int) (y (y * x))); x))); JLab>java PrecedenceOfCasting (int) x * y = 10.9 (int) y * x = 19.0 (int) (y * x) = 20 (int) (x * y) = 20 JLab> 7 :&$! ( $%&'.#&&$ STUV 7W:))) %&'$ ") G H-=-I3E7?double@1 3?double G,-..>H-=-I3E7?float@1 3?float G,-..>H-=-I3E7?long@1 3?long G,-..> 3=-I3/>JI.?int public public class class AutoConversion AutoConversion { public public static static void void main(string[] main(string[] args) args) { int int i = 7, 7, j = 8; 8; double double x = 0.5F 0.5F * i + j; j; System.out.println("x = " + x); x); JLab>java AutoConversion x = 11.5 JLab> E#B$#$%=#A#:#)!<$)=;#<$

33 J:K5;:;<EB:F:G:H56C;H5BI:C; L byte?shortfintflongffloatfedouble short?intflongffloatfedouble char?intflongffloatfedouble int?longffloatfedouble long?floatedouble float?double HI7I 7J345I87- K K intillongfloat K K longdouble public public class class Widening Widening { public public static static void void main(string[] main(string[] args) args) { int int big big = ; ; float float approx approx = big; big; System.out.println("big = " + big); big); System.out.println("approx = " + approx); approx); JLab>java Widening big = approx = E9 JLab> double x = (1/2 (1/2 + 1/2); 1/2); float float y = 1.0/2.0; double z = 4d 4d + 5; 5; double u = /2; 1/2; double v = (0.0 ( )/2; 1)/2; double f = 212.0; double c = (5/9) (5/9) * (f (f - 32); 32); M6HN 6HN )6HN!6HN.%.&%.%.&% K)%AB(CL'%(CB-=@0 public public class class Imprecision1 Imprecision1 { public public static static void void main(string[] main(string[] args) args) { double double x = 20.1; 20.1; double double y = x ; 16.8; JLab>java Imprecision1 System.out.println(y); JLab> 30J0M>N0JO public public class class Imprecision2 Imprecision2 { public public static static void void main(string[] main(string[] args) args) { double double x = 1.0E-200; 1.0E-200; JLab>java Imprecision2 System.out.println(x * x / x); x); 0.0 System.out.println(x * (x (x / x)); x)); 1.0E-200 JLab> public public class class DivByZero DivByZero { public public static static void void main(string[] main(string[] args) args) { int int i = 0; 0; int int j = 5 / i; i; System.out.println(j); JLab>java DivByZero java.lang.arithmeticexception: / by zero at DivByZero.main(DivByZero.java:6) Exception in thread "main" >EQIR@1/02EJ-ST3 =M1/05.*8$*'B(%C9

34 .%.&% public public class class DivByZero DivByZero { public public static static void void main(string[] main(string[] args) args) { double double i = 0.0; 0.0; double double j = / i; i; System.out.println(j); System.out.println(0.0/i); JLab>java DivByZero Infinity NaN JLab> K)%AB(CL'%(CB2@-J.(CK(C(BP 31UAU5U%BAUV&W*+9 >EQIR@1,-.*8$*'B(%C

35 &'()!"#$%$ char String String!"#$"%& '#()* +,)*()* System.out.print System.out.println!" #$% ()*+ '(,char- -.. char / *&78 / &'() *+,-(&./ 0 1., 22 2" &6 789 *+,-(&./ 0 1., 2:2 2;2 2<2 2=2 >(?@ABC( *+,-(&./ 0 1., 2D2 2E2 2F2 2G2 )HIJ'IK)?@ 1., '\n' &6L M,))N+HJ. '\t' & " $'(.)/&'0 9. :; < = >?0 A#B4"C&8 0< DE. 012 > :0 22 *)H 77O: 0 2"2 *)H 77O; *)H 77P: *)H 77P; *)H 7Q39 0 2G2 *)H 7RST 0 22 *)H 7R7: *)H 7R7; 0.> <F BDH# 8

36 (1/$23'44char :-.. /2 I F. = &$46(& $&J)&#4& 3 2< K 8 :0 '\n' &6L M,))N+HJ. '\t & " '\\' >(?@ U *"VWX0 '\'' >(?@ ' *YZ[X \]0 '\"' >(?@ " *]"X \]0 52&"$'466 L 009 M +1^)K)J_1B?B&C&)@ * ` $ a bbb0 IMI short char ^c '))H.'IK)?@ Nd'-A H)c'K)J _1B'6)'c,/ )K)J_1B?B&C&)@'6) dej.en^_ '. BN * 2;2 2Q2 ej.en^ 2S2 0 f^d,ekk)j_1b?b&c&)@g&^'k,kh, d,,&gj.', 6^'& i Jd,,&gJ ; &.ej.j VV 2;2 ()*+ 0/'(,String- '74'8'4String 2< S =N: -.. String 9. O<; :-.. /2 String. 00 "" : #)%% $*7B#Q public class StringSample { public static void main(string [] [] args) { String s1 s1 = "This is is a string literal"; String s2 s2 = "This is is an an illegal string literal"; <@/ S S / :> >><0 /2-.. String S.=< 0T0 U@20V0 String :0-1 S public class class StringConcatenation { public static void void main(string [] [] args) args) { String s1 s1 = "Approx. value value of of PI"; PI"; String s2 s2 = "is"; "is"; System.out.println(s1 + s2); s2); System.out.println(s1 + " " + s2); s2); System.out.println(s1 + " " + s2 s2 + " " + Math.PI); JLab>java StringConcatenation Approx. value of PIis Approx. value of PI is Approx. value of PI is JLab>

37 ()'3.'48 ()'3.'48 "1 "1 + 2 = " ; tostring S "1 + 2 = 1" "1" S tostring "2.0" "1 + 2 = 12.0" "1 "1 + 2 = " + (1 ( ); 1.0 S S 3.0 tostring "3.0" "1 + 2 = 3.0" String529:2+ ()*"#$%$9$; 43<=>?@A(3String String V0 W&*5"C W&*5"C String 1c '&K) Kh, jyz[ &JN^)c 'HJdIN &JN^1c ' &JN^ * 0 -+,g&^'+.'e) 6L M, +1^ String s1 s1 = "Java JA"; String s2 s2 = s1.touppercase(); // // "JAVA JA" JA" char c = s2.charat(2); // // 'V' 'V' %&#Q*538 /0 int Y12-0> 0@T *"A((&7!6$&38 /0 String Y12@:/0> 0@T -:F ZF@20V0=N: *7BW38 / String Y12@:/0> 0@T -:< public class StringAPI { public static void main(string [] [] args) { String s1 s1 = " Moo Moo Mak Mak "; "; System.out.println(s1.length()); System.out.println("\"" + s1.touppercase()+"\""); System.out.println("\"" + s1.trim() + "\""); 10 " MOO MAK " "MOO MAK"

38 $)[$*7B#Q3 int b\ int e 8 ) int 'd,, *JJ&B+H^1c 'Kh, " 0 c, String Kh,'6).')B J& M&.& " Kh, d,, " & & H,.k^IN6''6)c'&H,. 7 public class Substring { public static void main(string [] [] args) { String s1 s1 = "Scorpian"; System.out.println(s1.substring(1,5)); JLab>java Substring corp S c o r p i a n JLab> B=>?@A23C(3String W&*5"C$ 5&%( ]B%& ^6_6 `a' =0 ^b6[ <c dd -=..L : e*7b#q charat compareto concat contentequals copyvalueof endswith equals getbytes getchars hashcode indexof intern lastindexof length matches regionmatches replace replaceall replacefirst split startswith subsequence substring tochararray tolowercase tostring touppercase trim valueof DEFEGHI=JKLJ= 0.3:"M."$ <=-:0 5&%( ]B%& == L O:O<< 0- :0=V0 /2 = =fg=0r. h&j)b7&w&#* N1c 'Nc',dHJ6Nc', en^) `#6%i$B$ )HJ66'Nc',_.,Kl,ABJA@ N1c 'Nc',d'-A 6^'& i Nc', 1c 'INc' "SEPTEMBER" j&$bq# )^'6) 9m:; n :7T & ))di6c 'Nc', )&.',ek Nc', 9 &'() J A N U A R Y F E B R U A R Y M A R C H...

39 N'33$0.3:"M."$!"#$% &"&$"# '() *+,-. ( *+ :"M."$ import jlab.jlabio; public class Month { public static void main(string [] [] args) { String month = ""; ""; month += += "JANUARY FEBRUARY MARCH APRIL "; "; month += += "MAY JUNE JULY AUGUST "; "; month += += "SEPTEMBEROCTOBER NOVEMBER DECEMBER "; "; int int m = JLabIO.readInt("Enter month number : "); "); System.out.println(month.substring(9*(m-1),9*m)); JLab>java Month Enter month number : 2 FEBRUARY JLab> J A N U A R Y F E B R U A R Y M A R C H... 0'M3O?A?J=!"#$%$9$; 0'M3O?A?J=KP 1M19&)Q9$DRES ->< = ei$*&wk")*k(7b#*3 8\ ei$*&wk")*k(7b#*%#3 8.-l0 = ei$*&wkb# -:X@=:90 // read a string from standard input BufferedReader reader = new BufferedReader( new InputStreamReader(System.in)); String s = ""; try { s = reader.readline(); catch (IOException e) { e.printstacktrace(); :0O: /2 O:V0O ^b6[',k7&6c'#*38 m.l 009 ^b6[',k7&6cj")[%&38 m.l 00 ^b6[',k7&6ce*7b#q38 m.> =09.=>: /O:=>: String 9O< U=>: -><:0.. < import jlab.jlabio; O@2. <- ; n -

40 0'M3O?A?J=KP 1M19&)Q9$DRES import jlab.jlabio; public class Month { public static void TestJLabIO(String [] [] args) { String name = JLabIO.readString("Name : "); "); int int age age = JLabIO.readInt("Age : "); "); double tax tax = JLabIO.readDouble("Income Tax Tax : "); "); System.out.println(name + ", ", age age = " + age age + ", ", tax tax = " + tax); JLab>java TestJLabIO Name : Somchai Age : 41 /01234 Income Tax : I won't tell you invalid real number, try again Somchai, age = 41, tax = JLab> TEO?@=%$UGVWX V0?0 [67 4"C&.< Do ></F 345&4p CBQB*8 Y12U 2/2= >.U DM Y L 0<= ><V0L <.@2 q = + )) (,67)96:6;6<6=69,,>(: )+9*)(:?+9,,?+9>= &O>=OY@(3UGVWX N'33$ h&j)b7&w&#* N VVW Y[Y 6'&6 :; H+,) R3o8:Q `#6%i$B$ )&6 :; HKl,ABJA@ +1^p&))H VVW Y[Y 6' R3o8:Q N VVW Y[Y d'-a j&$bq# 6,_, 'W(%&W&#*6*B"# 6,qK))J!@ A>7B)@ 6@ 6@ 6@ 6@ 6@, A6>)@ 6@ 6@ 6@ 6@ 6@, )+9*)A?+9,,?+9

41 import import jlab.jlabio; jlab.jlabio; public public class class EAN13CheckDigit EAN13CheckDigit { public public static static void void main(string[] main(string[] args) args) { int int s = 0; 0; String String d = JLabIO.readString("Enter digits digits : "); "); s += += Character.digit(d.charAt(1), 10); 10); s += += Character.digit(d.charAt(3), 10); 10); s += += Character.digit(d.charAt(5), 10); 10); s += += Character.digit(d.charAt(7), 10); 10); s += += Character.digit(d.charAt(9), 10); 10); s += += Character.digit(d.charAt(11), 10); 10); s *= *= 3; 3; s += += Character.digit(d.charAt(0), 10); 10); s += += Character.digit(d.charAt(2), 10); 10); s += += Character.digit(d.charAt(4), 10); 10); s += += Character.digit(d.charAt(6), 10); 10); s += += Character.digit(d.charAt(8), 10); 10); s += += Character.digit(d.charAt(10), 10); 10); System.out.println("Check Digit Digit is is " + (10-(s%10))%10);

42 &'()!" "#$!%"!"#$" %&&#"'(")*+"$$&(,"$-". /-'-"0"(-12#&34 $5-36!3'$" :: ;< & *+,-.'--/01 2,3 =">?+"0"(-!"#$ %!&!' "')"*!#!+,-*.-/ Math.sqrt"0"#$ %!!"#$ %!#$ %01 #!2- B"$C( 3&$4'!! D0*#"0"(-'-&( 3&$45+"".!" import import jlab.jlabio; jlab.jlabio; public public class class Sqrt Sqrt { public public static static void void main(string main(string [] [] args) args) { double double x = JLabIO.readDouble("x = "); "); System.out.println("sqrt(x) = " + Math.sqrt(x) Math.sqrt(x) ); ); JLab>java JLab>java Sqrt Sqrt x = sqrt(x) sqrt(x) = JLab> JLab>

43 2,3 <E <FGHI:JKLMKNK7O:::F9 import import jlab.jlabio; jlab.jlabio; public public class class Sqrt Sqrt { public public static static void void main(string main(string [] [] args) args) { double double x = JLabIO.readDouble("x = "); "); System.out.println("sqrt(x) = " + Math.sqrt(x) Math.sqrt(x) ); ); JLab>java JLab>java Sqrt Sqrt x = -8-8 sqrt(x) sqrt(x) = NaN NaN JLab> JLab> #$%&!"'(#())(*+,-!./.0123 "()4'567)+89::9#$; $<= >6?-?,$,@?(*+::(?A*?#$ (*+ & *+,-453'3'36-7 =">?+"0"(-!"#$ %!&!' ( * "')"*!#!+,-*.-/ 68* )0!9:; <= : >? ;@A9 63+7)0"BC0!"#$ %!#$ %01 #!2- B"$C( 3&$4'!! D0*#"0"(-'-&( 3&$45+""..'--/ "%8 %&D 03 Boolean expr. BC3 03 do this BC3 E&D BC3 03!" if if ( Boolean expr ) { do do this ;

44 01 2,3.'--/ import import jlab.jlabio; jlab.jlabio; public public class class Sqrt Sqrt { public public static static void void main(string main(string [] [] args) args) { double double x = JLabIO.readDouble("x = "); "); if if (x (x < 0) 0) { System.out.println("Re-run with with non-negative non-negative number"); number"); if if (x (x >= >= 0) 0) { System.out.println("sqrt(x) = " + Math.sqrt(x) Math.sqrt(x) ); ); JLab>java JLab>java Sqrt Sqrt x = -8-8 Re-run Re-run with with non-negative non-negative number number JLab> JLab> JLab>java JLab>java Sqrt Sqrt x = sqrt(x) sqrt(x) = JLab> F$ G))4?$ 8 G);G) *H I!7',) 8 =?$4 (6" BC3!" %&D 03!""%8 01 2,3 BC3 03 Boolean expr. do this if false do this if true if if ( Boolean expr ) { do do this if if true ; else { do do this if if false ; import import jlab.jlabio; jlab.jlabio; public public class class Sqrt Sqrt { public public static static void void main(string main(string [] [] args) args) { double double x = JLabIO.readDouble("x = "); "); if if (x (x < 0) 0) { System.out.println("Re-run with with non-negative non-negative number"); number"); else else { System.out.println("sqrt(x) = " + Math.sqrt(x) Math.sqrt(x) ); ); JLab>java JLab>java Sqrt Sqrt x = -8-8 Re-run Re-run with with non-negative non-negative number number JLab> JLab> JLab>java JLab>java Sqrt Sqrt x = sqrt(x) sqrt(x) = JLab> JLab>

45 /9/3:0*/4;%<=>?""7 EFKLP7Q:7 <boolean K NK D8'3+"$4)3#$4)&.))-B (E %FBF+"G32#boolean A D8'3B %.F.'.-'H/*-/)$ 3 boolean 78:7Q:String EFKR:I: public public class class TrueFalse TrueFalse { public public static static void void main(string main(string [] [] args) args) { System.out.println( true true + " " + false false ); ); JLab>java JLab>java TrueFalse TrueFalse true true false false JLab> GKM7 <SI:T:EFK;R IJ4K LJ.K IMJ40"B3#')K LMJ.0"B3#')K MMJ3#')K NMJ1.3#')K GKM8:7 8989K7Q:7 <F8: SNK ;<P8 78:7 <GKMR: F89:: EFKLP7Q:7 <boolean ( (n (n % 2) 2) == == 1 ),;?(8 true 5?n 8() false 5? 5? n 8(6 n = 1,*#$ n == == 1 ;%A>?%?" NK S&&;:'(. NK S ;:&+ NK S!;:(&- '(.&+7Q:7U9 SS::9M8: ::EFK7Q:::9M8:NR 0AGB3+7*-/)$ A && B3+7true3.B %#' (!AGB3+7true#' (!F A B3+7true3.B %A0"BB3+7true'0O %!8' (&-7Q:7U9 S78:LG::9M8:8 :FNK 7Q:V SV7Q:,2-BC+2C/ 9GFS:W8REFKI;RXJHXYZ ;FSFS:G8EFK 9 NK0;:GFS:8EFK 9 RI;R[ 8\W0!XZJH\0!XV SSFS: JKLMKNK7O:FS:8YV9 RGKR:8I J A N U A R Y F E B R U A R Y M A R C H...

46 ,2-BC+2C/ <E <FGHI:JKLMKNK7O:GFS:8X]] import jlab.jlabio; JLab>java JLab>java Month Month Enter month number : 100 public Enter class month Month number {: 100 java.lang.stringindexoutofboundsexception: public String static void main(string [] [] args) String index { index out out of of range: range: String at at month java.lang.string.substring(string.java:1473) = ""; ""; month at += at Month.main(Month.java:10) += "JANUARY FEBRUARY MARCH APRIL "; "; Exception month Exception += in += in "MAY thread thread "main" "main" JUNE JULY AUGUST "; JLab> "; month JLab> += += "SEPTEMBEROCTOBER NOVEMBER DECEMBER "; "; int int m = JLabIO.readInt("Enter month number : "); "); System.out.println(month.substring(9*(m-1),9*m)); 3* StringIndexOutOfBoundsException 9,3-C+/D(? 1/. -#$;#$4 *; 7@;#$ 1 +$+@$ 1/.4 ) J!1KL"5H J1KL? 1/. -#$;#$4 *; 7@;#$ 1 LM1MLND BC3 03 +$+@$ 1/.4 ) J!1KL"5H J1KL,2-BC+2C/ -C+/D(&/E+-(*F/D2)&0F33 import jlab.jlabio; public class class Month Month { public static void void main(string [] [] args) args) { String month month = ""; ""; month month += += "JANUARY FEBRUARY MARCH MARCH APRIL APRIL "; "; month month += += "MAY "MAY JUNE JUNE JULY JULY AUGUST "; "; month month += += "SEPTEMBEROCTOBER NOVEMBER DECEMBER "; "; int int m = JLabIO.readInt("Enter month month number : "); "); if if ((1 ((1 <= <= m) m) && && (m (m <= <= 12)) 12)) { System.out.println(month.substring(9*(m-1),9*m)); P JQIM@KRRJ@IMQSK P JCI@KRRJ@IQTK P JQSLM@KRRJQIM@K P J@MMQKUUJ@MMSKUUJ@MMTKUUJ@MMVKUUJ@MMWKUU J@MMXKUUJ@MMYKUUJ@MMZKUUJ@MM[KUUJ@MQCKUU J@MMQQKUUJ@MMQSK P NJNJQIM@KUUNJ@IMQSKK P NJJ@IQKUUJ@LQSKK LM1MLN (1 (1 <= <= m) m) && && (m (m <= <= 12) 12)

47 -9- P JQIM@KRRJ@IMQSKFBNJJ@IQKUUJ@LQSK\ (1<=m) (m<=12) (1<=m)&&(m<=12) true true true true false false false true false false false false (m<1) (m>12) (m<1) (m>12)!((m<1) (m>12) false false false true false true true false true false true false true true true false G9H02'3I3' N:V9?('+A^_^^!!` -A*"3'$-(C int int k; k; abc ('+A^_ dedfef ff`f 11 gg fafbfcf^f_f boolean b =! k==0; k==0; // // wrong wrong if if ( 3<=k+1 && && k<=5 k<=5 k>=9 k>=9 ) { // // k=2,3,4,5, 9,10,11,...,2-9//'/(-2C/JJ 2,3K,6 / =">?+"0"(- 03 B]-]&!+^#$ "')3&+^J3+7F]_]K#!+,-*.-/ "# )+^#*`"#*3-B %!$3 B]-] B"$C( 3&$4'!! D0*#"0"(-'-&( 3&$45+"". FS::PG7hAWiiZ8Y\:S 3&+^JF]_]K8!0" 4V!8'88!0" 4QCC1.!8'43"a$#$ %0" 4VCC!8' O PN&&N=)NQ!*;?+R,7 " O PN&&R=)NJ!*;?+R7 7'*;?+L&&,7 " O PNL&&=)NQ!*;?+L&&7 " O PN&&&=)NJ!*;?+R&&7 " 0bFB3&+^JF]_]K O!STR"UU&;$*;?+R7 D O!STL&&"VU&;$*;?+L&&,7 D O!STR&&"UU&;$*;?+R&&7 D if if ( (y%4 == == 4 && && y%100!=!= 0) 0) (y%400 == == 0) 0) )

48 .'--/,2-9//'/(-2C/JJ BC3 NQ S!STR&&UU&"*#$!!STRUU&"7'!STL&&VU&"" 03 NJ import jlab.jlabio; public class class Feb Feb { public static void void main(string [] [] args) args) { int int y = JLabIO.readInt("year = "); "); if if ((y%4==0 && && y%100!=0) (y%400==0)) { System.out.println("Feb. has has " " days."); else else { System.out.println("Feb. has has " " days."); int int y = JLabIO.readInt("year = "); "); int int numdays; if if ((y%4==0 && && y%100!=0) (y%400==0)) { numdays = 29; 29; else else { numdays = 28; 28; System.out.println("Feb. has has " + numdays + " days."); L"MN L"MN true true true if if ( A ) { if if ( B ) { if if ( C ) { D ; true true true if if ( A ) { if if ( B ) { E ; if if ( C ) { D ;

49 L"MN.'--/,2-BC+2C/ true true true true if if ( A ) { if if ( B ) { E ; if if ( C ) { D ; else { G ; if if ( H ) { J ; else { F ;? 1/. -#$;#$4 *; 7@;#$ 1 LM1D BC3 03 1MLND BC3 03 LM1MLND +$+@$ 1/.4 ) J!1KL"5H J1KL,2-BC+2C/ $?!?OP import jlab.jlabio; public class class Month Month { public static void void main(string [] [] args) args) { String month month = ""; ""; month month += += "JANUARY FEBRUARY MARCH MARCH APRIL APRIL "; "; month month += += "MAY "MAY JUNE JUNE JULY JULY AUGUST "; "; month month += += "SEPTEMBEROCTOBER NOVEMBER DECEMBER "; "; int int m = JLabIO.readInt("Enter month month number : "); "); if if (1 (1 <= <= m) m) { if if (m (m <= <= 12) 12) { System.out.println(month.substring(9*(m-1),9*m)); VU&D BC3 03 SWXYD BC3 03 if if (x (x!=!= 0 && && y/x y/x > 5) 5) { z = 1; 1; 5?UU&',)(GSW ZUL if if (x (x!=!= 0) 0) { if if (y/x (y/x > 5) 5) { z = 1; 1; if if (y/x (y/x > 5 && && x!=!= 0) 0) { z = 1; 1; (GSW$;$VU& [/ K\] \0]].^!,(;*;=++* 7;" )8BC3 OG) )8 03

50 %801;Q (*F/D2)&0F33 %#&34SRG9 F 9FKjk if if (Boolean Expression) if if (Boolean Expression) a statement ; a statement ; else a statement ; if if (Boolean Expression){ if if (Boolean Expression){ statements ; statements ; else { statements ; if (x < 0) { x = -x; if (x < 0) { done = true; else { done = false; if (x < 0) x = -x; if (x < 0) done = true; else done = false; if (x < 0) x = -x; done = (x < 0); cd@ c:dd@,2-bc+2c/,2-bc+2c/ import import jlab.jlabio; jlab.jlabio; import import jlab.jlabio; jlab.jlabio; public public class class Month Month { public public static static void void main(string main(string [] [] args) args) { String String month month = "Illegal "Illegal month month number"; number"; int int m = JLabIO.readInt("Enter month month number number : "); "); if if (m (m == == 1) 1) month month = "JANUARY"; "JANUARY"; if if (m (m == == 2) 2) month month = "FEBRUARY"; "FEBRUARY"; if if (m (m == == 3) 3) month month = "MARCH"; "MARCH"; if if (m (m == == 4) 4) month month = "APRIL"; "APRIL"; if if (m (m == == 5) 5) month month = "MAY"; "MAY"; if if (m (m == == 6) 6) month month = "JUNE"; "JUNE"; if if (m (m == == 7) 7) month month = "JULY"; "JULY"; if if (m (m == == 8) 8) month month = "AUGUST"; "AUGUST"; if if (m (m == == 9) 9) month month = "SEPTEMBER"; "SEPTEMBER"; if if (m (m == == 10) 10) month month = "OCTOBER"; "OCTOBER"; if if (m (m == == 11) 11) month month = "NOVEMBER"; "NOVEMBER"; if if (m (m == == 12) 12) month month = "DECEMBER"; "DECEMBER"; System.out.println(month); public public class class Month Month { public public static static void void main(string main(string [] [] args) args) { String String month month = "Illegal "Illegal month month number"; number"; int int m = JLabIO.readInt("Enter month month number number : "); "); if if (m (m == == 1) 1) month month = "JANUARY"; "JANUARY"; else else if if (m (m == == 2) 2) month month = "FEBRUARY"; "FEBRUARY"; else else if if (m (m == == 3) 3) month month = "MARCH"; "MARCH"; else else if if (m (m == == 4) 4) month month = "APRIL"; "APRIL"; else else if if (m (m == == 5) 5) month month = "MAY"; "MAY"; else else if if (m (m == == 6) 6) month month = "JUNE"; "JUNE"; else else if if (m (m == == 7) 7) month month = "JULY"; "JULY"; else else if if (m (m == == 8) 8) month month = "AUGUST"; "AUGUST"; else else if if (m (m == == 9) 9) month month = "SEPTEMBER"; "SEPTEMBER"; else else if if (m (m == == 10) 10) month month = "OCTOBER"; "OCTOBER"; else else if if (m (m == == 11) 11) month month = "NOVEMBER"; "NOVEMBER"; else else if if (m (m == == 12) 12) month month = "DECEMBER"; "DECEMBER"; System.out.println(month);

51 "#$!%" import import jlab.jlabio; jlab.jlabio; public public class class Month Month { public public static static void void main(string main(string [] [] args) args) { int int m = JLabIO.readInt("Enter month month number number : "); "); switch switch (m) (m) { case case 1 : System.out.println("JANUARY"); break; break; case case 2 : System.out.println("FEBRUARY"); break; break; case case 3 : System.out.println("MARCH"); break; break; case case 4 : System.out.println("APRIL"); break; break; case case 5 : System.out.println("MAY"); break; break; case case 6 : System.out.println("JUNE"); break; break; case case 7 : System.out.println("JULY"); break; break; case case 8 : System.out.println("AUGUST"); break; break; case case 9 : System.out.println("SEPTEMBER"); break; break; case case : System.out.println("OCTOBER"); break; break; case case : System.out.println("NOVEMBER"); break; break; case case : System.out.println("DECEMBER"); break; break; default default : System.out.println("Illegal month month number"); number"); "#$!%" P!3e)0'!switch8!3+7f#$ % e. P 8.0'!case8!3+7FF!8'))38e. P #4` &!case6.$breakg"g5 Ag P 6#4` &!case1..$break"#!g108!1+ #!case6'!1+ P 61.8"!case 34"#!G1+#$ %default switch switch (m) (m) { case case 1 : case case 2 : System.out.println("m = 1 or or 2"); 2"); break; break; case case 4 : System.out.println("m = 4"); 4"); break; break; default default : System.out.println("m!=!= 1, 1, 2, 2, and and 4"); 4"); "#$!%",+- *+3R.2'/3RF 3_ 3]/. L N R `3B0C if if (0 (0 <= <= x <= <= 10) 10) if if x == == 0 if if (x (x >= >= 0 && && <= <= 10) 10) if if (x (x == == 0 == == 1) 1) if if (x (x = 0) 0) if if (x (x => => 0) 0) if if (x (x == == 0) 0) if if (y (y == == 0) 0) z = 0; 0; else else if if (a (a == == 1) 1) z = 1; 1; if if (0 (0 <= <= x && && x <= <= 10) 10) if if (x (x == == 0) 0) if if (x (x >= >= 0 && && x <= <= 10) 10) if if (x (x == == 0 x == == 1) 1) if if (x (x == == 0) 0) if if (x (x >= >= 0) 0) if if (x (x == == 0) 0) { if if (y (y == == 0) 0) z = 0; 0; else else if if (a (a == == 1) 1) z = 1; 1; 3&$41+1"F if if (x (x!=!= 0 x!=!= 5) 5) if if (x (x < 3 && && x > 9) 9) if if (done (done && &&!done) if if (done (done!done)

52 FRSB)TTC+*F3 *F3%P> V9:: FKfloat;<double8GK F S;R: :HNKLP8FS: ER ::: F9RR: SER public class Imprecision { public static void main(string [] [] args) { double a = 49.0; System.out.println( == == (1.0/a * a) a) ); ); System.out.println( (1.0/a * a) a) ); ); JLab>java Imprecision false E-16 JLab> *F3 *F39//9-=TTUV IRlEK8X] JKLR: F9GKG:8IV;FR) ;<A8RNK8: ( ) public class Epsilon { public static void main(string [] [] args) { double EPSILON = 1.0E-14; double a = 49.0; double x = 1.0, y = (1.0/a * a); a); boolean eq eq = (Math.abs(x-y) / Math.max(Math.abs(x), Math.abs(y))) <= <= EPSILON; System.out.println( eq eq ); ); JLab>java Epsilon true JLab> ε SB)TTWXC+*F3 *F3char NKffdeS7 8989charEFK F9[ W#")3&C+'*63&+."+(CZ G <S m(3&."8nk;:g <:I: A B C D E F 002! " # $ % & ' ( ) * +, -. / : ; < = >? A B C D E F G H I J K L M N O 005 P Q R S T U V W X Y Z [ \ ] ^ _ 006 ` a b c d e f g h i j k l m n o 007 p q r s t u v w x y z { ~ FRSB)TTWXC+*F3 *F3String StringERNR7 <SI:T: KNK0"-6&.$equals;<compareTo N: s1.equals(s2) = s1.compareto(s2) true 5? s1 *#$ s2 false 5? s1,*#$ s2 < 0 5? s1 $ s2 7;$a = 0 5? s1 *#$ s2 > 0 5? s1 *7 s2 7;$a

53 *F3 *F3String public class class StringCompare { public static void void main(string [] [] args) args) { System.out.println("Computer".equals("Computer")); System.out.println("Computer".compareTo("Computer")); System.out.println("Computer".compareTo("Engineer")); System.out.println("Computer".compareTo("Comp")); System.out.println("Computer".compareTo("Computing")); JLab>java StringCompare true JLab>

54 หะวข อ : การท าโปรแกรมคอมพ วเตอร Iteration : while, do-while, for ค าสะ ง do-while ค าสะ ง while ค าสะ ง for การอ านแฟ มข อความแบบล าดะบ ค าสะ ง break แล continue ภาคว ชาว ศวกรรมคอมพ วเตอร จ ฬาลงกรณ มหาว ทยาละย ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมหาค าเฉล ย ผะงงานแบบวงวน do-while import import jlab.jlabio; jlab.jlabio; public public class class Mean Mean { public public static static void void main(string main(string [] [] args) args) { double double s = 0.0; 0.0; s += += JLabIO.readDouble("data #1 #1 : "); "); s += += JLabIO.readDouble("data #2 #2 : "); "); s += += JLabIO.readDouble("data #3 #3 : "); "); s += += JLabIO.readDouble("data #4 #4 : "); "); s += += JLabIO.readDouble("data #5 #5 : "); "); System.out.println("mean = " + (s (s/ 5.0) 5.0) ); ); JLab>java Mean data #1 : 12 data #2 : 35.5 ถ าต องการหาค าเฉล ย data #3 : 16.8 data #4 : 19.0 ของข อม ล 50 จ านวน data #5 : 2.2 จ เข ยนอย างไรสะ นๆ mean = 17.1 JLab> ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ เร มการท างาน s = 0, n = 0 double s = 0.0; int int n = 0; 0; do do { ระบจ านวนจร งเพ มใส ใน s s += += JLabIO.readDouble(); true n++ n < 50? false n++; while( n < ); ); s / 50 System.out.println( s/50 ); ); จบการท างาน ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/2002 4

55 ผะงงานแบบวงวน while วงวนแบบ do-while แล while เร มการท างาน double s = 0.0; s = 0, n = 0 int int n = 0; 0; false n < 50? while ( n < ) { true s += += JLabIO.readDouble(); ระบจ านวนจร งเพ มใส ใน s n++; n++ System.out.println( s/50 ); s / 50 ); จบการท างาน ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ false Boolean expr. do this true true do this Boolean expr. false do do { while ( Boolean expr ) { do do this do do this while ( Boolean expr ); ); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมหารากท สอง Requirement อ านจ านวนจากผ ใช แล วแสดงรากท สองของจ านวนนะ น Analysis ระบจ านวนจร งผ านทางแป นพ มพ ใช ส ตรในการหารากท สอง x k + 1 = แสดงรากท สองท หาได ทางจอภาพ Design เข ยนผะงงาน Implementation เข ยนโปรแกรม ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ x k + a x k การปร มาณค ารากท สอง ต องการหารากท สองของ a ถ า x k เป นค าปร มาณของ a ค าของ x k+1 = (x k + a/x k )/2 จ เป นค าปร มาณท ใกล a มากกว า x k (ไม พ ส จน ) a = 4.0 x 0 = 1.0 x 1 = 2.5 x 2 = 2.05 x 3 = x 4 = x 5 = x 6 = 2.0 a = x 0 = 1.0 x 1 = 50.5 x 2 = x 3 = x 4 = x 5 = x 6 = x 7 = x 8 = ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/2002 8

56 แล วจ ปร มาณค าไปสะกก รอบ? ผะงงานการหารากท สอง หาค า x k+1 = (x k + a/x k )/2 k = 1,2,3,... เร มด วย x 0 = 1 หาไปจน x k+1 กะบ x k ม ค าใกล เค ยงกะนมาก x แล y (แบบ double) ม ค าใกล เค ยงกะนมากเม อ max x y ( x, y ) ε (ให ε ม ค าเท ากะบ ) true เร มการท างาน y = 1.0 ระบจ านวนจร งใส ใน a x = y y = (x + a/x)/2 max x y ( x, y ) > ε false y ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ จบการท างาน ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมหารากท สอง import jlab.jlabio; public class Sqrt { public static void main(string[] args) { double x, x, y = 1.0; double a = JLabIO.readDouble("a = "); "); do do { x = y; y; y = (x (x + a / x) x) / 2.0; while ((Math.abs(x - y) y) / Math.max(Math.abs(x), Math.abs(y))) >= >= 1E-14); System.out.println("sqrt(" + a + ") ") = " + y); y); JLab>java JLab>java Sqrt Sqrt หม นในวงวน 339 รอบ x = 9E200 9E200 sqrt(9.0e200) sqrt(9.0e200) = 3.0E E100 JLab> JLab> ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การอ านแฟ มข อความขะ นพ นฐาน แฟ ม (file) ค อท เก บข อม ลในหน วยความจ าส ารอง (โดยทะ วไปค อ harddisk) แต ล แฟ มม ช อก ากะบ Text file ค อแฟ มข อความท เก บสตร ง เป นบรรทะดๆ แต ล บรรทะดคะ นด วยรหะสข นบรรทะดใหม C:\DATA\SCORE.TXT ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

57 การใช JLabIO อ านแฟ มข อความ import java.io.*; import jlab.jlabio; // // open open file file BufferedReader in in = JLabIO.openFile("c:\dat.txt"); // // read read the the next next line line from from file file String txt txt = in.readline(); if if (txt (txt == == null) null) // // end end of of file file // // close close the the file file in.close(); โปรแกรมแสดง text file ออกจอภาพ import jlab.jlabio; import java.io.*; public class class DumpFile1 { public static void void main(string[] args) args) throws IOException { String fn fn = JLabIO.readString("file name name : "); "); BufferedReader in in = JLabIO.openFile(fn); String txt; txt; do do { txt txt = in.readline(); if if (txt (txt!=!= null) null) System.out.println(txt); while while ( txt txt!=!= null null ); ); in.close(); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมแสดง text file ออกจอภาพ import jlab.jlabio; import java.io.*; public class class DumpFile2 { public static void void main(string[] args) args) throws IOException { String fn fn = JLabIO.readString("file name name : "); "); BufferedReader in in = JLabIO.openFile(fn); String txt; txt; while while ( (txt (txt = in.readline())!=!= null null ) { System.out.println(txt); in.close(); ท าไมต องม throws IOException ท main? ม โอกาสเก ดข อผ ดพลาดร หว างการท างาน ซ ง เก ยวข องกะบแฟ มข อม ลได หลายปร การ (IOException) เป ดแฟ มท ไม ม อย จร ง (เช นส กดช อผ ด) ตอนอ านข อม ลจากแฟ ม อาจเก ดข อผ ดพลาดข นได (เช น อ านจาก diskette แต ผ ใช ดะนด งแผ นออก) เพ อความง าย ขอไม สนใจข อผ ดพลาดเหล าน เลยโยนข อผ ดพลาดแบบ IOException ให ร บบ (ตะวโปรแกรมท เราเข ยนไม ขอระบผ ดชอบ) IOException เป นช อ class มาตรฐานในร บบจาวา ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

58 โปรแกรมหาค าเฉล ย Requirement หาค าเฉล ยจากข อม ลทะ งหมดในแฟ ม Analysis ผ ใช ร บ ช อแฟ มทางแป นพ มพ แฟ มข อม ลเก บจ านวนจร งบรรทะดล หน งจ านวน ใช Double.parseDouble(s) แปลงสตร ง s เป น double แสดงจ านวนข อม ล แล ค าเฉล ยท หาได ทางจอภาพ Design เข ยนผะงงาน Implementation เข ยนโปรแกรม ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ผะงงานการหาค าเฉล ย เร มการท างาน fn = ช อแฟ ม เป ดแฟ ม fn, n = 0, sum = 0 ม ข อม ลในแฟ มให false อ านเก บใส txt true แปลง txt เป นจ านวนแล วเพ มใส sum เพ มค าของ n อ ก 1 n, sum / n จบการท างาน ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมหาค าเฉล ย import jlab.jlabio; import java.io.*; public class class Average1 { public static void void main(string[] args) args) throws IOException { String fn fn = JLabIO.readString("file name name : "); "); BufferedReader in in = JLabIO.openFile(fn); int int n = 0; 0; double sum sum = 0.0; 0.0; while while ((txt ((txt = in.readline())!=!= null) null) { sum sum += += Double.parseDouble(txt); n++; n++; in.close(); System.out.println("n = " + n + " avg avg = " + sum sum / n); n); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมหาค ามากส ด Requirement หาค ามากส ดจากข อม ลทะ งหมดในแฟ ม Analysis ผ ใช ร บ ช อแฟ มทางแป นพ มพ แฟ มข อม ลเก บจ านวนจร งบรรทะดล หน งจ านวน แสดงค ามากส ดท หาได ทางจอภาพ Design เข ยนผะงงาน Implementation เข ยนโปรแกรม ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

59 การหาค ามากส ด ผะงงานการหาค ามากส ด เร มการท างาน ล าดะบของข อม ลท อ านจากแฟ ม x max การเปล ยนแปลงค า max fn = ช อแฟ ม เป ดแฟ ม fn, max = -Infinity ม ข อม ลในแฟ มให อ านเก บใส txt true แปลง txt เป นจ านวนจร ง x false max x > max true false max = x จบการท างาน ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมหาค ามากส ด import jlab.jlabio; import java.io.*; public class class MaxValue { public static void void main(string[] args) args) throws IOException { String fn fn = JLabIO.readString("file name name : "); "); BufferedReader in in = JLabIO.openFile(fn); double x, x, max max = Double.NEGATIVE_INFINITY; while while ((txt ((txt = in.readline())!=!= null) null) { x = Double.parseDouble(txt); if if (x (x > max) max) max max = x; x; in.close(); System.out.println("max = " + max); max); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การใช while กะบโปรแกรม EAN-13 import import jlab.jlabio; jlab.jlabio; public public class class EAN13CheckDigit EAN13CheckDigit { public public static static void void main(string[] main(string[] args) args) { int ints = 0; 0; String String d = JLabIO.readString("Enter digits digits : "); "); s += += Character.digit(d.charAt(1), 10); 10); s += += Character.digit(d.charAt(3), 10); 10); s += += Character.digit(d.charAt(5), 10); 10); s += += Character.digit(d.charAt(7), 10); 10); s += += Character.digit(d.charAt(9), 10); 10); s += += Character.digit(d.charAt(11), 10); 10); s *= *= 3; 3; s += += Character.digit(d.charAt(0), 10); 10); s += += Character.digit(d.charAt(2), 10); 10); s += += Character.digit(d.charAt(4), 10); 10); s += += Character.digit(d.charAt(6), 10); 10); s += += Character.digit(d.charAt(8), 10); 10); s += += Character.digit(d.charAt(10), 10); 10); System.out.println("Check Digit Digit is is " + (10-(s%10))%10); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

60 การใช while กะบโปรแกรม EAN-13 import import jlab.jlabio; jlab.jlabio; public public class class EAN13CheckDigit EAN13CheckDigit { public public static static void void main(string[] main(string[] args) args) { int ints = 0, 0, k; k; String String d = JLabIO.readString("Enter digits digits : "); "); k = 1; 1; while while (k<12) (k<12) { s += += Character.digit(d.charAt(k), 10); 10); k += += 2; 2; s *= *= 3; 3; k = 0; 0; while while (k<12) (k<12) { s += += Character.digit(d.charAt(k), 10); 10); k += += 2; 2; System.out.println("Check Digit Digit is is " + (10-(s%10))%10); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การใช while กะบโปรแกรม EAN-13 import import jlab.jlabio; jlab.jlabio; public public class class EAN13CheckDigit EAN13CheckDigit { public public static static void void main(string[] main(string[] args) args) { int ints = 0, 0, k; k; String String d = JLabIO.readString("Enter digits digits : "); "); k = 0; 0; while while (k<12) (k<12) { if if ( (k (k % 2) 2) == == 0 ) { s += += Character.digit(d.charAt(k), 10); 10); else else { s += += 3 * Character.digit(d.charAt(k), 10); 10); k++; k++; System.out.println("Check Digit Digit is is " + (10-(s%10))%10); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ while แล do-while วงวนท เข ยนด วย while เปล ยนเป น do-while ได วงวนท เข ยนด วย do while เปล ยนเป น while ได โปรแกรมเมอร ควรเล อกแบบท ส อความหมาย อ านง าย while : ตราบเท าท เง อนไขเป นจร ง จ งจ ท า อาจไม ได ท าใน block do-while ท าไปเร อยๆ ตราบเท าท เง อนไขยะงเป นจร ง อย างน อยต องท าใน block หน งคระ ง วงวนท ท าเป นจ านวนคระ งตามท ก าหนด ม ตะวแปรคอยนะบตามจ านวนรอบ i = 1; 1; i = 0; 0; while while (i (i <= <= n) n) { while while (i (i < n) n) { // // do do something here here // // do do something here here i++; i++; i++; i++; i = n; n; i = n-1; n-1; while while (i (i > 0) 0) { while while (i (i >= >= 0) 0) { // // do do something here here i--; i--; // // do do something here here i--; i--; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

61 ข อควรร วะง วนขาดหน งรอบ วนเก นหน งรอบ หร อวนต ด loop i = 1; 1; i = 0; 0; while while (i (i < n) n) { while while (i (i <= <= n) n) { // // do do something here here // // do do something here here i++; i++; i++; i++; i = n; n; i = 0; 0; while while (i (i > 1) 1) { while while (i (i!=!= n) n) { // // The The test test above above can can // // do do something here here // // cause cause infinite // // loop. loop. i--; i--; i++; i++; วงวนแบบ for วงวนท ท าเป นจ านวนคระ งตามท ก าหนด (counting loop) เป นวงวนท มะกพบบ อยมาก ตะวภาษาจ งม ค าสะ ง for เพ อท า counting loop i = 1; 1; while while (i (i <= <= n) n) { // // do do something here here i++; i++; i = n; n; while while (i (i > 0) 0) { // // do do something here here i--; i--; for for (i (i = 1; 1; i <= <= n; n; i++) i++) { // // do do something here here for for (i (i = n; n; i > 0; 0; i--) i--) { // // do do something here here ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ วงวนแบบ for comma initialization i = 0, j = n-1 condition false i < j false true true do this do this update i++, j-- for for ( initialization ; condition ; update ) { do do this for for ( i = 0, 0, j = n-1; i < j; j; i++, j--) { do do this ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

62 ตะวอย างวงวนแบบ for for for (i (i = 1; 1; i <= <= n; n; i++) i++) { System.out.println(i); for for (i (i = 1; 1; i <= <= n; n; i += += 2) 2) { System.out.println(i); หน ง block หร อ หน ง statement for for ( initialization ; condition ; update ) { statements for for ( initialization ; condition ; update ) statement ; n = JLabIO.readInt("n = "); "); for for (i (i = 2; 2; (i (i < n) n) && && (n (n % i!=!= 0); 0); i++) i++) { if if (i (i < n) n) { System.out.println( n + " = " + i + "x" "x" + (n/i) (n/i) ); ); else else { System.out.println( n + " is is prime."); do do { statements while ( Boolean expr ); ); do do statement ; while ( Boolean expr ); ); while ( Boolean expr ) { statements while ( Boolean expr ) statement ; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ อย าใช for ผ ดวะตถ ปร สงค ค าสะ ง break เพ อออกจากวงวน double x = 0, 0, y = 1; 1; double a = JLabIO.readDouble("a = "); "); while while ((Math.abs(x - y) y) / Math.max(Math.abs(x), Math.abs(y))) >= >= 1E-14) { x = y; y; y = (x (x + a / x) x) / 2.0; 2.0; System.out.println("sqrt(" + a + ") ") = " + y); y); double x = 0, 0, y = 1; 1; double a = JLabIO.readDouble("a = "); "); for for ( ; (Math.abs(x - y) y) / Math.max(Math.abs(x), Math.abs(y))) >= >= 1E-14); x = y, y, y = (x (x + a / x) x) / ) ; System.out.println("sqrt(" + a + ") ") = " + y); y); true... break... false while while ((t ((t = in.readline())!=!= null) null) { if if ("END".equals(t)) break; x = Double.parseDouble(t); if if (x (x > max) max) max max = x; x; สนใจหาค ามากส ดของจ านวนท เก บ ในแฟ มข อม ลก อนบรรทะดท ม ค าว า END ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

63 ค าสะ ง continue เพ อกละบไปต นวงวน Nested Loops ภายในวงวนหน งจ ม วงวนอ นก ได true... continue false while while ((t ((t = in.readline())!=!= null) null) { x = Double.parseDouble(t); if if (x (x <= <= 0) 0) continue; if if (x (x > max) max) max max = x; x; สนใจหาค ามากส ดของเฉพา จ านวน เต มบวก ท เก บในแฟ มข อม ล... for ใน while while ใน while do-while ใน while do-while ใน do-while break แล continue ภายในวงวนใด ก จ ท างานกะบวงวนนะ น ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ Mandelbrot Set ให ล าดะบของจ านวน เช งซ อน d n ค านวณได จาก d n = (d n-1 ) 2 +c โดยท d 0 = 0+i0 = 0 แล c เป นจ านวนเช งซ อน c เป นสมาช กของ Mandelbrot set ถ าล าดะบ ของ d n ล เข าหาค าคงตะว แกน x แทนเส นจ านวนจร ง แกน y แทนเส นจ านวนจ นตภาพ จ ดด าในร ปค อสมาช กของ Mandelbrot set การบวกแล ค ณจ านวนเช งซ อน (x+iy) = (x 2 + y 2 ) 1/2 (x+iy)+(p+iq) = (x+p) + i(y+q) (x+iy)(p+iq) = (xp-yq) + i(xq+yp) ตะวอย างการเปล ยนแปลงของค า r c = (0.2+i0.2) จ ได 0.344, 0.351, 0.327, 0.305, 0.304, 0.312, 0.316, 0.316, 0.314, 0.313, 0.313, 0.313, 0.314, 0.314, 0.314,...(converge) c = (1.0+i1.0) จ ได 3.162, 9.899, 97.01, 9409, 8.853E7, 7.837E15, 6.142E31, 3.773E63, 1.424E127,... (diverge to infinity) ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

64 โปรแกรมแสดง Mandelbrot set public public void void paint(graphics paint(graphics g) g) { double double xnew, xnew, xnew, xnew, xold, xold, xold, xold, x, x, y; y; double double stepx stepx = / getsize().width; double double stepy stepy = / getsize().height; int int n; n; for for (y (y = -1.5; -1.5; y <= <= 1.5; 1.5; y += += stepy) stepy) { for for (x (x = -2.0; -2.0; x <= <= 1.0; 1.0; x += += stepx) stepx) { for for (xold (xold = x, x, yold yold = y, y, n = 0; 0; (n (n < 256); 256); n++) n++) { xnew xnew = xold xold * xold xold- yold yold * yold yold + x; x; ynew ynew = 2 * xold xold * yold yold + y; y; if if (Math.sqrt(xnew (Math.sqrt(xnew * xnew xnew + ynew ynew * ynew) ynew) > 2) 2) break; break; xold xold = xnew; xnew; yold yold = ynew; ynew; if if (n (n >= >= 256) 256) { g.drawrect((int)((x + 2) 2) / stepx), stepx), (int)((y (int)((y + 1.5) 1.5) / stepy), stepy), 1, 1, 1); 1); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ Visualizing Mandelbrot Set ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

65 หะวข อ : การท าโปรแกรมคอมพ วเตอร Methods บทบาทของ methods Methods ต างๆ ของ class Math องค ปร กอบของ method การเร ยกใช Overloading ภาคว ชาว ศวกรรมคอมพ วเตอร จ ฬาลงกรณ มหาว ทยาละย ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การเข ยนโปรแกรม การเข ยนโปรแกรม ป ญหาของโปรแกรมยาวๆ อ านยาก debug ย ง แก ไขประบปร งล าบาก ข อสะงเกตของโปรแกรมทะ วไป สามารถแบ งการท างานออก เป นส วนๆ ตามหน าท ม การท างานซ าๆ บ อยๆ class class Human Human { void void main(...) main(...) { ทางแก แบ งโปรแกรมเป นส วนย อยๆ แยกส วนของโปรแกรมท ซ าๆ คล ายๆ กะนออกมา เร ยกส วนย อยเหล าน ว า subroutine, subprogram, หร อ method แต ล method ม หน าท ใน ตะวเองอย างเด นชะด class class Human Human { main(...) main(...) { { born(); born(); grown(); grown(); sick(); sick(); dead(); dead(); born(...) born(...) { { grown(...) grown(...) { { sick(...) sick(...) { { dead(...) dead(...) { { ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/2002 4

66 เม อต องเข ยนโปรแกรมใหม ค ดถ งโปรแกรมเก าท เคยเข ยนไว ค ดถ งคละงค าสะ งของร บบท ม ให ใช ได (Java API) น าของท ม อย มาแก ไข (แฟ ม.java) น าของท ม อย มาใช ใหม (แฟ ม.class) เข ยนค าสะ งเพ อเช อมต อของท ม อย ให ใช ได ถ าจ าเป น จ งเข ยนใหม เข ยนให อ านง าย (readability) เข ยนให แก ไขง าย (maintainability) เข ยนให สามารถน าไปใช ในงานอ นๆ ได ในอนาคต (reuseability) ตะวอย าง method ท เคยใช System.out.println("Hello World"); ส ง "Hello World" เพ อให System.out.println (แสดงออกทางจอภาพ) int int x = JLabIO.readInt("x = "); "); ส ง "x = " เพ อให JLabIO.readInt (แสดงออกทางจอภาพ แล วรอระบการป อนจ านวนเต มทางแป นพ มพ) แล วได ผลละพธ เป นจ านวน เต มค นมา เก บไว ในตะวแปร x double r = Math.random(); ไม ส งอ ไรให Math.random แต จ ได ผลละพธ เป นจ านวนจร งค นมา (ซ งเป นจ านวนจร งส มในช วง 0.0 ถ ง 1.0) เก บไว ในตะวแปร x ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ Methods ต างๆ ของคลาส Math abs( x ) : absolute value acos( x ) : arc cosine asin( x ) : arc sine atan( x ) : arc tangent cos( x ) : trigonometric cosine sin( x ) : trigonometric sine tan( x ) : trigonometric tangent exp( x ) : e x log( x ) : natural logarithm (base e) pow( x, y ) : x y ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ Methods ต างๆ ของคลาส Math (ต อ) ceil( x ) : ceiling floor( x ) : floor max( x, y ) : the greater of x and y min( x, y ) : the smaller of x and y random() : a random number in [0.0, 1.0) round( x ) : the closest integer to x sqrt( x ) : positive square root of x todegrees( x ) : convert angle in radian to degree toradians( x ) : convert angle in degree to radian ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/2002 8

67 ตะวอย าง Java API Help File public static double sin(double a) Returns the trigonometric sine of an angle. Special cases: If the argument is NaN or an infinity, then the result is NaN. If the argument is zero, then the result is a zero with the same sign as the argument. A result must be within 1 ulp of the correctly rounded result. Results must be semi-monotonic. Parameters: a - an angle, in radians. Returns: the sine of the argument. ulp - unit of the last place ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมหาม มร หว างสองเวกเตอร Requirement หาม ม (เป นองศา) ร หว างสองเวกเตอร Analysis เวกเตอร ม จ ดเร มท (0, 0) ระบเวกเตอร จากแป มพ มพ โดยร บ ต าแหน งของจ ดปลาย (u X, u Y ) แล (v X, v Y ) ส ตรการหาม มค อ 1 u Xv X + uyv Y θ = cos ( u + )( + ) X uy v X v Y แสดงม มท หาได ทางจอภาพ θ (0, 0) (u X, u Y ) (v X, v Y ) คล ายกะนมาก ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ แยกส วนซ าๆ คล ายๆ กะนเป นเมท อด cos( θ ) = u v + u v X X Y Y ( u + )( + ) X uy v X vy cosine = (ux (ux * vx vx + uy uy * vy) vy) / (Math.sqrt(ux * ux ux + uy uy * uy) uy) * Math.sqrt(vx * vx vx + vy vy * vy)); vy)); cosine = (ux (ux * vx vx + uy uy * vy) vy) / (length(ux, uy) uy) * length(vx, vy)); vy)); public static double length(double x, x, double y) y) { return Math.sqrt(x * x + y * y); y); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมหาม มร หว างสองเวกเตอร import jlab.jlabio; public class class A { public static void void main(string[] args) args) { double ux ux = JLabIO.readDouble("ux = "); "); double uy uy = JLabIO.readDouble("uy = "); "); double vx vx = JLabIO.readDouble("vx = "); "); double vy vy = JLabIO.readDouble("vy = "); "); double cosine = (ux (ux * vx vx + uy uy * vy) vy) / (length(ux, uy) uy) * length(vx, vy)); vy)); double degree = Math.toDegrees(Math.acos(cosine)); System.out.println(JLabIO.format(degree, 5, 5, 2)); 2)); public static double length(double x, x, double y) y) { return Math.sqrt(x * x + y * y); y); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

68 องค ปร กอบของเมท อด หะวเมท อด บอกละกษณ การใช งานของเมท อด ร บ ช อ ปร เภทของข อม ลท ระบ แล ปร เภทของผลละพธ ท ได ตะวเมท อด ปร กาศตะวแปรใช ภายใน บรรยายการท างานของเมท อด ค นการท างานส ผ เร ยก public static double length(double x, x, double y) y) { double len; len; len len = Math.sqrt(x * x + y * y); y); return len; len; องค ปร กอบของเมท อด ตะวบอกละกษณ ของ method ปร เภทข อม ล ของผลละพธ ท ได ช อ method รายการของ parameters public static double length(double x, x, double y) y) { double len; len; len len = Math.sqrt(x * x + y * y); y); return len; len; return ค นการท างานกละบส ผ เร ยก method น โดยต องค นข อม ลปร เภทเด ยวกะบท ได ปร กาศ ไว ท หะว method ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ หะวเมท อด : ปร เภทข อม ลของผลละพธ ปร เภทข อม ลพ นฐาน (int, double, boolean, ) ปร เภทข อม ลแบบคลาส (String, Point, ) ถ าเป น method ท ไม ค นผลละพธ ให ใส ค าว า void public static int int min(int a, a, int int b) b) int m = min(a, 0); public static String tostring(int i, i, int int radix) String s = tostring(a, 16); public static void void gc() gc() gc(); หะวเมท อด : ช อ การตะ งช อใช กฎเหม อนกะบตะวแปร ปร กอบด วยตะวอะกษร ตะวเลข ตะว $ หร อ _ ก ได ห ามข นต นด วยตะวเลข ไม ม ข อจ ากะดเร องความยาวของช อ ตะวอะกษรตะวใหญ ไม เหม อนตะวเล ก ต องไม ซ ากะบค าสงวนของภาษาจาวา โดยทะ วไปช อเมท อดข นต นด วยตะวเล ก มะกตะ งช อเมท อดให เป นกร ยา fillcircle setenabled turnleft println start start run run ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

69 หะวเมท อด : รายการของพาราม เตอร รายการของ parameters parameter เป นตะวแปรส าหระบระบข อม ลเข ามาปร มวลผล แต ล parameter เข ยนเหม อนการปร กาศตะวแปร (แต ไม ต องป ดท ายด วย semi-colon) แต ล parameter คะ นด วยจ ลภาค (comma) รายการของ parameters อย ภายในวงเล บ (ถ าไม ระบ parameter ใดๆ ก ไม ต องใส อ ไรในวงเล บ) public static void void turnleft(double angle) public static double pow(double a, a, double b) b) public static String readstring() ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ตะวเมท อด public public static static double double readdouble(string msg) msg) { double doublex = 0; 0; // // local localvar. declaration declaration boolean boolean success success = false; false; // // local local var. var. declaration declaration do do { String String s; s; // // local local var. var. declaration declaration s = readstring(msg); try try { x = Double.parseDouble(s); success success = true; true; catch catch (NumberFormatException e) e) { System.err.println("invalid real real number, number, try try again"); again"); success success = false; false; while while (!success); (!success); return return x; x; // // return return to to caller caller ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ตะวเมท อด : การค นการท างานส ผ เร ยก เม อการท างานพบค าสะ ง return ก จ ค นการท างาน กละบไปส ผ เร ยก method ส าหระบ method ท ไม ม การค นผลละพธ หละงค าว า return ป ดท ายด วย ; เลย ถ าค าสะ งท ายส ดของ method ไม ใช return ก จ เสม อนม return หละงบรรทะดท ายส ด public static void void printerror(string msg) msg) { if if ( msg msg == == null null ) return; System.err.println( msg msg ); ); ตะวเมท อด : การค นการท างานส ผ เร ยก ส าหระบ method ท ม การค นผลละพธ หละงค าว า return ต องตามด วยน พจน ค าของน พจน ท ค นเป นผลละพธ ต องเป นปร เภทเด ยวกะบ ท ปร กาศไว ท หะว method หร อท ร บบสามารถจ ท า promotion ให ได ค นผลได แค ตะวเด ยว public static long long clip(long a) a) { if if ( a > 0 ) return a; a; else else return 0; 0; \\ \\ 0 is is promoted promoted to to 0L 0L ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

70 ตะวเมท อด : Local Variables Local variables ค อตะวแปรท ใช ภายในเมท อด ปร กาศใน block ใด ใช ได เฉพา ใน block นะ น หร อ block ท ซ อนอย ชะ นในๆ ของ block นะ น ปร กาศท จ ดใด ใช ได หละงจ ดนะ นภายใน block public static void void test(int a) a) { int int z = 7; 7; { int int x = z; z; System.out.println( x ); ); System.out.println( x ); ); // // wrong wrong { System.out.println( x ); ); // // wrong wrong int int x = z; z; System.out.println( x ); ); { int int y = z; z; System.out.println( y ); ); { int int x = z; z; System.out.println( x ); ); // // wrong wrong ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ตะวเมท อด : Local Variables ถ กสร างใหม ท กคระ งท ท างานถ งจ ดท ปร กาศ (ร บบสร างให โดยไม ได เต มค าเร มต น) ถ กท าลายหมดหละงจบ block ท ถ กปร กาศ ตะวแปรต างๆ ในพาราม เตอร ก เป น local variables import import jlab.jlabio; jlab.jlabio; public public class class A { public public static static void void main(string[] main(string[] args) args) { int ints = 0, 0, n = JLabIO.readInt("n = "); "); for for (int (inti = 0; 0; i <= <= n; n; i++) i++) { int inti2 i2 = i * i; i; s += += i2; i2; int inti3 i3 = i2 i2 * i; i; s += += i3; i3; System.out.println("s = " + s ); ); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ i3 i2 i s, n ส งท มะกผ ดบ อย public public static static printerror(string msg) msg) { System.err.println( msg msg ); ); public public static static int int abs(int abs(int a) a) { if if ( a < 0 ) a = -a; -a; public public static static float float max(float max(float x, x, y) y) { if if ( x > y ) return returnx; x; else elsereturn returny; y; public public static static double double length(double length(double dx, dx, double double dy) dy) { double double dx dx = Math.abs(dx); Math.abs(dx); return return Math.sqrt( Math.sqrt( dx*dx dx*dx + dy*dy dy*dy ); ); public public static static float float getblackcolor() getblackcolor() { return return 0.0; 0.0; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การเร ยกใช เมท อด การส งข อม ลไป (arguments) การระบผลท ได ค นมา (returned value) ไม ม ข อม ลส งไป หร อไม ม ผลค นมา ก ได int int a, a, b; b; b = power( a+2 a+2, 3 ); ); public static int int power(int x, int int y ) { int int p = 1; 1; for for (int (int i=1; i=1; i<=y; i<=y; i++) i++) p *= *= x; x; return p; p; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

71 การเร ยกใช เมท อด : การส งข อม ล จ านวนข อม ลท ส งต องตรงกะบท ปร กาศไว ท หะวเมท อด ส งท ส งไปต องเป นปร เภทท ตะวแปรท หะวเมท อดระบได (ถ าจ าเป น ร บบจ ท า argument promotion ให ) ถ ก ผ ด public static float float max(float x, x, float float y) y) {... x = max( max( (float) (a/3.0), 1f 1f ); ); y = max( max( Float.parseFloat(str), 1 ); ); // // 1 -> -> 1.0f 1.0f x = max( max( (float) (a/2) (a/2) ); ); // // wrong wrong number of of args args y = max( max( "1.0", 1 ); ); // // can't can't promote "1.0" "1.0" to to 1f 1f การเร ยกใช เมท อด : ผลท ค นกละบ ในกรณ ท เมท อดม การค นค า ก ต องม ตะวแปรซ งม ปร เภทท ระบค าของข อม ลท ค นมาได ถ ก ผ ด public static float float max(float x, x, float float y) y) {... double x = max( max( 1.0f, 1.0f, (int) (int) (x/3) (x/3) ); ); int int y = (int) (int) max( max( 1, 1, 2 ); ); float float z = max( max( max(x, y), y), -10.5f ) ); ); long long x = max( max( 4.0f, 4.0f, 2.3f 2.3f ); ); // // float float to to long long float float y = max( max( 4.0, 4.0, ); ); // // double to to float float max( max( 2.0f, 2.0f, 1.0f 1.0f ); ); // // max max returns float float ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ตะวอย าง : Integration แบ งพ นท ใต กราฟเป นแถบๆ หาพ นท ของแต ล แถบ แล วหาผลรวม ใช midpoint rule ปร มาณพ นท ใต กราฟดะงน f(x) x 0 x 1 x 2 x n-1 x n b n f ( x ) dx a i = 1 hf x i x b a h = n i Integration using Midpoint Rule public public class class Integration Integration { public public static static void void main(string[] main(string[] args) args) { System.out.println(simpson(0, 10, 10, 1000)); 1000)); public public static static double double midpoint(double midpoint(double a, a, double double b, b, int int n) n) { double double h, h, s1, s1, x; x; h = (b (b- a) a) / n; n; s1 s1 = 0.0; 0.0; x = a + h / 2.0; 2.0; for for (int (inti = 1; 1; i <= <= n; n; i++) i++) { s1 s1 += += h*f(x); h*f(x); b n x += += h; h; x i 1 + x i f ( x ) dx hf return return s1; s1; a i = 1 2 public public static static double double f(double f(double x) x) { return return2 * x * x; x; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

72 b a ตะวอย าง : Integration แบ งพ นท ใต กราฟเป นแถบๆ หาพ นท ของแต ล แถบ แล วหาผลรวม ใช Simpson's rule ปร มาณพ นท ใต กราฟดะงน f ( x ) dx h f 3 f(x) x 0 x 1 x 2 x n-1 x n ( a ) + 4 n 1 i = 1,3,5,... f ( a + ih ) + 2 b a h = n + ih ) + f ( b ) ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ n 2 i = 2,4,6,... f ( a Integration using Simpson's Rule public public class class Integration Integration { public public static static void void main(string[] main(string[] args) args) { System.out.println(simpson(0, 10, 10, 1000)); 1000)); public public static static double double simpson(double simpson(double a, a, double double b, b, int int n) n) { double double h, h, s1, s1, s2, s2, x; x; h = (b (b- a) a) / n; n; s1 s1 = s2 s2 = 0.0; 0.0; x = a; a; for for (int (inti = 1; 1; i <= <= n; n; i++) i++) { x += += h; h; if if (i (i % 2 == == 1) 1) // // is is odd odd? s1 s1 += += f(x); f(x); else n 1 n 2 h else f ( a ) + 4 s2 s2 += += f(x); f ( a + ih ) + 2 f ( a + ih ) + f ( b ) f(x); 3 i = 1,3,5,... i = 2,4,6,... return return (h (h/ 3 * (f(a) (f(a) + 4 * s1 s1 + 2 * s2 s2 + f(b))); f(b))); public public static static double double f(double f(double x) x) { return return2 * x * x; x; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ตะวอย าง : ความต างศะกย ของตะวเก บปร จ Voltage Across a Capacitor t=0 : ตะวเก บปร จ ม ปร จ เป นศ นย t=1 : ป ดสว ทซ แหล งจ ายปร แส จ าย ปร จ เพ ม I ( t ) = 4(1 e ความต างศะกย เพ ม Q ( t ) = I ( t ) dt Q ( t ) V ( t ) = C ) e (1 e ( t 1) t ) V(t) public public class class CapacitorVoltage { public public static static void void main(string[] main(string[] args) args) { double double c = 0.05; 0.05; // // capacitance capacitance double v, v, q; q; // // voltage voltage and and charge charge double doublea = 1.0, 1.0, b = 10.0; 10.0; // // 1 to to10 10seconds for for (double (double t = a; a; t <= <= b; b; t++) t++) { q = simpson(a, simpson(a, t, t, 1000); 1000); v = q / c; c; System.out.println(t + "\t" "\t" + q + "\t" "\t" + v); v); public public static static double double simpson(double simpson(double a, a, double double b, b, int int n) n) { public public static static double double f(double f(double x) x) { return return 4 * (1 (1 - Math.exp(-0.5)) Math.exp(-0.5)) * Math.exp(-0.5 Math.exp(-0.5 * (t (t - 1)) 1)) * (1 (1 - Math.exp(-t)); Math.exp(-t)); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

73 Method Overloading ช อเมท อดซ าได ถ ารายการพาม เตอร ไม เหม อนกะน ร บบจ เร ยกเมท อดท เหมา สมให public public static static int int max(int max(int x, x, int int y) y) { if if ( x > y ) return returnx; x; else elsereturn returny; y; public public static static double double max(double max(double x, x, double double y) y) { if if ( x > y ) return returnx; x; else elsereturn returny; y; public public static static double double max(double max(double x, x, double double y, y, double double z) z) { if if ( x > y && && x > z ) return returnx; x; else elseif if ( y > x && && y > z ) return returny; y; else else return return z; z; Method Overloading ไม สามารถ overload เมท อดท รายการพาม เตอร เหม อน แต ปร เภทข อม ลท ค นไม เหม อน ความเหม อนไม เหม อนของพาราม เตอร อย ท ปร เภท ข อม ล ไม เก ยวกะบช อท ใช public public static static int int max(int max(int x, x, int int y) y) { if if ( x > y ) return returnx; x; else elsereturn returny; y; public public static static double double max(int max(int x, x, int int y) y) { if if ( x > y ) return return (double) (double) x; x; else elsereturn (double) (double) y; y; public public static static int int max(int max(int a, a, int int b) b) { if if ( x > y ) return returna; a; else elsereturn returnb; b; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

74 หะวข อ : การท าโปรแกรมคอมพ วเตอร Arrays อาเรย การปร กาศ การสร าง การใช การส งอาเรย ให เมท อด การค นข อม ล การเร ยงล าดะบข อม ล อาเรย หลายม ต ภาคว ชาว ศวกรรมคอมพ วเตอร จ ฬาลงกรณ มหาว ทยาละย ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมเก บสถ ต ค แนนสอบ ผะงงานการเก บสถ ต ค แนนสอบ ม แฟ มข อม ลเก บรหะสนะกเร ยน + ค แนน ค แนนม ตะ งแต 0 ถ ง 4 (จ านวนเต ม) อยากร ว าม นะกเร ยนได 0 ก คน 1 ก คน... 4 ก คน ค แนน จ านวนนะกเร ยน เร มการท างาน ระบช อแฟ ม เป ดแฟ ม ให sc0, sc1, sc2 sc3, sc4 เป น 0 s = ค แนนใหม 1 1 not EOF true s =? s = ค แนนใหม sc0, sc1, sc2 sc3, sc4 false sc0++ sc1++ sc2++ sc3++ sc ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ จบการท างาน ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/2002 4

75 โปรแกรมเก บสถ ต ค แนนสอบ import import jlab.jlabio; jlab.jlabio; import import java.io.*; java.io.*; public public class class Frequency1 Frequency1 { public public static static void void main(string[] main(string[] args) args) throws throws IOException IOException { String String txt, txt, t; t; int int sc, sc, score0, score0, score1, score1, score2, score2, score3, score3, score4; score4; BufferedReader BufferedReader in in = JLabIO.openFile(JLabIO.readString(">")); score0 score0 = score1 score1 = score2 score2 = score3 score3 = score4 score4 = 0; 0; while while ((txt ((txt = in.readline()) in.readline())!=!= null) null) { t = txt.substring(10, txt.length()); txt.length()); switch switch ( Integer.parseInt(t.trim()) ) { case case0 : score0++; score0++; break; break; case case1 : score1++; score1++; break; break; case case2 : score2++; score2++; break; break; case case3 : score3++; score3++; break; break; case case4 : score4++; score4++; break; break; default default : System.out.println("data error error -> -> " + txt); txt); in.close(); in.close(); // // Five Five more more lines lines to to display display score score frequencies frequencies ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ใช อาเรย ด กว า 1 score0 score score[0] 0 score1 0 score[1] ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ score2 ตะวแปร ตะวแปร 5 ตะว ตะว 5 ช อ ช อ 0 score[2] 4 4 score3 score[3] น าท เก บข อม ลต างๆ มารวมกล มกะน 1 กล ม กล ม 1 ช อ ช อ โดยแต ล ท เก บม หมายเลขก ากะบ 3 3 score4 score[4] โปรแกรมเก บสถ ต ค แนนสอบ (ใช อาเรย ) import import jlab.jlabio; jlab.jlabio; import import java.io.*; java.io.*; public public class class Frequency2 Frequency2 { public public static static void void main(string[] main(string[] args) args) throws throws IOException IOException { String String txt, txt, t; t; int int sc; sc; int int [] [] score score = new new int[5]; int[5]; // // declare declare + allocate allocate array array BufferedReader BufferedReader in in = JLabIO.openFile(JLabIO.readString(">")); for for (int (int i=0; i=0; i<5; i<5; i++) i++) score[i] score[i] = 0; 0; // // unnecessary unnecessary while while ((txt ((txt = in.readline()) in.readline())!=!= null) null) { t = txt.substring(10, txt.length()); txt.length()); sc sc = Integer.parseInt(t.trim()); score[sc]++; score[sc]++; for for (int (int i=0; i=0; i<5; i<5; i++) i++) { System.out.println( i + " -> ->" + score[i] score[i] ); ); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ แถวล าดะบ (Arrays) อาเรย ค อท เก บรายการของข อม ลปร เภทเด ยวกะน อาเรย เก บข อม ลทะ งหลายต ดๆ กะนไปในหน วยความจ า เสม อนน าข อม ลมาเก บใน "ช อง" ท วางเร ยงกะน แต ล อาเรย ม ช อก ากะบ ใช หมายเลขช องร บ ต าแหน งของข อม ลในอาเรย a System.out.println( a[6] + a[9] ); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/2002 8

76 การปร กาศแล การสร างอาเรย ก อนใช อาเรย ต อง ปร กาศตะวแปรอาเรย สร างตะวอาเรย ตะวแปรอาเรย กะบตะวอาเรย การปร กาศตะวแปรอาเรย เป นการสร างท เก บ "ท อย " (reference) ของอาเรย ท จ สร าง int int [] [] data; ปร กาศตะวแปรช อว า data ม ไว อ างอ งอาเรย ของ int data = new new int[10]; สร างอาเรย ของ int จ านวน 10 ช อง แล วให data เป นตะวแปร ส าหระบอ างอ งอาเรย ท ได สร างข น [3] [2] [1] [0] int int [] [] data = new new int[10]; int [] a = new int[4]; ปร กาศตะวแปรแล สร างอาเรย พร อมกะนเลยก ได ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ข อสะงเกต : การปร กาศ+การสร าง การปร กาศตะวแปรอาเรย ไม ได เป นการสร างตะวอาเรย ขนาดของอาเรย ถ กก าหนดตอนสร างตะวอาเรย ไม ใช ตอนปร กาศตะวแปร ขนาดของอาเรย เป นค าของน พจน ก ได ( data = new int[ 3*n + 1]; ) อาเรย ท สร างข น ไม สามารถเพ มหร อลดขนาดได ร บบจ ตะ งค าเร มต นของข อม ลในอาเรย โดยอะตโนมะต (ให ค าศ นย กะบอาเรย ของจ านวน แล ให ค า false กะบ อาเรย ของ boolean) ข อสะงเกต : การอ างอ งอาเรย อาเรย แถวหน ง อาจม ตะวแปรหลายตะวอ างอ งได int [] a = new int[4]; [3] [2] [1] [0] int [] b = a; a กะบ กะบ b ม ค าเท ากะน หมายความว าอ างอ งอาเรย เด ยวกะน ดะงนะ น a[i] กะบ กะบ b[i] อ างอ งท เก บข อม ลท เด ยวกะน ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

77 สร างใหม ได แต ของเด มหาย ปร กาศ+สร าง+ตะ งค าเร มต น int[] int[] data; data; data data ใช initializer list ร บ ค าเร มต น ไม ต องก าหนดจ านวนช องท จ สร าง จ านวนช องท สร างเท ากะบจ านวนข อม ลใน list data data = new new int[4]; data[2] = 9; 9; data data = new new int[3]; data data int[] int[] data data = new new int[4]; int[4]; data[0] data[0] = 23; 23; data[1] data[1] = 3; 3; data[2] data[2] = 21; 21; data[3] data[3] = 47; 47; int[] int[] data data = {23, {23, 3, 3, 21, 21, 47; 47; int[] int[] data; data; data = {23, 3, 21, 47; data = {23, 3, 21, 47; เข ยนแยกเป นสองบรรทะดแบบน ไม ได ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การใช ข อม ลในอาเรย ใช หมายเลขช อง (เร ยกว า index) ของอาเรย เป น ตะวอ างอ งข อม ลในอาเรย เช น data[2] เป นการ อ างอ งข อม ลช องท index 2 ในอาเรย data index ของอาเรย เร มท 0 เสมอ ถ าอาเรย ม ขนาด n ตะว index ต องเป นจ านวนเต ม ม ค าได ตะ งแต 0 ถ ง n-1 public public class class Array1 Array1 { public public static static void void main(string main(string [] [] args) args) { int int [] [] data data = new new int[100]; int[100]; int int sum sum = 0; 0; for(int for(int i = 0; 0; i < 100; 100; i++) i++) sum sum += += data[i]; data[i]; System.out.println( sum sum ); ); i = 0; 0; i < ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การอ างอ งข อม ลแบบผ ดๆ ถ าอาเรย ม ขนาด n ตะว index ต องเป นจ านวนเต มม ค าได ตะ งแต 0 ถ ง n-1 index ไม ใช จ านวนเต ม - compile error index เป นจ านวนเต มท อย นอกช วง เก ด ArrayIndexOutOfBoundsException ขณ ท างาน public class Array3 { public static void main(string [] [] args) { int int [] [] data = new new int[100]; System.out.println( data[100] ); ); JLab>java JLab>java Array3 Array3 java.lang.arrayindexoutofboundsexception at at Array3.main(Array3.java:4) Exception Exception in in thread thread "main" "main" JLab> JLab> ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

78 โปรแกรมแสดงช อเด อน import jlab.jlabio; public class class Month Month { public static void void main(string [] [] args) args) { String month[] = {"JANUARY", "FEBRUARY", "MARCH", "APRIL", "MAY", "JUNE", "JULY", "AUGUST", "SEPTEMBER", "OCTOBER", "NOVEMBER", "DECEMBER"; int int m = JLabIO.readInt("Enter month month number : "); "); if if (1<=m (1<=m && && m<=12) System.out.println(month[m-1]); การส งอาเรย ไปยะงเมท อดอ น ใช ช ออาเรย แทนทะ งอาเรย (ไม ม [ ] ) การส งอาเรย จ ไม ได ส งข อม ลของทะ งอาเรย ไป แต จ ส งต าแหน ง (reference) ของอาเรย ไปแทน public public static static void void main(string[] main(string[] args) args) { double double [] [] data data = new new double[4]; double[4]; data double double a = mean( mean( data data ); ); "AUGUST" "JULY" "JUNE" "MAY" "APRIL" "MARCH" "FEBRUARY" "JANUARY" ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ "SEPTEMBER" "DECEMBER" "NOVEMBER" "OCTOBER" public public static static double double mean(double[] mean(double[] x) x) {... x ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ถ าอยากร ขนาดของอาเรย เต ม.length ตามหละงช ออาเรย public class Array2 { public static void main(string [] [] args) { int int [] [] data = new new int[100]; System.out.println( sum(data) ); ); public static int int sum(int [] [] d) d) { int int sum sum = 0; 0; for(int i = 0; 0; i < d.length; i++) sum sum += += d[i]; return sum; อย าจ าสละบกะบความยาว String ซ งใช.length() เพรา เป นเมท อด ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ โปรแกรมนะบความถ ตะวอะกษรต างๆ import import jlab.jlabio; jlab.jlabio; import import java.io.*; java.io.*; public public class class CountChars CountChars { public public static static void void main(string[] main(string[] args) args) throws throws IOException IOException { String String txt; txt; int[] int[] freq freq = new new int[26]; int[26]; BufferedReader BufferedReader in in = JLabIO.openFile(JLabIO.readString(">")); while while ((txt ((txt = in.readline()) in.readline())!=!= null) null) { int int txtlen txtlen = txt.length(); txt.length(); for for (int (inti = 0; 0; i < txtlen; txtlen; i++) i++) { char charc = Character.toUpperCase(txt.charAt(i)); if if ('A' ('A' <= <= c && && c <= <= 'Z') 'Z') freq[c freq[c - 'A']++; 'A']++; for for (int (inti = 0; 0; i < freq.length; freq.length; i++) i++) { if if (freq[i] (freq[i] > 0) 0) System.out.println((char)('A' + i) i) + " --> -->" + freq[i]); freq[i]); in.close(); in.close(); ในจาวา char charเป นจ านวนเต มแบบ ไม ต ดลบด วย... (unsigned integer) ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

79 เมท อดหาค าเฉล ย ค าเบ ยงเบน public static double mean(double[] x) x) { double sum sum = 0.0, 0.0, m = 0.0; 0.0; if if (x.length > 0) 0) { n for for (int (int i = 0; 0; i < x.length; i++) i++) 1 sum sum += += x[i]; x = x[i]; x i n m = sum sum / x.length; i= 1 return m; m; public static double stddev(double[] x) x) { double dev dev = 0; 0; double sumsq, m = mean(x); if if (x.length > 1) 1) { n for for (int (int i = 0; 0; i < x.length; i++) i++) ( ) 2 xi x sumsq sumsq += += (x[i] (x[i] - m) m) * (x[i] (x[i] - m); m); dev dev = sum sum / (x.length - 1); 1); s = i= 1 n 1 return dev; dev; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การค นข อม ลแบบล าดะบ Requirement เมท อดเพ อการค นข อม ลในอาเรย Analysis ระบ data เป นอาเรย ของจ านวนเต ม ระบ key เป นจ านวนเต มท ต องการค นในอาเรย ค น index ตะวหน งของ data ท ข อม ลม ค าเท ากะบ key แต ถ าไม ปรากฏ key ใน data ให ค นค า -1 ใช ว ธ การค นแบบล าดะบ (sequential search) public public static static int int seqsearch( seqsearch( int int [] [] data, data, int int key key ) data key 5 เร ยก seqsearch(data, key) จ ได ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การค นข อม ลแบบล าดะบ public public static static int int sequentialsearch( int int [] [] data, data, int int key key ) key data 5 i data[i] data[i] == key 0 23 false 1 2 false 2 3 false 3 14 false 4 5 true return i i data[i] data[i] == key 0 23 false 1 2 false 2 3 false 3 14 false 4 5 false 5 99 false 6 9 false 7 return ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ key 8 ผะงงานการค นข อม ลแบบล าดะบ seqsearch (data, key) i = 0 (i < data.length) && (data[i]!= key) true i ++ i >= data.length return i true false i = ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

80 เมท อดการค นข อม ลแบบล าดะบ public class class TestSeqSearch { public static int int seqsearch(int[] data, data, int int key) key) { int int i = 0; 0; while while (i (i < data.length && && data[i]!=!= key) key) { i++; i++; if if (i (i >= >= data.length) i = -1; -1; return i; i; // // main main is is used used for for testing public static void void main(string[] args) args) { int[] int[] data data = {23, {23, 2, 2, 3, 3, 14, 14, 5, 5, 99, 99, 9; 9; System.out.println(seqSearch(data, 5)); 5)); System.out.println(seqSearch(data, 8)); 8)); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การค นข อม ลแบบล าดะบ (ถอยหละง) public public static static int int sequentialsearch( int int [] [] data, data, int int key key ) key data 5 i data[i] data[i] == key 6 9 false 5 99 false 4 5 true return i i data[i] data[i] == key 6 9 false 5 99 false 4 8 false 3 14 false 2 3 false 1 2 false 0 23 false -1 return i ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ key 8 ผะงงานการค นข อม ลแบบล าดะบ (ถอยหละง) เมท อดการค นข อม ลแบบล าดะบ (ถอยหละง) seqsearch (data, key) i = data.length 1 ( i >=0 ) && (data[i]!= key) true i return i false public class class TestSeqSearch { public static int int seqsearch(int[] data, data, int int key) key) { int int i = data.length - 1; 1; while while (i (i >= >= 0 && && data[i]!=!= key) key) { i--; i--; return i; i; // // main main is is used used for for testing public static void void main(string[] args) args) { int[] int[] data data = {23, {23, 2, 2, 3, 3, 14, 14, 5, 5, 99, 99, 9; 9; System.out.println(seqSearch(data, 5)); 5)); System.out.println(seqSearch(data, 8)); 8)); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

81 เข ยนได หลายแบบ public static int int seqsearch(int[] data, data, int int key) key) { int int i = data.length; while while (i (i >= >= 0 && && data[i]!=!= key) key) i--; i--; return i; i; public static int int seqsearch(int[] data, data, int int key) key) { int int i; i; for for (i (i = data.length - 1; 1; i >= >= 0 && && data[i]!=!= key; key; i--) i--) ; return i; i; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ อย าล กเล นมาก public static int int seqsearch(int[] data, data, int int key) key) { int int i = data.length - 1; 1; while while (data[i]!=!= key key && && i >= >= 0) 0) i--; i--; return i; i; ตรวจสอบ i >= 0 หละงการตรวจสอบ data[i]!= key public static int int seqsearch(int[] data, data, int int key) key) { int int i = data.length - 1; 1; while while (i-- (i-- >= >= 0 && && data[i]!=!= key) key) ; return i; i; i ถ กลดค าก อนท จ ใช data[i] public static int int seqsearch(int[] data, data, int int key) key) { int int i = data.length - 1; 1; while while (i (i >= >= 0 && && data[i--]!=!= key) key) ; return i; i; i ถ กลดค าท กคระ งหละงเปร ยบเท ยบ return i จ ให ผลผ ด ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การหาต าแหน งท ม ค ามากส ด Requirement เมท อดเพ อการหาต าแหน งท ม ค ามากส ดในอาเรย Analysis ระบ data เป นอาเรย ของจ านวนเต ม ค น index ของอาเรย ท ม ค าไม น อยกว าค าใดๆ ในอาเรย ใช ว ธ การหาค ามากส ดแบบล าดะบ public public static static int int max( max( int int [] [] data data ) data เร ยก max(data) จ ได ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ เมท อดการหาต าแหน งท ม ค ามากส ด public class class TestMax { public static int int max(int[] data) data) { return max(data, data.length); // // find find the the max max among among the the first first k elements elements in in the the array array public static int int max(int[] data, data, int int k) k) { int int m = -1; -1; if if (k (k <= <= data.length && && k > 1) 1) { m = 0; 0; for for (int (int i = 1; 1; i < k; k; i++) i++) if if (data[m] < data[i]) m = i; i; return m; m; public public static static void void main(string[] main(string[] args) args) { int[] int[] data data = {23, {23, 2, 2, 3, 3, 14, 14, 5, 5, 99, 99, 9; 9; System.out.println(max(data)); System.out.println(max(new int[0])); int[0])); // // zero zero size size array array ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

82 การเร ยงล าดะบข อม ล Requirement เมท อดเพ อการเร ยงล าดะบข อม ลในอาเรย Analysis ระบ data เป นอาเรย ของจ านวนเต ม จะดล าดะบข อม ลใน data ให เร ยงล าดะบจากน อยไปมาก data[0] <= data[1] <= data[2] <=... ใช ว ธ การเร ยงล าดะบแบบเล อก (selection sort) public public static static void void selectionsort( selectionsort( int int [] [] data data ) data data ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ก อน หละง การเร ยงล าดะบแบบเล อก มองอาเรย เป นสองส วน ส วนขวา เร ยงเสร จแล ว ส วนซ าย ยะงไม เร ยง ส วนซ าย หาตะวท ม ค ามากส ด สละบกะบตะวส ดท าย หละงสละบ ส วนซ ายลดหน งตะว ส วนขวาเพ มหน งตะว เร มจากไม ม ส วนขวา หามากส ด + สละบ ไปจน กร ทะ งส วนซ ายเหล อตะว เด ยว ก เสร จ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ผะงงานการเร ยงล าดะบแบบเล อก selectionsort (data) k = data.length k > 1 true i = max(data,k) return false swap data[i] and data[k-1] k ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ เมท อดการเร ยงล าดะบแบบเล อก public public class class TestSort TestSort { public public static static void void selectionsort(int[] data) data) { int int i, i, t; t; for for (int (intk = data.length; data.length; k > 1; 1; k--) k--) { i = max(data, max(data, k); k); t = data[i]; data[i]; data[i] data[i] = data[k data[k - 1]; 1]; data[k data[k- 1] 1] = t; t; public public static static void void main(string[] main(string[] args) args) { int[] int[] data data = {23, {23, 2, 2, 3, 3, 14, 14, 5, 5, 99, 99, 9; 9; selectionsort(data); printarray(data); public public static static void void printarray(int[] data) data) { for for (int (inti = 0; 0; i < data.length; data.length; i++) i++) System.out.print(data[i] + " "); "); System.out.println(); public public static static int int max(int[] max(int[] data, data, int int k) k) { ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

83 Arrays.binarySearch ของ Java API ค นข อม ล (ข อม ลในอาเรย ต องเร ยงล าดะบแล ว) int int binarysearch(byte[] a, a, byte byte key) key) int int binarysearch(short[] a, a, short short key) key) int int binarysearch(int[] a, a, int int key) key) int int binarysearch(long[] a, a, long long key) key) int int binarysearch(float[] a, a, float float key) key) int int binarysearch(double[] a, a, double key) key) int int binarysearch(char[] a, a, char char key) key) import import java.util.arrays; public public class class TestSort TestSort { public public static static void void main(string[] main(string[] args) args) { int[] int[] data data = {2, {2, 3, 3, 5, 5, 9, 9, 14, 14, 23, 23, 99; 99; System.out.println(Arrays.binarySearch(data, 5)); 5)); System.out.println(Arrays.binarySearch(data, 8)); 8)); ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ Arrays.equals ของ Java API ตรวจว าอาเรย สองแถวม ค าเท ากะนหร อไม boolean equals(boolean[] a, a, boolean[] b) b) boolean equals(byte[] a, a, byte[] b) b) boolean equals(short[] a, a, short[] b) b) boolean equals(int[] a, a, int[] int[] b) b) boolean equals(long[] a, a, long long [] [] b) b) boolean equals(float[] a, a, float float [] [] b) b) boolean equals(double[] a, a, double [] [] b) b) boolean equals(char[] a, a, char char [] [] b) b) ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ Arrays.fill ของ Java API เต มค าเร มต นให ช องต างๆ เท ากะบค าท ก าหนดให void void fill(boolean[] a, a, boolean val) val) void void fill(byte[] a, a, byte byte val) val) void void fill(short[] a, a, short short val) val) void void fill(int[] a, a, int int val) val) void void fill(long[] a, a, long long val) val) void void fill(float[] a, a, float float val) val) void void fill(double[] a, a, double val) val) void void fill(char[] a, a, char char val) val) void void fill(boolean[] a, a, int int from, from, int int to, to, boolean val) val) void void fill(byte[] a, a, int int from, from, int int to, to, byte byte val) val) void void fill(short[] a, a, int int from, from, int int to, to, short short val) val) void void fill(int[] a, a, int int from, from, int int to, to, int int val) val) void void fill(long[] a, a, int int from, from, int int to, to, long long val) val) void void fill(float[] a, a, int int from, from, int int to, to, float float val) val) void void fill(double[] a, a, int int from, from, int int to, to, double val) val) void void fill(char[] a, a, int int from, from, int int to, to, char char val) val) ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ Arrays.sort ของ Java API เร ยงล าดะบข อม ล void void sort(boolean[] a) a) void void sort(byte[] a) a) void void sort(short[] a) a) void void sort(int[] a) a) void void sort(long[] a) a) void void sort(float[] a) a) void void sort(double[] a) a) void void sort(char[] a) a) void void sort(boolean[] a, a, int int from, from, int int to) to) void void sort(byte[] a, a, int int from, from, int int to) to) void void sort(short[] a, a, int int from, from, int int to) to) void void sort(int[] a, a, int int from, from, int int to) to) void void sort(long[] a, a, int int from, from, int int to) to) void void sort(float[] a, a, int int from, from, int int to) to) void void sort(double[] a, a, int int from, from, int int to) to) void void sort(char[] a, a, int int from, from, int int to) to) ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

84 System.arraycopy ของ Java API อาเรย หลายม ต (Multidimensional Array) copy ข อม ลจากอาเรย ไปยะงอ กอาเรย หน ง public class class ArrayCopy { public static void void main(string[] args) args) { int[] int[] a = {23, {23, 2, 2, 3, 3, 14, 14, 5, 5, 99, 99, 9; 9; int[] int[] b = new new int[4]; System.arraycopy(a, 2, 2, b, b, 0, 0, 3); 3); src srcpos dest destpos length a b int int [] [] a = new new int[7]; a[2] a[2] = 3; 3; a int int [][] [][] b = new new int[3][5]; b[1][3] = 4; 4; b หน งม ต (vector) สองม ต (matrix) ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ Initializer List อาเรย ของอาเรย int int [][] [][] b = { {1, {1, 2, 2, 3, 3, 4, 4, 5, 5, {5, {5, 4, 4, 3, 3, 2, 2, 1, 1, {10, {10, 20, 20, 30, 30, 40, 40, ; ; b b int int [][] [][] b = new new int[3][5]; b int int [][] [][] b; b; b = new new int[3][]; b[0] b[0] = new new int[5]; b[1] b[1] = new new int[5]; b[2] b[2] = new new int[5]; ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

85 เมท อดแสดงค าในอาเรย สองม ต public class TestPrintArray2 { public static void main(string[] args) { int[][] b = {{1, 2, 2, 3, 3, 4, 4, 5, 5, {5, {5, 4, 4, 3, 3, 2, 2, 1, 1, {10, 20, 20, 30, 30, 40, 40, 50; printarray2(b); public static void printarray2(int[][] a) a) { for for (int i = 0; 0; i < a.length; i++) { for for (int j = 0; 0; j < a[i].length; j++) System.out.print(a[i][j] + "\t "\t "); "); System.out.println(); JLab>java JLab>java TestPrintArray2 TestPrintArray JLab> JLab> ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ การบวกเมทร กซ Requirement เมท อดส าหระบการบวกเมทร กซ Analysis ระบ a แล b เป นอาเรย สองม ต ของ int ค นอาเรย สองม ต ซ งเป นผลบวกของ a กะบ b c ij = a ij + b ij ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ เมท อดส าหระบการบวกเมทร กซ public class class TestAddMatrices { public static void void main(string[] args) args) { int[][] b = {{1, {{1, 2, 2, 3, 3, 4, 4, 5, 5, {5, {5, 4, 4, 3, 3, 2, 2, 1, 1, {10, {10, 20, 20, 30, 30, 40, 40, 50; 50; printarray2(addmatrices(b, b)); b)); public static int[][] addmatrices(int[][] a, a, int[][] b) b) { int[][] c = new new int[a.length][a[0].length]; for for (int (int i = 0; 0; i < a.length; i++) i++) for for (int (int j = 0; 0; j < a[i].length; j++) j++) c[i][j] = a[i][j] + b[i][j]; return c; c; public static void void printarray2(int[][] a) a) { การค ณเมทร กซ Requirement เมท อดส าหระบการค ณเมทร กซ Analysis ระบ a แล b เป นอาเรย สองม ต ของ int ค นอาเรย สองม ต ซ งเป นผลค ณของ a กะบ b ถ า a ม ขนาด [p x q] แล b ม ขนาด [q x r] ผลค ณของ a x b จ เป นเมทร กซ ขนาด [p x r] c ij = q k = 1 a ik b kj ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

86 เมท อดส าหระบการค ณเมทร กซ public static int[][] mulmatrices(int[][] a, a, int[][] b) b) { int[][] c = new new int[a.length][b[0].length]; for for (int i = 0; 0; i < a.length; i++) { for for (int j = 0; 0; j < b[i].length; j++) { c[i][j] = 0; 0; for for (int k = 0; 0; k < b.length; k++) { c[i][j] += += a[i][k] * b[k][j]; q c return c; ij = a ik b kj c; k = ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/ จ านวนฟ โบนะกช import jlab.jlabio; public class TestMulMatrices { public static void main(string[] args) { int[][] f1 f1 = {{0, 1, 1, {1, {1, 1; int[][] fn fn = {{0, 1, 1, {1, {1, 1; int int n = JLabIO.readInt("Fibonacci n = "); "); for for (int i = 1; 1; i < n; n; i++) fn fn = mulmatrices(f1, fn); System.out.println("f(" + n + ") ") = " + fn[0][1]); public static int[][] mulmatrices(int[][] a, a, n int[][] b) b) {... f... n 1 f n 0 1 = f n f n ว ศวกรรมคอมพ วเตอร จ ฬา 15/7/

87 หะวข อ : การท าโปรแกรมคอมพ วเตอร Classes & Objects ภาคว ชาว ศวกรรมคอมพ วเตอร จ ฬาลงกรณ มหาว ทยาละย องค ปร กอบของคลาส การปร กาศ การสร าง แล การท าลายออบเจ กต Instance variables Class methods แล object methods Constructor methods ตะวอย าง : คลาส Complex Newton-Raphson Mandelbrot Set ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ องค ปร กอบของคลาส class Robot { data data members constructor methods class & object methods จ านวนเช งซ อน จ านวนเช งซ อน z = x + iy x เป นจ านวนจร ง iy เป นจ านวนจ นตภาพ y เป นจ านวนจร ง i = -1 (imaginary unit) conjugate z = x iy 2 2 absolute square : z = zz = ( x + iy)( x iy) = x + y ให z 1 = x 1 + iy 1 แล z 2 = x 2 + iy 2 z 1 + z 2 = (x 1 +x 2 ) + i(y 1 +y 2 ) ได เจออ กเยอ ใน ไฟฟ า เคร องกล โยธา... e iπ = ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/2002 4

88 อยากได จ านวนเช งซ อน จาวาม แต จ านวนจร ง จ านวนเต ม แต ไม ม จ านวนเช งซ อน ต องออกแบบเอง เข ยน class ใหม ช อ Complex เข ยน class = เข ยนน ยามของปร เภทข อม ลแบบใหม เก บจ านวนเช งซ อนหน งจ านวน = เก บจ านวนจร งสอง จ านวน z = x + iy public class class Complex { public double x; x; public double y; y; fields (data members) การปร กาศแล การสร าง public class class Complex { public double x; x; public double y; y; Complex z; z; z = new new Complex(); น ยามของคลาส Complex z; เป นการปร กาศแล สร างตะวแปร z ซ งม ไว อ างอ งเน อท เก บข อม ล ท เป นแบบ Complex z = new Complex(); เป นการสร างเน อท เก บข อม ลท เป นแบบ Complex z เน อท ท ได จาก new x y ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ศะพท เทคน ค ต ารากะบข าวกะบกะบข าว class ช อ Complex public class class Complex { public double x ; public double y ; ตะวแปรอ างอ ง object ของ class Complex fields (หร อ data members) ของ class ส ตรไข ดาว ไข ดาวท ทอดแล วตามส ตร -- ไข ไก หน งฟอง -- น ามะนคร งถ วย z object reference x y object หน ง (หร อ instance) ของคลาส Complex class บรรยายองค ปร กอบ object ค อของจร งท ถ กสร างข น object ของ class เด ยวกะน แต คนล ก อนกะน ก อาจม รายล เอ ยด ภายในไม เหม อนกะน instance variables ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/2002 8

89 ค กก new เป นเสม อนโรงงานสร าง objects new จ สร าง object ใหม ของ class ท ก าหนดให ต องม ตะวแปรคอยระบต าแหน งอ างอ ง object ใหม Complex z1 z1 = new new Complex(); Complex z2 z2 = new new Complex(); Point Point p1 p1 = new new Point(); Rectangle r = new new Rectangle(); z1 z2 p1 r ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ขย Object ท ถ กสร างข น แต ไม ม ตะวแปรใดอ างอ ง เน อท ส ญเปล า ร บบจาวาจ "เก บขย " น าเน อท เหล าน ไปใช ใหม Complex z1 z1 = new new Complex(); // // #1 # z1 z1 = new new Complex(); // // #2 #2 z1 z1 การสร างแล ท าลาย object สร างโดยใช new ท าลายโดยอย าให ม ตะวแปรใดไปอ างอ งถ ง Complex [] [] za za = new new Complex[4]; for(int i=0; i=0; i< i< za.length; i++) i++) { za[i] za[i] = new new Complex(); za[2] za[2] = null; null; null nullเป นค าคงตะวพ เศษแทน za[3] za[3] = new new Complex(); object object reference ท ไม ได อ างอ งอ ไร za za #1 #1 # ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ขย ขย

90 การใช Instance Variables instance variables ค อตะวแปรต างๆ ภายในของ object ท ได ถ กสร างข น อยากจ ใช ให เข ยนในร ป object. variablename public class class Complex { public double x; x; public double y; y; Complex z = new new Complex(); z.x z.x = 4; 4; z.y z.y = 9.8; 9.8; z x y การให ค าเร มต นกะบ instance variable public class class Complex { public double x; x; public double y; y; ปกต เม อ object หน งถ กสร างข น จ ม การให ค า 0 แล false กะบ instance variables ต างๆ ของ object ท เป นปร เภทจ านวน แล boolean ตามล าดะบ public class class Complex { public double x = 1.0; 1.0; public double y = 0.0; 0.0; ใส ค าเร มต นเองก ได เช นเด ยวกะบการตะ งค าเร มต น ของตะวแปรภายในเมท อด ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Methods ออกแบบคลาสเพ อบรรยายละกษณ ของคลาส fields บรรยายละกษณ ของ object methods บรรยายบร การท ม ให กร ท ากะบ object คลาส Complex fields : x แล y แทนจ านวนจร งแล จ นตภาพ methods : หา absolute หา congujate หาผลบวกของจ านวนเช งซ อนสองจ านวน sort ข อม ลใน array ของ int ท ก าหนดให ไม เก ยว Class Methods vs. Object Methods ออกแบบเมท อดให ผ อ นเร ยกใช ได สองว ธ class methods classname.methodname(...) double a = Complex.abs(z1); Complex z2 z2 = Complex.conjugate(z1); Complex z3 z3 = COmplex.add(z2, z1); z1); object methods objectname.methodname(...) double a = z1.abs(); Complex z2 z2 = z1.conjugate(); Complex z3 z3 = z2.add(z1); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

91 ย อนอด ต เคยใช class methods มาแล ว Math.sqrt(x) JLabIO.readInt( ) Array.equals(a, b) public static void main( String [] args )... เคยใช object methods มาแล ว str.touppercase() in.readline() System.out.println( msg ) ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Class Methods public class class Complex { public double x; x; public double y; y; บรรยายคลาส Complex public static double abs( abs( Complex z ) { return Math.sqrt( z.x z.x * z.x z.x + z.y z.y * z.y z.y ); ); public class class Test Test { public static void void main( main( String [] [] args args ) { double a = JLabIO.readDouble("real part part : "); "); double b = JLabIO.readDouble("imag part part : "); "); Complex z = new new Complex(); z.x z.x = a; a; สร าง z.y z.y = b; สร าง object แล ใช method ของ ของ Complex b; System.out.println( Complex.abs(z) ); ); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Object Methods public class class Complex { public double x; x; ตะดค าว า static ท ง ท ง ก ก public double y; y; หมายถ ง object method public static double abs( abs( ) { return Math.sqrt(this.x*this.x + this.y*this.y); this this ใช อ างถ ง object ท ถ ก ท ถ ก เร ยกให มาท างานท เมท อด public class class Test Test { public static void void main( main( String [] [] args args ) { double a = JLabIO.readDouble("real part part : "); "); double b = JLabIO.readDouble("imag part part : "); "); Complex z = new new Complex(); z.x z.x = a; a; z.y z.y = b; b; System.out.println( z.abs() ); ); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Class Methods vs Object Methods class method ม ค าว า "static" ก ากะบท ห ว method object method ไม ม ค าว า "static" ก ากะบ เร ยก class methods ใช ช อคลาสน า เร ยก object methods ใช ช อออบเจกต น า ค าถาม : บรรทะดใดข างล างน เร ยกใช class method System.getProperties( ) Math.random( ) JLabIO.format( x, 5, 2 ) a.compareto(b) rectangle.setsize( w, h ) Math.PI การตะ งช ออย างม ร บบจ ช วยให เข าใจ โปรแกรมได ด ข น ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

92 ตะวอย าง Object Methods ของ Complex public class class Complex { public double x, x, y; y; // // data data members public double abs( abs( ) { return Math.sqrt(this.x*this.x + this.y*this.y); public Complex conjugate() { Complex zbar zbar = new new Complex(); zbar.x = this.x; zbar.y = -(this.y); z = x iy return zbar; zbar; public Complex add( add( Complex z ) { Complex sumz sumz = new new Complex(); sumz.x = this.x + z.x; z.x; sumz.y = this.y + z.y; z.y; return sumz; z sumz; 11 + z 22 = (x (x 11 +x +x 22 )) + i(y i(y 11 +y +y 22 )) ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Object Method ท ควรม : tostring tostring ม ไว แปลงข อม ลภายใน object (instance variables) ให เป น String ท คนอ านเข าใจ โดยทะ วไปใช เพ อท าให แสดงผลได ส ดวก เพรา ว า System.out.println( z ) จ เร ยก z.tostring() โดยอะตโนมะต public class class Complex { public double x, x, y; y; public String tostring() { return "(" "(" + this.x + ", ", i" i" + this.y + ")"; ")"; ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Object Method ท ควรม : equals ทดสอบ obj1 == obj2 หมายความว า obj1 แล obj2 เป น object เด ยวกะนหร อไม ทดสอบ obj1.equals( obj2 ) หมายความว า object obj1 "เท ากะบ" object obj2 หร อไม ความหมายของการ "เท ากะน" ของ object นะ นข น กะบผ ออกแบบ class public class class Complex {... public double... x, x, y; y; public boolean equals( Complex z ) { public Complex boolean z = new equals( new Complex(); Complex z ) { System.out.println( return this.x == == z.x z.x z && && ); this.y ); == == z.y; z.y; System.out.println( z.tostring() ); );... equals ตามกฏในจาวาจ จ กจ กกว าน ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ข อสะงเกต เร ยกใช instance variable object.variable เร ยกใช object method object.method(... ) ต างกะนตรงท ม วงเล บหร อไม public class class Complex { public double x, x, y; y; public String tostring() { return "(" "(" + this.x + ", ", i" i" + this.y + ")"; ")";... Complex... z1 z1 = new new Complex(); double p = z1.x; z1.x; String s = z1.tostring(); double q = z1.x(); // // WRONG WRONG String t = z1.tostring; // // WRONG WRONG System.out.println( "what "what am am I?"?" ); ); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

93 ย อนอด ต String แล array เป น object String ม เมท อด length() array ม instance variable ช อว า length String s = "Hi "Hi Ho Ho Hi Hi Ho; Ho; int int a = new new int[100]; System.out.println( s.length() ); ); System.out.println( a.length ); ); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Constructor Methods เป นเมท อดพ เศษของคลาส ซ งร บบเร ยกใช โดย อะตโนมะต หละง new คลาสนะ น ม ไว เพ อตะ งค าเร มต นให กะบ instance variables ของ object ใหม ซ งเพ งถ กสร าง เป นเมท อดพ เศษ ช อต องเหม อนช อ class ต องไม ร บ return type ของเมท อด public class class Complex { public double x, x, y; y; public Complex( ) { this.x = 0.0; 0.0; this.y = 0.0; 0.0; ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Constructor Methods Overload ได ด วยการก าหนดรายการของพารา ม เตอร ท แตกต างกะน public class class Complex { public double x, x, y; y; Complex Complex z1 z1 = new new Complex(); Complex(); public Complex( ) { Complex Complex z2 z2 = new new Complex(2, Complex(2, 3.5); 3.5); Complex this.x = 0.0; Complex z3 z3 = new new Complex( Complex( z2 z2 ); ); 0.0; this.y = 0.0; 0.0; public Complex( double x1, x1, double y1 y1 ) { this.x = x1; x1; this.y = y1; y1; public Complex( Complex z ) { this.x = z.x; z.x; this.y = z.y; z.y; ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Constructor Methods Constructor เร ยกกะนเองได โดยใช this public class class Complex { public double x, x, y; y; public Complex( ) { Complex(0, 0); 0); // // WRONG WRONG public Complex( double x1, x1, double y1 y1 ) { this.x public = x1; x1; class class Complex { this.y public = y1; y1; double x, x, y; y; public Complex( ) { this(0, 0); 0); // // CORRECT public Complex( double x1, x1, double y1 y1 ) { this.x = x1; x1; this.y = y1; y1; ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

94 เร องน าร Utility class ค อคลาสท ม แต class methods (เช น Math.*, Arrays.*, JLabIO.* ) คลาสไม จ าเป นต องม เมท อด main เม อเป นคลาสท ผ ใช ไม ได เร ยกใช งานโดยตรง ถ าคลาสไม ม constructor ร บบจ เต มให แบบไม ม การระบพาราม เตอร ตะ งช อคลาสเป น noun ตะ งช อเมท อดเป น verb ตะด this. ท งก ได public public class class Complex Complex { public public double double x, x, y; y; public publicboolean booleanequals( equals( Complex Complexz ) { return return x == == z.x z.x && && y == == z.y; z.y; ตะวอย าง : หารากด วย Newton-Raphson ต องการหารากของสมการ f(x) = 0 หาได เฉพา รากท เป นจ านวนจร ง ว ธ ของ Newton-Raphson ต องร อน พะนธ ของ f(x) ถ า x k ค อค าปร มาณของราก จ สามารถค านวณค า ปร มาณของราก (ท ด กว า) x k+1 ดะงน x k + 1 = x k f ( xk ) f ( x ) k 0 x 1 x2 x 0 f(x) x ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Class NewtonRaphson public public class class NewtonRaphson NewtonRaphson { public public static static double double f (double (double x) x) { return returnx * x + 4 * x + 4; 4; 2 f ( x) = x + 4x + 4 public public static static double double df df (double (double x) x) { return return2 * x + 4; 4; f ( x) = 2x + 4 public public static static void void solve solve (double (double xnew, xnew, double double tol, tol, int int imax) imax) { double double xold; xold; int int i; i; for for (i (i = 0; 0; i < imax; imax; i++) i++) { f ( x k ) x xold xold = xnew; k + 1 = xk xnew; f ( x xnew xnew = xold xold - f(xold) f(xold) / df(xold);; k ) df(xold);; System.out.println("x = " + xnew); xnew); if if (Math.abs(xnew (Math.abs(xnew - xold) xold) < tol) tol) break; break; if if (i (i >= >= imax) imax) System.out.println("not converge"); converge"); public public static static void void main(string[] main(string[] args) args) { solve(0, solve(0, 1e-10, 1e-10, 100); 100); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ หาราก (เป นจ านวนเช งซ อนได ) เข ยนคลาส Complex ให ม data members : x แล y constructor object methods : add, subtract, multiply, divide, abs, tostring เข ยนคลาส NewtonRaphsonComplex ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

95 Class Complex public public class class Complex Complex { public public double double x, x, y; y; public public Complex(double Complex(double x1, x1, double double y1) y1) { x = x1; x1; y = y1; y1; public public String String tostring() tostring() { if if (y (y >= >= 0) 0) return return "(" "(" + x + " + i" i" + y + ")"; ")"; else else return return "(" "(" + x + " - i" i" + (-y) (-y) + ")"; ")"; public public Complex multiply(complex z) z) { return returnnew newcomplex(x * z.x z.x- y * z.y, z.y, x * z.y z.y + y * z.x); z.x); public public Complex Complex divide(complex divide(complex z) z) { double double abs2 abs2 = z.x z.x * z.x z.x + z.y z.y * z.y; z.y; return return new new Complex((x Complex((x * z.x z.x + y * z.y) z.y) / abs2, abs2, (z.x (z.x* y - z.y z.y * x) x) / abs2); abs2); public public double double abs( abs( ) { return returnmath.sqrt(x * x + y * y); y); เข ยนเมท อด add แล subtract เอง ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Class NewtonRaphsonComplex public public class class NewtonRaphsonComplex { public public static static Complex Complex f(complex f(complex x) x) { Complex Complex two two = new new Complex(2, Complex(2, 0); 0); Complex Complex c1 c1 = x.multiply(x); x.multiply(x); Complex Complex c2 c2 = x.multiply(two); return return c1.add(c2.add(two)); public public static static Complex Complex df(complex df(complex x) x) { Complex Complex two two = new new Complex(2, Complex(2, 0); 0); Complex Complex c2 c2 = x.multiply(two); return return c2.add(two); c2.add(two); 2 f ( x) = x + 2x + 2 f ( x) = 2x + 2 ยะงม ต อ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Class NewtonRaphsonComplex Edit + Compile + Run...เข ยนต อ public public static static void void solve(complex solve(complex xnew, xnew, double double tol, tol, int int imax) imax) { Complex Complex xold, xold, temp; temp; int int i; i; for for (i (i = 0; 0; i < imax; imax; i++) i++) { xold xold = xnew; xnew; temp temp = f(xold).divide(df(xold)); xnew xnew = xold.subtract(temp); System.out.println("x = " + xnew); f ( x xnew); k ) temp temp = xnew.subtract(xold); x k + 1 = xk if if (temp.abs() (temp.abs() < tol) tol) break; f ( xk ) break; if if (i (i >= >= imax) imax) System.out.println("not converge"); converge"); public public static static void void main(string[] main(string[] args) args) { solve(new solve(new Complex(1, Complex(1, 3), 3), 1e-10, 1e-10, 100); 100); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

96 ค าถาม Complex c1 c1 = new new Complex(5,0); Complex c2 c2 = new new Complex(4,0); Complex c3 c3 = new new Complex(3,0); Complex c4 c4 = c1.add(c2).subtract(c3); Complex c5 c5 = c1.multiply(c2).add(c3); Complex c6 c6 = c1.add(c2).multiply(c3); Complex c7 c7 = c1.add( c2.multiply(c3) ); ); c4, c4, c5, c5, c6, c6, c7 c7 =? public Complex { public Complex sqr( sqr( ) { return ; จงเข ยนเมท อดยกก าละงสองในคลาส Complex โดยการใช เมท อด multiply ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Mandelbrot Set (อ กคระ ง) ให ล าดะบของจ านวน เช งซ อน d n ค านวณได จาก d n = (d n-1 ) 2 +c โดยท d 0 = 0+i0 = 0 แล c เป นจ านวนเช งซ อน c เป นสมาช กของ Mandelbrot set ถ าล าดะบ ของ d n ล เข าหาค าคงตะว แกน x แทนเส นจ านวนจร ง แกน y แทนเส นจ านวนจ นตภาพ จ ดด าในร ปค อสมาช กของ Mandelbrot set ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ โปรแกรมแสดง Mandelbrot set public public void void paint(graphics paint(graphics g) g) { int int n; n; Complex Complex c, c, d; d; double double stepx stepx = / getsize().width; double double stepy stepy = / getsize().height; for for (double y = -1.5; -1.5; y <= <= 1.5; 1.5; y += += stepy) stepy) { for for (double (doublex = -2.0; -2.0; x <= <= 1.0; 1.0; x += += stepx) stepx) { c = new new Complex(x, Complex(x, y); y); d = new new Complex(0, Complex(0, 0); 0); d n = 0; d n 0; n < 2 while while (d.abs() (d.abs() < 2 && && n++ n++ < 256) 256) { d = d.multiply(d).add(c); d n = n (d (d n-1 ) n-1 ) c if if (n (n >= >= 256) 256) { g.drawrect((int)((x + 2) 2) / stepx), stepx), (int)((y (int)((y + 1.5) 1.5) / stepy), stepy), 1, 1, 1); 1); แบบฝ กหะด : อยากได คลาส "Rational" Rational เป นคลาสเก บเลขตรรกย ต.ย. 3/4, 15/7, 8/1 ม สอง fields : numerator แล denominator ต.ย. 15/7 ม numerator เป น 15 แล denominator เป น 7 ม เมท อดดะงน add, subtract, multiply, divide, tostring, แล equals ควรเก บแบบลดร ป เช น 4/8 ควรเก บเป น 1/2 public public class class Rational Rational { public public int int numerator; numerator; public public int int denominator; denominator; ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

97 หะวข อ : การท าโปรแกรมคอมพ วเตอร Composition & Inheritance ภาคว ชาว ศวกรรมคอมพ วเตอร จ ฬาลงกรณ มหาว ทยาละย Composition Inheritance subclass แล superclass Overriding vs. Overloading class Object Inheritance Hierarchy upcasting แล downcasting Composition vs. Inheritance ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ เม อต องการสร างคลาสใหม ค ดถ ง คลาสเก าท เคยเข ยน คลาสมาตรฐานของร บบจาวา ค นจาก j2sdk help file (ม ~ 3000 คลาส) คลาสท คนอ นเข ยนแล อน ญาตให ใช ค นในอ นเตอร เน ต (JNL, JSci, JLAPACK, JEdit, Lucene,...) คลาสท ขายในท องตลาด น ามาใช ด วยว ธ copy & change source code (โบราณ) composition inheritance avoid reinventing the the wheel เล อกของด well defined carefully tested well documented portable highly rated open source Reusability Rapid Application Development ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/2002 4

98 Composition สร างคลาสใหม ท ปร กอบด วย fields ท เป น objects ของคลาสอ น เข ยน methods ของคลาสใหม โดยใช fields แล methods ขององค ปร กอบภายในให เป นปร โยชน รายล เอ ยดของ methods ใหม เป นเสม อน "กาว" ท น าของท ม อย มาป ต ดกะนให ได ส งปร ด ษฐ ใหม ๆ อยากได "ส เหล ยมท วาดได " อยากได คลาส DrawableRect (ม ส ด วย) ซ งม เมท อด equals( DrawableRect r ) : ทดสอบว า r เหม อน this? draw( Graphics g ) : วาด this? เข ยนใหม หมด (หาเร อง) ใช คลาสมาตรฐานของจาวา Rectangle, Color Rectangle ม สมาช ก: fields : x, y, width, height methods : add, contains, equals, getwidth, getheight, grow, intersection, intersects, move, tostring, union, ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Composition สร างคลาสใหม ปร กอบด วย fields ออบเจกต ของคลาส Rectangle ออบเจกต ของคลาส Color dr rect object ของคลาส Rectangle color object ของ คลาส Color object ของคลาส DrawableRect Composition import import java.awt.*; java.awt.*; public public class class DrawableRect DrawableRect { public public Rectangle Rectangle rect; rect; public public Color Color color; color; ปร กอบด วยออบเจกต ของ คลาส Rectangle แล Color public public DrawableRect(int x, x, int int y, y, int int w, w, int int h, h, Color Color c) c) { this.rect this.rect = new new Rectangle(x, Rectangle(x, y, y, w, w, h); h); this.color this.color = c; c; public public boolean boolean equals(drawablerect r) r) { if if (r (r == == null) null) return return false; false; return return this.rect.equals(r.rect) && && this.color.equals(r.color); public public void void draw(graphics draw(graphics g) g) { g.setcolor(this.color); g.fillrect(this.rect.x, this.rect.y, this.rect.y, this.rect.width, this.rect.height); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/2002 8

99 Inheritance เข ยนคลาสใหม (B) ซ ง "ขยาย" ค ณสมบะต จาก คลาสเก า (A) ท ม อย (class B extends A) เร ยกคลาส B ว า "ระบมรดก" จากคลาส A B ม ท กๆ fields ของ A (โดยอะตโนมะต ) B ม ท กๆ methods ของ A (โดยอะตโนมะต ) (ยกเว น constructors) เร ยก B ว าเป น subclass ของ A เร ยก A ว าเป น superclass ของ B ต ความได ว า B เป นคลาสท เป นกรณ พ เศษของ A ออบเจกต ของ B เป น A แต ออบเจกต ของ A ไม จ าเป นต องเป น B ตะวอย างเช น class Cat extends Mammal ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ A B Inheritance : แบบง ายส ดๆ เข ยนคลาสใหม เพ ยงแค บอกว าขยายจากอ กคลาส import java.awt.*; public class class R1 R1 extends Rectangle { เหม อน Rectangle ท กปร การ (ยกเว น constructors) R1 ม fields แล methods ต างๆ ตามท Rectangle ม ไม ม constructor อ ไรเลย ร บบจ เต ม constructor แบบไม ระบพาราม เตอร ให import java.awt.*; public class class R1 R1 extends Rectangle { public R1() R1() { super(); เร ยก constructor ของ superclass ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Inheritance : แบบท ควรท า ก าหนดให คลาสใหม ขยายจากคลาสเก าท ม เพ ม fields ท จ าเป น เข ยน constructors ท อยากให บร การ เพ ม methods ใหม ๆ ท superclass ไม ม เปล ยน methods เด มของ superclass ให ม พฤต กรรมใหม (เร ยกว า overriding method) จาวาไม อน ญาตให ลบ methods ของ superclass ท subclass ไม อยากได ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Inheritance import import java.awt.*; java.awt.*; public public class class DrawableRect DrawableRect extends extends Rectangle Rectangle { public public Color Color color; color; เพ ม field ใหม public public DrawableRect(int x, x, int int y, y, int int w, w, int int h, h, Color Color c) c) { super(x, super(x, y, y, w, w, h); h); this.color this.color = c; c; เข ยน constructor เปล ยน method เด ม public public boolean boolean equals(object equals(object r) r) { if if (!super.equals(r) ) return return false; false; if if ( this.getclass() this.getclass()!=!= r.getclass() r.getclass() ) return return false; false; return return this.color.equals(((drawablerect) r).color); r).color); public public void void draw(graphics draw(graphics g) g) { g.setcolor(this.color); g.fillrect(super.x, super.y, super.y, super.width, super.width, super.height); super.height); เพ ม method ใหม ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

100 การใช fields ของ superclass อ างอ ง fields ของ superclass ได โดยใช super. น าหน าช อ field หร อจ ใช this. น าหน าช อ field ของ superclass ก ได (เพรา "ระบมรดก" มาแล ว) หร อจ ใช แค ช อ field ก ไม ผ ด (เพรา ตะด this. ได ) public public void void draw(graphics draw(graphics g) g) { g.setcolor(this.color); g.fillrect(super.x, super.y, super.y, super.width, super.width, super.height); super.height); public public void void draw(graphics draw(graphics g) g) { g.setcolor(this.color); g.fillrect(this.x, this.y, this.y, this.width, this.width, this.height); เข ยนแบบน this.height); ร ท มา public public void void draw(graphics draw(graphics g) g) { g.setcolor(this.color); g.fillrect(x, g.fillrect(x, y, y, width, width, height); height); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ การใช methods ของ superclass อ างอ ง methods เด ม ของ superclass ได โดยใช super. น าหน าช อ method หร อจ ใช this. น าหน าช อ method (ท ไม ได ถ ก overriden) ของ superclass ก ได (เพรา "ระบ มรดก" มาแล ว) public public boolean boolean equals(object equals(object r) r) { if if (!super.equals(r) ) return return false; false; if if ( this.getclass() this.getclass()!=!= r.getclass() r.getclass() ) return return false; false; return return this.color.equals(((drawablerect) r).color); r).color); เร ยก equals ของ superclass เพ อทดสอบว าเป น Rectangle ท เหม อนกะนหร อไม (ตรงน จ ใช this.equals ไม ได เพรา...) ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ แบบฝ กหะด เข ยนเมท อด tostring ให กะบ DrawableRect ข อแน น า : ควรใช tostring ของ superclass public class class DrawableRect extends Rectangle { public String tostring() { Overriding ไม เหม อน Overloading Overriding เป นการเข ยนเมท อดใน subclass ซ งม ช อ แล รายการพาราม เตอร ปรากฏอย แล วใน superclass (เป นการ "ลบล าง" ของเก าท ม อย ) Overloading เป นการเข ยนเมท อดใหม ซ งม ช อซ า แต รายการพาราม เตอร ไม เหม อนกะบของเด ม (เป นการ "เพ มภาร " ให กะบช อเมท อดว าท างานหลาย แบบ ข นกะบรายการพาราม เตอร ท ได ระบ) public public class class A { public public int int f() f() { public public class class B extends extends A { public public int int f() f() { // // overriding overriding public public int int f(int f(int x) x) { // // overloading overloading ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

101 คลาส Object Inheritance Hierarchy จาวาม คลาสมาตรฐานช อว า Object (ขอย า ช อ Object น เป นช อคลาส ข นต นด วยโอใหญ ) Student คลาส Object เป น "บรรพบ ร ษ" ของท กคลาสในจาวา การเข ยนคลาสใหม ท ไม ได extends จากคลาสใด ถ อ ได ว า extends จากคลาส Object ArtStudent EngStudent CommStudent Object FreshyEng CPEngStudent CEStudent EEStudent Component String... Exception Complex FreshyEng ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ การแสดง Inheritance ใน Help File java.lang.object +-JSci.maths.Matrix +-JSci.maths.ComplexMatrix +-JSci.maths.ComplexSquareMatrix +-JSci.maths.ComplexTridiagonalMatrix +-JSci.maths.ComplexDiagonalMatrix แบบฝ กหะด เข ยน inheritance hierarchy ของคลาสต อไปน Quadrilateral, Trapesoid, Parallelogram, Rectangle, แล square Vehicle, Car, Truck, Sedan, Coupe, PrickupTruck, SportUtilityVehicle, Minivan, Bicycle, แล Motocycle Archosaurs, Thecodonts, Pterosaurs, Dinosaurs, Crocodilians, Saurischians, แล Ornithischians ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

102 Casting ก าหนดให B extends A B ระบพฤต กรรมท กอย างจาก A B "เป น" A (ค อเป นกรณ พ เศษของ A) Upcasting เราสามารถ cast ออบเจกต ของ B ให เป น A ได upcast ได เสมอ Downcasting ออบเจกต ของ B ท เคยถ ก upcast ให เป น A สามารถถ ก cast กละบลงมาเป น B ได ถ า downcast ไม ได จ เก ด ClassCastException A B มาด equals ของ DrawableRect equals ระบออบเจกต ของคลาส Object ดะงนะ น equals น override equals ของ Rectangle ใช super.equals(r) เพ อทดสอบว าเป น Rectangle ท เหม อนกะนหร อไม ใช this.getclass() กะบ r.getclass() เพ อเปร ยบเท ยบว า r เป นคลาสปร เภทเด ยวกะบ this หร อไม ถ าเป นคลาสปร เภทเด ยวกะนจ ได downcast จาก Object มาได เพ อจ ได หย บ color : ((DrawableRect) r).color public boolean equals(object r) r) { if if (!super.equals(r) ) return false; if if ( this.getclass()!=!= r.getclass() ) return false; return this.color.equals(((drawablerect) r).color); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ แบบฝ กหะด เข ยนคลาส Square โดยใช คลาส Rectangle แบบ Composition Inheritance Fields : x, y ร บ พ กะดตรงกลางส เหล ยมจะต ระส length ร บ ความยาวด าน Methods : boolean contains( int x, int y ) void translate( int dx, int dy ) int getlength( ) int setlength( ) boolean equals( Object s ) String tostring( ) อ านความหมายของ แต ล เมท อดได จาก JDK help file ของ Rectangle ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Composition vs. Inheritance ใช composition เม อเราใช ค ณสมบะต ของคลาสอ น มาเป นส วนปร กอบเพ อออกแบบของใหม เช น รถ "ม " ล อ เคร องยนต หน าต าง ปร ต ดะงนะ นคลาส Car ปร กอบด วย fields ของออบเจกต จาก คลาส Wheel, Engine, Window, Door เป นต น ใช inheritance เม อเราต องการคลาสใหม ซ งเป น กรณ พ เศษของคลาสเด ม จ งต องการค ณสมบะต เด ม ส วนใหญ ของคลาสเก า ม การเปล ยนหร อเพ มเต ม ค ณสมบะต ใหม บ าง เช น น ส ตว ศวฯ จ ฬาฯ "เป น" น ส ตจ ฬาฯ แต ม อ ไรบาง อย างเพ มเต มจากกรณ ทะ วไป ดะงนะ นคลาส EngCUStudent extends CUStudent ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/

103 หะวข อ : การท าโปรแกรมคอมพ วเตอร packages, import private, public, final, static Error & Exception Handling (Optional) เร องต องร (บ าง) ภาคว ชาว ศวกรรมคอมพ วเตอร จ ฬาลงกรณ มหาว ทยาละย ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Package โปรแกรมจาวาปร กอบด วยคลาสมากมาย ทะ งท เข ยนเอง ของร บบจาวา หร อของคนอ น จ จะดเก บคลาสต างๆ อย างไร ท ไหน แล ม ว ธ ป อง กะนช อซ าได อย างไร จะดเก บคลาสต างๆ ในร ปของ package คลาสท อย ใน package เด ยวกะน ค ออย ใน directory เด ยวกะน jlab JLabIO.class JLabPanel.class ช อ ช อ package มะกข นด วยตะวเล ก ทะ งสองคลาสน อย ใน package jlab ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ Package Package ม ล าดะบชะ น : ม subdirectory ได ต องร บ ช อ package ในโปรแกรมด วย somchai j101 ช อแบบเต มยศ package package somchai.j101; somchai.j101; Lab1.class somchai.j101.lab1 public public class class Lab1 Lab1 { Lab2.class somchai.j101.lab j211 Lab1.class somchai.j211.lab1 package package somchai.j211; somchai.j211; Lab2.class somchai.j211.lab2 public public class class Lab1 Lab1 { Demo.class somchai.j211.demo อ างอ งช อคลาสแบบเต มยศ public public class class Other Other { somchai.j101.lab1 lab101; lab101; somchai.j211.lab1 lab211; lab211; ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/2002 4

104 การสร าง Package ใน JLab ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ import การใช คลาสท อย นอก package ของตะวเอง เข ยนช อ class รวมทะ ง package ให ครบถ วน หร อใช import ก อน แล วอ างเฉพา ช อคลาสได เลย importแบบร บ ช อคลาส importแบบเหมาหมดท กคลาส import import jlab.jlabio; jlab.jlabio; import import jlab.*; jlab.*; public public class class Happy Happy { public public void void A() A() { public public class class Happy Happy { int intx = JLabIO.readInt(); public public void void A() A() { int intx = JLabIO.readInt(); public... public class... class Happy Happy { public public void void A() A() { int... intx = jlab.jlabio.readint(); ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ การควบค มการใช fields แล methods ใช public ก ากะบ เป ดเผย : คลาสอ นๆ ใช ได หมด ใช private ก ากะบ ปกป ด : ใช ได เฉพา ภายในคลาสเจ าของเท านะ น public class class Square { public Rectangle rect; rect; ใครๆ ก ใช rect ได Square s = new new Square( 10, 10, 10, 10, ); ); s.rect.width = 70; 70; public class class Square { private Rectangle rect; rect; ใช rect ได เฉพา ใน คลาสน เท านะ น การอน ญาตให ผ อ นเปล ยนความกว างได เอง อาจท าให Square ไม จะต ระส ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/ ข อแน น า ให ท กๆ fields เป น private ม public method ให หย บหร อเปล ยนค าของ field ได public class class Square { private Rectangle rect; rect; public Square(int x, x, int int y, y, int int len) len) { this.rect = new new Rectangle(x, y, y, len, len, len); len); public int int getlength( ) { return this.rect.width; public void void setlength(int len) len) { if if (len (len > 0) 0) this.rect.width = this.rect.height = len; len; ปลอดภะย แล ตรวจหาจ ดบกพร องของโปรแกรมได ง ายข น ว ศวกรรมคอมพ วเตอร จ ฬา 7/8/2002 8

Αντικειµενοστρεφής Προγραµµατισµός

Αντικειµενοστρεφής Προγραµµατισµός 16 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Αντικειμενοστρεφής Προγραμματισμός Διδάσκουσα: Αναπλ. Καθηγήτρια Ανδριάνα Πρέντζα aprentza@unipi.gr Εργαστηριακός Συνεργάτης: Δρ. Βασιλική Κούφη vassok@unipi.gr Εργαστήριο 2 Βασικοί Τύποι Μεταβλητών Java

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΗ JAVA ΤΕΛΕΣΤΕΣ - ΜΕΤΑΒΛΗΤΕΣ

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΗ JAVA ΤΕΛΕΣΤΕΣ - ΜΕΤΑΒΛΗΤΕΣ ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr ΒΑΣΙΚΟΙ ΤΥΠΟΙ ΔΕΔΟΜΕΝΩΝ ΣΤΗ JAVA ΤΕΛΕΣΤΕΣ - ΜΕΤΑΒΛΗΤΕΣ Ας δούμε το απλό πρόγραμμα

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Ισότητα Strings class StringTest public static void main(string args[]) String x1 = "java"; String y1 = "java"; System.out.println("1.

Διαβάστε περισσότερα

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου

Διάλεξη 3: Προγραμματισμός σε JAVA I. Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 3: Προγραμματισμός σε JAVA I Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: Εισαγωγή στις έννοιες: - Στοιχειώδης Προγραμματισμός - Προγραμματισμός με Συνθήκες - Προγραμματισμός με Βρόγχους

Διαβάστε περισσότερα

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων

2.1. Εντολές. 2.2. Σχόλια. 2.3. Τύποι Δεδομένων 2 Βασικές Εντολές 2.1. Εντολές Οι στην Java ακολουθούν το πρότυπο της γλώσσας C. Έτσι, κάθε εντολή που γράφουμε στη Java θα πρέπει να τελειώνει με το ερωτηματικό (;). Όπως και η C έτσι και η Java επιτρέπει

Διαβάστε περισσότερα

API: Applications Programming Interface

API: Applications Programming Interface ÒØ Ñ ÒÓ ØÖ ÔÖÓ» Ñ ÒØ Ñ ÒÓ ØÖ ÔÖÓ Ö ÑÑ Ø Ñ ½ Ö Ø Ò Ô Ö Ø ÒØ Ñ ÒÛÒ ÒÒÓ ôòøóù ÔÖ Ñ Ø Ó ÑÓÙ Ì ÔÓ ÓÑ ÒÛÒ Ì µ (i) ÒÓÐÓØ ÑôÒ (ii)ôö Ü º Ð ØÖ Ò Ò ÖÛÔÓ ØÖ ÔÐ Ò Ø Ó Ó Ù Ø Ñ Ø ººº ½ºÈÖÛØ ÓÒØ Ø ÔÓ int double char

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java III ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java III Το if-else statement Το if-else statement δουλεύει καλά όταν στο condition θέλουμε να περιγράψουμε μια επιλογή με δύο πιθανά ενδεχόμενα.

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 22/11/07 Ακαδ έτος 2007-2008 ΠΛΗΡΟΦΟΡΙΚΗ Ι Φερεντίνος 22/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με ΑΜ σε 3, 7, 8 & 9 22/11/07 Παράδειγμα με if/else if και user input: import javautil*; public class Grades public

Διαβάστε περισσότερα

Δομές ελέγχου ροής προγράμματος

Δομές ελέγχου ροής προγράμματος Δομές ελέγχου ροής προγράμματος Υπάρχουν δύο είδη δομών ελέγχου ροής (control flow): Οι δομές επιλογής και Οι δομές επανάληψης Δομές ελέγχου ροής προγράμματος Είδος δομής Δομές επιλογής Δομή ελέγχου ροής

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Βρόγχοι Το if-then Statement Στην Java το if-then statement έχει το εξής συντακτικό Η παρένθεση είναι απαραίτητη if (condition) if-code block

Διαβάστε περισσότερα

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων

Αντικείµενα. ηµιουργία και χρησιµοποίηση αντικειµένων. ηµιουργία αντικειµένων Αντικείµενα ηµιουργία και χρησιµοποίηση αντικειµένων ηµιουργία αντικειµένων Για να δηµιουργήσω ένα νέο αντικείµενο χρησιµοποιώ τον τελεστή new µε τοόνοµατηςκλάσηςαπότηνοποίαθέλωναδηµιουργήσωένααντικείµενο,

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 2: Η ΓΛΩΣΣΑ JAVA Σύγκριση JAVA-C ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής ΣΥΓΚΡΙΣΗ JAVA - C ΤΥΠΟΙ

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Εντολές ελέγχου συγκρίσεων επιλογής ή διακλαδώσεων ( if switch) Μία από τις σημαντικότερες

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Πέμπτη (5 η ) τρίωρη διάλεξη. Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/

Διαβάστε περισσότερα

Διδάσκων: Παναγιώτης Ανδρέου

Διδάσκων: Παναγιώτης Ανδρέου Διάλεξη 7: Ενθυλάκωση (encapsulation), Τροποποιητές(modifiers) Στην ενότητα αυτή θα μελετηθούν τα εξής επιμέρους θέματα: - Ενθυλάκωση -Τροποποιητές Πρόσβασης (Access Modifiers), public, protected, private,

Διαβάστε περισσότερα

4. Εισαγωγή στη Java

4. Εισαγωγή στη Java ΠΠΜ 401 - Ανάπτυξη Λογισμικού Εφαρμογών Μηχανικής 4. Εισαγωγή στη Java Χειμερινό εξάμηνο 2014 Πέτρος Κωμοδρόμος komodromos@ucy.ac.cy http://www.eng.ucy.ac.cy/petros 1 Θέματα Εισαγωγή στη γλώσσα προγραμματισμού

Διαβάστε περισσότερα

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr

Η λέξη κλειδί this. Γαβαλάς Δαμιανός dgavalas@aegean.gr Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Διάλεξη #6 η : Η λέξη κλειδί this, υπερφόρτωση μεθόδων, κληρονομικότητα, πολυμορφισμός, υπερκάλυψη, επίπεδα προσπέλασης Γαβαλάς Δαμιανός dgavalas@aegean.gr

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java Είσοδος Χρησιμοποιούμε την κλάση Scanner της Java import java.util.scanner; Αρχικοποιείται με το ρεύμα εισόδου: Scanner in = new Scanner(System.in);

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 11/3/2008 Κατασκευαστές (Constructors) Ειδικός τύπος μεθόδων, οι οποίες: - είναι public και έχουν το ίδιο όνομα με αυτό της κλάσης - χρησιμοποιούνται για να αρχικοποιήσουν κάποιες

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I (5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις Γαβαλάς Δαμιανός

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Java Παύλος Εφραιμίδης Java Βασικά Στοιχεία της γλώσσας Java 1 Τύποι Δεδομένων Η Java έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) τύπους δεδομένων αναφορές Java Βασικά

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07 Συνέχεια για το for: ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 29/11/07 Nested for-loops (for μέσα σε for): π.χ. int k; for (int i=0; i

Διαβάστε περισσότερα

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η

Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η Αντικειμενοστραφής Προγραμματισμός I(5 ο εξ) Εργαστήριο #2 ο : Ανατομία προγραμμάτων εφαρμογών, η μέθοδος main(), εμφάνιση μηνυμάτων, Java προγράμματα που εκτελούν αριθμητικές πράξεις 2 Ανατομία ενός προγράμματος

Διαβάστε περισσότερα

2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι

2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι 2. Προσδιοριστές, δεσμευμένες λέξεις και τύποι Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να χρησιμοποιείτε σχόλια σε ένα πηγαίο πρόγραμμα Java. Να διακρίνετε σωστούς από λάθος προσδιοριστές. Να αναγνωρίζετε

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6

Εισαγωγή στον Προγραµµατισµό, Αντώνιος Συµβώνης, ΣΕΜΦΕ, ΕΜΠ,, Slide 6 Εκµάθηση αντικειµενοστραφή προγρ/σµού Η εκµάθηση µίας γλώσσας προγραµµατισµού µπορεί να χωρισθεί σε δύο µέρη Εβδοµάδα 6: Η βιβλιοθήκη κλάσεων της Java Εκµάθηση της γλώσσας Σύνταξη, εντολές επιλογής, βρόγχοι,

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε

Διαβάστε περισσότερα

Προγραμματισμός Η/Υ (ΤΛ2007 )

Προγραμματισμός Η/Υ (ΤΛ2007 ) Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε.Ι. Κρήτης Προγραμματισμός Η/Υ (ΤΛ2007 ) Δρ. Μηχ. Νικόλαος Πετράκης (npet@chania.teicrete.gr) Ιστοσελίδα Μαθήματος: https://eclass.chania.teicrete.gr/ Εξάμηνο: Εαρινό 2014-15

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 1/11/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 1/11/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 1/11/07 Κάποια πράγματα ξανά για τις μεταβλητές: - Δήλωση μεταβλητής: [=τιμή]; (προς το παρόν παραλείπουμε την ορατότητα)

Διαβάστε περισσότερα

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο )

Στοιχεία εξεταζόµενου Αριθµός Απάντησης Βαθµολογία. Σύνολο (Θέµα 4 ο ) Οικονοµικό Πανεπιστήµιο Αθηνών Τµήµα Πληροφορικής Εισαγωγή στον Προγραµµατισµό των Υπολογιστών Καθηγητής Ι. Κάβουρας Εξεταστική περίοδος Φεβρουαρίου 2004 Τετάρτη 10/3/2004, ώρα 8.00 Στοιχεία εξεταζόµενου

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 3: Έλεγχος ροής προγράμματος Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 3 ΕΛΕΓΧΟΣ ΡΟΗΣ ΠΡΟΓΡΑΜΜΑΤΟΣ Ι. Ελεγκτές συνθηκών ή περιπτώσεων:

Διαβάστε περισσότερα

Εισαγωγή στον Προγ/μό Η/Υ

Εισαγωγή στον Προγ/μό Η/Υ Εισαγωγή στον Προγ/μό Η/Υ Ενότητα 7 2ο μέρος: Επιπλέον έννοιες σχετικά με αντικείμενα Διδάσκων: Μιχάλης Τίτσιας Περιεχόμενα Τι μπορεί να περιέχει μια τάξη Μέθοδοι τάξης και σταθερές τάξης Πολυμορφισμός

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II Strings Η κλάση String είναι προκαθορισμένη κλάση της Java που μας επιτρέπει να χειριζόμαστε αλφαριθμητικά. Ο τελεστής + μας επιτρέπει

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ

Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Αντικειμενοστρεφής Προγραμματισμός Διάλεξη 2 : ΜΕΤΑΒΛΗΤΕΣ ΤΕΛΕΣΤΕΣ & ΕΚΦΡΑΣΕΙΣ ΕΛΕΓΧΟΣ ΡΟΗΣ Κων. Κόκκινος Μεταβλητές-1 Οι μεταβλητές αποτελούν θέσεις μνήμης στις οποίες αποθηκεύονται τιμές αντίστοιχες

Διαβάστε περισσότερα

Βασικά Στοιχεία της Java

Βασικά Στοιχεία της Java Βασικά Στοιχεία της Παύλος Εφραιμίδης 1 Βασικά Στοιχεία της γλώσσας Τύποι Δεδομένων Η έχει δύο κατηγορίες τύπων δεδομένων: πρωτογενείς (primitive) iti τύπους δεδομένων δδ αναφορές 2 Βασικά Στοιχεία της

Διαβάστε περισσότερα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #6

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #6 Εκμάθηση αντικειμενοστραφή προγρ/σμού Η εκμάθηση μίας γλώσσας προγραμματισμού μπορεί να χωρισθεί σε δύο μέρη Διάλεξη #6: Η βιβλιοθήκη κλάσεων της Java Εκμάθηση της γλώσσας Σύνταξη, εντολές επιλογής, βρόγχοι,

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 18/3/2008 - Παράδειγμα με switch (το οποίο δείχνει επίσης πότε σε μια άσκηση χρησιμοποιούμε user-input και System.out.println() για έξοδο και πότε χρησιμοποιούμε είσοδο σε μέθοδο

Διαβάστε περισσότερα

Οντοκεντρικός Προγραμματισμός

Οντοκεντρικός Προγραμματισμός Οντοκεντρικός Προγραμματισμός Ενότητα 5: H ΓΛΩΣΣΑ C++ Δομές Ελέγχου ΔΙΔΑΣΚΟΝΤΕΣ: Ιωάννης Χατζηλυγερούδης, Χρήστος Μακρής Πολυτεχνική Σχολή Τμήμα Μηχανικών Η/Υ & Πληροφορικής Δομές Ελέγχου Εισαγωγή Πριν

Διαβάστε περισσότερα

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS.

Εισαγωγή στη JAVA. Εισαγωγή στη Java. Η Java είναι δημιούργημα της SUN MICROSYSTEMS. Εισαγωγή στη JAVA Σύντομο Ιστορικό Η Java και το διαδίκτυο Το πρώτο απλό πρόγραμμα σε JAVA Μεταβλητές και σταθερές Παραστάσεις και εντολές Οι βασικοί τύποι δεδομένων στη Java Οι βασικοί Τελεστές στη Java

Διαβάστε περισσότερα

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth.

Το πρόγραμμα HelloWorld.java. HelloWorld. Κλάσεις και Αντικείμενα (2) Ορισμός μιας Κλάσης (1) Παύλος Εφραιμίδης pefraimi <at> ee.duth. Το πρόγραμμα HelloWorld.java Σχόλια στη Java HelloWorld Παύλος Εφραιμίδης pefraimi ee.duth.gr Java Το πρόγραμμα HelloWorld 1 Java Το πρόγραμμα HelloWorld 2 Σχόλια στη Java ΗγλώσσαJava υποστηρίζει

Διαβάστε περισσότερα

Βασικά της γλώσσας JAVA

Βασικά της γλώσσας JAVA 17 η διάλεξη Π. Σταθοπούλου pstath@ece.upatras.gr ή pstath@upatras.gr Οµάδα Α (Φοιτητές µε µονό αριθµό Μητρώου ) ιδασκαλία : Παρασκευή 11πµ-13µµ ΗΛ7 Φροντιστήριο : ευτέρα 11πµ-12πµ ΗΛ4 Προηγούµενη ιάλεξη

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων

Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων Προγραμματισμός ΙΙ (Java) 4. Διαχείριση εξαιρέσεων Διαχείριση λαθών Εξαιρέσεις Δημιουργία Ανίχνευση Διαχείριση Βασικοί τύποι εξαιρέσεων Δημιουργία τύπων εξαίρεσης 2 Αντιμετώπιση λαθών Υπάρχουν λάθη χρόνου

Διαβάστε περισσότερα

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην.

I (JAVA) Ονοματεπώνυμο: Α. Μ.: Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. I (JAVA) Ονοματεπώνυμο: Α. Μ.: + ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ Δώστε τις απαντήσεις σας ΕΔΩ: Απαντήσεις στις σελίδες των ερωτήσεων ΔΕΝ θα ληφθούν υπ όψην. + 1 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 2/3) 2 ΦΥΛΛΟ ΑΠΑΝΤΗΣΕΩΝ (σελ. 3/3)

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008

ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (JAVA) 4/3/2008 Εκτέλεση μεθόδου του αντικειμένου μιας κλάσης: 1) Δημιουργία αντικειμένου (στιγμιότυπου) της κλάσης: = new ( ); 2) Κλήση μεθόδου της κλάσης (στην

Διαβάστε περισσότερα

Εξαιρέσεις (Exceptions) Λάθη (Errors) Χειρισμός των Εξαιρέσεων (Exception Handling) Assertions

Εξαιρέσεις (Exceptions) Λάθη (Errors) Χειρισμός των Εξαιρέσεων (Exception Handling) Assertions (Object Oriented Programming) Εξαιρέσεις (Exceptions) Λάθη (Errors) Χειρισμός των Εξαιρέσεων (Exception Handling) Assertions PhD http://aetos.it.teithe.gr/~sfetsos/ sfetsos@it.teithe.gr Περιεχόμενα Μαθήματος

Διαβάστε περισσότερα

ΕΠΛ 012. JavaScripts

ΕΠΛ 012. JavaScripts ΕΠΛ 012 JavaScripts Γλώσσα JavaScript (JS) ηµιουργεί δυναµικές ιστοσελίδες και αλληλεπιδράσεις µε το χρήστη εν είναι Java, αλλά είναι αντικειµενοστραφής (απλό µοντέλο υποκειµένων) Objects, properties (τιµές

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Πίνακες Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Πίνακες Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το αντικείμενο input

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java

Διαβάστε περισσότερα

Ευφυείς Τεχνολογίες ----Πράκτορες

Ευφυείς Τεχνολογίες ----Πράκτορες Ευφυείς Τεχνολογίες ----Πράκτορες Ενότητα 6: Προγραμματισμός Βασισμένος στους πράκτορες Το Περιβάλλον Ανάπτυξης Πολλαπλών Πρακτόρων JADE Δημοσθένης Σταμάτης demos@it.teithe.gr www.it.teithe.gr/~demos Μαθησιακοί

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι String Interning new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον

Διαβάστε περισσότερα

Εισαγωγή στον Προγραµµατισµό - Εβδοµάδα 7

Εισαγωγή στον Προγραµµατισµό - Εβδοµάδα 7 Τιµές βασικών τύπων και αναφορές εδοµένα βασικών τύπων αποθηκεύονται κατ αξία ενώ τα αντικείµενα αποθηκεύονται κατ αναφορά: Εβδοµάδα 7: Συµβολοσειρές age = ; father = new (); name = ; Εισαγωγή στον Προγραµµατισµό,,,

Διαβάστε περισσότερα

3. Εκφράσεις και έλεγχος ροής

3. Εκφράσεις και έλεγχος ροής 3. Εκφράσεις και έλεγχος ροής Τελειώνοντας αυτό το κεφάλαιο θα μπορείτε: Να διακρίνετε ανάμεσα σε μεταβλητές μέλη και αυτόματες μεταβλητές Να περιγράφετε την αρχικοποίηση των μεταβλητών μελών Να αναγνωρίζετε

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός μνήμης Αντικείμενα παράμετροι String Interning Αποθήκευση αντικειμένων Οι θέσεις μνήμης των αντικειμένων κρατάνε μια διεύθυνση στο

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται και τυπώνει τη θέση του.

Διαβάστε περισσότερα

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012

Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Πανεπιστήµιο Κρήτης Τµήµα Επιστήµης Υπολογιστών ΗΥ-252 Αντικειµενοστρεφής Προγραµµατισµός Βασίλης Χριστοφίδης Επαναληπτική Εξέταση (3 ώρες) Ηµεροµηνία: 21 Σεπτεµβρίου 2012 Θέμα 1 Θέμα 2 Θέμα 3 Θέμα 4 Θέμα

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07

ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 ΠΛΗΡΟΦΟΡΙΚΗ Ι JAVA Τμήμα θεωρίας με Α.Μ. σε 3, 7, 8 & 9 25/10/07 Αριθμητική στο δυαδικό σύστημα (γενικά) Συμπληρωματικά για δυαδικό σύστημα Η πρόσθεση στηρίζεται στους κανόνες: 0 + 0 = 0, 0 + 1 = 1, 1

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java II ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java II HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java

Διαβάστε περισσότερα

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος. sfetsos@it.teithe.gr

ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός. Παναγιώτης Σφέτσος. sfetsos@it.teithe.gr ΑΤΕΙ ΘΕΣΣΑΛΟΝΙΚΗΣ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Αλγοριθμική και Προγραμματισμός Παναγιώτης Σφέτσος sfetsos@it.teithe.gr Π ί ν α κ ε ς - A r r a y s Είναι χώροι της μνήμης για προσωρινή αποθήκευση δεδομένων

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών

Εισαγωγή στη γλώσσα προγραμματισμού JAVA. Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Εισαγωγή στη γλώσσα προγραμματισμού JAVA Δομές Δεδομένων Διδάσκων: Π.Α. Μήτκας Τομέας Ηλεκτρονικής και Υπολογιστών Το πρώτο φλιτζάνι Java Λίστα με τα απαραίτητα Το πρώτο μου πρόγραμμα(hello World) Συνεχίζοντας

Διαβάστε περισσότερα

Εισαγωγή στον Προγραμματισμό

Εισαγωγή στον Προγραμματισμό Εισαγωγή στον Προγραμματισμό Έλεγχος Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Ακ. Έτος 2012-2013 Σχεσιακοί Τελεστές και Ισότητας Ένα πρόγραμμα εκτός από αριθμητικές πράξεις

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Constructors Υπερφόρτωση Αντικείμενα ως παράμετροι Μαθήματα από το lab Boolean μεταβλητές: Συνήθως τα ονόματα που δίνουμε στις boolean μεταβλητές περιγράφουν

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Μνήμης Αντικείμενα ως ορίσματα ΑΝΑΦΟΡΕΣ new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για

Διαβάστε περισσότερα

Προγραμματισμός ΙΙ (Java) 1. Εισαγωγή

Προγραμματισμός ΙΙ (Java) 1. Εισαγωγή Προγραμματισμός ΙΙ (Java) 1. Εισαγωγή 1 Στόχοι Όσοι ολοκληρώνουν το μάθημα με επιτυχία να: Γνωρίζουν καλά τις βασικές αρχές του αντικειμενοστρεφούς προγραμματισμού: αντικείμενα, κλάσεις, γνωρίσματα, μεθόδους,

Διαβάστε περισσότερα

Εισαγωγή στην πληροφορική

Εισαγωγή στην πληροφορική Εθνικό Μετσόβιο Πολυτεχνείο Σχολή Αγρονόµων Τοπογράφων Μηχανικών Εισαγωγή στην πληροφορική Βασίλειος Βεσκούκης ρ. Ηλεκτρολόγος Μηχανικός & Μηχανικός Υπολογιστών ΕΜΠ v.vescoukis@cs.ntua.gr Η γλώσσα προγραµµατισµού

Διαβάστε περισσότερα

Προγραμματισμός σε Java

Προγραμματισμός σε Java Προγραμματισμός σε Java Σικαλιάς Γιώργος SikRip Εισαγωγή Ο προγραμματισμός είναι να σαν να διδάσκουμε κάποιον: στόχος μας είναι να κάνει ο Η/Υ αυτό που θέλουμε Πρέπει να «μιλήσουμε» στον υπολογιστή στην

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 3/4/2017 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Γιατί έλεγχος πρόσβασης? Προστασία ιδιωτικής πληροφορίας

Διαβάστε περισσότερα

Εξαιρέσεις (στη Java)

Εξαιρέσεις (στη Java) Εξαιρέσεις (στη Java) Vincent van Gogh, Irises, 1889 Κωστής Σαγώνας Εξαιρέσεις στη Java public class Test { public static void main(string[] args) { int i = Integer.parseInt(args[0]);

Διαβάστε περισσότερα

Υπολογισμός - Εντολές Ελέγχου

Υπολογισμός - Εντολές Ελέγχου Προγραμματισμός Η/Υ Ι Υπολογισμός - Εντολές Ελέγχου ΕΛΕΥΘΕΡΙΟΣ ΚΟΣΜΑΣ ΕΑΡΙΝΟ ΕΞΑΜΗΝΟ 2018-2019 ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ Τ.Ε. 1 Περίληψη Σήμερα... θα συνεχίσουμε τη συζήτησή μας για τα βασικά στοιχεία

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Μέθοδοι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Μέθοδοι Παράδειγμα 1 Θέλουμε ένα πρόγραμμα που να προσομοιώνει την κίνηση ενός αυτοκινήτου, το οποίο κινείται πάνω σε μία ευθεία πάντα

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Κλάσεις και Αντικείμενα Αναφορές ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Κλάσεις και Αντικείμενα Αναφορές Μαθήματα από το lab Υπενθύμιση: Η άσκηση ζητούσε να υλοποιήσετε μία κλάση vector που να διαχειρίζεται διανύσματα οποιουδήποτε

Διαβάστε περισσότερα

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΜΑΘΗΜΑΤΙΚΩΝ ΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ ηµιουργία και χειρισµός LIFO λιστών µεταβλητού µήκους µε στοιχεία ακεραίους αριθµούς. Γενίκευση για χειρισµό λιστών πραγµατικών

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Έλεγχος ισότητας String Interning Αποαναφοροποίηση - dereferencing ΕΛΕΓΧΟΣ ΙΣΟΤΗΤΑΣ Έλεγχος ισότητας Έχουμε πει ότι όταν ελέγχουμε ισότητα μεταξύ αντικειμένων

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Αναφορές Στοίβα και Σωρός Αναφορές-Παράμετροι new Όπως είδαμε για να δημιουργήσουμε ένα αντικείμενο χρειάζεται να καλέσουμε τη new. Για τον πίνακα είπαμε ότι

Διαβάστε περισσότερα

Αντικειμενοστρεφής Προγραμματισμός

Αντικειμενοστρεφής Προγραμματισμός Πανεπιστήμιο Πειραιά Τμήμα Ψηφιακών Συστημάτων Αντικειμενοστρεφής Προγραμματισμός 30/5/2016 Δρ. Ανδριάνα Πρέντζα Αναπληρώτρια Καθηγήτρια aprentza@unipi.gr Χειρισμός Εξαιρέσεων Εξαίρεση (Exception) ένδειξη

Διαβάστε περισσότερα

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο

Προγραμματισμός Ι. Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη. Δημήτρης Μιχαήλ. Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Προγραμματισμός Ι Πίνακες, Δείκτες, Αναφορές και Δυναμική Μνήμη Δημήτρης Μιχαήλ Τμήμα Πληροφορικής και Τηλεματικής Χαροκόπειο Πανεπιστήμιο Πίνακες Αντικειμένων Όπως στην C μπορούμε να έχουμε πίνακες από

Διαβάστε περισσότερα

Ηλεκτρονικοί Υπολογιστές

Ηλεκτρονικοί Υπολογιστές ΑΡΙΣΤΟΤΕΛΕΙΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΘΕΣΣΑΛΟΝΙΚΗΣ ΑΝΟΙΧΤΑ ΑΚΑΔΗΜΑΪΚΑ ΜΑΘΗΜΑΤΑ Ενότητα 3: Μεταβλητές στη C++ Ζαχαρούλα Ανδρεοπούλου Άδειες Χρήσης Το παρόν εκπαιδευτικό υλικό υπόκειται σε άδειες χρήσης Creative Commons.

Διαβάστε περισσότερα

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής

ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ. Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής ΔΟΜΕΣ ΔΕΔΟΜΕΝΩΝ Στοιχειώδεις Δοµές Δεδοµένων Δοµικά Στοιχεία και Πίνακες Κεφάλαιο 3 (3.1 και 3.2) Ε. Μαρκάκης Επικ. Καθηγητής Περίληψη Δοµικά στοιχεία Πίνακες Το κόσκινο του Ερατοσθένη Αντιγραφή πινάκων

Διαβάστε περισσότερα

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 2: Βασικές εντολές

ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 2: Βασικές εντολές ΠΛΗΡΟΦΟΡΙΚΗ ΙI Ενότητα 2: Βασικές εντολές Μιχάλης Δρακόπουλος Σχολή Θετικών επιστημών Τμήμα Μαθηματικών ΠΛΗΡΟΦΟΡΙΚΗ ΙΙ (Java) Ενότητα 2 Είσοδος από το πληκτρολόγιο: 1) Προσθήκη απαραίτητης βιβλιοθήκης

Διαβάστε περισσότερα

32-bit signed υποδιαστολής) Double διπλής ακρίβειας 64-bit signed Char unicode character 16-bit Boolean Boolean true or false

32-bit signed υποδιαστολής) Double διπλής ακρίβειας 64-bit signed Char unicode character 16-bit Boolean Boolean true or false 3. Τύποι δεδομένων - εντολές - τελεστές 3.1 Τύποι δεδομένων στην JAVA Οι τύποι δεδομένων στην JAVA είναι σαν αυτούς της C με μόνη διαφορά ότι το μέγεθός τους (σε bytes) είναι γνωστό και ίδιο σε όλες τις

Διαβάστε περισσότερα

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #7

Εισαγωγή στον Αντικειμενοστρεφή Προγραμματισμό Διάλεξη #7 Τιμές βασικών τύπων και αναφορές Δεδομένα βασικών τύπων αποθηκεύονται κατ αξία ενώ τα αντικείμενα αποθηκεύονται κατ αναφορά: Διάλεξη #7: Συμβολοσειρές age = ; father = new (); name = ; Εισαγωγή στον Αντικειμενοστρεφή

Διαβάστε περισσότερα

Εξαιρέσεις στη Java. Περιεχόμενα. Κάποιες προκαθορισμένες ρ εξαιρέσεις. Κωστής Σαγώνας

Εξαιρέσεις στη Java. Περιεχόμενα. Κάποιες προκαθορισμένες ρ εξαιρέσεις. Κωστής Σαγώνας Εξαιρέσεις (στη Java) Vincent van Gogh, Irises, 1889 Κωστής Σαγώνας Εξαιρέσεις στη Java public class Test { public static void main(string[] args) { int i = Integer.parseInt(args[0]);

Διαβάστε περισσότερα

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ

ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ ΕΙΣΟ ΟΣ-ΕΞΟ ΟΣ Ε ΟΜΕΝΩΝ Στην java οι πληροφορίες αποθηκεύονται και ανακαλούνται/ανασύρονται µε τη χρήση ενός συστήµατος επικοινωνίας που χρησιµοποιεί την έννοια του stream (κανάλι επικοινωνίας). Σαν stream

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Δημιουργώντας δικές μας Κλάσεις και Αντικείμενα Μαθήματα από το πρώτο εργαστήριο Δημιουργία αντικειμένου Scanner Scanner input = new Scanner(System.in); Το

Διαβάστε περισσότερα

Σχεδιασµός, Εµφάνιση και Υφος

Σχεδιασµός, Εµφάνιση και Υφος ιοµήδης Σπινέλλης 1, Παναγιώτης Λουρίδας 2 1 Τµήµα ιοικητικής Επιστήµης και Τεχνολογίας Οικονοµικό Πανεπιστήµιο Αθηνών 2 Εθνικό ίκτυο Ερευνας και Τεχνολογίας Α.Ε. 19 εκεµβρίου 2006 Περιεχόµενα Αρχές και

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εισαγωγή στη Java ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εισαγωγή στη Java HelloWorld.java class HelloWorld public static void main(string args[]) // print message System.out.println( Hello world! ); javac HelloWorld.java

Διαβάστε περισσότερα

02 Αντικειμενοστρεφής Προγραμματισμός

02 Αντικειμενοστρεφής Προγραμματισμός 02 Αντικειμενοστρεφής Προγραμματισμός Τεχνολογία Λογισμικού Τμήμα Πληροφορικής & Τηλεπικοινωνιών, ΕΚΠΑ Εαρινό εξάμηνο 2016 17 Δρ. Κώστας Σαΐδης saiko@di.uoa.gr Αντικειμενοστρέφεια Στον προγραμματισμό object

Διαβάστε περισσότερα

JAVA TUTORIAL ΠΕΡΙΕΧΟΜΕΝΑ. ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java

JAVA TUTORIAL ΠΕΡΙΕΧΟΜΕΝΑ. ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java JAVA TUTORIAL Πανεπιστήμιο Μακεδονίας Τμήμα Εφαρμοσμένης Πληροφορικής Εργαστήριο Παράλληλης Κατανεμημένης Επεξεργασίας ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ 1. Τί κάνει τη Java να ξεχωρίζει; Εγκαθιστώντας τη Java ΚΕΦΑΛΑΙΟ

Διαβάστε περισσότερα

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων

Τ.Ε.Ι. Μεσολογγίου, Τµήµα τηλεπικοινωνιακών Συστημάτων & Δικτύων Εργαστήριο Java Lab09 Αντικείμενο: Πολυνηματικές εφαρμογές Η χρήση περισσότερων από μιας ροής εντολών μέσα σε ένα πρόγραμμα είναι γνωστή ως multithreading. H κάθε μια ροή εντολών μέσα στο πρόγραμμα ονομάζεται

Διαβάστε περισσότερα

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1

Κλάσεις στη Java. Παύλος Εφραιμίδης. Java Κλάσεις στη Java 1 Κλάσεις στη Java Παύλος Εφραιμίδης Java Κλάσεις στη Java 1 Κλάσεις στην Java Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack

Κλάσεις στη Java. Στοίβα - Stack. Δήλωση της κλάσης. ΗκλάσηVector της Java. Ηκλάση Stack Κλάσεις στην Java Κλάσεις στη Java Παύλος Εφραιμίδης Θα δούμε τη διαδικασία δημιουργίας μιας κλάσης Θα υλοποιήσουμε μια κλάση για τη Δομή Δεδομένων Stack Java Κλάσεις στη Java 1 Java Κλάσεις στη Java 2

Διαβάστε περισσότερα

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις

ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ. Εξαιρέσεις ΤΕΧΝΙΚΕΣ ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΟΥΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ Εξαιρέσεις Εξαιρέσεις Στα προγράμματα μας θα πρέπει να μπορούμε να χειριστούμε περιπτώσεις που το πρόγραμμα δεν εξελίσσεται όπως το είχαμε προβλέψει Π.χ., κάνουμε

Διαβάστε περισσότερα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα

Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα ΝΗΜΑΤΑ ΣΤΗ JAVA (1) Ορισµός Νήµα (thread) είναι µια ακολουθιακή ροή ελέγχου (δηλ. κάτι που έχει αρχή, ακολουθία εντολών και τέλος) σ ένα πρόγραµµα. Αιτία Η δυνατότητα αποµόνωσης (ή αυτονόµησης) κάποιων

Διαβάστε περισσότερα

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στη γλώσσα προγραµµατισµού. Java. Βασίλειος Βεσκούκης

Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων. Εισαγωγή στη γλώσσα προγραµµατισµού. Java. Βασίλειος Βεσκούκης Πανεπιστήµιο Πειραιά Τµήµα Εκπαιδευτικής Τεχνολογίας και Ψηφιακών Συστηµάτων Εισαγωγή στη γλώσσα προγραµµατισµού Java Βασίλειος Βεσκούκης ιδάκτωρ Ηλεκτρολόγος Μηχανικός και Μηχανικός Υπολογιστών v.vescoukis@unipi.gr

Διαβάστε περισσότερα

ιαδικτυακές Εφαρµογές

ιαδικτυακές Εφαρµογές ιαδικτυακές Εφαρµογές µε Java2 Στοιχεία ικτυακής Επικοινωνίας Όροι IP address 32bit αριθµός που χρησιµοποιείται από το Internet Protocol για την παράδοση δεδοµένων στο σωστό υπολογιστή στο δίκτυο. Port

Διαβάστε περισσότερα

Εισαγωγή στη γλώσσα Java

Εισαγωγή στη γλώσσα Java Εισαγωγή στη γλώσσα Java Franz Marc, Rehe im Walde (II), 1913-14 Κωστής Σαγώνας Νίκος Παπασπύρου Παράδειγμα αντικειμενοστρεφούς τρόπου σκέψης Έγχρωμα σημεία

Διαβάστε περισσότερα

Mεταβλητές (variables) και Σταθερές (constants)

Mεταβλητές (variables) και Σταθερές (constants) Mεταβλητές (variables) και Σταθερές (constants) Οι μεταβλητές είναι οι θέσεις μνήμης στις οποίες ένα πρόγραμμα τοποθετεί τα δεδομένα του κατά τη διάρκεια της λειτουργίας του. θα μάθουμε: πως δηλώνουμε

Διαβάστε περισσότερα