Arrayer med primitiva datatyper

Relevanta dokument
Föreläsningsmaterial (Syntax och variabler)

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

Objektorienterad programmering i Java

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

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

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

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

Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.

(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

OOP Objekt-orienterad programmering

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

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Java, klasser, objekt (Skansholm: Kapitel 2)

Laboration A Objektsamlingar

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

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.

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp

DAT043 - föreläsning 8

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

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

Vad handlar kursen om? Algoritmer och datastrukturer. Vad handlar kursen om? Vad handlar kursen om?

F7 - Arrayer. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 10. ADT:er och datastrukturer

TDDC77 Objektorienterad Programmering

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

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

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

Arrayer (fält)

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.

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

Listor. Koffman & Wolfgang kapitel 2, avsnitt , och 2.9

Objektorienterad Programmering (TDDC77)

Länkade strukturer. (del 2)

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

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

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

Föreläsning 3-4 Innehåll

JAVA Mer om klasser och objektorientering

Att skriva till och läsa från terminalfönstret

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

Föreläsning 12. Länkade listor

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

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen, EDAA20/EDA501 Programmering

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

Föreläsning 2, vecka 8: Repetition

Laboration 13, Arrayer och objekt

Datastrukturer. Arrayer. Arrayer. Arrayer. Array av arrayer. Array av arrayer

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

Föreläsning REPETITION & EXTENTA

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

Anteckningar 1: Grundläggande saker

Agenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då

F4 Klasser och Metoder. ID1004 Objektorienterad programmering Fredrik Kilander

tentaplugg.nu av studenter för studenter

Föreläsning 5 (6) Metoder. Metoder Deklarera. Metoder. Parametrar Returvärden Överlagring Konstruktorer Statiska metoder tostring() metoden javadoc

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

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

Interface. Interface. Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 3 december 2010

SMD 134 Objektorienterad programmering

Tentamen. Lösningsförslag

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

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

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

Inkapsling tumregler. Åtkomstmodifikatorer, instantiering, referenser, identitet och ekvivalens, samt klassvariabler. public och private

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

Tentamen. Grundläggande programmering i Java A 5p, DTAA

Outline. I Vi kan lätt göra samma sak för fyra variabler... I Hur gör vi för 400 inlästa värden? I Ofta behöver man flera likadana variabler

Tentamen ID1004 Objektorienterad programmering December 15, 2012

Övningar Dag 2 En första klass

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

Objekt och klasser - Introduktion

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

Föreläsning 5-6 Innehåll

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

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

Kopiering av objekt i Java

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

Tommy Färnqvist, IDA, Linköpings universitet

F8 - Arv. ID1004 Objektorienterad programmering Fredrik Kilander

Klasser och objekt. Henrik Johansson. August 20, 2008

Objekt och klasser - Introduktion. Objekt. SparKonto.java 2. SparKonto.java 1. Konton.java. Ett objekt har: Ett bankkonto

Objektorienterad programmering i Java I

Föreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts

Övning vecka 6. public void method2() { //code block C method3(); //code block D }//method2

[] Arrayer = Indexerad variabel

Outline. Objektorienterad Programmering (TDDC77) Att instansiera en klass. Objekt. Instansiering. Åtkomst. Abstrakt datatyp.

TDIU01 - Programmering i C++, grundkurs

Seminarium 3 Introduktion till Java Collections Framework Innehåll. Generik Bakgrund. Exempel på en generisk klass java.util.arraylist.

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

tentaplugg.nu av studenter för studenter

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

public och private Obs: private inte skyddar mot access från andra objekt i samma klass.

Transkript:

Arrayer med primitiva datatyper Pellets_utan_array.java class Pellets_utan_array // Programmet inleds med deklarationer av variabler int pellets_1; int pellets_2; int pellets_3; int pellets_4; int pellets_5; int summa; int antal; float medelvarde; // Därefter tilldelas variablerna värden pellets_1 = 245; pellets_2 = 258; pellets_3 = 257; pellets_4 = 250; pellets_5 = 251; antal = 5; // Summan och medelvärdet beräknas summa = pellets_1 + pellets_2 + pellets_3 + pellets_4 + pellets_5; medelvarde = (float)summa / antal; // Medelvärdet skrivs därefter ut System.out.println("Medelvärde för pelletsvikt: " + medelvarde); Pellets_med_array_1.java class Pellets_med_array_1 // Programmet inleds med deklarationer och initiering // av array och variabler int[] pellets; pellets = new int[5]; int summa=0; int antal=0; float medelvarde=0.0f; // Därefter tilldelas variablerna värden pellets[0] = 245; pellets[1] = 258; pellets[2] = 257; pellets[3] = 250; pellets[4] = 251; //antal = 5; antal = pellets.length; // Summan och medelvärdet beräknas for (int i=0; i < antal;i++) //summa=summa + pellets[i]; summa += pellets[i]; medelvarde = (float)summa / antal; // Medelvärdet skrivs därefter ut System.out.println("Medelvärde för pelletsvikt: " + medelvarde);

Pellets_med_array_2.java class Pellets_med_array_2 // Programmet inleds med deklarationer och initiering // av array och variabler int[] pellets = 245, 258, 257, 250, 251; int summa=0; int antal=0; float medelvarde=0.0f; antal = pellets.length; // Summan och medelvärdet beräknas for (int i=0; i < antal;i++) summa += pellets[i]; medelvarde = (float)summa / antal; // Medelvärdet skrivs därefter ut System.out.println("Medelvärde för pelletsvikt: " + medelvarde); Pellets_med_array_3.java import javax.swing.joptionpane; class Pellets_med_array_3 // Programmet inleds med deklarationer och initiering // av array och variabler int[] pellets = new int[8]; int summa=0; int antal=0; int vikt=9999; int raknare = 0; float medelvarde=0.0f; while (vikt > 0) vikt = Integer.parseInt(JOptionPane.showInputDialog("Ange pelletsvikt. Avsluta med noll (0)")); pellets[raknare++]=vikt; /* Ovanstående programsats kan längre och kanske något tydligare skrivas: pellets[raknare]=vikt; raknare = raknare +1; antal = raknare - 1; System.out.println(antal); // Summan och medelvärdet beräknas for (int i=0; i < antal;i++) summa += pellets[i]; medelvarde = (float)summa / antal; // Medelvärdet skrivs därefter ut JOptionPane.showMessageDialog(null,"Medelvärde för pelletsvikt: " + medelvarde); System.exit(0);

Arrayer med String (referensvariabler / objekt) StringArray.java /* Detta program exemplifierar de grundläggande mekanismerna för att deklarera och intitiera en array med referenser till objekt. Programmet läser först in ett antal namn som vart och ett lagras på en plats i arrayen. Efter avslutad inmatning konkateneras alla strängobjekt till en sträng, med namnen åtskilda av ett "nyradstecken" (dvs, '\n'). Denna sträng presenteras därefter i en dialogruta, varpå programmet avslutas. import javax.swing.joptionpane; class StringArray String[] namn; namn = new String[5]; int index = 0; String indata; String utdata; // Inläsningsloop do indata = JOptionPane.showInputDialog("Skriv in ett namn."); namn[index] = indata; index++; while (index <5); //Utmatning index = index; utdata = new String(); for (int i=0; i < index ;i++) utdata = utdata + namn[i] + '\n'; JOptionPane.showMessageDialog(null, utdata); System.exit(0);

Arrayer av egna objekt Paper.java /* Denna klass beskriver egenskaper för objekt som representerar vetenskapliga artiklar. Attributen utgörs av strängar som beskriver författare, publikationsår, artikeltitel, tidskriftstitel samt volym och nummer inom volymen (issue). Metoder utgörs av set- och getmetoder för tilldelning och hämtning av värden för respektive attribut. class Paper private String author; private String year; private String title; private String journal; private String volume; private String issue; public Paper() public void setauthor(string a) author = new String(a); public String getauthor() return author; public void setyear(string y) year = new String(y); public String getyear() return year; public void settitle(string t) title = new String(t); public String gettitle() return title; public void setjournal(string j) journal = new String(j); public String getjournal() return journal; public void setvolume(string v) volume = new String(v); public String getvolume() return volume;

public void setissue(string i) issue = new String(i); public String getissue() return issue; PaperCollection.java class PaperCollection private Paper[] collection; private int numberofpapers; /* Nedanstående konstruktor reserverar plats i collection-arrayen för det i parametern angivna antalet Paper-objekt. numberofpapers är ett heltalsattribut som håller ordning på det antal Paper-objekt som lagts till collection-arrayen. public PaperCollection(int maxpapers) collection = new Paper[maxPapers]; numberofpapers = 0; /* Nedanstående metod lägger till det Paper-objekt som anges med parametern p. public void addpaper(paper p) collection[numberofpapers] = p; numberofpapers++; /* Nedanstående metod returnerar det Paper-objekt som finns lagrat i arrayen collection på den position som anges av index-parametern. public Paper getpaper(int index) return collection[index]; /* Nedanstående metod returnerar antal Paper-objekt som finns lagrat i collection-arrayen. public int getnumberofpapers() return numberofpapers;

ArtikelSamlingsApp.java class ArtikelSamlingsApp Paper p; PaperCollection pc = new PaperCollection(100); int antalpapers; AvstandsTabell.java class AvstandsTabell private int avstand[][]; private int antalstader; p.setauthor("boroditsky, L."); p.setyear("2000"); p.settitle("metaphoric structuring: understanding time through spatial metaphors"); p.setjournal("cognition"); p.setvolume("75"); p.setissue("2000"); p.setauthor("brown, J. S., & Duguid, P."); p.setyear("1994"); p.settitle("borderline Issues: Social and Material Aspects of Design"); p.setjournal("human-computer Interaction"); p.setvolume("9"); p.setissue("1"); p.setauthor("bødker, S."); p.setyear("1998"); p.settitle("understanding Representation in Design"); p.setjournal("human-computer Interaction"); p.setvolume("13"); p.setissue("2"); antalpapers = pc.getnumberofpapers(); for (int i=0; i < antalpapers; i++) p = pc.getpaper(i); System.out.println(p.getTitle()); public AvstandsTabell(int antal) antalstader = antal; avstand = new int[antalstader][antalstader]; public void setavstand(int fran, int till, int distans) avstand[fran][till] = distans; avstand[till][fran] = distans; public int getavstand(int fran, int till) return avstand[fran][till]; public void skrivuttabell() for (int i=0; i<antalstader; i++)

for (int j=0; j<antalstader; j++) System.out.print(avstand[i][j]+" "); System.out.println(); AvstandsApp.java class AvstandsApp AvstandsTabell atab = new AvstandsTabell(4); atab.setavstand(0, 1, 10); atab.setavstand(0, 2, 40); atab.setavstand(0, 3, 17); atab.setavstand(1, 2, 35); atab.setavstand(1, 3, 10); atab.setavstand(2, 3, 10); atab.skrivuttabell(); Dynamiska arrayer (Vector) Potentiella problem med arrayer: Hur hantera situationer då vi vill lagra fler objekt än vad arrayen är dimensionerad för? Hur hantera situationer då ett objekt ur arrayen ska tas bort? Standardklassen Vector bemöter dessa problem. Citat ur on-linedokumentationen för Java 2 Platform SE v1.4.2: The Vector class implements a growable array of objects. Like an array, it contains components that can be accessed using an integer index. However, the size of a Vector can grow or shrink as needed to accommodate adding and removing items after the Vector has been created. Observera att Vector-objekt endast kan lagra samlingar av referensvariabler (dvs referenser till object). Ett Vector-objekt kan med andra ord inte lagra samlingar av primitiva datatyper. Några centrala metoder: void addelement(object obj)) o Lägger till ett objekt till Vector-objektet void add(int index, Object element) o Lägger till ett objekt på en angiven plats I Vectorobjektet.

Object elementat(int index) o Metoden returnerar det objekt som finns lagrad på den av index angivna platsen. void clear() o Tar bort alla element ur Vector-objektet Object remove(int index) o Tar bort ett specifikt element (lagrat på platsen angiven av index) ur Vector-objektet. int size() o returnerar antalet element som finns lagrat Vector-objektet. PaperCollectionVector.java import java.util.vector; class PaperCollectionVector private Vector collection; public PaperCollectionVector() collection = new Vector(); public void addpaper(paper p) collection.addelement(p); public Paper getpaper(int index) return (Paper)collection.elementAt(index); public int getnumberofpapers() return collection.size(); class ArtikelSamlingsAppVector Paper p; PaperCollectionVector pc = new PaperCollectionVector(); int antalpapers; p.setauthor("boroditsky, L."); p.setyear("2000"); p.settitle("metaphoric structuring: understanding time through spatial metaphors"); p.setjournal("cognition"); p.setvolume("75"); p.setissue("2000"); p.setauthor("brown, J. S., & Duguid, P."); p.setyear("1994"); p.settitle("borderline Issues: Social and Material Aspects of Design"); p.setjournal("human-computer Interaction"); p.setvolume("9"); p.setissue("1"); p.setauthor("bødker, S.");

p.setyear("1998"); p.settitle("understanding Representation in Design"); p.setjournal("human-computer Interaction"); p.setvolume("13"); p.setissue("2"); antalpapers = pc.getnumberofpapers(); for (int i=0; i < antalpapers; i++) p = pc.getpaper(i); System.out.println(p.getTitle()); Övningsuppgifter Övningar med arrayer Övning på arrayer 1 Gör ett program där användaren får mata in ett antal tal. Programmet skall sedan presentera talen i omvänd ordning, det sista talet man matade in skall alltså presenteras först. Exempel: Hur många tal vill du mata in: 5 3 5 2 4 6 Här kommer talen i omvänd ordning: 6 4 2 5 3 Tack och hej, leverpastej Övning på arrayer 2 Gör ett program där användaren kan fråga programmet om veckodagar. T.ex. om man vill veta vad den 5 dagen i veckan heter, så skall programmet svara med 'fredag'. Exempel Vilken dag i veckan är du intresserad av? 5 Ja du, det är en 'fredag'. Övningar på arrayer 3 Gör om programmet ni gjorde förra veckan med Bookmarks så att klassen Favoriter innehåller en array med Bookmark objekt istället för endast fyra objekt.

4. I denna uppgift ska du skapa två klasser och ett program som utnyttjar och demonstrerar dessa klassers användning. Den första klassen ska heta KursMoment och den ska användas för att representera egenskaper hos kursmoment av det slag som vi har på institutionen för informatik. Du avgör själv vilka egenskaper i termer av attribut och metoder som är rimliga och lämpliga att använda. Den andra klassen ska heta KursBlock och ska kunna användas för att representera 20- poängsblock av kursmoment. Annorlunda uttryckt så ska KursBlocksobjekt innehålla samlingar/aggregat av KursMomentsobjekt. Även här avgör du själv vilka egenskaper i termer av attribut och metoder som är rimliga och lämpliga att använda. Klassen bör dock innehålla en metod som heter listamoment och som skriver ut information om de moment som ingår i blocket. 5. Förändra klassen PaperCollection så att det blir möjligt att ta bort en angiven artikel ur samlingen. Förslagsvis kan du göra detta genom att lägga till en metod som heter tabortartikel och där en heltalsparameter anger vilken artikel som ska tas bort. Metoden behöver inte returnerna något värde (dvs, returtypen void). 6. Samma uppgift som ovanstående men för klassen PaperCollectionVector. Utifrån att ha utfört ovanstående två uppgifter, vilken av lagringsalternativen array eller Vector bedömer du lämpligast när antalet element är dynamiskt (dvs element kan komma att läggas till och tas bort successivt över tiden)? Hur motiverar du ditt svar?