JAVAUTVECKLING LEKTION 8

Relevanta dokument
JAVAUTVECKLING LEKTION 4

Föreläsning REPETITION & EXTENTA

Föreläsning 3-4 Innehåll

JAVAUTVECKLING LEKTION 7

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

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

Tentamen. Lösningsförslag

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

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Föreläsning 8: Exempel och problemlösning

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

Lösningsförslag: Instuderingsfrågor, del D

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Typkonvertering. Java versus C

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

Föreläsning 2, vecka 8: Repetition

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

Bankkonto - övning. Övning 2 Skriv en metod, geträntan, som returnerar räntan.

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

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

Föreläsning 9-10 Innehåll

[] Arrayer = Indexerad variabel

TDDC77 Objektorienterad Programmering

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

Del A (obligatorisk för alla)

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.

OOP Objekt-orienterad programmering

JAVAUTVECKLING LEKTION 11

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

Instuderingsfrågor, del D

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Programmering för språkteknologer II, HT2011. Rum

JAVAUTVECKLING LEKTION 3

Föreläsning 7. for-satsen Fält

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

TDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson

Objektorienterad programmering Föreläsning 9. Copyright Mahmud Al Hakim Agenda (halvdag)

//Använd main som ett "handtag" för att hålla ihop programmet. //Själva programmet finns i övriga klasser.

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Metoder - en funktion: medel

Laboration 13, Arrayer och objekt

Objektorienterad programmering Föreläsning 10. Copyright Mahmud Al Hakim Sorteringsalgoritmer

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

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

Föreläsning 12: Exempel och problemlösning

Objektorienterad programmering i Java

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

Kapitel 6. Kapitel 6. Hakparenteser fšr att ange index float[] priser = new float[500]; frekvens[4] boolean[] flaggor;

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

Den som bara har en hammare tror att alla problem är spikar

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

Lösningsförslag till tentamen

int iarray[]= new int[3]; // deklarera ett heltalsfält med tre heltal int jarray[]={ 1, 3, 5, 7, 9, 11, 13, 15}; // initierat fält 8 element

Instuderingsfrågor, del E

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

Arrayer. results

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

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

Introduktion till Datalogi DD1339. Föreläsning 3 29 sept 2014

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

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet.

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

Tentamen FYTA11 Javaprogrammering

Tentamen i Objektorienterad programmering E

I ett program hantera man ofta samlingar av objekt av samma typ.

for-satsen Fält for-satsen Föreläsning 8 (OH-bilder 7) for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende:

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Arrayer (fält)

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

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

Datastrukturer. Föreläsning Innehåll. Program med vektor Exempel. Deklarera vektorer

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

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

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

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Tentamen ID1004 Objektorienterad programmering April 7, 2015

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

LÖSNINGSFÖRSLAG TENTAMEN

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

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 3 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Sortering. Om du följt dessa steg korrekt så ska böckerna nu vara sorterade.

Objektorienterad programmering E. Back to Basics. En annan version av printtable. Ett enkelt exempel. Föreläsning 10

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Föreläsning 5-6 Innehåll

SMD 134 Objektorienterad programmering

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 )

Del A (obligatorisk för alla)

Tentamen , Introduktion till Java, dtaa98, dtea53

DAT043 Objektorienterad Programmering

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

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

Saker du ska kunna Föreläsning 13 & 14

Transkript:

JAVAUTVECKLING LEKTION 8 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Fält (Arrayer) Att skapa och arbeta med fält Indexering Jämförelse av fält Flerdimensionella fält 1

VAD ÄR ETT FÄLT (ARRAY) Inom datavetenskap är ett fält eller en array en datastruktur som består av en samling av element (av en viss storlek och ofta samma datatyp), som identifieras med ett eller flera heltaliga index och lagrade i ett sammanhängande minnesblock så att adressen till varje element enkelt kan räknas ut från dess index. Till skillnad från en vanlig variabel som bara innehåller ett värde kan ett fält alltså innehålla ett godtyckligt antal värden. Källa: https://sv.wikipedia.org/wiki/f%c3%a4lt_(datastruktur) ATT SKAPA ETT FÄLT typ[] namn; namn = new typ[n] // deklarera en fältvariabel // skapa utrymme för fältet Ett alternativt skrivsätt typ[] namn = {värde0, värde1, värde2, Längden på ett fält ges av uttrycket namn.length 2

