Arrayer. Indexerade variabler, arrayer, fält Statistiska mått Sortering Sökalgoritmer Rita polygoner Objektarrayer Starta program med argument

Storlek: px
Starta visningen från sidan:

Download "Arrayer. Indexerade variabler, arrayer, fält Statistiska mått Sortering Sökalgoritmer Rita polygoner Objektarrayer Starta program med argument"

Transkript

1 Swing * Eclipse * Midlets * Android 9 Arrayer Indexerade variabler, arrayer, fält Statistiska mått Sortering Sökalgoritmer Rita polygoner Objektarrayer Starta program med argument Sectordata 2010

2 Kap 9 : Sid 2 I detta kapitel introduceras begreppet array, motsvarigheten till matematikens indicerade variabler (till exempel x 1, x 2, x i, x n ) och begrppet matris ( = tvådimensionell array). I de inledande avsnitten får du lära dig hur man beräknar summor av tal i arrayer, samt medel-, max- och minvärden Vidare presenteras algoritmer för sortering och sökning. Dessa avsnitt kan eventuellt studeras separat. Därefter följer ett avsnitt som visar hur man utnyttjar arrayer för att rita polygoner. I några övningar får du sedan skapa arrayer av olika typer av objekt. Övningarna Rymdskepp, Personbil, Tarning och Asteroidarray ligger som grund för övningar i senare kapitel.

3 Kap 9 : Sid 3 Indexerade variabler, arrayer, fält Du deklarerar, som bekant, en vanlig primitiv variabel, t ex en heltalsvariabel, så här: int i; i 17 Du har då reserverat plats i minnet för ett heltal som vi refererar till som i. Variabeln i kan tilldelas heltal, t ex i = 17; Ibland behöver man arbeta med många variabler: int i,j,k, m; i = 17; j = 3; k = 5; m = 21; i j k m 21 I matematiken arbetar du med variabler (x, y,z, ) När vi behöver många variabler använder vi ofta indexerade variabler. Exempel: x 1, x 2, x 3, x 4, x 5 De nedsänkta tecknen, 1,2, 3 kallas index I de flesta programmeringsspråk kan vi arbeta med sådana indexerade, numrerade, variabler. En uppsättning indexerade variabler kallas en array, ibland ett (endimensionellt) fält. Så här deklarerar man en heltalsarray, vi kallar den a, i Java: int[] a = new int[5]; Talet 5 inom klammer i högerledet dimensionerar arrayen, det vill säga talet anger att att arrayen ska ha 5 element. Med den här deklarationen reserveras plats för variablerna a[0], a[1], a[2], a[3] och a[4] (I matematiken skulle vi förmodligen skriva a 0, a 1, a 2, a 3 och a 4 ) a[0] a[1] a[2] a[3] a[4] Varje enskild variabel i arrayen, t ex a[2], kallas ett element i arrayen. Observera att det första elementet i en java-array alltid har nummer 0 (noll) När vi arbetar med indexerade variabler med många element kan vi av praktiska skäl inte skriva ut varje element. I matematiken skriver vi kanske a 0, a 1, a 2 a i a 999 Vi låter indexet representeras av en bokstav (oftast bokstaven i ) På samma sätt gör vi i dataprogram där arrayer används.

