Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

App A Java programmering. Enkelt Java-program Variabler / Konstanter.

Liknende presentasjoner


Presentasjon om: "App A Java programmering. Enkelt Java-program Variabler / Konstanter."— Utskrift av presentasjonen:

1 App A Java programmering

2 Enkelt Java-program

3 Variabler / Konstanter

4 Primitive datatyper DatatypeByteMinMaxWrapper byte1-2 7 = = 127Byte short = = 32767Short int Integer long Long float41.4… x … x Float double84.9… x … x Double char20x00xffffCharacter boolean(false/true)Boolean

5 Aritmetiske operatorer OperatorKommentarEksempel +Addisjon4+ 7 -Subtraksjon5 - 3 *Multiplikasjon3* 4 /Divisjon8 / 2 %Modulus7%4

6 Tilordnings-operatorer UttrykkBetydning x += yx = x+ y x -= yx = x - y x *= yx = x * y x /= yx = x / y

7 Innlesing fra tastatur

8 Selection if - else

9 Selection switch

10 Sammenlignings-operatorer OperatorKommentarEksempel ==Likx == 3 !=Ikke likx != 3 Større ennx >3 <=Mindre enn eller likx <=3 >=Større enn eller likx >= 3

11 Logiske operatorer OperatorBetydning &&LogiskAND ||LogiskOR ^LogiskXOR !LogiskNOT

12 Bitvise operatorer OperatorBetydning &BitvisAND |Bitvis OR ^Bitvis XOR <>Right shift >>>Zero fill right shift -Bitviscomplement <<=Left shift assignment (x = x << y) >>=Rightshift assignment (x = x >> y) >>>=Zero fill right shift assignment ( x = x >>>y) x&=yAND assignment (x = x & y) x|=yORassignment (x = x | y) x^=yXORassignment (x = x ^ y)

13 Operator prioritet OperatorBetydning. [ ] ( )Dot, array, parentes ! - instanceofIncrement, decrement, not, complement, forekomst av * / %Multiplikasjon, divisjon, modulus + - Addisjon, subtraksjon > >>>Bitvis left shift and right shift =Sammenligningsoperatorer == !=Lik, ulik &AND ^XOR |OR &&LogiskAND ||LogiskOR ? :Forkortet if … then … else = += -= *= /= %= ^=Tilordning &= |= >= >>>=

14 Loop for

15 Loop while

16 Loop do - while

17 Array

18 Function

19 Rekursjon Nedtelling n = 5, 4, 3, 3, 1 countDown(5) countDown (n) print(n) IF (n > 1) THEN countDown(n-1) ENDIF countDown (5) print(n) IF (n > 1) THEN countDown(5-1) ENDIF countDown (4) print(n) IF (n > 1) THEN countDown(4-1) ENDIF countDown (3) print(n) IF (n > 1) THEN countDown(3-1) ENDIF countDown (2) print(n) IF (n > 1) THEN countDown(2-1) ENDIF countDown (1) print(n) IF (n > 1) THEN countDown(1-1) ENDIF n = 5n = 4n = 3n = 2n =

20 Rekursjon Towers of Hanoi Oppgave: Flytt n disker fra stativ p1 til stativ p3 slik at rekkefølgen beholdes ved bruk av følgende regler: 1. Flytt kun en disk av gangen. 2. Kun en disk på toppen kan flyttes. 3. Ingen disk må ligge oppå en mindre disk. 4. Stativ p2 kan benyttes som midlertidig lagring av disker. p1 p2 p3

21 Rekursjon Towers of Hanoi - Løsning for n = 3

22 Rekursjon Towers of Hanoi - Løsning for n = 4 Løsning for n = 4 er langt ’vanskeligere’ enn for n = 3 Strategi: Del et komplekst problem opp i mindre deler. Benytt rekursjon hvis de mindre delene kan løses ved samme prinsipp som det opprinnelige komplekse problemet.

