Föreläsning 6: Undantag, filhantering samt flera användbara klasser

Storlek: px
Starta visningen från sidan:

Download "Föreläsning 6: Undantag, filhantering samt flera användbara klasser"

Transkript

1 Föreläsning 6: Undantag, filhantering samt flera användbara klasser Eva Blomqvist Linköpings universitet Sweden November 11,

2 Innehåll Undantag Filhantering Flera användbara klasser i standardbiblioteket November 11,

3 Undantag November 11,

4 Undantag (exception) - vad är det? Undantagssituation Onormal situation så att uppgiften i programmet inte kan genomföras - oftast någon form av "fel" som har uppstått Genom att kontrollera värden och inmatningar kan vi undvika att undantag inträffar Exempel: om användaren uppmanas att mata in ett tal mellan 1 och 10 - kontrollera med en if-sats att värdet ni fick in faktiskt är mellan 1 och 10, annars t ex fråga igen Generella metoder, t ex i Javas standardbilbiotek kan inte veta hur du vill använda dem - istället kastas ett undantag när något oväntat inträffar Ansvaret faller på ditt program, där metoden används, att bestämma hur undantaget ska hanteras! Hanteras inte undantaget så att programmet kan köra vidare avslutas det Kasta ett undantag = skapa ett undantagsobjekt som innehåller information om undantaget och göra det tillgängligt för resten av programmet (=throw) November 11,

5 Skapa och kasta ett undantag Metod som returnerar elementet på en angiven position i en array public static int hamtaelement(int[] arrayen, int position) if (position >= arrayen.length) throw new ArrayIndexOutOfBoundsException("Felaktigt index!!"); else return arrayen[position]; November 11,

6 Skapa och kasta ett undantag (forts.) public class Undantag public static void main (String[] args) int[] v = 1,2,3; int element = hamtaelement(v,3); System.out.println("Elementet är: " + element); public static int hamtaelement(int[] v, int position) if (position >= v.length) throw new ArrayIndexOutOfBoundsException("Felaktigt index!!"); else return v[position]; November 11,

7 Skapa och kasta ett undantag (forts.) public class Undantag public static void main (String[] args) int[] v = 1,2,3; int element = hamtaelement(v,3); System.out.println("Elementet är: " + element); public static int hamtaelement(int[] v, int position) if (position >= v.length) ArrayIndexOutOfBoundsException e = new ArrayIndexOutOfBoundsException("Felaktigt index!!"); throw e; else return v[position]; November 11,

8 Undantagsmeddelande ("stack trace") Typ av undantag Mitt meddelande På vilken rad i huvudprogrammet undantaget dök upp På vilken rad inne i metoden undantaget kastades November 11,

9 Deklarera ett undantag (överkurs) public class Undantag public static void main (String[] args) int[] v = 1,2,3; int element = hamtaelement(v,3); System.out.println("Elementet är: " + element); public static int hamtaelement(int[] v, int position) throws ArrayIndexOutOfBoundsException if (position >= v.length) throw new ArrayIndexOutOfBoundsException("Felaktigt index!!"); else return v[position]; November 11,

10 När måste man deklarera ett undantag? (överkurs) Kontrollerade undantag måste deklareras "checked exception" Sådana undantag som man kan anta att programmet vill kunna hantera - information till andra som använder dina metoder Exempel: System.in.read() kastar checked exceptions, t ex när man försöker läsa från en fil som inte finns Okontrollerade undantag måste inte (men kan) deklareras "unchecked exception" November 11,

11 Fånga och hantera undantag try //Den vanliga koden, dvs det programmet ska utföra //Här bevakar programmet om ett undantag kastas catch (TypAvException e) //Kod som exekveras endast om ett undantag av //den givna typen kastas inne i try-blocket November 11,

12 Exempel: fånga och hantera public class UndantagHanteras public static void main (String[] args) int[] v = 1,2,3; try int element = hamtaelement(v,3); System.out.println("Elementet är: " + element); catch (ArrayIndexOutOfBoundsException e) System.out.println(e); System.out.println("Efter catch-satsen"); public static int hamtaelement(int[] v, int position) if (position >= v.length) throw new ArrayIndexOutOfBoundsException("Felaktigt index!!"); else return v[position]; November 11,

13 Exempel: fånga och hantera public class UndantagHanteras public static void main (String[] args) int[] v = 1,2,3; try int element = hamtaelement(v,3); System.out.println("Elementet är: " + element); catch (ArrayIndexOutOfBoundsException e) System.out.println(e); int element = hamtaelement(v,2); System.out.println("Sista elementet är: " + element); System.out.println("Efter catch-satsen"); public static int hamtaelement(int[] v, int position) if (position >= v.length) throw new ArrayIndexOutOfBoundsException("Felaktigt index!!"); else return v[position]; 13

14 Exempel: fånga och hantera (forts.) public class UndantagHanteras public static void main (String[] args) int[] v = 1,2,3; try int element = hamtaelement(v,3); System.out.println("Elementet är: " + element); catch (ArrayIndexOutOfBoundsException e) e.printstacktrace(); System.out.println("Efter catch-satsen"); public static int hamtaelement(int[] v, int position) if (position >= v.length) throw new ArrayIndexOutOfBoundsException("Felaktigt index!!"); else return v[position]; 14

