Programmering i Java versjon 2001-05-18 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

Tabeller av objekter Klassen ArrayList
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Kontrollstrukturer (Kapittel 3)
Uke 8 - Mer om: Objekter, klasser og pekere
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Java 6 Mer om metoder Tekster Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for informatikk Universitetet i Oslo.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Samarbeid mellom objekter
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
IS-102 Klassedefinisjoner
C# for javaprogrammerere
En gang til!? .
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Gjennomgang av prøven Tidsangivelse. Prøven deles ut Vi fyller ut øvelsen sammen.
INF150 Programmering mandag 11.9
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering
Repetisjon av JSP Variabler, tabeller, if-setninger, for/while-løkker
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Uke 7 - del I: Repetisjon del II: Objekter, klasser og pekere 30 sept. 2003, Arne Maus Inst. for informatikk, UiO.
Java 11 Programmering med og uten objekter: hva er forskjellen?
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
INF1000 (Uke 14) Resten av eksamen H03 + del av V05 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Anja B.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
INF Objektorientert programmering
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
Byggeklosser i java  Klassedefinisjon  Variabel deklarasjon  Metodedeklarasjoner  En ordentlig klasse  Spesielle/kryptiske skrivemåter  løkker og.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
Inf1000 (Uke 5) Arrayer, filer og tekst
Kapittel 5 Vilkårssetningar og løkker. 5.1 Boolske uttrykk George Boole ( ), britisk matematikar Utvikla teori om logikk ved bruk av symbol i.
Variabler, datatyper og uttrykk
IS-102 Interaksjon med objekter
Utskrift av presentasjonen:

Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5 Valg som kontrollstruktur Kontrollstrukturer side 2 Klassen Kalkulator med klientprogram side 3-5 Blokker inne i metoder side 6 if-setningen har to former side 7 Klammeparenteser og innrykk side 8 Nøstet if og flervalgsetninger side 9-10 Beslutningstabeller side 11 Logiske uttrykk side Sammenligning av strenger side Forkortet beregning side 16 switch-setningen side 17 Å sammenligne beregnede desimaltallverdier side 18

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 2 Kontrollstrukturer •En algoritme er et begrenset og ordnet sett med veldefinerte regler for løsning av et problem. •Tre kategorier rekkefølge eller kontrollstrukturer: –sekvens (alle klientprogram hittil) –valg (if-setningen) –løkke (while-setningen, se kapittel 6) •Aktivitetsdiagram illustrerer kontrollstrukturer. bestemt rekkefølge

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 3 Klassediagram og to mulige aktivitetsdiagram for et kalkulator-objekt Kalkulator tall1 tall2 finnTall1 finnTall2 settTall beregnSum beregnDifferanse beregnProdukt beregnKvotient les to tall kalkus.beregnSum() skriv ut svaret Kalkulator kalkus = new Kalkulator(tall1, tall2) skriv ut svaret kalkus. beregnDifferense() kalkus. beregnSum() [skal legge sammen] [skal ikke legge sammen] les to tall Kalkulator kalkus = new Kalkulator(tall1, tall2)

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 4 Klassen Kalkulator class Kalkulator { private double tall1 = 0; private double tall2 = 0; public Kalkulator(double startTall1, double startTall2) { tall1 = startTall1; tall2 = startTall2; } public double finnTall1() { return tall1; } public double finnTall2() { return tall2; } public void settTall(double nyttTall1, double nyttTall2) { tall1 = nyttTall1; tall2 = nyttTall2; } public double beregnSum() { return tall1 + tall2; } public double beregnDifferanse() { return tall1 - tall2; } public double beregnProdukt() { return tall1 * tall2; } public double beregnKvotient() { /* Både teller og nevner 0: * Resultat: Double.NaN ("not-a-number") * Bare nevner 0: * Resultat: Double.NEGATIVE_INFINITE * eller Double.POSITIVE_INFINITE. * Dette er klassekonstanter i klassen java.lang.Double. * Disse verdiene må brukes ved eventuell sammenlikning, * ved utskrift blir "NaN" og "Infinity" skrevet ut. */ return tall1 / tall2; }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 5 Klientprogram med valg import mittBibliotek.*; class TestKalkulator1 { public static void main(String[] args) { JavabokGUI gui = new JavabokGUI("Kalkulator"); gui.show(); double tall1 = gui.lesDesimaltall("Kalkulator", "Første tall: "); double tall2 = gui.lesDesimaltall("Kalkulator", "Andre tall: "); Kalkulator kalkus = new Kalkulator(tall1, tall2); boolean adder = gui.jaSvar("Kalkulator", "Skal tallene legges sammen? "); double svar; if (adder) { svar = kalkus.beregnSum(); gui.skrivResultater("Vi beregner: " + kalkus.finnTall1() + " + " + kalkus.finnTall2()); } else { svar = kalkus.beregnDifferanse(); gui.skrivResultater("Vi beregner: " + kalkus.finnTall1() + " - " + kalkus.finnTall2()); } gui.skrivResultater("Svaret er " + svar); } valget må formuleres som et ja/nei-spørsmål Gjør oppgave 2 side 131.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 6 Blokker inne i metoder •Lokale variabler er variabler deklarert inne i metoder. •Definisjonsområdet til en lokal variabel er resten av den blokken der variabelen er deklarert. •En metode kan inneholde mange blokker inne i hverandre. •Vi kan deklarere variabler inne i indre blokker. •Generelt bør vi deklarere lokale variabler i nærheten av der vi bruker dem. •Til høyre et alternativt kalkulator-program. Definisjonsområdet til variablene er vist. Gjør oppgave 2 side 137.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 7 if-setningen har to former OBS! Likhet skrives med to likhetstegn. [logisk uttrykk][ikke (logisk uttrykk)] [logisk uttrykk] [ikke (logisk uttrykk)] if (logisk uttrykk) setning1 else setning2 if (logisk uttrykk) setning Et logisk uttrykk kan være en logisk variabel eller en sammenligning, eksempler: a > 10 antJenter < antGutter antMenn == antKvinner

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 8 Klammeparenteser og innrykk if (logisk uttrykk) setning1 else setning2 •Hvis setning1 og/eller setning2 består av mer enn en enkelt setning, må setningene omsluttes av klammeparenteser. •Dersom setning1 og/eller setning2 består av bare en enkelt setning, er det ikke nødvendig med klammeparenteser. Av sikkerhetsgrunner bør en bruke klammeparenteser uansett, også i dette tilfellet, dersom setningen ikke får plass på samme linje som if og/eller else. •Eksempel, vi har oppdaget at vi også skal øke b med 1 dersom a>b: •Utgangspunkt:Feilretting: if (a > b) sum += a; sum += a; b++; •Hvorfor blir ”feilrettingen” ikke riktig? •Tror du sjansen for å skrive riktig er større dersom utgangspunktet er: –if (a > b) sum += a;I tilfelle hvorfor? •Diskusjon / konklusjon? Gjør oppgave 2 side 140.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 9 Nøstet if og flervalgsetninger •Eksempel: if (temperatur > 0) { System.out.println(“Varmegrader”); } if (temperatur == 0) { System.out.println(“Null grader”); } if (temperatur < 0) { System.out.println(“Kuldegrader”); } •I visse tilfeller (når?) unødvendige tester. •Sparer unødvendige tester: if (temperatur > 0) { System.out.println(“Varmegrader”); } else { if (temperatur == 0) { System.out.println(“Null grader”); } else { System.out.println(“Kuldegrader”); } // slutt på innerste if-else-setning } // slutt på ytterste if-else-setning •Kan også skrive: if (temperatur > 0) System.out.println(“Varmegrader”); else if (temperatur == 0) System.out.println(“Null grader”); else System.out.println(“Kuldegrader”);

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 10 Hva er forskjellen mellom følgende to kodebiter? int a = -10; int b = 20; if (a > 0) { if (b > 10) b = 10; } else a = 0; System.out.println(a + " " + b); a = -10; b = 20; if (a > 0) if (b > 10) b = 10; else a = 0; System.out.println(a + " " + b); Dersom du bruker flere if-setninger inne i hverandre (nøstet if), og en else- blokk ikke tilhører den nærmeste if’en foran, må dette markeres med {}. Gjør oppgave 2 side 145.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 11 Beslutningstabeller •En karakter på en prøve beregnes etter følgende beslutningstabell: poeng karakter •Oppgave: Skriv innholdet i metoden finnKarakter(): class Karakter { private int poeng; public Karakter(int startPoeng) { poeng = startPoeng; } public int finnKarakter() { // returnerer negativ verdi hvis ugyldig poengsum....fyll inn det som mangler her..... }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 12 Logiske uttrykk •Et logisk uttrykk har verdien sann (true) eller usann (false). •Enkle logiske uttrykk lages ved å bruke sammenligningsoperatorene: <mindre enn <=mindre enn eller likEksempler: >større enn antKilo > 10 >=større enn eller lik(pris * antall) != 100 !=ikke liktall1 + tall2 == tall3 + tall4 ==lik •Sammensatte logiske uttrykk lages ved å sette sammen enkle logiske uttrykk ved hjelp av logiske operatorer: ! ikkeEksempler: &&ogantall > 30 && antall < 50 ||ellerantall = 50 •Se oversikt over operatorer, tabell side 147.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 13 Beregning av et komplisert logisk uttrykk a >= 0 && a = 10 && a <= 15 || a == 20 santusantsantusant a er lik 16 Gjør alle oppgavene på side 150.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 14 Sammenligning av strenger •Klassen String tilbyr metoder for å sammenligne strenger. •To strenger er gitt: String navn1 = "Anne Beate"; String navn2 = "Unni"; •Vi bruker metoden equals(): if (navn1.equals(navn2)) System.out.println("Navnene er like."); else System.out.println("Navnene er ikke like."); •Utskrift: Navnene er ikke like. •Vi bruker metoden compareTo(): int resultat = navn1.compareTo(navn2); if (resultat < 0) System.out.println(navn1 + " kommer først."); else if (resultat > 0) System.out.println(navn2 + " kommer først."); else System.out.println("Navnene er like."); •Utskrift: Anne Beate kommer først.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 15 Sammenligningsmetoder i klassen String •Klassen String tilbyr følgende metoder for sammenligning: –public int compareTo(String denAndreStrengen) –public boolean equals(Object detAndreObjektet) –public boolean equalsIgnoreCase(String denAndreStrengen) –public int compareToIgnoreCase(String denAndreStrengen) •Sammenligning skjer i henhold til Unicode-rekkefølgen. •compareTo()-metodene returnerer negativ verdi dersom strengen meldingen sendes til, ligger foran strengen som sendes inn som argument til metoden, positiv dersom den ligger etter, og 0 dersom de er like. •På grunn av æ, ø og å fungerer ikke compareTo()-metodene for norsk tekst. •De norske tegnene kan lukes ut og spesialbehandles med flervalg- setninger.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 16 Forkortet beregning •Logiske uttrykk som inneholder && eller || beregnes ved å bruke teknikken ”forkortet beregning”. •Beregningen avsluttes så fort resultatet er bestemt. •Operatoren && (”og”) mellom uttrykkene: –Fortsett beregningen så lenge uttrykkene er sanne. –Beregningen avsluttes dersom et ikke-sant uttrykk påtreffes. •Operatoren || (”eller”) mellom uttrykkene: –Fortsett beregningen så lenge uttrykkene er usanne. –Beregningen avsluttes dersom et sant uttrykk påtreffes. •Eksempel: –if (tall >= 0 && Math.sqrt(tall) < grense).... •Rekkefølgen på sammenligningene kan ikke byttes om. Da risikerer vi å forsøke å beregne kvadratroten til et negativt tall.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 17 switch-setningen int plassering = gui.lesHeltall("Medalje?", "Oppgi plassering: "); switch (plassering) { case 1: System.out.println("Det ble gull!"); break; case 2: System.out.println("Det ble sølv!"); break; case 3: System.out.println("Det ble bronse!"); break; case 4: /* ikke break */ case 5: /* ikke break */ case 6: System.out.println("Det ble poengplass!"); break; default: int lykketall = (int) (100 * Math.random() + 1); System.out.println("Takk for hederlig innsats!"); System.out.println("Du får et lykketall: " + lykketall); break; } •switch-setningen kan brukes dersom hvert tilfelle i en flervalg- setning svarer til en bestemt heltallsverdi eller et tegn. •Eksempel til høyre. •Hver enkelt case-etikett må representere forskjellige konstantuttrykk, kun ett uttrykk for hver etikett. Kan ikke oppgi intervaller eller flere enkeltverdier. •Bare uthopp dersom break påtreffes. Gjør oppgave side 153.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 5, side 18 husk å kontrollere mot absoulttverdien! Å sammenligne beregnede desimaltallverdier •Hva blir verdien av tall3 etter at følgende kodebit er utført: double tall1 = 1.0e20; double tall2 = tall ; double tall3 = tall2 - tall1; •Svar: tall3 blir 0. •Hvorfor? –1 + 1,0·10 20 = 1, · –Datatypen double klarer bare ca. 15 signifikante sifre. –Mister derfor verdien 1 som vi prøver å addere til det kjempestore tallet. •Bruk aldri operatorene == og != for å sammenligne resultater fra beregninger med desimaltall. •Kontroller heller at forskjellen mellom tallene er mindre enn en gitt toleranse: final double toleranse = ; // størrelsen i forhold til tallene som sammenlignes if (Math.abs(tall1 - tall2) < toleranse) System.out.println("Tallene er like nok"); else System.out.println("Tallene er å betrakte som forskjellige.");