ATT SKAPA ETT FÄLT EXEMPEL double[] f1 = new double[4]; // Eller double[] f1 = {0, 0, 0, 0; int[] f2 = {5, 10, 20, 50, 100, 200, 500; INDEXERING Komponenterna i ett fält numreras från 0 och uppåt. Man kan välja ut en enstaka komponent genom att indexera fältnamn[i] Indexet i måste ligga i intervallet 0 till fältnamn.length-1 Bildkälla https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html 3

INDEXERING EXEMPEL int[] tabell = new int[10]; for (int i=0 ; i < tabell.length ; i++) tabell[i] = i+1; ATT SKRIVA UT FÄLT for (int i=0 ; i < f1.length ; i++) System.out.println(f1[i]); Eller for (int i : f2) System.out.println(i); 4

ÖVNING Skapa en metod som skriver ut komponenterna i ett fält. public static void skrivut(double[] a) { for (double d : a) System.out.println(d); ÖVNING 11.2 Skriv ett program som först skapar ett fält med tio komponenter av typen double. Programmet skall sedan innehålla en for-sats som ger den första komponenten värdet 1/1, den andra värdet 1/2, den tredje värdet 1/3 osv. Sist i programmet skall komponenternas värden skrivas ut. 5

ÖVNING 11.2 FACIT public class FaltOvnning { public static void main(string[] arg) { double[] a = new double[10]; for (int i=0; i<a.length; i++) a[i] = 1.0/(i+1); // Obs! 1/(i+1) hade givit heltalsdivision for (double d : a) System.out.println(d); ÖVNING Skapa en metod som beräknar medelvärdet av komponenterna i ett fält. public static double medelv(double[] a) { double sum = 0; for (double x : a) sum = sum + x; return sum/a.length; 6

UPPGIFT 11.3 public static boolean sorterat(double[] f, int antal) { for (int i=1 ; i < antal; i++) if (f[i] < f[i-1]) return false; return true; Behöver vi verkligen skicka antal? JÄMFÖRELSE AV FÄLT Om man gör en vanlig jämförelse jämförs referenserna till fälten: g == f // lika endast om g och f pekar på samma fält Vill man jämföra själva fälten kan man använda en for-sats och jämföra ett par av komponent i taget. Alternativt. Använd standradmetoden Arrays.equals i paketet java.util: Arrays.equals(f,g) 7

UPPGIFT 11.5 public static boolean equals(double[] a, double[] b) { if (a == null && b == null) return true; // två tomma referenser betraktas som lika else if (a == null b == null) return false; // en referens är tom men inte den andra else if (a.length!= b.length) return false; // olika långa fält for (int i=0; i<a.length; i++) if (a[i]!= b[i]) return false; return true; UPPGIFT 11.6 DEL 1 public static double sum(double[] f) { double sum = 0; for (int i=0; i<f.length; i++) sum += f[i]; return sum; 8

UPPGIFT 11.6 DEL 2 public static double kvadsum(double[] f) { double sum = 0; for (int i=0; i<f.length; i++) sum += f[i] * f[i]; return sum; FLERDIMENSIONELLA FÄLT typ[][] namn; // deklarera en fältvariabel namn = new typ[n][m]; // skapa utrymme för fältet n är antalet rader och m är antalet kolumner. Ett alternativt skrivsätt typ[][] namn = { {värde00, värde01, värde02,, {värde10, värde11, värde12,,... ; 9

FLERDIMENSIONELLA FÄLT EXEMPEL String[][] names = { {"Mr. ", "Mrs. ", "Ms. ", {"Smith", "Jones" ; // Mr. Smith System.out.println(names[0][0] + names[1][0]); // Ms. Jones System.out.println(names[0][2] + names[1][1]); Exemplet är hämtat från https://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html ÖVNING 12.1 int[][] tab = new int[10][10]; for (int i=0; i<10; i++) for (int j=0; j<10; j++) tab[i][j] = (i+1)*(j+1); for (int i=0; i<10; i++) { for (int j=0; j<10; j++) System.out.print("\t" + tab[i][j]); System.out.println(); 10