15 Exempel: fånga och hantera (forts.) public class UndantagHanteras public static void main (String[] args) int[] v = 1,2,3; try int element = hamtaelement(v,3); System.out.println("Elementet är: " + element); catch (ArrayIndexOutOfBoundsException e) System.out.println(e); System.exit(0); System.out.println("Efter catch-satsen"); public static int hamtaelement(int[] v, int position) if (position >= v.length) throw new ArrayIndexOutOfBoundsException("Felaktigt index!!"); else return v[position]; 15

16 Hantera olika undantag - flera catch-satser try //Den vanliga koden, dvs det programmet ska utföra //Här bevakar programmet om ett undantag kastas catch (TypAvException e) //Kod som exekveras endast om ett undantag av //den givna typen kastas inne i try-blocket catch (AnnanTypAvException e) //Kod som exekveras endast om ett undantag av //den givna typen kastas inne i try-blocket November 11,

17 Undvik undantag! Försök att förutse alla situationer som kan uppstå i ditt program och hantera dem innan de blir undantag Exempel: kontrollera inmatade värden innan de används Exempel: kontrollera att ett index är mindre än längden på en array eller sträng innan ni försöker hämta ett element Exempel: kontrollera att en variabel innehåller ett värde, dvs inte är lika med "null" innan ni utför en operation på variabeln Om undantag inte kan undvikas - försök att hantera dem så att programmet kan fortsätta -> robust program! Exempel: om användaren matar in ett värde som inte går att hantera utan ett undantag kastas - uppmana användaren att mata in ett nytt värde och fortsätt exekveringen November 11,

18 Exempel: undvika undantag public class UndantagUndviks public static void main (String[] args) int[] v = 1,2,3; int position = 3; if (position >= 0 && position < v.length) int element = hamtaelement(v,position); System.out.println("Elementet är: " + element); else System.out.println("Felaktigt index!"); public static int hamtaelement(int[] v, int position) return v[position]; 18

19 Filhantering Paket: java.io November 11,

20 Strömmar November 11,

21 Strömmar till disk - disköverföring är långsamt November 11,

22 Buffrad utmatning - samla ihop en lämplig datamängd innan utmatning November 11,

23 Olika typer av strömmar Dataströmmar Värden av olika primitiva datatyper Teckenströmmar Överför tecken från dess Unicode-representation (två byte) internt i vårt program till t ex dess ASCII-kod i en textfil (en byte) - transformation + överföring Objektströmmar Överföra instanser av klasser Lagrar typen av objekt (klass) och de data som ingår November 11,

24 Standardin- och utmatning Vi har redan sett (och använder för labbarna) java.util.scanner för att läsa in rader, eller primitiva värden Finns även metoder för att läsa in tecken ett och ett (OBS! ni behöver inte dessa i labbarna - om ni använder dem, se upp med "skräptecken" som ligger kvar i bufferten) System.in med sin metod read() - teckenström Det finns även varianter som lagrar data i en buffert först BufferedReader! BufferedWriter! flush() framtvingar utmatning November 11,

25 Representera kataloger och filer java.io.file representation av en fil eller katalog så att man kan hänvisa till den i sitt program Skapa objekt: File katalog = new File("minkatalog"); Skapar ett objekt av typen File som representerar en fil eller katalog i den aktuella katalogen (annars måste sökväg anges) med det namnet OBS! Betyder inte att filen/katalogen finns eller skapas! katalog.exists() - true om fil eller katalog med det namnet finns Kontrollera om det är en fil eller katalog katalog.isfile() - true om det är en fil katalog.isdirectory() - true om det är en katalog Hämta sökvängen till filen eller katalogen String s = katalog.getcanonicalpath();! Lista kataloger och filer String[] lista = katalog.list();! November 11,

26 Representera kataloger och filer (forts.) Ändra i filsystemet OBS! var försiktiga när ni experimenterar - ni kan radera/ ändra i viktiga filer Skapa fil: katalog.createnewfile()! Skapa katalog: katalog.mkdir()! Ta bort fil eller katalog (katalog raderas bara om den är tom): katalog.delete()! November 11,

27 Läsa och skriva till fil Paketet java.io innehåller två kategorier av klasser för att läsa och skriva till fil XXXReader och XXXWriter hanterar tecken (char) genom deras Unicode-koder - metoderna read() och write() FileReader och FileWriter - grundklasser för att hantera filer - glöm inte att stänga strömmen med close()! XXXInputStream och XXXOutputStream hanterar byte (binärfiler) - metoderna read() och write() read() returnerar -1 vid "end of file" (EOF), dvs när filen är slut Aktuell katalog i Eclipse Workspace? Oftast projektkatalogen... November 11,

28 Textfiler OBS! Det finns flera olika varianter (mer specifika klasser) för att läsa in text och annan information från fil - läs Javadoc för de klasser som kan vara aktuella och välj den som har de metoder ni behöver! På labbarna behöver ni bara FileReader/Writer och BufferedReader/Writer Till projektet kan ni behöva andra klasser.. Läsa in tecken från textfil med en FileReader FileReader fr = new FileReader(new File("minfil.txt")); char c = (char) fr.read();! read() returnerar -1 vid filslut när inmatningen är klar - stäng strömmen fr.close();! Läsa in rader med text från textfil med en BufferedReader FileReader fr = new FileReader(new File("minfil.txt")); BufferedReader br = new BufferedReader(fr); String s = br.readline();! null vid filslut November 11,