23 Rekursjon Towers of Hanoi - Algoritme tower (n,p1,p2,p3) IF(n > 0) tower(n-1,p1,p3,p2) moveDisc from p1 to p3 tower(n-1,p2,p1,p3) ENDIF p1 p2 p3 Del et komplekst problem opp i mindre deler. Benytt rekursjon.

24 Rekursjon Beregning av n-fakultet n! = 1*2*3*…*n

25 factorial (n) fac := 1 FOR (i := 1 TO n) DO fac := fac * i ENDFOR RETURN fac factorial (n) IF (n == 0) THEN RETURN 1 ELSE RETURN n*factorial(n-1) ENDIF Iterasjon Rekursjon n! = n*(n-1)!

26 Rekursjon Beregning av potens-uttrykk p = a n power (a,n) p := 1 FOR (i := 1 TO n) DO p := a * p ENDFOR RETURN p power (a,n) IF (n == 1) THEN RETURN a ELSE RETURN a * power(a,n-1) ENDIF Iterasjon Rekursjon a n = a*a n-1

27 Rekursjon Største felles divisor Største heltall som går opp i a og b Eks: gcd(24,16) = 8 gcd (a,b) WHILE (a != b) DO IF (a > b) THEN a := a – b ELSE b := b – a ENDIF ENDWHILE RETURN a gcd (a,b) IF (a == b) THEN RETURN a ELSE IF (a > b) THEN RETURN gcd(a-b,b) ELSE RETURN gcd(a,b-a) Iterasjon Rekursjon Eks:a=24, b=16 a=a-b=24-16=8 b=b-a=16- 8=8

28 Cryptography Definition Cryptography Cryptography is the practice and study of hiding information. Modern cryptography intersects the disciplines of mathematics, computer science and electrical engineering. P A1A1 M1M1 A2A2 M2M2

29 Crypthography RSA Strategy P A1A1 M1M1 AP A2A2 M2M2 P A1A1 n,e A2A2 P A1A1 E P (M 1 ) A2A2 E P (M 2 ) 01A ønsker å sende en melding M til P. Meldingen skal krypteres. 02P velger to ulike primtall p og q 03P beregner produktet n av p og q 04P beregner  (n) som produktet av p-1 og q-1 05P velger et heltall e gitt ved: 06P beregner d gitt ved: 07P sender krypteringsnøkkel n og e til A 08A sender kryptert melding X til P 09P dekrypterer meldingen X og får M M X = E P (M)=M e (mod n) M = D P (X) = D P (E P (M)) = X d (mod n) = (E P (M)) d (mod n) X

30 Crypthography RSA Prime number AP M X = E P (M)=M e (mod n) M = D P (X) = D P (E P (M)) = X d (mod n) = (E P (M)) d (mod n) X Et primtall er et naturlig tall større enn 1 som ikke kan deles med noe annet tall enn 1 og seg selv. De første 30 primtall: Aritmetikkens fundamentalteorem:Ethvert positivt heltall større enn 1 kan skrives som et entydig produkt av primtallsfaktorer. Eks:60 = 2*2*3*5 Euklid:Det finnes uendelig mange primtall. Bevis: Anta at det finnes et endelig antall primtall. La N være produktet av alle disse primtallene. Betrakt tallet N + 1. Siden alle primtallene deler N, kan det ikke finnes noe primtall som N + 1 er delelig med, hvilket medfører at N + 1 må være et primtall. Men N + 1 må iflg antakelsen være større enn alle primtall og kan derfor ikke selv være et primtall. Dette er en selvmotsigelse. Følgelig er antakelsen om at det finnes et endelig antall primtall feil. Konklusjon:Det finnes et uendelig antall primtall. Det største kjente primtallet pr i dag er: og har siffer.

31 Crypthography RSA gcd AP M X = E P (M)=M e (mod n) M = D P (X) = D P (E P (M)) = X d (mod n) = (E P (M)) d (mod n) X

