Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed.

Lignende præsentationer


Præsentationer af emnet: "Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed."— Præsentationens transcript:

1 Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Afleveringsopgave 4.2: Billedredigering Forelæsning 4.1

2 Find et element i en liste dIntProg, E14

3 findEn = Find et element i en liste dIntProg, E14 Algoritmeskabelon –Gennemsøger en liste og returnerer et element der opfylder en specificeret betingelse –Hvis ingen elementer opfylder betingelsen returneres null

4 Find alle elementer i en liste dIntProg, E14

5 findAlle = Find alle elementer i en liste dIntProg, E14 Algoritmeskabelon –Gennemsøger en liste og returnerer en liste med alle elementer der opfylder en specificeret betingelse –Hvis ingen elementer opfylder betingelsen er listen tom –Video 4.2 fra BlueJ bogen handler om findAlle

6 dIntProg, E14 Primitive typer double d; //real int i; //heltal d = 3.14; i = 7; d = i // ok i = d // ej ok! Ved assignments skal typerne være ”sammenlignelige” Det samme gælder for aktuelle/formelle parametre byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean ≤ 8 bit16 bit32 bit 64 bit heltal reals 32 bit 64 bit 1 bit16 bit

7 dIntProg, E14 Typeregel for assignment Assignmentsætningen giver kun mening når typen af udtrykket på højresiden er en subtype af variablen på venstresiden. v= exp; T(exp) ≤ T(v) byte ≤ short ≤ int ≤ long ≤ float ≤ double char boolean ≤ 8 bit16 bit32 bit 64 bit heltal reals 32 bit 64 bit 1 bit16 bit

8 dIntProg, E14 Forfremmelse og begrænsning Forfremmelse –En værdi af en subtype kan ved en implicit typekonvertering (automatisk) forfremmes til en værdi af en supertype Begrænsning –En værdi af en supertype kan ved en eksplicit typekonvertering (et såkaldt ”type cast”) begrænses til en værdi af en subtype Eksempel: 9 + (int) ((6 * 2) / 2.5) 9 + (int) ( 12 / 2.5) 9 + (int) ( 12.0 / 2.5) 9 + (int) 4.8 9 + 4 13 Hvad bliver resultatet hvis vi fjerner (int) ?

9 dIntProg, E14 Eksempel: Integers og doubles double d1,d2; int i; d1= 3.14; d2= 7; i= d1; i= d2; i= (int) d1; i= (int) d2; int ≤ double // ok // ej ok // ok

10 Bemærk –Tegn (char) behandles som heltal: '2' + 1 = 51 = '3' –Strenge (String) konkateneres: "24" + 1 = "241" dIntProg, E14 Forfremmelse og begrænsning Javas subtyperelation: char ≤ int ≤ double Forfremmelse (  ) sker automatisk hvis nødvendigt 2 + 1.5 evaluerer til 3.5 '2' + 1 evaluerer til 51 !!! Begrænsning (  ) sker kun ved eksplicitte cast (int) (2 + 1.5) evaluerer til 3 (char) ('2' + 1) evaluerer til '3' !!!

11 dIntProg, E14 Konstanter (literals) TypeLiteral int2 double2.0 char'2' String"2" String"two"

12 dIntProg, E14 Identitet versus lighed Java modellerer == identitet ≈ ”samme som” equals()lighed ≈ ”magen til” I det virkelige liv skelner vi mellem objekter der er identiske og objekter der er af magen til hinanden –Hvis et barn siger, at det vil have den Pizza, som står på nabobordet, kommer tjeneren med en ”magen til”.

13 dIntProg, E14 Identitet mellem objekter person1 == person2 evaluerer til false “Fred” :Person person1person2 “Jill” :Person

14 dIntProg, E14 Identitet mellem objekter person1 == person2 “Fred” :Person person1person2 “Fred” :Person person1 == person2 evaluerer til false

15 dIntProg, E14 Identitet mellem objekter “Fred” :Person person1person2 “Fred” :Person person1 == person2 evaluerer til true

16 dIntProg, E14 Identitet mellem strenge "bye" :String input "bye" :String String input = reader.getInput(); if( input == "bye" ) {... } == tester identitet evaluerer til false

17 String input = reader.getInput(); if( input.equals("bye") ) {... } dIntProg, E14 Lighed mellem strenge "bye" :String input "bye" :String evaluerer til true equals tester lighed

18 Opsummering Vi har kigget på to algoritmeskabeloner, som kan anvendes i mange forskellige sammenhænge –FindEn gennemsøger en liste og returnerer et element der opfylder en specificeret betingelse –FindAlle gennemsøger en liste og returnerer en liste med alle elementer der opfylder en specificeret betingelse Primitive typer –Typehierarki –Regler for assigmentns og parametre – Forfremmelse og begrænsning Identitet versus lighed –for objekter generelt –strenge dIntProg, E14

19 Afleveringsopg 4.2: Billedredigering I får ”udleveret” et projekt med nedenstående to klasser –Samme som i billedredigering i mandags forelæsningen

20 dIntProg, E14 Afleveringsopgave – fortsat I skal implementere en række billedoperationer –darken –invert –solarize (inverterer mørke pixels) –mirrorHorizontal og mirrorVertical –rotate –blur (udjævn)


Download ppt "Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner findEn findAlle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed."

Lignende præsentationer


Annoncer fra Google