29 Textfiler (forts.) Skriva tecken till textfil med en FileWriter FileWriter fw = new FileWriter(new File("minfil.txt")); fw.write('a'); fw.close();! Lägga till i slutet av filen: FileWriter fw = new FileWriter(!!!!new File("minfil.txt"), true); fw.write('a'); fw.close();! eller använd metoden append()! Skiva rader med text till textfil med en BufferedWriter FileWriter fw = new FileWriter(new File("minfil.txt")); BufferedWriter bw = new BufferedWriter(fw); bw.write("en textsträng som skrivs till filen."); bw.close();! November 11,

30 Mer om Javas standardbibliotek November 11,

31 Olika typer av metoder public static-metoder public - metoden kan anropas från andra klasser (annars hade vi inte kunnat använda den alls!) static - metoden finns i själva klassen, dvs vi behöver inte först skapa ett nytt objekt av klassen för att använda metoden Exempel: instansmetod för klassen String - inte static String s = "hej"; //skapar en ny instans av klassen String s = s.touppercase(); //anropar metoden touppercase() på instansen! Exempel: static-metod för klassen String String s = String.valueOf('A'); //anropar metoden valueof() direkt från klassen String! Vi återkommer till vad "klassmetod" och "instansmetod" betyder i nästa del av kursen, men ni behöver vara uppmärksamma på hur metoder ska anropas när ni använder klasser ur Javas standardbibliotek! November 11,

32 Klassen Math Klassen Math ligger i paketet java.lang - OBS detta paket importeras alltid, dvs du måste inte inte skriva java.lang.math eller import java.lang.math! Konstanter och metoder för matematiska beräkningar Alla är konstanter och metoder är public static, dvs vi skapar ingen instans av klassen utan använder dess konstanter och metoder direkt kom ihåg: konstanter skrivs vanligen med versaler, t ex PI! Exempel: konstanten pi double radie = 10.0; double omkrets = 2 * radie * Math.PI;! Exempel: kvadratroten ur ett tal - metoden sqrt double roten = Math.sqrt(25.0);! Exempel: slumptal - olika tal ( ) vid varje exekvering double slump = Math.random();! November 11,

33 Klasser som representerar de primitiva datatyperna - omslagsklasser ("wrapper") För varje primitiv datatyp finns en motsvarande klass i paketet java.lang byte!!byte short!!short int!!!integer long!!long float!!float double!!double char!!character boolean!!boolean! Varför? - klasserna innehåller ett antal metoder och konstanter som hjälper till att hantera värden av dessa typer November 11,

34 Omslagsklasser - "bra att ha" metoder Omvandla mellan olika typer av tal -> type cast Omvandla tal till textsträngar?? vi kan använda omslagsklassen för taltypen (eller metoden valueof() i klassen String) Alla typer har en metod tostring() för att omvandla från värden till en textsträng metoden är public static! Exempel: heltal till sträng int i = 2345; String s = Integer.toString(i);! Exempel: decimaltal till sträng double d = 2.345; String s = Double.toString(d);! November 11,

35 Omslagsklasser - "bra att ha" metoder Tvärt om: Omvandla textsträngar till tal?? vi kan använda omslagsklassen för taltypen Alla taltyper har en metod parse...() för att omvandla från textsträng till värden metoden är public static! Exempel: sträng till heltal String s = "2345"; int i = Integer.parseInt(s);! Exempel: sträng till decimaltal String s = "2.345"; double d = Double.parseDouble(s);! November 11,

36 Omslagsklasser - "bra att ha" metoder Hantera tecken - public static metoder i Character! boolean isletter(char c)! boolean islowercase(char c)! boolean isuppercase(char c)! boolean isdigit(char c)! boolean isletterordigit(char c)! boolean iswhitespace(char c)! char touppercase(char c)! char islowercase(char c)! Exempel: tester på en bokstav char bokstav = 'A'; boolean b1 = Character.isLetter(bokstav); //sant boolean b2 = Character.isLowerCase(bokstav); //falskt char litenbokstav = Character.toLowerCase(bokstav)! November 11,

37 Klassen Arrays - repetition Tillhör paketet java.util - måste importeras, eller så skriver ni det fullständiga namnet Innehåller metoder för att hantera arrayer på olika sätt Exempel: jämföra arrayer int[] v1 = 4,2,3; int[] v2 = 4,2,3; int[] v3 = 1,2,2; boolean lika12 = Arrays.equals(v1,v2); //sant boolean lika23 = Arrays.equals(v2,v3); //falskt! Exempel: sortera värden i en array char[] v4 = 's','d','a'; Arrays.sort(v1); //v1 kommer vara 2,3,4 Arrays.sort(v4); //v4 kommer vara 'a','d','s'! November 11,

38 Systemtid och fördröjning Klassen System för att hantera systemtid long tid = System.currentTimeMillis(); Ger aktuell tid enligt systemets klocka. Anges i antal millisekunder från midnatt 1 januari 1970 (!!) Få programmet att vänta 7 sekunder: while (System.currentTimeMillis() - tid < 7000);! OBS! - ineffektiv lösning, kontrollerar hela tiden Bättre lösning: Thread.sleep(7000); Programkörningen läggs i "viloläge" i 7 sekunder - resurserna släpps fria att användas av andra program som körs November 11,