32 Crypthography RSA gcd extended AP M X = E P (M)=M e (mod n) M = D P (X) = D P (E P (M)) = X d (mod n) = (E P (M)) d (mod n) X Euclidean Algorithm: Compute the greatest common divisor between a and b (a >= b) gcd (a, b) WHILE b > 0 DO r := a mod b a:=b b:=r ENDWHILE RETURN a Extended Euclidean Algorithm: Same as Euclidean Algorithm, but involves extra variables to compute ax + vy = gcd(a,b) and is more efficient (a >= b). gcd (a, b) IF (b = 0) THEN d:=a x:=1 y:=0 RETURN (d,x,y) ENDIF x2:=1;x1:=0; y2:=0;y1:=1 WHILE (b > 0) DO q:=floor (a/b);r:=a – q*b; x:=x2 – q*x1;y:=y2 – q*y1 a:=b;b:= r x2:=x1;x1:=x;y2:=y1;y1:=y ENDWHILE d:=a;x:=x2;y:=y2 RETURN (d,x,y)

33 Crypthography RSA Modular inverse AP M X = E P (M)=M e (mod n) M = D P (X) = D P (E P (M)) = X d (mod n) = (E P (M)) d (mod n) X Modular inverse: Computes (using the extended Euclidean algorithm) the inverse of u modulo v (u -1 (mod v) and returns either the inverse as a positive integer less than v, or zero if no inverse exists. modInv (u, v) u1 := 1;u3 := u;v1 := 0;v3 := v;iter := 1 WHILE (v3 != 0) DO q :=u3 / v3;t3 := u3 % v3;t1 := u1 + q * v1; u1:=v1;v1:= t1;u3:=v3;v3 := t3// swap iter:=– iter ENDWHILE IF (u3 != 1) THEN// make sure u3 := gcd(u,v) == 1 return 0;// error, no inverse exists IF (iter < 0) THEN// ensure a positive result inv := v – u1 ELSE inv:= u1 RETURN inv

34 Crypthography RSA Example AP M = 65 X = E P (M)=M e (mod n) = 2790 M = D P (X) = D P (E P (M)) = X d (mod n) = (E P (M)) d (mod n) = 65 X = Melding som skal sendes fra A til P:M = P velger to primtall:p = 61q = P beregner n gitt :n = pq = 61*53 = P beregner  (n) gitt ved:  (n) =  (3233) = (p-1)(q-1) = (61-1)*(53-1) = P velger en e gitt ved:1 < e <  (n) =  (3233) = 3120 e og  (n) = 3120 er innbyrdes primiske P velger e gitt ved:e = P sender public key til :(n, e) = (3233, 17) 06.P beregner d gitt ved:d = e -1 (mod  (n)) = (mod 3120) = A sender følgende krypterte melding X til P: X = M e (mod n) = (mod 3233) = P dekrypterer meldingen X fra A: M = X d (mod n) = (mod 3233) = 65

35 Crypthography RSA Example AP M = 8 X = E P (M)=M e (mod n) = 22 M = D P (X) = D P (E P (M)) = X d (mod n) = (E P (M)) d (mod n) = 65 X = Melding som skal sendes fra A til P:M = 8 02.P velger to primtall:p = 5q = 7 03.P beregner n gitt :n = pq = 6*7 = P beregner  (n) gitt ved:  (n) =  (35) = (p-1)(q-1) = (5-1)*(7-1) = P velger en e gitt ved:1 < e <  (n) =  (35) = 24 e og  (n) = 24 er innbyrdes primiske P velger e gitt ved:e = P sender public key til :(n, e) = (35, 11) 06.P beregner d gitt ved:d = e -1 (mod  (n)) = (mod 24) = A sender følgende krypterte melding X til P: X = M e (mod n) = 8 11 (mod 35) = P dekrypterer meldingen X fra A: M = X d (mod n) = (mod 35) = 8

36 Rekursjon Fibonacci-tall Et tall i rekken er summen av de to foregående tall fib (n) IF (n == 1) THEN RETURN 0 ELSE IF (n == 2) THEN RETURN 1 ELSE a1 := 0 a2 := 1 FOR (i := 3 TO n) DO a := a1 + a2 a1 := a2 a2 := a ENDFOR RETURN a ENDIF fib (n) IF (n == 1) THEN RETURN 0 ELSE IF (n == 2) THEN RETURN 1 ELSE RETURN fib(n-2) + fib(n-1) ENDIF Iterasjon Rekursjon …

37 Rekursjon Fibonacci-tall Et tall i rekken er summen av de to foregående tall - Eksempel Fibonacci-tallene beskriver bl.a. : Antall kronblader på blomster og antall blader. Antall par kaniner i måned nr n i en idealisert kaninbestand: - Den første måneden blir det bare født ett kaninpar - Nyfødte kaninpar blir produktive fra og med den andre måneden og utover. - Innavl eksisterer ikke - Hver måned produserer hvert kjønnsmodent par et nytt kaninpar - Kaninene dør aldri …

38 Rekursjon Polynom poly (a,x,n) y := 0 FOR (i:=n DOWNTO 0) DO y := y*x + a[i] ENDFOR RETURN y poly (a,x,n) IF (n == 0) THEN RETURN a[0] ELSE RETURN poly(a,x,n-1)*x+a[n] ENDIF IterasjonRekursjon poly (a,x,n) y := 0 FOR (i:=0 TO n) DO y := y + a[i]*power(x,n) ENDFOR RETURN y

39 Rekursjon Søk etter gitt element s i en array a med størrelse n inArray (a,n,s) i := 1 WHILE (i<=n) AND (s != a[i]) DO i := i + 1 ENDWHILE IF (i>n) THEN RETURN false ELSE RETURN true ENDIF inArray (a,n,k,s) IF (s == a[k]) THEN RETURN true ELSE IF (k == n) RETURN false ELSE RETURN inArray(a,n,k+1,s) Iterasjon Rekursjon

40 Rekursjon Preorden traversering av binært tre preorderTraversal (rot,info,left,right,stakk) slutt := 0 ref := rot IF ref = slutt THEN tom := true ELSE tom := false push(stakk,slutt) WHILE ref != slutt prosess(info[ref]) IF right[ref] != slutt THEN push(stakk,right[ref]) ENDIF ref := left[ref] IF ref = slutt THEN pop(stakk,ref) ENDIF ENDWHILE ENDIF preorderTraversal (rot) IF rot != slutt THEN prosess(info[rot]) preorderTraversal(left[rot]) preorderTraversal(right[rot]) ENDIF IterasjonRekursjon ( a - b ) + c * ( e / f )

41 Rekursjon - Eks: Fraktaler Triade triade(L) IF (L < M) THEN drawLine(L) ELSE triade(L/3) left(60) triade(L/3) right(120) triade(L/3) left(60) triade(L/3) ENDIF L 0 < ML 0 /3 < M < L 0 L 0 /9 < M < L 0 /3L 0 /27 < M < L 0 /9

42 Rekursjon - Eks: Fraktaler Triade - Detaljer 1 triade(L) IF (L < M) THEN drawLine(L) ELSE triade(L/3) left(60) triade(L/3) right(120) triade(L/3) left(60) triade(L/3) ENDIF L 0 /3 < M < L L 0 /9 < M < L 0 /3

43 Rekursjon - Eks: Fraktaler Triade - Detaljer 2 triade(L) IF (L < M) THEN drawLine(L) ELSE triade(L/3) left(60) triade(L/3) right(120) triade(L/3) left(60) triade(L/3) ENDIF L 0 /9 < M < L 0 /3 L=L 0 L=L 0 /3L=L 0 /9 d t1 l1 t2 r t3 l2 t4 t1 l1 t2 r t3 l2 t4 L=L 0 /9 d d d L=L 0 /3 t1 l1 t2 r t3 l2 t L 0 /9 < M < L 0 /3

44 Rekursjon - Eks: Fraktaler Kvadrikk kvadrikk(L) IF (L < M) THEN drawLine(L) ELSE kvadrikk(L/3) left(90) kvadrikk(L/3) right(90) kvadrikk(L/3) right(90) kvadrikk(L/3) left(90) kvadrikk(L/3) ENDIF L 0 < ML 0 /3 < M < L 0 L 0 /9 < M < L 0 /3L 0 /27 < M < L 0 /9

45 Rekursjon - Eks: Fraktaler 2dim todim(L) IF (L < M) THEN drawLine(L) ELSE todim(L/2) left(90) todim(L/2) right(180) todim(L/2) left(90) todim(L/2) ENDIF L 0 < ML 0 /2 < M < L 0 L 0 /4 < M < L 0 /2L 0 /8 < M < L 0 /4

46 Rekursjon - Eks: Fraktaler Tre tre(L) IF (L > M) THEN left(45) drawLine(L) tre(L*GS) jumpBack(L) right(90) drawLine(L) tre(L*GS) jumpBack(L) left(45) ENDIF L 0 > ML 0 *GS > M L 0 *GS 2 > ML 0 *GS 3 > M GS = 0.618

47 Det gylne snitt ab

48

49 Lesing fra fil

50 Objektorientering (OO)1/5 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på

51 Objektorientering (OO)2/5 Norske pionerer Grunnleggere av det første objektorienterte dataspråk, Simula: Kristen Nygaard og Ole-Johan Dahl. Nobel Prize of Computing: A. M. Turing Award

52 Objektorientering (OO)3/5 Window eksempel Klassen clsDataField er tillagt egenskapen magenta bakgrunnsfarge.

53 Objektorientering (OO)4/6 Flash eksempel Klassen Joystick inneholder et grensesnitt som forteller om joystickens posisjon (x,y) og vinkel. Klassen Car leser Joystickens data for å orientere seg om sin videre bevegelse

54 Objektorientering (OO)4/5 KlasseDeklarasjon av data + operasjoner på ‘gjenstander’ av en gitt type ObjektEn forekomst (variabel) av en klasse Klasse Objekt Abstrakt nivå Fysisk nivå

55 Objektorientering (OO)5/5 Data Ansatt Nr Navn Adresse Tlf... Metoder Add_AnsNr Add_Navn Add_Adress Add_Tlf Get_AnsNr BeregnLonn... 3 Nilsen Storgt Hansen Havnegt Olsen Reinv Data gir duplikater for hvert objekt Metodene deles av objektene Klassen Ansatt Objekt 2Objekt 3Objekt 1

56 Objektorientert programmering (OOP) La objektene ta hånd om seg selv (intern struktur,...). Kommuniser med objektene via et grensesnitt som er uavhengig av intern struktur i objektene. Objekt Grensesnitt Melding

57 class / object - main

58 class / object - class A

59 Primitive typer 3 5 x y y = x 3 3 x y if (y == x) falsetrue

60 Referensetyper.. x y y = x.. x y if (y == x) falsetrue if (y.equals(x))

61 Parameteroverføring Overføring av primitive typer. Pass by value. Overføring av referense typer. Pass by reference. int x = 3 f(x) f(int y) 3 3 x y A x f(x) f(A y). x y

62 Klassemedlemmer public class A{// klasse A privateint x;// attributt x public A( ) {// kontruktør this(0) } public A(int x) {// konstruktør this.x=x; } public setX(int x) {// mutator this.x = x; } public int getX( ) {// accessor return x; }

63 Aksesskontroll1/4 privateTilgang kun av klassen selv protectedTilgang kun av klassen selv samt arvede klasser publicTilgang av alle Tilgang innenfor gjeldende pakke

64 Aksesskontroll2/4 private:Strengeste aksess-kontroll. Kun funksjoner i klassen selv kan aksessere et private klasse-medlem. Avledede klasser eller forekomster har ingen aksess til private medlemmer i en parent-klasse. protected:Kun klassen selv eller avledede klassers funksjoner har aksess til protected medlemmer. Forekomster har ingen aksess til protected medlemmer. public:Medlemmer deklarert vha public har man ubegrenset aksess til, dvs public medlemmer kan aksesseres av en hvilken som helst funksjon.

65 Aksesskontroll3/4 ä Attributter skal skjules for brukeren av klassen. ä Brukeren av klassen skal ikke ha tilgang til informasjon om klassens interne struktur. ä Brukeren skal benytte en protokoll til klassen. - Brukeren sender meldinger til objektet. - Brukeren kaller metodene. Informasjons-skjuling Nr Navn Init GetNr GetNavn

66 Aksesskontroll4/4 Base Class Derived Class Other Class or Object private protected public

67 Arv-Base class / Derived class A B Base class Derived class

68 Arv-Eksempel Person Ansatt Selger Navn Fødselsdato Navn Fødselsdato Avdeling Timelønn Beregning av lønn Navn Fødselsdato Avdeling Timelønn Beregning av lønn Salgsdistrikt Bonus Arvet fra Person Arvet fra Ansatt

69 Arv-Klassehierarki Transportmiddel Sykkel Bil Tog Fly Trehjul- sykkel Trehjul- sykkel Tandem Person- bil Person- bil Laste- bil Laste- bil

70 Arv - Akesess-kontroll 1 Private 2 Protected 3 Public Base class A 2 Protected 3 Public Derived class B Derived class C Forekomst av B

71 Arv - Klassehierarki-diagram Concrete classAbstract class Interface extends Interface extends Interface implements Concrete class extends Concrete class

72 Arv - main

73 Arv - class A (1/2)

74 Arv - class A (2/2)

75 Arv - class B extends A (1/2)

76 Arv - class B extends A (2/2)

77 Arv og polymorfi public class A{ public f (…) { … } public class B extends A{ public f (…) { … } A B A a = new A(…) a.f(…) // eksekverer A sin f B b1 = new B(…) A b2 = new B(…) b1.f(…) // eksekverer B sin f b2.f(…)// eksekverer B sin f

78 PolymorfiFigur (getAreal) Figur getAreal..... Trekant getAreal..... Sirkel getAreal..... Figur s = new Sirkel(…) s.getAreal( )

79 PolymorfiFigur (flytt) Figur flytt TrekantSirkel Figur s = new Sirkel(…) s.flytt( ) skjul nyeKoord vis skjul vis skjul vis

80 Interface - Abstrakte klasser main Concrete class A Abstract class A_A Interface I_A extends implements

81 Interface - Abstrakte klasser interface I_A

82 Interface - Abstrakte klasser abstract class A_A (1/2)

83 Interface - Abstrakte klasser abstract class A_A (2/2)

84 Interface - Abstrakte klasser class A

85 Indre klasser (non-static) public class A{ int y; public class B {// B eksisterer kun innenfor A int x; void f( ) { …// this refererer til B …// A.this refererer til A } B kan instantieres kun av en ikke-statisk metode innenfor A. B kan aksessere alle medlemmer av A og B direkte.

86 Indre klasser (static) public class A{ int y; public static class B {// B kan eksistere alene int x; void f( ) { …// this refererer til B …// A.this refererer til A } B kan eksistere alene (uten A-forekomst)og kan instantieres ved A.B b = A.B( ). Deretter kan f eksekveres ved b.f( ). B kan kun aksessere static medlemmer av A.

87 Indre klasser - main

88 Indre klasser - class A (1/3)

89 Indre klasser - class A (2/3)

90 Indre klasser - class A (3/3)

91 ENDEND


Laste ned ppt "App A Java programmering. Enkelt Java-program Variabler / Konstanter."

Liknende presentasjoner


Annonser fra Google