4 Kap 9 : Sid 4 Övning: Array Vi illustrerar det vi hittills har gått igenom med ett litet konsolprogram. I Eclipse: Skapa projektet Kap09 och klassen ArrayTest som ska innehålla följande kod: import java.util.*; public class ArrayTest{ public static void main( String[] arg ) { Scanner sc = new Scanner(System.in); int[] a = new int[5]; // här deklareras o dimensioneras arrayen for( int i = 0 ; i < 5 ; i++ ) { System.out.print("Skriv in tal nummer " + i + ": " ); a[i] = sc.nextint(); System.out.println("Du matade in dessa tal:"); for(int i=0 ; i < 5 ; i++) { System.out.println("Tal nummer " + i + " är " + a[i]); Du ser hur det fungerar, eller hur? Vi deklarerar arrayen a med 5 element som kommer att heta a[0], a[1], a[2], a[3] och a[4] I den första for-loopen låter vi undan för undan variabeln i anta värdena 0, 1, 2, 3 och 4 Inne i for-loopen kan vi mata in ett värde till a[i], det vill säga till a[0] när loopen körs första varvet, sedan till a[1] och så vidare I den andra for-loopen skrivs de inmatade talen ut på skärmen. Exekvera! Mata in talen 32, 26, 4711, -99 och 13 (ENTER efter varje.) Efter sista inmatningen kommer programmet snällt att skriva ut talen igen a[0] a[1] a[2] a[3] a[4] Lägg till dessa rader i programmet (efter den andra for-loopen i main-metoden): System.out.println("Baklänges:"); for(int i = 4 ; i >= 0 ; i-- ) { System.out.println("Tal nummer " + i + " är " + a[i]); Exekvera. Inmatade tal skrivs ut baklänges.

5 Kap 9 : Sid 5 Tilldela arrayen värden i koden När man arbetar med arrayer med få element kan man använda ett kort skrivsätt för att deklarera och dimensionera arrayen samt tilldela elementen värden direkt i koden - allt i ett enda svep. Heltalsarrayen, a, ovan, skulle exempelvis kunna deklarerars, dimensioneras och tilldelas värden så här: int[] a = { 32, 26, 4711, -99, 13 ; Vi ska utnyttja detta sätt att skapa arrayer i kommande övningar några sidor längre fram Vi har hittills exemplifierat arrayer med heltalsarrayer. På samma sätt kan vi arbeta med arrayer av flyttal (double), tecken (char) och logiska värden (boolean). Vi kan även använda arrayer av strängar vilket följande övning handlar om: Övning: Array of strings Skapa klassen ArrayTest2. Använd samma kod som i ArrayTest men ändra class-namnet till ArrayTest2 Ändra deklarationen av arrayen så att a i stället blir en en array of strings: String[] a = new String[5]; Ändra i första loopen så att man kan mata in strängar i stället för tal, så här: for( int i = 0 ; i < 5 ; i++ ) { System.out.print("Skriv in namn nummer " + i + ": " ); a[i] = sc.nextline(); Byt ut ordet tal mot namn i alla ledtexter. Kör. Skriv in strängar i stället för tal, t ex namn ( Kalle, Stina, Olle, Pelle, Johan ) Övning: Slumpa tal Vi återgår till heltalsarrayer för fler experiment. Om vi gör arrayerna större blir det arbetsamt att skriva in tal. Vi slumpar talen i stället. I programmet nedan slumpas 100 tal i intervallet Skapa klassen SlumpArray och skriv in koden: public class SlumpArray { public static void main( String[] arg ) { int n = 100; int[] a = new int[n]; System.out.print("Arrayens element slumpas och skrivs ut:"); for(int i = 0 ; i < n ; i++) { if(i%10==0) System.out.println(); a[i] = (int)( 1000 * Math.random() ); System.out.print(a[i]+"\t"); if-satsen i loopen gör att vi får radbyte i utskriften efter vart 10-tal. Tecknet \t gör att en utskrift "tabbas fram" till nästa tabulatorläge på skärmen. Detta medför att talen kommer att skrivas i kolumner. Provkör!

6 Kap 9 : Sid 6 Matriser En "vanlig" variabel, x, kan vi åskådliggöra så här: x En array, ett endimensionellt fält, a, med fem element, kan vi rita så här: a[0] a[1] a[2] a[3] a[4] En matris, ett tvådimensionellt fält, m, med fem rader och tre kolumner ser ut så här: De fem raderna numreras som rad 0 till 4 De tre kolumnerna som kolumn 0 till 2 Exempel: Detta element ligger på rad 2 i kolumn 1 och betecknas m[2][1] m[0][0] m[1][0] m[4][0] m[0][2] m[4][2] Övning: Matris I matrisen ovan, skriv in hur de övriga elementen betecknas! I Java deklareras en matris, m, som innehåller heltal, och som har r rader och k kolumner med satsen int[][] m = new int[r][k]; Skapa klassen SlumpMatris. Skriv in koden nedan. public class SlumpMatris { public static void main( String[] arg ) { int r = 5, k = 3; int[][] m = new int[r][k]; System.out.println("Matriselementen slumpas och skrivs ut:"); for(int i = 0 ; i < r ; i++) { for(int j = 0; j < k; j++){ m[i][j] = (int)( 1000 * Math.random() ); System.out.print(m[i][j]+"\t"); System.out.println(); Studera koden! Matriselementen tilldelas värden och skrivs ut i en nästlad loop. Provkör! Testa andra värden på r och k!

7 Kap 9 : Sid 7 Statistiska mått Antag nu att vi har en mängd tal lagrade i en array. De kanske har matats in via tangentbordet eller de kanske är hämtade från en fil. (I vår övning nedan är talen slumpade till en array!) Hur gör man för att beräkna talens summa, medelvärde, max- och min-värde? Övning: Summa-medel-max-min Detta program är inledningsvis identiskt med föregående. Ett antal tal slumpas till en array och skrivs ut. Vi tänker oss att dessa tal är det statistiska material som vi ska bearbeta. I projektet Kap09, skapa klassen Statistik. Skriv in denna kod. Provkör ett antal gånger! public class Statistik { public static void main( String[] arg ) { int n = 100; int[] a = new int[n]; System.out.print("Dessa tal slumpas till arrayen:"); for(int i = 0 ; i < n ; i++) { if(i%10==0) System.out.println(); a[i] = (int)( 1000 * Math.random() ); System.out.print(a[i]+"\t"); int summa, max, min; double medel; summa = 0; max = -1; min = 1000; for(int i = 0; i < n; i++) { summa = summa +a[i]; if (a[i]>max) max = a[i]; if (a[i]< min) min = a[i]; medel = (double)summa/n; System.out.println(" "); System.out.println("Summa = " + summa + " Medel = " + medel); System.out.println("Max = " + max + " Min = " + min); Kommantarer till koden: Variabeln summa är från början 0 Vi loopar genom arrayen och för varje varv adderar vi ett element: summa = summa + a[i]; Efter loopen ligger på så sätt talens summa i variabeln summa Om vi då delar med antalet tal, n, bör vi få medelvärdet. Observera att variabeln medel är flyttal. Variabeln max sätter vi före loopen till ett litet tal. Det ska säkert finnas tal i arrayen som är större. Vi väljer max = -1 (Vi vet ju att våra tal finns i intervallet ) För varje element i arrayen kollar vi sedan: Om a[i] är störren än max, ja då blir a[i] det nya max-värdet! Det vill säga: if (a[i]>max) max = a[i]; När loopen är slut har vi arrayens största tal lagrad i variabeln max På ett helt analogt sätt tar vi reda på vi arrayens minsta tal, min Observera att min sätts till ett stort tal före loopen. Det ska säkert finnas tal i arrayen som är mindre. Vi väljer min = 1000 (Vi vet ju att våra tal finns i intervallet ) Dessa tillvägagångssätt för att finna summa, medel, max och min i ett stort datamaterial är vanliga i dataprogram. De är generella, och kan tillämpas i alla programmeringsspråk.

8 Kap 9 : Sid 8 Arrayens storlek Om man inte känner till antalet element i en array så kan man använda variabeln length. Exempel: Denna for-sats skriver ut alla elementen i arrayen a : for(int i = 0; i < a.length; i++){ System.out.println( a[i] ); Lägg märke till att om antal element i arrayen är a.length så är arrayens största index a.length - 1 Förkortat skrivsätt Det finns ett förkortat skrivsätt för for-loopen som är användbart när vi vill genomlöpa alla element i en array. Vi behöver inte känna till antal element. Exempel: Denna for-sats skriver ut alla element i heltalsarrayen a : for (int z : a) { System.out.println( z ); Deklarera en variabel här, av samma typ som arrayen Kolontecken Namnet på arrayen Den deklarerade variabeln får, undan för undan, för varje varv i loopen, respektive elements värde. Sortering Arrayer har stor betydelse inom databehandling. Arrayer används för att hålla reda på stora datamängder, för att söka och sortera. Det finns många algoritmer för att sortera tal, mer eller mindre effektiva. Vi ska lära oss några sådana. Men först ska vi se hur man bär sig åt för att få två variabelvärden att "byta plats" (något som behövs i alla sorteringsalgoritmer) : Att låta två variabler byta värde (innehåll) Antag att du har följande: I variabeln x finns ett tal (t ex 17). I variabeln y finns ett annat tal (t ex 82) Vi vill byta plats så att talet i variabeln x hamnar i y, och talet i y hamnar i x. Vilka satser skriver vi då? Försök med x = y; y = x; Vad händer? x får först värdet 82 vilket är OK. Men i nästa sats får y värdet av x, vilket ju nu är 82. Båda varaiblerna får samma värde! x y Nytt försök: Inför en slaskvariabel, s, för tillfällig lagring av ett tal. Satser: s = x; x = y; y = s; Nu fungerar bytet! x x x y y y s s s

9 Kap 9 : Sid 9 Övning: Sortera I projektet Kap09, skapa klassen Sortera. Vi ska deklarera en array och tilldela dess element heltal genom slumpning (som i programmet SlumpArray) Talen ska sedan sorteras så att de läggs in i arrayens element i stigande ordning. Slutligen ska arrayen skrivas ut igen. Studera koden nedan: Programmet är till en början identiskt med programmet SlumpArray. Raderna där sorteringen sker är skriven med fetstil: s är slaskvariabeln som används vid sorteringen Loopen är en så kallad nästlad loop: En yttre for-loop med i som loopvariabel och en inre med j som loopvariabel. Looparna tillser att alla element i arrayen undan för undan jämförs med alla andra element. Om ett element är större än ett annat låter man elementen byta plats. När hela arrayen gåtts igenom ligger talen sorterade Programmet avslutas med att (den nu soretrade) arrayen skrivs ut igen. Skriv in koden och provkör! Testa med olika värden på n ( 1000, 10000, ) public class Sortera { public static void main( String[] arg ) { int n = 100; int[] a = new int[n]; System.out.print("Dessa tal slumpas till arrayen:"); for(int i = 0 ; i < n ; i++) { if(i%10==0) System.out.println(); a[i] = (int)( 1000 * Math.random() ); System.out.print(a[i]+"\t"); // Här sker sorteringen: int s; for(int i = 0; i < n-1 ; i++ ) { for(int j = i+1; j < n ; j++ ) { if (a[i] > a[j]) { // om a[i] > a[j] byter de plats! s = a[i]; a[i] = a[j]; a[j] = s; // s är slaskvariabel System.out.println(); System.out.print("Efter sortering:"); for(int i = 0 ; i < n ; i++) { if(i%10==0) System.out.println(); System.out.print(a[i]+"\t");

10 Kap 9 : Sid 10 Övning: BubbleSort En annan vanlig sorteringsalgoritm är bubble sort, ibland benämnd "jämför grannar och byt". I projektet Kap09, skapa klassen Bubble. Kopiera all kod från programmet Sortera. De rader som utför sorteringen (de som skrivits med fetstil på föregående sida) ska bytas mot följande kod: // Sortering med bubblesort: int s; boolean klar = false; while(!klar) { klar = true; for(int i = 0; i < n - 1; i ++ ) { if( a[i] > a[i+1] ) { s = a[i]; a[i]=a[i+1]; a[i+1]=s; klar = false; Studera koden: I for-loppen jämförs ett element med närmast följande element. Om det första elementet är större än det andra så byts innehållet och en boolsk variabel, klar, sätts till false. Arrayen gås igenom, om och om igen, så länge den boolska variabeln klar är false (while!klar ). Slutligen ligger alla talen i rätt ordning, inget byte sker, klar har värdet true och while-loopen avbryts. Studera och försök förstå koden! Provkör! Testa med olika värden på n ( 1000, 10000, ) Metoden sort() Java har en "färdig" metod för sortering vid namn sort(). (Så dags att avslöja nu!) Det är en klassmetod i klassen Arrays i paketet java.util Övning: Testa Java-metoden sort I projektet Kap09, skapa klassen Sortera2. Kopiera all kod från programmet Sortera. Skriv in denna sats allra först i koden: import java.util.*; De rader som utför sorteringen (de som skrivits med fetstil på föregående sida) ska nu bytas mot ett metodanrop: // Här sker sorteringen: Arrays.sort(a); Provkör! Testa med olika värden på n ( 1000, 10000, ) Anmärkning: Klassen Arrays har fler användbara metoder, bland annat dessa: Metoden Arrays.fill(arr, varde) ger alla element i arrayen arr värdet varde. Metoden Arrays.equals(arr1, arr2) returnerar true om de båda arrayerna arr1 och arr2 är identiska.

11 Kap 9 : Sid 11 Sökalgoritmer Antag att vi har en mängd data, t.ex. en mängd heltal. (Varje heltal representerar t.ex. en post i ett register.) En vanlig uppgift för en dator är att söka efter (t.ex.) ett tal och tala om på vilken plats talet finns. För detta ändamål finns flera olika sökmetoder. Sekvensiell sökning Med sekvensiell sökning kollar vi det ena talet efter det andra från början till slut. Antag att vi har denna mängd heltal: Vi representear dem i en array, arr: int[] arr = { 13, 15, 7, 3,11, 21, 25, 23, 9, 5, 17 ; Förslag på sökalgoritm (pseudokod): Mata in talet vars position vi söker, t Sätt heltalet pos = -1 Upprepa för alla element i arrayen Om t = arr[i] pos = i index där talet finns hoppa ur loopen Om pos = -1 Meddela att inget tal hittats Annars Meddela talets position, pos Övning: Sekvensiell sökning Skapa klassen SekvensSok (i projektet Kap09). Skriv kod enligt ovanstående algoritm. Försök att skriva programmet på egen hand. (Lösningsförslag finns nedan) import java.util.*; public class SekvensSok { public static void main( String[] arg ) { Scanner sc = new Scanner(System.in); int[] arr = { 13, 15, 7, 3,11, 21, 25, 23, 9, 5, 17 ; int pos = -1; System.out.print("Vilket heltal söker du? "); int t = sc.nextint(); for(int i = 0 ; i < arr.length ; i++) { if( t== arr[i]){ pos = i; break; // loopen slutar if (pos == -1) System.out.println("Talet hittades inte!"); else System.out.println("Talet finns i element nummer " + pos);

12 Kap 9 : Sid 12 Binär sökning I binär sökning utgår man från en array där talen är sorterade i storleksordning. int[] arr = {3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25 ; Man matar in talet som man söker och jämför det "mittersta" talet i arrayen. Om talet är större än detta så kan man slopa den första halvan av arrayen. Om talet är mindre än detta så kan man slopa den andra halvan av arrayen. Och så vidare. Här är en algoritm: max = största indexet i arrayen min = 0 mata in ett tal ( t ) pos = -1 så länge min <= max och pos == -1 mitten = (max + min) / 2 om t > arr[mitten] min = mitten + 1 annars om t < arr[mitten] max = mitten -1 annars pos = mitten om pos == -1 skriv finns ej annars skriv finns på plats " pos Övning: Binär sökning Skapa klassen BinarSok (i projektet Kap09). Skriv kod enligt ovanstående algoritm. Försök att skriva programmet på egen hand. (Lösningsförslag finns nedan) import java.util.*; public class BinarSok { public static void main( String[] arg ) { Scanner sc = new Scanner(System.in); int[] arr = {3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25; int max, min, t, pos, mitten; min = 0; max = arr.length - 1; System.out.print("Vilket heltal söker du? "); t = sc.nextint(); pos = -1; while(min <= max && pos == -1) { mitten = (max + min)/2; if ( t > arr[mitten]) min = mitten + 1; else if (t < arr[mitten]) max = mitten - 1; else pos = mitten; if (pos == -1) System.out.println("Talet hittades inte"); else System.out.println("Talet finns i element nummer " + pos);

13 Kap 9 : Sid 13 Rita polygoner I tidigare övningar har du lärt dig hur man ritar rektanglar och ovaler med hjälp av grafikobjketets metoder. I nästa övning möter vi ännu en metod, drawpolygon() med vars hjälp vi ritar polygoner (månghörningar) Som argument ska metoden ha två arrayer och ett heltal. Den första arrayen ska innehålla x-koordinater för polygonens hörn. Den andra arrayen ska innehålla y-koordinater för polygonens hörn. Heltalet ska ange antalet hörn. Övning: Polygoner I programmet nedan deklarerar vi arrayerna x och y. Dessa används sedan som argument då metoden drawpolygon() anropas. import javax.swing.*; import java.awt.*; public class Poly extends JPanel{ int x[] = { 100, 200, 150 ; int y[] = { 100, 120, 50 ; public void paintcomponent(graphics g) { g.setcolor(color.red); g.drawpolygon( x, y, 3 ); public static void main(string[] args) { JFrame f = new JFrame(); f.setdefaultcloseoperation(jframe.exit_on_close); f.setsize(300, 300); f.setlocation(100,100); f.settitle("poly"); Poly p = new Poly(); f.add(p); f.setvisible(true); Skapa klassen Poly ( i projektet Kap09). Skriv in koden ovan och provkör. En triangel visas 150, 50 Byt sedan ut metoden drawpolygon mot fillpolygon Triangeln visas fylld 100, , 120 Rita ytterligare polygoner med fler hörn

14 Kap 9 : Sid 14 Övning: Rymdskepp Skapa projektet Kap09_Rymdskepp. Skapa klassen VisaRymdskepp. Skriv in denna kod: // VisaRymdskepp.java import javax.swing.*; import java.awt.*; public class VisaRymdskepp extends JPanel{ Rymdskepp rs; public VisaRymdskepp() { rs = new Rymdskepp(40,60); rs.setposition(100,150); this.setbackground(color.black); public void paintcomponent(graphics g){ super.paintcomponent(g); rs.visa(g); public static void main(string[] args) { JFrame f = new JFrame(); f.setdefaultcloseoperation(jframe.exit_on_close); f.setsize(300, 300); f.setlocation(100,100); f.settitle("visarymdskepp"); VisaRymdskepp p = new VisaRymdskepp(); f.add(p); f.setvisible(true); I konstruktorn finns satsen rs = new Rymdskepp(40,60);. Då denna exekveras instansieras ett objekt, rs, av klassen Rymdskepp. Rymdskeppet har formen av en liksidig triangel med basen 40 och höjden 60 pixlar. I konstruktorn sker vidare anropet rs.setposition(100,150); Detta metodanrop medför att rymdskeppets nos kommer att placeras i positionen 100,150. I metoden paintcomponent() anropas rymdskeppsobjektets visa()-metod varvid rymdskeppet ritas som en grå triangel. Skriv klassen Rymdskepp. Använd samma teknik som när vi skrev klassen Asteroid (kapitel 5 sidan 25). Instansvariabler: private int xpos, ypos, bas, hojd Konstruktorn har parametrar där värden på bas och hojd anges vid anrop. I metoden public setposition(int x, int y) sätts värden på xpos och ypos. I metoden public visa(graphics g) ritas rymdskeppet som en liksidig triangel enligt denna figur. (xpos, ypos) Triangeln ska vara ljusgrå. Triangelns höjd ska markeras med en mörkgrå linje. hojd Lösningsförslag på nästa sida (xpos-bas/2, ypos+hojd) bas (xpos+bas/2, ypos+hojd)

15 Kap 9 : Sid 15 // Rymdskepp.java import java.awt.*; public class Rymdskepp { private int xpos, ypos, bas, hojd; public Rymdskepp(int b, int h ) { bas = b; hojd = h; public void setposition(int x, int y){ xpos = x; ypos = y; public void visa(graphics g) { int x[] = { xpos, xpos-bas/2, xpos + bas/2; int y[] = { ypos, ypos + hojd, ypos + hojd ; g.setcolor(color.lightgray); g.fillpolygon( x, y, 3 ); g.setcolor(color.darkgray); g.drawline(xpos, ypos, xpos, ypos + hojd);

16 Kap 9 : Sid 16 Övning: Personbil I kapitel 2 skrev vi klassen KPersonbil ("konsol-personbil"). Här är klassen Personbil - en grafisk klass som är subklass till JPanel. Studera koden och jämför med KPersonbil. import javax.swing.*; import java.awt.*; public class Personbil extends JPanel { protected String marke; protected int arsmodell; protected int nypris; protected int storlek; protected Color farg; public Personbil() { marke = "Volvo"; arsmodell = 2000; nypris = ; storlek = 3; farg = Color.gray; this.setpreferredsize(new Dimension(127,48)); public Personbil(String marke, int arsmod, int nypris, int storl, Color farg){ this.marke = marke; this.arsmodell = arsmod; this.nypris = nypris; this.storlek = storl; this.farg = farg; this.setpreferredsize(new Dimension(112 + storlek * 5, 48)); public String fakta() { return marke + " " + arsmodell; public int varde(int ar){ int nupris; nupris = nypris *(ar - arsmodell); if (nupris < 10000) nupris = 10000; return nupris; public void paintcomponent(graphics g) { g.setcolor(farg); int s = storlek * 5; int x[] = { 0, 0,16,89+s,109+s,109+s,85+s,77+s,48,40 ; int y[] = {20,32,36, 36, 28, 12, 8, 0, 0,12 ; g.fillpolygon( x, y, 10 ); g.setcolor(color.white); int a[] = { 42, 77+s, 73+s,48 ; int b[] = { 14, 14, 4, 4 ; g.fillpolygon( a, b, 4 ); g.setcolor(color.black); g.filloval(15,25,22,22); g.filloval(68+s,25,22,22); g.setcolor(color.gray); g.filloval(19,29,14,14); g.filloval(72+s,29,14,14); g.setcolor(color.white); g.drawstring(this.fakta(),10,32); Instansvariablerna är som synes deklarerade med protected (och inte med private). Detta gör att eventuella subklasser kan ärva variablerna från Personbil.

17 Kap 9 : Sid 17 Klasserna Personbil och KPersonbil påminner mycket om varandra. Den största skillnaden är att klassen Personbil är en subklass till JPanel och att vi utnyttjar paintcomponent()-metoden för att rita bilen. Din uppgift: Skapa projektet Kap09_Personbil. Skapa klassen Personbil. Skriv in eller kopiera ovanstående kod. Skapa sedan klassen VisaPersonbil. Skriv ett program som deklarerar och instansierar och ett Personbil-objekt med standardkonstruktorn (det vill säga en grå Volvo årmodell 2000) samt visar objektet ( med add()-metoden ). Provkör. Skapa ytterligare ett Personbil-objekt, till exempel en Lincoln årsmodell 2003 som har nypriset kronor, storleken 7 (limosine) och blå färg. Provkör. Lägg till två etiketter (JLabel-objekt) som visar bilarna pris ett visst år. Provkör. Du ska givetvis utnyttja metoden varde(int ar). Provkör. I exemplet nedan visas vad bilarna är värda år Lösningsförslag: import javax.swing.*; import java.awt.*; public class VisaPersonbil extends JPanel{ Personbil p1, p2; JLabel l1,l2; public VisaPersonbil () { p1 = new Personbil("Lincoln", 2003, ,7, Color.blue); add(p1); p2 = new Personbil(); add(p2); setbackground(color.white); l1 = new JLabel(p1.fakta() + "s värde år 2010: " + p1.varde(2010)); l2 = new JLabel(p2.fakta() + "s värde år 2010: " + p2.varde(2010)); add(l1); add(l2); public static void main(string[] args) { JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("visapersonbil"); f.setdefaultcloseoperation(jframe.exit_on_close); VisaPersonbil p = new VisaPersonbil(); f.add(p); f.setvisible(true);

18 Kap 9 : Sid 18 Övning: Kombibil Skapa en klass, Combi, som subklass till klassen Personbil. Skriv en "standardkonstruktor" och en konstruktor med parametrar. Omdefiniera paintcomponent()-metoden så att en kombibil ritas. Ett lösingsförslag: import java.awt.*; public class Combi extends Personbil{ public Combi() { marke = "Volvo"; arsmodell = 2000; nypris = ; storlek = 3; farg = Color.gray; this.setpreferredsize(new Dimension(127,48)); public Combi(String marke, int arsmod, int nypris, int storl, Color farg) { this.marke = marke; this.arsmodell = arsmod; this.nypris = nypris; this.storlek = storl; this.farg = farg; this.setpreferredsize(new Dimension(112 + storlek * 5, 48)); public void paintcomponent(graphics g) { g.setcolor(farg); int s = storlek * 5; int x[] = { 0, 0, 16, 89+s, 109+s, 109+s, 100+s, 77+s, 48, 40 ; int y[] = {20, 32, 36, 36, 32, 12, 0, 0, 0, 12 ; g.fillpolygon( x, y, 10 ); g.setcolor(color.white); int a[] = { 42, 97+s, 93+s,48 ; int b[] = { 14, 14, 4, 4 ; g.fillpolygon( a, b, 4 ); g.setcolor(color.black); g.filloval(15,25,22,22); g.filloval(68+s,25,22,22); g.setcolor(color.gray); g.filloval(19,29,14,14); g.filloval(72+s,29,14,14); g.setcolor(color.white); g.drawstring(this.fakta(),10,32); I programmet VisaPersonbil: Deklarera, skapa och visa ett Combi-objekt. Övning: Cabriolet Skapa en klass, Cab, som subklass till klassen Personbil. I programmet VisaPersonbil: Deklarera, skapa och visa ett Cab-objekt.

19 Kap 9 : Sid 19 Objektarrayer Precis som vi kan arbeta med arrayer bestående av primitiva variabler kan vi arbeta med arrayer av objekt. (egentligen arrayer av referenser till objekt). Vi exemplifierar med knappar (JButton-objekt) : En ensam knapp deklareras och instansieras med JButton minknapp; minknapp = new JButton( Tryck på mej! ); En array of buttons deklareras med (10 element) JButton[] minknapp = new JButton[10]; Sen måste varje knappobjekt instansieras. for(int i = 0 ; i < 10 ; i++){ Vi lägger instansiering (och utplacering) i minknapp[i] = new JButton("" + i); en loop add( minknapp[i] ); Övning: Array of buttons A. I projektet Kap09, skapa klassen ButtonArray. Skriv koden nedan och kör. import javax.swing.*; import java.awt.*; public class ButtonArray extends JPanel{ //deklarerar array of buttons: JButton[] butt = new JButton[10]; public ButtonArray() { for(int i = 0 ; i < 10 ; i++) { butt[i] = new JButton(" " + i + " "); add( butt[i] ); public static void main(string[] args) { JFrame f = new JFrame(); f.setsize(100, 200); f.setlocation(100,100); f.settitle("buttonarray"); f.setdefaultcloseoperation(jframe.exit_on_close); ButtonArray p = new ButtonArray (); f.add(p); f.setvisible(true); B. Ändra i koden så att knapparna ligger så här:

20 Kap 9 : Sid 20 C. Lägg till ett textfält. Förse programmet med händelsehantering. Skriv kod så att när en knapp trycks så visas motsvarande siffra i textfältet. Hjälp: Kom ihåg att lägga lyssnare på knapparna. Det gör du lämpligen i loopen, i samband med att knappobjekten instansieras, med satsen butt[i].addactionlistener(this); I actionperformed()-metoden känner du av vilken knapp som tryckts och skriver ut motsvarande siffra, till exempel så här: for(int i = 0; i < 10 ; i++){ if ( e.getsource() == butt[i]){ display.settext("" + i); break; D. Gör så att man kan trycka flera tangenter i följd och då ska motsvarande tal visas i "displayen". Hjälp: Använd en sträng som från början är tom, och som efterhand byggs på med siffror, och skrivs ut. Övning: Spektrumfärger I projektet Kap09, skapa klassen Spektrum. Programmet ska visa sju knappar, så här: Knapparna representerar de sju färgerna i spektrum. När man trycker på en knapp ska panelen få motsvarande bakgrundsfärg. Hjälp: Så här kan programmets inledning se ut: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Spektrum extends JPanel implements ActionListener{ JButton[] fargknapp = new JButton[7]; String s[] = { "Röd", "Orange", "Gul", "Grön", "Blå", "Indigo", "Violett" ; public Spektrum() { for(int i = 0 ; i < 7 ; i++) { fargknapp[i] = new JButton(s[i]); add( fargknapp[i] ); fargknapp[i].addactionlistener(this); I actionperformed()-metoden känner du av vilken knapp som tryckts och ändrar bakgrundsfärg. fargknapp[0] ger Color.red, fargknapp[1] ger Color.orange och så vidare. Färgen indigo är en "blålila" färg. Skapa till exempel Color indigo = new Color(111,0,255);

21 Kap 9 : Sid 21 Övning: Tarning Skapa projektet Kap09_Yatzi. Kommer du ihåg klassen Tarning som vi skrev i kapitel 8? Kopiera filen Tarning.java i projektet Kap08_Tarning till src i projektet Kap09_Yatzi. Skapa sedan klassen Yatzi och skriv ett program som instansierar fem stycken tärningsobjekt. När man trycker på en knapp ska tärningarna kastas och visa nya värden. Lösningsförslag: import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Yatzi extends JPanel implements ActionListener { Tarning[] t = new Tarning[5]; JButton butt; int k; public Yatzi () { for (int i = 0; i < 5; i++) { t[i]=new Tarning(); k = t[i].kasta(); add(t[i]); butt = new JButton("Kasta!"); butt.addactionlistener(this); add(butt); public void actionperformed(actionevent e) { for(int i = 0; i<5; i++) k = t[i].kasta(); repaint(); public static void main(string[] args) { JFrame f = new JFrame(); f.setsize(400, 140); f.setlocation(100,100); f.settitle("yatzi "); f.setdefaultcloseoperation(jframe.exit_on_close); Yatzi p = new Yatzi (); f.add(p); f.setvisible(true);

22 Kap 9 : Sid 22 Övning: Lotto Skapa projektet Kap09_Lotto. I projektet Kap08_Kulan finns filerna Kula.java och VisaKula.java. Kopiera dessa till det nya projektet. I Utforskaren: Kopiera filen kula.jpg till mappen Kap08_Kulan. I klassen VisaKula: Deklarera en array med sju stycken Kula-objekt I konstruktorn: Skriv en loop där de sju Kula -objekten instansieras och "adderas". I actionperformed()-metoden: Skriv en loop där slumpatal()-metoden anropas för de sju Kula -objekten. Därefter repaint(); I main()-metoden: Ändra storlek öka bredden. Spara och provkör. När du trycker på knappen slumpas nya tal på kulorna. Som du märker kan samma tal visas på flera kulor. Skriv en variant där varje kula får ett unikt tal. Idé: Skapa en array, dragen, med boolska värden. Från början ska alla element vara false: dragen[1] är false dragen[2] är false osv dragen[35] är false När ett nytt tal slumpas kollar man mot arrayen så att det inte redan är draget. Om till exempel talet 12 dras får dragen[12] värdet true. Det kan vara lämpligt att göra om voidmetoden slumpatal() till en metod som returnerar slumptalet.

23 Kap 9 : Sid 23 Övning: Asteroidarray Skapa projektet Kap09_Asteroid. Kommer du ihåg klassen Asteroid som vi skrev i kapitel 5? Kopiera klassen Asteroid i projektet Kap05_Asteroid till src i projektet Kap09_Asteroid. Klassen Asteroid har en konstruktor med tre parametrar där man vid instansieringen kan ge värden som påverkar det skapade objektets position och diameter.vi ska förse klassen Asteroid med ytterligare en konstruktor. Den ska vara parameterlös. I denna konstruktor ska position och diameter slumpas fram. I klassen Asteroid, skriv in följande kod: public Asteroid() { // ny konstruktor utan parametrar diam = (int)(math.random()*30 )+ 10; // diametern blir pixlar xpos = (int)(math.random()*300); // placering i x-led ypos = (int)(math.random()*300); // placering i x-led Spara. Skapa sedan klassen VisaAsteroider som en subklass till JPanel. Deklarera i denna klass en array bestående av 10 stycken Asteroid-objekt I konstruktorn ska de tio objekten instansieras med den parameterlösa konstruktorn. I paintcomponent()-medoden ska tio objektens visa()-metod anropas. Spara och kör. Tio asteroider med varierande storlek visas. Exekvera flera gånger så att du ser att asteroidernas placering är slumpmässig. Lösningsförslag: import javax.swing.*; import java.awt.*; public class VisaAsteroider extends JPanel { Asteroid ast[] = new Asteroid[10]; public VisaAsteroider() { for(int i = 0 ; i < 10 ; i++) { ast[i]=new Asteroid(); setbackground(color.black); public void paintcomponent(graphics g){ super.paintcomponent(g); for(int i = 0 ; i < 10 ; i++) { ast[i].visa(g); public static void main(string[] args) { JFrame f = new JFrame(); f.setsize(400, 300); f.setlocation(100,100); f.settitle("visaasteroider"); f.setdefaultcloseoperation(jframe.exit_on_close); VisaAsteroider p = new VisaAsteroider (); f.add(p); f.setvisible(true);

24 Kap 9 : Sid 24 Starta program med argument Argumenten i main-metoden I kapitel 1 lärde du dig hur ett javaprogram ser ut. Det är en klass som innehåller metoden main(). Så här: public class MittProgram { public static void main( String[] args ) { // kod Vid kommandot (från DOS-prompten) sker anropet java MittProgram MittProgram.main(); varvid det som är definierat i main-metodens utförs (Repetera gärna början på kapitel 1 och avsnittet om klassmetoder i kapitel 2) Som du ser är main-metoden definierad med en parameter, en array av typen String Det betyder att man "skicka med " argument (av typen String) när man startar ett javaprogram. Ovning: Testa programstart med argument A. I projektet Kap09 skapa där klassen ArgsTest. Skriv in detta program: public class ArgsTest { public static void main( String[] arg ) { String txt1, txt2; txt1 = arg[0]; txt2 = arg[1]; System.out.print( txt1 + " " + txt2 ); Vi har deklarerat två String-objekt, txt1 och txt2. Dessa får värdet av angivna argument och skrivs ut. Du kan provköra programmet från DOS-prompten så här: java ArgsTest Stina Olle (Förmodligen måste du även skriva sökvägen till den mapp där javac.exe finns. Se kapitel 0.) Programmet skriver ut de angivna argumenten

25 Kap 9 : Sid 25 Från Eclipse kan du köra programmet så här: Klicka Run på menyraden, och sedan på menyalternativet Open Run Dialog Ett fönster, Run, öppnas. Kontrollera att det står ArgsTest i rutan Main class Välj sedan fliken Arguments Skriv in argumenten, till exempel namnen Olle Stina och tryck på knappen Run Programmet exekveras. De angivna argumenten skrivs ut i Console-fönstret. B. Skapa klassen ArgsTest2 och skriv in denna kod: public class ArgsTest2 { public static void main( String[] arg ) { int n = Integer.parseInt( arg[1] ); for (int i=0; i < n; i++) System.out.println( arg[0] ); Kör programmet med argumenten Kalle 10 Programmet skriver ut den angivna strängen angivet antal gånger

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

Lite logik. Kap 6: Sid 2

Lite logik. Kap 6: Sid 2 6 Loopar och val Lite logik Val mellan två alternativ Val mellan flera alternativ Sammansatta villkor Boolska variabler Jämför strängar While-loopar Do-loopar For-loopar Kortformer Kap 6: Sid 2 Lite logik

Läs mer

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Denna laboration är frivillig och syftar till att låta dig lära mer om grafik i java. Labben är ganska grundlig och går igenom vad du skall

Läs mer

Föreläsning 3-4 Innehåll

Föreläsning 3-4 Innehåll Föreläsning 3-4 Innehåll Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer Datavetenskap (LTH) Föreläsning 3-4 HT 2017 1 / 36 Diskutera Vad gör programmet programmet? Föreslå

Läs mer

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten? Programmeringsteknik och Matlab Övning 4 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: 2:a september 200, klockan 8:30-12:30. Plats: V Ansvarig lärare: Katarina Blom, tel 772 10 0. Läraren besöker tentamen kl 9:30

Läs mer

Applets med komponenter

Applets med komponenter 5 Applets med komponenter Knappar Om gränssnitt (interface) Händelser Måla om appletytan Etiketter och textrutor Förvandla strängar till tal Aritmetik Omvandla datatyper med cast Felhantering Kap 5: Sid

Läs mer

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod Föreläsning 3-4 Innehåll Diskutera Vad gör programmet programmet? Föreslå vilka satser vi kan bryta ut till en egen metod. Skriva egna metoder Logiska uttryck Algoritm för att beräkna min och max Vektorer

Läs mer

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2013-08-08 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Föreläsning REPETITION & EXTENTA

Föreläsning REPETITION & EXTENTA Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder

Läs mer

Lösningar för tenta 3 DAT043,

Lösningar för tenta 3 DAT043, Lösningar för tenta 3 DAT043, 2018-08-22. Uppgift 1 class Person{ public String förnamn; public String efternamn; public int ålder; private double längd; private double vikt; public Person(String förnamn,

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning Varför? 732G11 Linköpings universitet 2011-02-08 Varför? 1 2 3 Varför? 4 5 Medelvärde av 5000 tal Varför? while-loopen int nrofints = 5000; int [] integers = new int [ nrofints ]; int pos = 0; while (

Läs mer

Rita Egna Bilder, Timer

Rita Egna Bilder, Timer Rita Egna Bilder, Timer Josef Svenningsson November 27, 2012 Grafik Varje gång ett fönster behöver ritas om, pga av att det flyttas eller varit övertäckt, anropas automatiskt en metod som har namnet paintcomponent.

Läs mer

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsnings 11 - GUI, Händelsestyrda program, MVC Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken

Läs mer

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011) Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation

Läs mer

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer

Läs mer

2D1339 Programkonstruktion för F1, ht 2004

2D1339 Programkonstruktion för F1, ht 2004 2D1339 Programkonstruktion för F1, ht 2004 Kontrollskrivning 1 Onsdag 24/11 2004 kl 11.15 12.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser. (16 februari 2016 F5.1 ) Dagens text Programmeringsteknik Mer om Scanner-klassen Dialogrutor (klassen JOptionPane) Bubbelsortering ArrayList Omslagsklasser Arbetsexempel (16 februari 2016 F5.2 ) Pokertärningar

Läs mer

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser. (1 oktober 2017 F5 1 ) Dagens text Programmeringsteknik Mer om Scanner-klassen Dialogrutor (klassen JOptionPane) Bubbelsortering ArrayList Omslagsklasser Arbetsexempel (1 oktober 2017 F5 2 ) Pokertärningar

Läs mer

ID1004 Laboration 3, 5-6 November 2012

ID1004 Laboration 3, 5-6 November 2012 18-okt-2012/FK ID1004 Laboration 3, 5-6 November 2012 Labben bör göras individuellt. Beräknad tid ca 2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön

Läs mer

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER Från laboration 3 till 4 I laboration 3 har du implementerat klasser implementerat metoder i klasserna I laboration 4 kommer du att implementera

Läs mer

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 )

Dagens föreläsning. Arrayer och klasser. Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 1 ) (26 januari 2018 F3 1 ) Dagens föreläsning Arrayer och klasser Medan ni väntar: Gå till m.voto.se/prog11 och svara på några gamla tentamensfrågor! (26 januari 2018 F3 2 ) Arrayer En array är en datatyp

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna. 1 Uppgift 1 Klassen Company Banken FinanceTrust som tidigare bara haft privatpersoner som kunder vill nu bygga ut sitt datasystem så att även företag kan registreras som kunder. Skriv klassen Company som

Läs mer

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik 2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Mer om grafiska komponenter. Händelsestyrda program

Mer om grafiska komponenter. Händelsestyrda program Layout Managers TDA143 I1 Programmerade system Föreläsning 14 (OH-bilder 10) Mer om grafiska komponenter. Händelsestyrda program Utplaceringen av komponenter i en behållare styrs med en Layout Manager.

Läs mer

Objektorienterad programmering i Java

Objektorienterad programmering i Java Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2014-03-15 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Instuderingsfrågor, del D

Instuderingsfrågor, del D Uppgift 1. Instuderingsfrågor, del D Objektorienterad programmering, Z1 I vilka av nedanstående problem behöver man använda sig av fält för att få en elegant lösning? I vilka problem är det är det onödigt/olämpligt

Läs mer

Föreläsning 2, vecka 8: Repetition

Föreläsning 2, vecka 8: Repetition TDA 548: Grundläggande Programvaruutveckling Föreläsning 2, vecka 8: Repetition Magnus Myréen Chalmers, läsperiod 1, 2016-2017 Idag Metoder och terminologi Referensvärden och arrays Interface och ritning

Läs mer

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner Programmeringsteknik och Matlab Övning 3 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

Läs mer

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

Exempel på användning av arv: Geometriska figurer

Exempel på användning av arv: Geometriska figurer (9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. (9 maj 2014

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

Läs mer

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output

Lite mer om Javas stöd för fält. Programmering. Exempel: vad är det största talet? hh.se/db2004. Fält samt Input/Output Programmering hh.se/db2004 Föreläsning 5: Fält samt Input/Output Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Lite mer om Javas stöd för fält Hur många element har ett fält?

Läs mer

Föreläsning 9-10 Innehåll

Föreläsning 9-10 Innehåll Föreläsning 9-10 Innehåll Inläsning från textfil, utskrift från textfil Vektorer med objekt Matriser Datavetenskap (LTH) Föreläsning 9-10 HT 2018 1 / 41 Klassen Scanner Läsa från System.in Vi har tidigare

Läs mer

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning

String [] argv. Dagens Agenda. Mer om arrayer. Mer om arrayer forts. String [] argv. argv är variabelnamnet. Arrayer och Strängar fortsättning Dagens Agenda String [] argv String [] argv Arrayer och Strängar fortsättning Booleska operatorer if, for, while satser Introduktion till algoritmer public static void main(string [] argv) argv är variabelnamnet

Läs mer

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga.

Det är principer och idéer som är viktiga. Skriv så att du övertygar examinatorn om att du har förstått dessa även om detaljer kan vara felaktiga. Tentamen Programmeringsteknik I 2011-03-17 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper. Börja alltid ny uppgift

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

TENTAMEN OOP

TENTAMEN OOP TENTAMEN OOP 2014-01-19 ANVISNINGAR Påbörja varje ny uppgift på nytt blad. Skriv endast på ena sidan av bladen. Skriv tydligt - oläsbara svar beaktas ej. BETYGSÄTTNING Max antal poäng är 30. För att bli

Läs mer

Lösningsförslag till tentamen 150317

Lösningsförslag till tentamen 150317 Uppgift 1 Lösningsförslag till tentamen 150317 1) Sant 2) Falskt. I ett RAM-minne är åtkomsttiden densamma för alla minnesadresser.) 3) Falskt. Det är TCP som använder sig av en fast kommunikationsförbindelse.)

Läs mer

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

Föreläsning 3. Iteration while-satsen

Föreläsning 3. Iteration while-satsen Föreläsning 3 Iteration while-satsen Datatypen double I en dator kan man inte lagra hur stora eller hur små tal som helst. De enkla datatyperna, som används för att lagra tal (t.ex. int och double), har

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

Läs mer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 12 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 12 I torsdags: Klassen TelefonKostnad Exemplifierar objektorienterad design, metoder, konstruktorer static Standardklassen Math Matematiska

Läs mer

Laboration 24 Databasen MySQL och java

Laboration 24 Databasen MySQL och java Laboration 24 Databasen MySQL och java Avsikten med denna laboration är att du ska hämta information ur en eller flera tabeller och visa resultatet i en JTable-komponent. Du ska ändra innehållet i tabellen

Läs mer

2D1339 Programkonstruktion för F1, ht 2003

2D1339 Programkonstruktion för F1, ht 2003 2D1339 Programkonstruktion för F1, ht 2003 Kontrollskrivning 1 Onsdag 19/11 2003 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga

Läs mer

Grundläggande programmering med C# 7,5 högskolepoäng

Grundläggande programmering med C# 7,5 högskolepoäng Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)

Läs mer

Grafik, bilder och ljud

Grafik, bilder och ljud Swing * Eclipse * Midlets * Android 5 Grafik, bilder och ljud Klassen JPanel JPanel som rityta Färger, texter och figurer Visa en bild Spela ett ljud JPanel som container Metoden repaint() Egna grafiska

Läs mer

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor i Java Först följer frågor av flervalstyp. Frågorna är inte ordnade efter svårighetsgrad. 1. Skillnaden mellan typerna int och

Läs mer

Tentamen OOP 2015-03-14

Tentamen OOP 2015-03-14 Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning

Läs mer

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I PROGRAMMERING. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng TENTAMEN I PROGRAMMERING Ansvarig: Jan Skansholm, tel 7721012 Betygsgränser: Hjälpmedel: Sammanlagt maximalt 60 poäng. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Skansholm,

Läs mer

DD1342 Programkonstruktion för F1, ht 2007

DD1342 Programkonstruktion för F1, ht 2007 DD1342 Programkonstruktion för F1, ht 2007 Lappskrivning 1 Torsdag 22/11 2007 kl 9.15 10.00 Endast ett svar är rätt på varje fråga! Om mer än ett svar markerats räknas det som fel svar. Alla skriftliga

Läs mer

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen (10 februari 2019 F4 1 ) Dagens föreläsning Sett i datorsalarna Mer om arrayer Matriser Formatering av utskrifter Inläsning med hjälp av Scanner-klassen (10 februari 2019 F4 2 ) Hört och sett if-loop Skall

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel 732G11 Linköpings universitet 2011-02-15 1 2 3 4 Extrapass Extrapass håller på att bokas. Blir 3-4 st. och öppet för alla. Mer info på kursmailen när bokningen är klar. i Java En funktion i Java... public

Läs mer

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet

Lite om reella tal. Programmering. I java. Om operatorers associativitet och prioritet Programmering hh.se/db2004 Föreläsning 4: Fält samt Input/Output Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Lite om reella tal Vad kan man göra med reella tal? Utöver de

Läs mer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

Läs mer

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a

lgammal2.txt // Lösningar till gammal tentamen // Uppgift 1 a // Lösningar till gammal tentamen // Uppgift 1 a /* Felet beror på att det är klassen på referensen som avgör vilka metoder man får köra på ett objekt, inte klassen på objektet. På rad 5 i klassen C har

Läs mer

Del A (obligatorisk för alla)

Del A (obligatorisk för alla) Del A (obligatorisk för alla) A1. Ringa in rätt svarsalternativ eller skriv svar i ruta om sådan a) Satsen double x = (int)(1 + 3/2.0) + 3.; resulterar i b) Satsen int x = (int)(1 + 3/2.0) + 3.; resulterar

Läs mer

JAVA Mer om klasser och objektorientering

JAVA Mer om klasser och objektorientering JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det

Läs mer

PROGRAMMERINGSTEKNIK TIN212

PROGRAMMERINGSTEKNIK TIN212 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Robin Adams Göteborg 8 June 2018 PROGRAMMERINGSTEKNIK TIN212 Dag: Fredag Datum:

Läs mer

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper

Anmälningskod: Lägg uppgifterna i ordning. Skriv uppgiftsnummer (gäller B-delen) och din kod överst i högra hörnet på alla papper Tentamen Programmeringsteknik I 2016-03-17 Skrivtid: 1400 1900 Tänk på följande Skriv läsligt. Använd inte rödpenna. Skriv bara på framsidan av varje papper. Lägg uppgifterna i ordning. Skriv uppgiftsnummer

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1 Laboration 3 Visualisering

Läs mer

Laboration 4: Game of Life

Laboration 4: Game of Life Laboration 4: Game of Life Programmerade system I1 Bakgrund: I denna laboration ska vi ägna oss åt Game of Life, vilket är en mycket enkel modell av en population organismer som kan leva, dö och fortplanta

Läs mer

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max 30p i denna halvtentamen Hjälpmedel:

Läs mer

Föreläsning 14: Grafik & mera händelsehantering

Föreläsning 14: Grafik & mera händelsehantering TDA 545: Objektorienterad programmering Föreläsning 14: Grafik & mera händelsehantering Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Idag: grafik läs kap 17 Viktigt i denna föreläsning: att rita

Läs mer

2D1339 Programkonstruktion för F1, ht 2003

2D1339 Programkonstruktion för F1, ht 2003 2D1339 Programkonstruktion för F1, ht 2003 Fiktiv Kontrollskrivning 1 Endast ett svar är rätt på varje fråga! Om mer än ett svar givits blir det noll poäng på frågan. Alla skriftliga hjälpmedel är tillåtna

Läs mer

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack 725G61 - Laboration 2 Loopar och arrayer Johan Falkenjack October 29, 2013 1 Inledning I labb 1 lärde vi oss om de primitiva datatyperna (och lite om String). Vi lärde oss också att använda variabler av

Läs mer

[] Arrayer = Indexerad variabel

[] Arrayer = Indexerad variabel [] Arrayer = Indexerad variabel Lagra många värden i en variabel Jmfr inom matematiken, variabler x 0, x 1, x 2, I detta dokument tas upp hur man skapar och hanterar sådana variabler i java. Dessa kallas

Läs mer

2 b) Följande finns definierat: public class Käk String titel = "Chili con carne"; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda("Svartpe

2 b) Följande finns definierat: public class Käk String titel = Chili con carne; Krydda[] kryddor = new Krydda[10]; kryddor[0] = new Krydda(Svartpe Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för I1, K2, L1, M1, Media1 och T1. Tentamen (1p) 6 april 2002, kl 14.00 17.00 Hjälpmedel: En javabok(det blå javahäftet som ingår i kursbunten räknas

Läs mer

2 b) Följande finns definierat: public class Spel String titel = "Spel"; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice("Röd"); tärningar[1]

2 b) Följande finns definierat: public class Spel String titel = Spel; Dice[] tärningar = new Dice[10]; tärningar[0] = new Dice(Röd); tärningar[1] Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B2 och V1. Tentamen (1p) 12 januari 2002, kl 14.00 17.00 Hjälpmedel: En javabok(det blå javahäftet som ingår i kursbunten räknas som en javabok.

Läs mer

Tentamen , Introduktion till Java, dtaa98, dtea53

Tentamen , Introduktion till Java, dtaa98, dtea53 Mittuniversitetet 2007-09-01 Institutionen för informationsteknologi och medier Sid:1(3) dtaa98, dtea53 Martin Kjellqvist; Linda Karlsson, Ulf Reiman Lösningsansatser Tentamen 2007-09-01, Introduktion

Läs mer

Iteration while-satsen

Iteration while-satsen Datatypen double TDA143 I1 Programmerade system Föreläsning 3 (OH-bilder 3) Iteration while-satsen Christer Carlsson I en dator kan man inte lagra hur stora eller hur små tal som helst. De enkla datatyperna,

Läs mer

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)

Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)

Läs mer

Laboration 13, Arrayer och objekt

Laboration 13, Arrayer och objekt Laboration 13, Arrayer och objekt Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration13 i ditt laborationsprojekt innan du fortsätter med laborationen. Uppgift

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 a) Falskt! Bitmönstret är 10010111 b) Falskt! Memory Manager handhar Lösningsförslag till tentamen 170609 c) Falskt. En trojansk häst är ett program i förklädnad. Det är således program som på

Läs mer

Föreläsning 6: Metoder och fält (arrays)

Föreläsning 6: Metoder och fält (arrays) TDA 545: Objektorienterad programmering Föreläsning 6: Metoder och fält (arrays) Magnus Myréen Chalmers, läsperiod 1, 2015-2016 I (föregående och) denna föreläsning Läsanvisning: kap 2 & 13 meddelanden

Läs mer

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa

Läs mer

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass EDAA20 Föreläsning 11-12 Klassen ArrayList Klassen ArrayList Skriva program som läser data från en textfil och skriver data till en textfil Repetition inför delmålskontroll 2 är en standardklass (i paketet

Läs mer

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus.

Fält av referenser. Konstruktorerna används för att skapa Bilar och Trafikljus. Fält av referenser Tanken med objekt är man kan bygga ihop olika sorts objekt till nya saker. Sålunda kan man exempelvis använda Bil och Trafikljus att konstruera ett Väg-objekt. Om Bil och Trafikljus

Läs mer

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

Läs mer

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

System.out.println(Jaså du har + antalhusdjur+  husdjur); if ( antalhusdjur > 5 ) System.out.println(Oj det var många); 1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende

Läs mer

Objektorienterad programmering. Telefonboken igen, en bättre version. En jämförelse. Föreläsning 4

Objektorienterad programmering. Telefonboken igen, en bättre version. En jämförelse. Föreläsning 4 Telefonboken Objektorienterad programmering Telefonboken igen, en bättre version Telefonboken, igen. Tvådimensionella fält. Exempel: femtonspelet. Modellklassen. Ett textbaserat program. Ett grafiskt program.

Läs mer

TENTAMEN I. OBJEKTORIENTERAD PROGRAMMERING för Z1. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng

TENTAMEN I. OBJEKTORIENTERAD PROGRAMMERING för Z1. På tentamen ges graderade betyg:. 3:a 24 poäng, 4:a 36 poäng och 5:a 48 poäng Institutionen för Datavetenskap JSk TENTAMEN TDA540 TENTAMEN I OBJEKTORIENTERAD PROGRAMMERING för Z1 TID 14.15-18.15 Ansvarig: Betygsgränser: Hjälpmedel: Jan Skansholm Sammanlagt maximalt 60 poäng. På

Läs mer

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer F6 Observera att när man utvecklar program så är inte alla lösningar på vägen korrekta. Speciellt den här gången så finns många OH med program som inte fungerar eftersom det är just det vi skall se på

Läs mer

Lösningsförslag tentamen FYTA11 Java

Lösningsförslag tentamen FYTA11 Java Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Lösningsförslag tentamen FYTA11 Java Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade

Läs mer

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering

Objektorientering. Objekt och metoder. Objektorientering. Viktiga begrepp. Klass. Objekt. Deklarativ programmering och metoder Introduktion till objektorienterad programmering Markus Saers markus.saers@lingfil.uu.se orientering Deklarativ programmering Beskriver förutsättningarna för något Prolog Imperativ programmering

Läs mer

Tentamen i Objektorienterad programmering E

Tentamen i Objektorienterad programmering E CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA546 Tentamen i Objektorienterad programmering E Måndagen 8 mars 2010, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 1040. Inga hjälpmedel. Lösningar till

Läs mer