39 Att importera en klass class UpprepaFor public static void main (String[] args) java.util.scanner in = new java.util.scanner(system.in); int tal = 0; for (int rakna = 1; rakna <= 10; rakna++) System.out.println("Loopen körs gång nr " + rakna); System.out.print("Skriv ett heltal: "); tal = in.nextint(); System.out.println("Talet är: " + tal); System.out.println("Slut!"); November 11,

40 Att importera en klass import java.util.scanner; class UpprepaFor public static void main (String[] args) Scanner in = new Scanner(System.in); int tal = 0; for (int rakna = 1; rakna <= 10; rakna++) System.out.println("Loopen körs gång nr " + rakna); System.out.print("Skriv ett heltal: "); tal = in.nextint(); System.out.println("Talet är: " + tal); System.out.println("Slut!"); November 11,

41 Nycklar och värden - Exempel: HashMap (java.util.hashmap) Exempel: mappa personnummer till ett namn - personnummer är en unik nyckel, vi vill kunna slå upp en persons namn m h a personnumret En HashMap lagrar värden baserat på en unik nyckel Nyckeln och värdena kan vara av olika typ, men alla nycklar resp. alla värden måste ha samma typ Vi skapar en HashMap enligt följande: HashMap<Integer,String> personkatalog = new HashMap();! Metoden "put" lägger till ett nyckel-värde par i katalogen, "get" hämtar värdet för en specifik nyckel > Hans Hansson > Anders Andersson November 11, > Maria Larsson...

42 Tillbaka till webbshoppen (igen) Skulle vi kunna använda en HashMap här? Vad sägs om två!? - En för produkternas priser och en för antal som en specifik användare vill köpa Nycklar? Priserna: Produkt-ID (int) Inköpen: Produkt-ID (int) Värden? Priserna: Pris pers st (double) Inköpen: Antal (int) Fördel: vi behöver inte lagra alla produkter utan bara de som användaren vill köpa, och sedan slå upp priset för dessa November 11,

43 Exempel webbshoppen import java.util.hashmap; import java.util.iterator; class Handla public static void main (String[] args) HashMap<Integer, Integer> artikelantal = new HashMap<Integer, Integer>(); HashMap<Integer, Double> priskatalog = new HashMap<Integer, Double>(); java.util.scanner in = new java.util.scanner(system.in); System.out.println("Ange artikelnr: "); while (in.hasnextint()) int artikelnr = in.nextint(); if (artikelnr < 0 artikelnr > 100) break; System.out.println("Ange antal: "); int antal = in.nextint(); artikelantal.put(artikelnr, antal); System.out.println("Ange artikelnr: "); Iterator<Integer> artiklar = artikelantal.keyset().iterator(); while (artiklar.hasnext()) int artikelnr = artiklar.next(); System.out.println("Ange pris för artikel " + artikelnr + ": "); double pris = in.nextdouble(); priskatalog.put(artikelnr, pris); artiklar = artikelantal.keyset().iterator(); double totalpris = 0; while (artiklar.hasnext()) int artikel = artiklar.next(); int ant = artikelantal.get(artikel); double pris = priskatalog.get(artikel); totalpris = totalpris + (ant*pris); System.out.println("Totalpriset för din order är: " + totalpris);

44 Exempel webbshoppen import java.util.hashmap; import java.util.iterator; class Handla public static void main (String[] args) HashMap<Integer, Integer> artikelantal = new HashMap<Integer, Integer>(); HashMap<Integer, Double> priskatalog = new HashMap<Integer, Double>(); java.util.scanner in = new java.util.scanner(system.in); System.out.println("Ange artikelnr: "); java.util.scanner while in (in.hasnextint()) = new java.util.scanner(system.in); int artikelnr = in.nextint(); if (artikelnr < 0 artikelnr > 100) break; System.out.println("Ange antal: "); int antal = in.nextint(); artikelantal.put(artikelnr, antal); System.out.println("Ange artikelnr: "); Skapa två HashMap Iterator<Integer> instanser artiklar = artikelantal.keyset().iterator(); while (artiklar.hasnext()) för att lagra dels antal per int artikelnr = artiklar.next(); artikel och dels pris per System.out.println("Ange artikel pris för artikel " + artikelnr + ": "); double pris = in.nextdouble(); priskatalog.put(artikelnr, pris); artiklar = artikelantal.keyset().iterator(); double totalpris = 0; while (artiklar.hasnext()) int artikel = artiklar.next(); int ant = artikelantal.get(artikel); double pris = priskatalog.get(artikel); totalpris = totalpris + (ant*pris); System.out.println("Totalpriset för din order är: " + totalpris); HashMap<Integer, Integer> artikelantal = new HashMap<Integer, Integer>() HashMap<Integer, Double> priskatalog = new HashMap<Integer, Double>()

45 Exempel webbshoppen import java.util.hashmap; import java.util.iterator; class Handla public static void main (String[] args) System.out.println("Ange HashMap<Integer, Integer> artikelantal artikelnr: = new HashMap<Integer, "); Integer>(); HashMap<Integer, Double> priskatalog = new HashMap<Integer, Double>(); while java.util.scanner (in.hasnextint()) = new java.util.scanner(system.in); System.out.println("Ange artikelnr: "); while (in.hasnextint()) int artikelnr = in.nextint(); int artikelnr = in.nextint(); if (artikelnr < 0 artikelnr > 100) break; System.out.println("Ange antal: "); antal: "); int antal = in.nextint(); int antal artikelantal.put(artikelnr, = in.nextint(); antal); System.out.println("Ange artikelnr: "); artikelantal.put(artikelnr, antal); Iterator<Integer> artiklar = artikelantal.keyset().iterator(); System.out.println("Ange artikelnr: "); while (artiklar.hasnext()) int artikelnr = artiklar.next(); System.out.println("Ange pris för artikel " + artikelnr + ": "); double pris = in.nextdouble(); priskatalog.put(artikelnr, pris); artiklar = artikelantal.keyset().iterator(); double totalpris = 0; Låt användaren mata in artikelnummer och antal för de artiklar han/hon vill köpa. vi antar att artikelnummer är postivia heltal < 100 if (artikelnr < 0 artikelnr > 100) break; while (artiklar.hasnext()) int artikel = artiklar.next(); int ant = artikelantal.get(artikel); double pris = priskatalog.get(artikel); totalpris = totalpris + (ant*pris); System.out.println("Totalpriset för din order är: " + totalpris);

46 Exempel webbshoppen import java.util.hashmap; import java.util.iterator; class Handla public static void main (String[] args) HashMap<Integer, Integer> artikelantal = new HashMap<Integer, Integer>(); HashMap<Integer, Double> priskatalog = new HashMap<Integer, Double>(); java.util.scanner in = new java.util.scanner(system.in); System.out.println("Ange artikelnr: "); while (in.hasnextint()) int artikelnr = in.nextint(); if (artikelnr < 0 artikelnr > 100) break; System.out.println("Ange antal: "); while (artiklar.hasnext()) int antal = in.nextint(); artikelantal.put(artikelnr, antal); int artikelnr = artiklar.next(); System.out.println("Ange artikelnr: "); Iterator<Integer> artiklar = artikelantal.keyset().iterator(); double pris = in.nextdouble(); while (artiklar.hasnext()) int artikelnr = artiklar.next(); priskatalog.put(artikelnr, pris); System.out.println("Ange pris för artikel " + artikelnr + ": "); double pris = in.nextdouble(); priskatalog.put(artikelnr, pris); Skapa en iterator över de artikelnummer som användaren matat in. För varje sådant nummer fråga användaren om priset och lagra det. Iterator<Integer> artiklar = artikelantal.keyset().iterator(); System.out.println("Ange pris för artikel " + artikelnr + ": "); artiklar = artikelantal.keyset().iterator(); double totalpris = 0; while (artiklar.hasnext()) int artikel = artiklar.next(); int ant = artikelantal.get(artikel); double pris = priskatalog.get(artikel); totalpris = totalpris + (ant*pris); System.out.println("Totalpriset för din order är: " + totalpris);

47 Exempel webbshoppen import java.util.hashmap; import java.util.iterator; class Handla public static void main (String[] args) HashMap<Integer, Integer> artikelantal = new HashMap<Integer, Integer>(); HashMap<Integer, Double> priskatalog = new HashMap<Integer, Double>(); java.util.scanner in = new java.util.scanner(system.in); System.out.println("Ange artikelnr: "); while (in.hasnextint()) int artikelnr = in.nextint(); if (artikelnr < 0 artikelnr > 100) break; System.out.println("Ange antal: "); int antal = in.nextint(); artikelantal.put(artikelnr, antal); System.out.println("Ange artikelnr: "); artiklar = artikelantal.keyset().iterator(); Iterator<Integer> artiklar = artikelantal.keyset().iterator(); double totalpris while (artiklar.hasnext()) = 0; int artikelnr = artiklar.next(); while (artiklar.hasnext()) System.out.println("Ange pris för artikel " + artikelnr + ": "); double pris = in.nextdouble(); int artikel = artiklar.next(); priskatalog.put(artikelnr, pris); int ant = artikelantal.get(artikel); artiklar = artikelantal.keyset().iterator(); double totalpris pris = 0; = priskatalog.get(artikel); while (artiklar.hasnext()) totalpris = int totalpris artikel = artiklar.next(); + (ant*pris); int ant = artikelantal.get(artikel); double pris = priskatalog.get(artikel); totalpris = totalpris + (ant*pris); System.out.println("Totalpriset för din order är: " + totalpris); Skapa en iterator över alla artikelnummer igen. För varje artikelnummer, hämta antalet och priset, multiplicera dem och lägg till talet till resultatvariabeln. System.out.println("Totalpriset för din order är: " + totalpris);

48 Programmeringsmetod November 11,

49 Större program - viktigare med metod Bryta ner problemet i delsteg Använd metoder för att bryta ut delar av lösningen Se förra föreläsningen!! Använd pseudokod Rita upp på ett papper vad som ska hända i varje delsteg och "testkör" ditt program på papper November 11,

50 Vad är pseudokod? Skriv ett program som läser in en persons födelseår och räknar ut personens ålder. Vad ska det här programmet göra - vilka steg behövs? Vi behöver: Uppmana användaren att mata in födelseår Läsa in födelseåret Uppmana användaren att mata in aktuellt år Läsa in aktuellt år Beräkna ålder genom att subtrahera födelseår från aktuellt år Skriva ut resultatet Vi kan skriva detta som pseudokod såhär: print "Födelseår?" read fodelse print "Nuvarande år?" read nuvarande alder = nuvarande - fodelse print "Du är " + alder November 11,

51 Vad är pseudokod? (forts.) Pseudokod är en blandning av naturligt språk och ord från programmeringsspråket Syftet med pseudokod är att göra programmet mer begripligt, eller att utforma algoritmen innan man vet exakt hur man ska lösa problemet i det specifika språket Finns ingen standard eller regler, men bra tips: Använd indentering för att visa hur programmet ska vara strukturerat Vet du inte hur något ska lösas, skriv det bara i vanlig text så länge, eller anta att det löses i en metod! - du kan göra flera versioner av din pseudokod som är mer och mer detaljerade November 11,

52 Exempel: från beskrivning till kod Problembeskrivning Skriv ett program som bestämmer (skriver ut) snittet av två mängder med 5 element vardera, där varje mängd ska vara representerad som en heltalsarray och matas in av användaren. November 11,

53 Exempel: från beskrivning till kod Problembeskrivning Skriv ett program som bestämmer (skriver ut) snittet av två mängder med 5 element vardera, där varje mängd ska vara representerad som en heltalsarray och matas in av användaren. Bryta ner problemet Vilka delar innehåller problemet? Läsa in två arrayer som representerar mängderna Bestämma snittet och skriva ut resultatet November 11,

54 Exempel: från beskrivning till kod Pseudokod - del 1 (skapa arrayer och läsa in element) array1 = ny tom array med längden 5 array2 = ny tom array med längden 5 print "Skriv in tal för mängd 1" while användaren matar in nya tal och vi inte har fyllt array1 tal = läs in heltal if tal finns inte redan i array1 lägg till tal i array1 print "Skriv in tal för mängd 2" while användaren matar in nya tal och vi inte har fyllt array2 tal2 =läs in heltal if tal2 finns inte redan i array2 lägg till tal2 i array2 November 11,

55 Exempel: från beskrivning till kod Pseudokod - del 2 (bestäm och skriv ut snittet) while inte slut på array1 element = hämta aktuellt element i array1 boolean finns = finnstal(element, array2) if finns print element Är ni osäkra på någon del i programmet? bryt ut det till en metod ange returvärde och inparametrar fundera senare ut hur ni ska lösa just den metoden November 11,

56 Exempel: från beskrivning till kod Pseudokod - del 2 (bestäm och skriv ut snittet) while inte slut på array1 element = hämta aktuellt element i array1 boolean finns = finnstal(element, array2) if finns print element metod: boolean finnstal (int e, heltalsarray v) finns = false for alla element i v if v == aktuellt element finns = true return finns November 11,

57 Exempel: från beskrivning till kod Skriv den faktiska koden! Glöm inte test och felsökning Testa med normala värden som programmet ska hantera Testa med "gränsvärden" för alla villkor Testa med slumpvisa värden, eller värden som inte borde kunna komma in i programmet Har vi tillräckligt bra felhantering? Undvik att kasta undantag - lägg till kontroller av värden i programmet istället November 11,

58 Sammanfattning Undantag Skapa och kasta undantag Fånga och hantera undantag Filhantering java.io.file representerar både filer och kataloger Finns metoder för att kolla om filen/katalogen existerar, skapa den, ta bort den, lista filer i katalogen mm Använd FileWriter och FileReader för att läsa från och skriva enskilda tecken till fil Vill du läsa in/skriva hela rader använd BufferedWriter och BufferedReader istället (kräver en FileWriter/FileReader som input när de skapas) Javas standardbibliotek - lite nya klasser "Wrapper"-klasser för grundläggande datatyper Math, Array, HashMap... November 11,

59 Nästa gång...börjar vi på del 2: objektorienterad programmering November 11,

60 November 11,

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar

Läs mer

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel

Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel Föreläsning 8 - del 1: Objektorienterad programmering (forts.) - Exempel Eva Blomqvist eva.blomqvist@liu.se Linköpings universitet Sweden December 1, 2013 1 Innehåll OO-programmering fortsättning Skapa

Läs mer

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

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck Betrakta följande uttryck a +(b + c) d + e (f + g h) Parsing med Recursive Descent, Avbildningsklasser Tobias Wrigstad (baserat på bilder från Tom Smedsaas) 22 november 2010 Beräkning med regler: multiplikation

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

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

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

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]

Läs mer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

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

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter

Läs mer

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016 Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

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

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

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

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

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,

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

725G61 - Laboration 4 Interaktion och I/O. Johan Falkenjack

725G61 - Laboration 4 Interaktion och I/O. Johan Falkenjack 725G61 - Laboration 4 Interaktion och I/O Johan Falkenjack November 5, 2013 1 Inledning I labb 1-3 har vi tittat på de grundläggande byggstenarna i programmering. Vi kommer återkomma till detta ämne när

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

JAVAUTVECKLING LEKTION 7

JAVAUTVECKLING LEKTION 7 JAVAUTVECKLING LEKTION 7 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Olika språkversioner (Klassen Locale) Utskrift i kommandofönster Inläsning via kommandofönster Standardklassen

Läs mer

F4. programmeringsteknik och Matlab

F4. programmeringsteknik och Matlab Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner

Läs mer

JAVAUTVECKLING LEKTION 4

JAVAUTVECKLING LEKTION 4 JAVAUTVECKLING LEKTION 4 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Iterationer (loopar) Algoritmer Mer om felsökning 1 WHILE-SATSEN String s = JOptionPane.showInputDialog("Talet

Läs mer

Föreläsnings 9 - Exceptions, I/O

Föreläsnings 9 - Exceptions, I/O Föreläsnings 9 - Exceptions, I/O Josef Svenningsson Tisdag 6/11 Undantag - Exceptions Kommer ni ihåg det här programmet? Det var ett av de första ni såg i första föreläsningen. import javax.swing.*; public

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

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

Språkkonventioner och redigering av tal.

Språkkonventioner och redigering av tal. Språkkonventioner och redigering av tal. Kap J3-1 Konventioner för olika språk hanteras med hjälp av klassen java.util.locale Ett objekt i denna klass beskriver en lokal konvention. Lokala konventioner

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F4:1 OOP Objekt-orienterad programmering Föreläsning 4 Metoder klass-metoder instans-metoder Metoder - subrutiner OOP F4:2 Kod som utför en viss operation. Ligger i olika klasser och anropas via operatorn.

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

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

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... } En klassdefinition class A extends B {... Arv definierar en klass A som ärver av B. Klassen A ärver alla fält och metoder som är definierade för B. A är en subklass till B. B är en superklass till A. class

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

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public

Läs mer

Föreläsning 14. Filhantering

Föreläsning 14. Filhantering Föreläsning 14 Filhantering Filhantering Att hantera filer, dvs att läsa eller skriva data till en fil är en viktig del i de flesta program. Ur Javas synvinkel är filer objekt med egenskaper och metoder

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

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

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Astronomi och Teoretisk fysik HT 12 Tentamen FYTA11 Javaprogrammering Onsdag 9 januari 2013, 10:15 14:15 Instruktioner Hjälpmedel: Papper och penna. Behandla

Läs mer

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

//Använd main som ett handtag för att hålla ihop programmet. //Själva programmet finns i övriga klasser. /*==================================================================== Detta program hör ihop med dokumentet EXEMPEL_AVERAGE_POINTS.PDF där det finns förklaringar. ======================================================================*/

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

Programmering för språkteknologer I, VT2012. Rum

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning V: arrayer, metoder, räckvidd (scope), eclipse Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Arrayer Metoder Räckvidd (Scope) Eclipse

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket 1 Länkade listor Likadant som i Ada-kursen. 2 Stack MyStack MyStack

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F12:1 OOP Objekt-orienterad programmering Föreläsning 12 Mer om JOptionPane Undantagshantering Vad är det? try catch Kasta egna undantag Filhantering spara objekt mellan körningar Användardialog via

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

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

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4: (22 januari 2016 F2.1 ) Föreläsning 2 Täcker material från lektion 1, 2, 3 och 4: Datatyper Aritmetik Tecken och strängar Klasser, Objekt Metoder Villkor, villkorssatser och iterationer main-metoden Kodstandard

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java

Läs mer

Programmeringsteknik I

Programmeringsteknik I Programmeringsteknik I Föreläsning 2: Grundläggande Java Johan Öfverstedt Java Grundläggande begrepp Datatyper Selektion if Räckvidd (scope) Iteration while Klasser Objekt Metoder Metodhuvudet Kodstandarden

Läs mer

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java

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öreläsning 3: Booleans, if, switch

Föreläsning 3: Booleans, if, switch TDA 545: Objektorienterad programmering Föreläsning 3: Booleans, if, switch Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Påminnelse om klasser och objekt Boll boll1 = new Boll(5,12); skapar ett nytt

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

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag

Undantagshantering. Fördjupad Java. Fel. Undantag. Fånga Undantag. Grupper av Undantag Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har

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

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag

Undantagshantering. Fördjupad Java. Undantag. Fel. Grupper av Undantag. Fånga Undantag Undantagshantering Fördjupad Java Ett undantag (Exception) är ett objekt som påtalar en ovanlig eller felaktig situation i ett program. Undantag kastas av programmet och kan fångas och hanteras. Java har

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Java Språket Utmatning av Sträng litteraler Variabler

Läs mer

Övning2. Variabler. Data typer

Övning2. Variabler. Data typer Vahid 28 okt 2002 prgk02 Övning2 -Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =, ,!=,!) -String hur man

Läs mer

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Lösningsförslag, tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Astronomi och Teoretisk fysik HT 12 Lösningsförslag, tentamen FYTA11 Javaprogrammering Onsdag 9 januari 2013, 10:15 14:15 Instruktioner Hjälpmedel: Papper och

Läs mer

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

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2012-06-04 Skrivtid: 1400-1700 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till

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

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

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

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander F2 Datatyper och variabler ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Datatyper Java är ett starkt typat språk Varje slags data har en datatyp Datatyp Javasyntax Exempel Teckensträng

Läs mer

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Repetion: Klasser och objekt Vi definierar nya objekttyper i klasser. Ett objekt

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2 Laboration 2 Datastrukturer En liten uppgift Frågor 1 Laboration 2 - Datastrukturer Länkade datastrukturer Stack Kö (En. Queue) Lista

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

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

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

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

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack

725G61 - Laboration 5 Grundläggande objektorientering. Johan Falkenjack 725G61 - Laboration 5 Grundläggande objektorientering Johan Falkenjack November 26, 2013 1 Inledning I labb 1-3 tittade vi på de grundläggande byggstenarna i programmering. Vi lärde oss om variabler, styrstrukturer

Läs mer

Typkonvertering. Java versus C

Typkonvertering. Java versus C Typer Objektorienterad programmering E Typkonvertering Typkonvertering Satser: while, for, if Objekt Föreläsning 2 Implicit konvertering Antag att vi i ett program deklarerat int n=3; double x = 5.2; Då

Läs mer

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

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap. Institutionen för Datavetenskap Göteborgs universitet HT2008 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 4 Exempel på listor (klassen ArrayList). Ett exempel med fält.

Läs mer

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin)

Lektion Java Grunder. Javas historia. Programmeringsspråket Java. Skillnaderna mellan Java och C++ JVM (Javas Virtuella Maskin) Lektion Java Grunder Javas historia Ursprungligen utvecklades Java (1991) för att användas i olika typer av konsumentelektronik (mikrovågsugnar, videoapparater) av programmerare på Sun. Språket kallades

Läs mer

Tentamen ID1004 Objektorienterad programmering May 29, 2012

Tentamen ID1004 Objektorienterad programmering May 29, 2012 Omtentamen för ID1004 Objektorienterad programmering HT11, 29 maj 2012, 09-13 Denna tentamen examinerar 3 högskolepoäng av kursen. Inga hjälpmedel är tillåtna. Tentamen består av 12 frågor. Varje fråga

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

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes Idag statiska metoder och variabler private/public/protected final, abstrakta klasser, gränssnitt, delegering wrapper classes ett lite större exempel Objectorienterad programmering Sida 1 Vad vi vet om

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

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER

Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER Föreläsning 5&6 LOGISKA VARIABLER; IMPLEMENTERA KLASSER; MER ALGORITMER Logiska uttryck datatypen boolean Logiska uttryck kan ha två möjliga värden, true eller false. Variabler av typen boolean kan tilldelas

Läs mer

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

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1) Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet

Läs mer

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye DD2310 Javaprogrammering för Pythonprogrammerare Johan Boye James Gosling pappa till Java Hej.java public class Hej { public static void main( String[] args ) { System.out.println( "Hej" ); Java basics

Läs mer

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada Datastrukturer Vad är en datastruktur? Vad är en datatyp? Primitiva datatyper i Java Icke-primitiva datatyper i Java Minnesexempel med datastrukturer Vektorer i Java Erik Forslin efo@nada.kth.se Rum 1445,

Läs mer

Chapter 3: Using Classes and Objects

Chapter 3: Using Classes and Objects Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop

Läs mer

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1. Objektorienterad programmering E Telefonboken, än en gång Föreläsning 5 Wrapper classes Exempel, histogram. Inldening om undantag. Mer om klassen Påminnelse Vår senaste version bestod av två klasser, bägge

Läs mer

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander F5 Selektion och iteration ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Boolska uttryck Boolska uttryck använder sig av jämförelseoperatorer < > = ==!= Resultatets datatyp är boolean

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-06-11 Skrivtid: 0900 1400 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

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

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

I ett program hantera man ofta samlingar av objekt av samma typ. Fält I ett program hantera man ofta samlingar av objekt av samma typ. Sådana samlingar vill man vanligtvis kunna gruppera ihop till en sammanhängande struktur. För detta ändamål tillhandahåller Java språkkonstruktioner

Läs mer

Objektorienterad programmering D2

Objektorienterad programmering D2 Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste

Läs mer

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

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken. Tentamen Programmeringsteknik I 2015-06-11 Skrivtid: 08:00 13:00 Hjälpmedel: Java-bok Tänk på följande Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Läs mer

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

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 Outline Objektorienterad Programmering (TDDC77) Föreläsning V: arrayer, metoder, räckvidd (scope), eclipse Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Vända om inlästa värden Vända om inlästa

Läs mer

"if"-satsen. Inledande programmering med C# (1DV402)

if-satsen. Inledande programmering med C# (1DV402) "if"-satsen Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i verket if-satsen

Läs mer

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

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Göteborg, Magnus Myréen, 2014-10- 15 Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max

Läs mer

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine. Outline Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Undantag Design Hösttermin 2017 En frukt har ett namn Man kan lägga en frukt i

Läs mer

Objektorienterad Programmering (TDDC77)

Objektorienterad Programmering (TDDC77) Objektorienterad Programmering (TDDC77) Föreläsning XIV: Undantag, Design Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2017 Outline Hashing Undantag Design Outline Hashing Undantag Design En frukt

Läs mer

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.

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. Föreläsning 11 Arrayer Arrayer Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt int[] tal = new int[3]; Kan ha en array av t.ex: Heltal (int) Tecken (char) Personer (objekt av klassen

Läs mer

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F2:1 OOP Objekt-orienterad programmering Föreläsning 2 Deklaration och tilldelning Programsatser Tilldelning Input/Output Selektion Deklaration och tilldelning OOP F2:2 int x; double d; char ch; boolean

Läs mer

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

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering Institutionen för Datavetenskap CTH HT-16, TDA540 Dag: 2017-01-09, Tid: 14.00-18.00 Uppgift 1 a) class används för en klassdeklaration

Läs mer

Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop

Översikt. Skriva och läsa data. Kontrollflöde. Två sorters loopar. For-loop. For-loop Översikt Repetition for-loopar Skriva till och läsa från filer Strömmar Eclipse Hur anpassa till vad du gillar? Skriva och läsa data Institutionen för datavetenskap Programmering 1 Rita Kovordányi 2 Kontrollflöde

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

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

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-06-11 Skrivtid: 0900 1400 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