Föreläsning 8. Föreläsning 8

Storlek: px
Starta visningen från sidan:

Download "Föreläsning 8. Föreläsning 8"

Transkript

1 In- och utmatning av data Utan att kunna läsa och skriva data skulle de flesta program vara ganska meningslösa. Föreläsning 8 Den data som ett program är beroende av kan t.ex. Textfiler Flerdimensionella fält ArrayList enum switch-satsen ges via tangentbordet finnas i en fil hämtas från nätet vara utdata från ett annat program. Föreläsning 8 Ett program kan kan också behöva skriva/skicka data till dessa enheter. Java tillhandahåller ett flertal färdiga klasser för att underlätta I/Ohanteringen. Textfiler Flerdimensionella fält import java.util.scanner; class ReadFromKeyboard ArrayList static void main(string[] args) Scanner keyboard = new Scanner(System.in); System.out.print("Give the integer numbers: "); enum int sum = ; while (keyboard.hasnext()) switch-satsen sum = sum + keyboard.nextint(); Läsa data från tangentbordet Läsa data från textfiler I Java är tangentbordet kopplat till System.in, vilket är ett objekt av typen InputStream. För att underlätta läsningen kopplas System.in till ett Scanner-objekt. För att läsa från en textfil använder vi klasserna File och Scanner. Konstruktor Konstruktorer Scanner(InputStream source) File(String pathname) Constructs a new Scanner that produces values scanned from the specified input stream. Bytes from the stream are converted into characters. Creates a new File instance by converting the given pathname string into an abstract pathname. Konstruktor Scanner(File source) throws FileNotFoundException System.out.println("The sum of the numbers: " + sum); //main //ReadFromKeyboard import java.util.scanner; class ReadFromKeyboard static void main(string[] args) Scanner keyboard = new Scanner(System.in); System.out.print("Give the integer numbers: "); int sum = ; while (keyboard.hasnext()) sum = sum + keyboard.nextint(); System.out.println("The sum of the numbers: " + sum); //main //ReadFromKeyboard Constructs a new Scanner that produces values scanned from the specified file. Bytes from the file are converted into characters. Konstruktorn kastar ett en FileNotFoundException om den angivna filen inte finns. Detta är en s.k. kontrollerande exception som måste fångas eller kastas vidare. 4

2 Skriva till textfiler Läsa data från textfiler För att skriva till en textfil använder vi klassen PrintWriter. Konstruktor Kasta exception import java.util.scanner; vidare import java.io.file; import java.io.filenotfoundexception; class ReadFromTextFile static void main(string[] args) throws FileNotFoundException File in = new File("indata.txt"); Scanner sc = new Scanner(in); Kan resultera i FileNotFoundException int sum = ; while (sc.hasnext()) sum = sum + sc.nextint(); System.out.println("The sum is: " + sum); //main //ReadFromTextFile PrintWriter(String filename) throws FileNotFoundException Operationer Creates a new PrintWriter, without automatic line flushing, with the specified file name. void close() Closes the stream and releases any system resources associated with it. java.util.scanner; import java.io.printwriter; void print(int i) Prints an integer. void print(double d) Prints a double-precision floating-point number.. import java.io.file; java.io.filenotfoundexception; void println(int i) Prints an integer and then terminates the line. importclass java.io.filenotfoundexception; WriteToTextFile class static ReadFromTextFile void main(string[] args) throws FileNotFoundException static void main(string[] args) throws FileNotFoundException PrintWriter out = new PrintWriter("out.txt"); 5 File infor = new (int ifile("indata.txt"); = ; i <= ; i = i + ) Scanner sc out.println(i); = new Scanner(in); int sum = ; while out.close(); (sc.hasnext()) Skriva till textfiler Tvådimensionella fält sum = sum + sc.nextint(); //main //WriteToTextFile exception System.out.println(Kasta "The vidare sum is: " + sum); import java.io.printwriter; import java.io.filenotfoundexception; //main class WriteToTextFile static void main(string[] args) throws FileNotFoundException //ReadFromTextFile Tvådimensionella fält är fält av fält. PrintWriter out = new PrintWriter("out.txt"); for (int i = ; i <= ; i = i + ) out.println(i); out.close(); //main //WriteToTextFile 6 int[][] tabell = new int[][4]; Kan resultera i FileNotFoundException tabell 7 8

3 Tvådimensionella fält Tvådimensionella fält Istället för att skapa ett tvådimensionellt fält med new kan fältet skapas genom att initiera värden till fältet vid deklarationen. int[][] tabell =, 4, 7, 9, , 4,, 68, ,,, 4; 9 4 int[][] tabell =, 4, 7, 9, 5, 4,, 9, ; tabell[].length ger 4 tabell[].length ger Eftersom ett tvådimensionellt fält är ett fält med referenser till ett endimensionellt fält, kan raderna vara olika långa tabell[].length ger , 4,, 5 4 9, ; 9 int[][] tabell =, 4, 7, 9, Arrays.sort(tabell[]) sorterar rad i tabell Arrays.sort(tabell[]) sorterar rad i tabell Arrays.sort(tabell[]) sorterar rad i tabell 9 Design: Problemexempel Skriv ett program som läser in en NxN matris, samt avgör och skriver ut huruvida matrisen är symmetrisk eller inte. Matrisens gradtal ges som indata. För en symmetrisk matris A gäller att aij = aji för alla i och j Diskussion: När vi skall kontrollera om matrisen är symmetrisk utgår vi från att så är fallet. För att handha denna kunskap sätter vi en boolsk variabel, som vi kan kalla okey till värdet true. Sedan genomlöper vi matrisen och om vi då påträffar något element aij för vilket det gäller att aij aji har vi en icke-symmetrisk matris. Detta kommer vi ihåg genom att sätta okey till värdet false. Algoritm: Analys: Indata: Ett gradtal samt en kvadratiskt matris med detta gradtal.. Läs gradtalet n. Läs matrisen A. okey = true; 4. För varje element aij i matrisen A 4.. if (aij aji ) okey = false; 5. if okey Skriv ut Matrisen är symmetrisk.. else Skriv ut Matrisen är INTE symmetrisk.. Datarepresentation: Utdata: Utskrift av huruvida den inlästa matrisen är symmetrisk eller inte. Exempel: Matrisen ger utskriften MATRISEN ÄR SYMMETRISK, medan matrisen ger utskriften MATRISEN ÄR INTE SYMMETRISK, medan matrisen A är av datatypen double[][].

4 Implementation: fortsättning Implementation: static double[][] readmatrix(int size) double[][] thematrix = new double[size][size]; for (int row = ; row < size; row = row + ) for (int col = ; col < size; col = col + ) String input = JOptionPane.showInputDialog("Ge element (" + row + ", " + col + ")"); thematrix[row][col] = Double.parseDouble(input); thematrix; // readmatrix import javax.swing.joptionpane; class Symmetric static void main(string[] args) String input = JOptionPane.showInputDialog("Ange matrisens gradtal: "); int size = Integer.parseInt(input); double[][] matrix = readmatrix(size); if (issymmetric(matrix)) JOptionPane.showMessageDialog(null, "Matrisen är symetrisk!"); else JOptionPane.showMessageDialog(null, "Matrisen är INTE symetrisk!"); // main static double[][] readmatrix(int size) double[][] thematrix = new double[size][size]; for (int row = ; row < size; row = row + ) //before: matrix!= null java.util.scanner; static boolean issymmetric(double[][] matrix) for import (int col = ; col < size; col = col + ) import javax.swing.joptionpane; boolean okay = true; for (int row = ; row = JOptionPane.showInputDialog("Ge element ("<+matrix.length; row +row ",="row++ )col + ")");... input String class Symmetric for (int col = ; col < matrix[row].length; col = col + ) if (matrix[row][col]!= matrix[col][row]) thematrix [row][col] = Double.parseDouble(input); readmatrix(int = false; staticstatic voiddouble[][] main(string[] args) size) okay okay; double[][] thematrix = new double[size][size ]; //issymmetric matrisens gradtal: "); input = JOptionPane.showInputDialog("Ange //Symmetric StringSystem.out.print( "Ge element: "); int size = Integer.parseInt(input); 4 thematrix ; = new Scanner(System.in); Scanner sc double[][] // readmatrix for (intmatrix row = = ; readmatrix(size); row < size; row = row + ) for (int col = ; col < size; col = col + ) if (issymmetric(matrix)) //before:joptionpane.showmessagedialog(null, matrix!= thematrix[row][col] null = sc.nextdouble(); "Matrisen är symetrisk!"); Alternativ implementation av metoden readmatris, med användning av ett Scanner static boolean issymmetric(double[][] matrix) Flerdimensionella fält objekt och inläsning från System.in: else boolean okay = true; JOptionPane.showMessageDialog(null, är INTE kan ha ett godtyckligt antalsymetrisk!"); dimensioner i ett fält, dvs man kan bilda fält for (int row = ;thematrix; row < matrix.length; row = row + "Matrisen )Man av fält av fält av fält av. //formain col = ; col < matrix[row].length; col = col + ) import java.util.scanner; (int // readmatrix if (matrix[row][col]!= matrix[col][row]) static double[][] readmatrix(int size) cube int[][][] cube = new int[][][4]; double[][] thematrix = new double[size][size]; okay = false; System.out.print( "Ge element: "); Scanner sc = new Scanner(System.in); okay; for (int row = ; row < size; row = row + ) for (int col = ; col < size; col = col + ) //issymmetric thematrix[row][col] = sc.nextdouble(); //Symmetric thematrix; // readmatrix 5 6

5 Flerdimensionella fält Klassen ArrayList En bild kan lagras som ett tvådimensionellt fält av bildpunkter (eller pixels). Ett fält är en statisk datastruktur, vilket innebär att storleken på fältet måste anges när fältet skapas. Detta innebär att fält inte är särskilt väl anpassade för att handha dynamiska datasamlingar, dvs datasamlingar som under sin livstid kan variera i storlek. I en gråskalebild är varje bildpunkt ett heltal i intervallet [, 55], där betecknar svart och 55 betecknar vitt. För att handha dynamiska datasamlingar i ett fält måste man själv utveckla programkod för att t.ex: I en färgbild utgörs varje bildpunkt av tre heltal i intervallet [, 55], som representerar intensiteten av färgerna rött, grönt respektive blått. En gråskalebild respektive en färgbild med höjden 8 pixels och bredden 6 pixels avbildas således enligt: int[][] grayimage = new int[8][6]; int[][][] colorimage = new int[8][6][]; - ta bort ett element ur fältet - lägga in ett nytt element på en given position i fältet - öka storleken på fältet om ett nytt element inte ryms. Klassen ArrayList är en standardklass (av flera) för all handha samlingar av objekt. Särskilt när vi handhar dynamiska datasamlingar, är det lämpligt att använda klassen ArrayList istället för ett endimensionellt fält. ArrayList finns i paketet java.util. 7 8 Klassen ArrayList<E> Klassen ArrayList<E> Metod Metod int size() erar antalet element i listan ArrayList<E>() skapar en tom ArrayList för element av typen E. boolean isempty() erar true om listan är tom, annars eras false void add(e elem) lägger in elem sist i listan (d.v.s. efter de element som redan finns i listan). int indexof(e elem) erar index för elementet elem om detta finns i listan, annars eras - void add(int pos, E elem) lägger in elem på plats pos. Efterföljande element flyttas en position framåt i listan. boolean cointains(object elem) erar true om elem finns i listan, annars eras false E get(int pos) erar elementet på plats pos. void clear() tar bort alla elementen i listan E set(int pos, E elem) ersätter elementet på plats pos med elem, erar elementet som fanns på platsen pos. String tostring() erar en textrepresentation på formen [e, e,..., en] E remove(int pos) tar bort elementet på plats pos, erar det borttagna elementet. Efterföljande element i listan flyttas en position bakåt i listan. Anm: Metoderna indexof och cointains förutsätter att objekten i listan kan jämföras, d.v.s. klassen som objekten tillhör måste definiera metoden boolean equals(object obj) Alla standardklasser, såsom String, Integer och Double, definierar metoden equals. 9

6 Klassen ArrayList Autoboxing och auto-unboxing Klassen ArrayList är en generisk klass. Detta innebär att när man skapar en lista av klassen ArrayList måste man ange en typparameter som specificerar vilken typ av objekt som skall lagras lagras i listan. Typomvandling sker automatiskt mellan primära datatyper och motsvarande omslagsklass. Detta kallas för autoboxing respektive auto-unboxing. Exempel: Istället för att skriva Integer talobjekt = new Integer(); int tal = talobjekt.tovalue(); ArrayList<String> words = new ArrayList<String>(); ArrayList<Integer> values = new ArrayList<Integer>(); ArrayList<BigInteger> bigvalues = new ArrayList<BigInteger>(); ArrayList<Person> members = new ArrayList<Person>(); kan man for-satsen skriva Genomlöpning av hela samlingarna med den vanliga I en ArrayList kan man endast spara objekt, dvs. en ArrayList kan inte innehålla dedouble[] primitiva datatyperna double, boolean och char). values(t.ex. = int, new double[]; Vill man handha primitiva datatyper med hjälp av en ArrayList måste man ArrayList<String> listan = new ArrayList<String>(); lagra objekt.av omslagsklass.. motsvarande. Integer talobjekt = ; //autoboxing int tal = talobjekt; //auto-unboxing for (int index = ; index < values.length; index = index +) System.out.println(values[index]); for (int pos = ; pos < listan.size(); pos = pos +) System.out.println(listan.get(pos)); Förenklad for-sats Problemexempel Genomlöpning av hela samlingarna med den förenklade for-satsen När man vill löpa igenom alla objekt i en samlingar (t.ex. ett objekt av ArrayList eller ett en-dimensionellt fält) finns den förenklade for-satsen. Skriv en metod double[] values = new double[]; static ArrayList<Integer> readlista() ArrayList<String> listan = new ArrayList<String>(); double[] values = new double[];... som läser in en indatasekvens består av osorterade heltal från standard input ArrayList<String> listan = new ArrayList<String>(); och erar dessa i en ArrayList. I indatasekvensen kan samma tal for (int index = ; index < values.length; index = index +) for (double v : values) förekomma flera gånger, men i listan skall endast den första förekomsten av System.out.println(values[index]); varje unikt tal skall lagras. System.out.println(v); for (int pos = ; pos < listan.size(); pos = pos +) Genomlöpning av hela samlingarna med den vanliga for-satsen System.out.println(listan.get(pos)); for (String str : listan) System.out.println(str); double[] values = new double[]; Exempel: Antag att indatasekvensen består av talen , Genomlöpning av hela samlingarna med den förenklade for-satsen ett anrop av metoden readlist skall då era en lista som innehåller talen, 4,, 5, och. ArrayList<String> listan = new ArrayList<String>(); for (double v : values) System.out.println(v); for (String str : listan) System.out.println(str); 4

7 Klassen PhoneBook implementerad med fält Algoritm:. while (fler tal att läsa).. läs talet.. if (talet inte finns i listan ) lagra talet i listan;. era listan Maximal storlek måste anges class PhoneBook Entry[] book; class Entry int count; String name; PhoneBook(int size) String number; book = new Entry[size]; Entry(String name, String number) Antalet element count = ; this.name = name; måste bokföras //constructor this.number = number; Implementation: import java.util.arraylist; class PhoneBook static ArrayList<Integer> readlist() void put(string name, String nr) //constructor class PhoneBook Entry[] book; ArrayList<Integer> list = new ArrayList<Integer>(); classbook[count] Entry =new Entry(name, nr); String getname() count = count + ; book; Scanner in = new Scanner(System.in); intarraylist<entry> count; name; //put String name; while (in.hasnextint()) //getname PhoneBook() size) String get(string name) int value = in.nextint(); PhoneBook(int String getnumber() String for (int i = ;number; i < count; i = i +) if (!list.contains(value)) number; book = new ArrayList<Entry>(); if (name.equals(book[i].getname())) book = new Entry[size]; //getnumber list.add(value); class Entry name, String book[i].getnumber(); Entry(String number) //Entry //constructor null; count = ; String //get this.name = name; name; list; //PhoneBook //constructor void put(string name, String nr) String number; //readlist this.number = number; book.add(new Entry(name, nr)); static ArrayList<Integer> Entry(String name, String number) void put(string name, String nr) 5 readlist() 6 //constructor //put book[count] = new Entry(name, this.name = name; ArrayList<Integer> list nr); = new ArrayList<Integer>(); String getname() count String =Scanner countget(string + in ; = new name) this.number Scanner(System.in); name;= number; //putfor (Entry //constructor : book) whilee(in.hasnextint()) //getname ifimplementation (name.equals(e.getname())) Klassen PhoneBook medname) Uppräkningstyper - enum String get(string String StringgetNumber() getname() int value =ArrayList in.nextint(); for (int i =if;(!list.contains(value)) i <e.getnumber(); count; i = i +) I blandname; vill man kunna använda variabler som endast skall kunna anta vissa import java.util.arraylist; number; givna värden: null; class PhoneBook if (name.equals(book[i].getname())) //getname ArrayList<Entry> book; //getnumber gender: MALE, FEMALE //get list.add(value); PhoneBook() book[i].getnumber(); book = new ArrayList<Entry>(); String getnumber() DEAD //Entry class Entry state: READY, RUNNING, BLOCKED, //constructor //PhoneBook null; String name; void put(string name, String nr) suit:number; HEARTS, SPADES, DIAMONDS, CLUBS String number; nr)); book.add(new //getentry(name, Entry(String name, String number) //getnumber season: WINTER, SPRING, SUMMER, FALL //put = name; list;this.name String get(string name) this.number = number; //PhoneBook //Entry bearing: NORTH, WEST, SOUTH, EAST //readlist for (Entry e : book) if (name.equals(e.getname())) e.getnumber(); null; //get //PhoneBook //constructor I Java kan detta göras genom att deklarera särskilda uppräkningsklasser: String getname() name; //getname enum suit enum inte class HEARTS, SPADES, DIAMONDS, CLUBS; String getnumber() number; //getnumber //Entry //suit 7 Räkna upp alla värden (instanser) typen skall ha 8

8 Uppräkningstyper - enum Lägga till tillstånd på enum-konstanter Eftersom enum definierar en klass kan man ge tillstånd och beteenden till objekten som tillhör en uppräkningstyp, Varje deklarerat (uppräknat) värde i en enum är en instans av klassen. Varje värde är implicit, static och final, alltså en klasskonstant. Metod int compareto(e obj) erar ett negativt heltal om aktuellt objekt är mindre än argumentet obj, om aktuellt objekt och argumentet obj är lika och ett positivt heltal om aktuellt objekt är större än argumentet obj. Jämförelsen görs efter den ordning objekten har deklarerats boolean equals(e obj) erar true om obj är lika med aktuellt objekt, annars eras false String name() erar namnet på aktuellt objekt (enligt deklarationen) int I ordinal() erar ordningstalet för aktuellt objekt (enligt deklarationen) String tostring() erar namnet på aktuellt objekt (enligt deklarationen) static E valueof(string str) erar objektet med det angivna namnet static E[] values() erar ett fält innehållande objekten i klassen Tillståndet hos en instans beskrivs med hjälp av instansvariabler. Tillståndet för en instans ges som argument till instansen. En konstruktor för att initiera tillståndet behöver definieras. Konstruktorn får/kan inte vara. Argument som anger tillståndet 9 Konstruktor som sätter tillståndet switch-satsen Lägga till beteenden på enum-konstanter enum enum DayOfWeek DayOfWeek MONDAY, MONDAY,TUESDAY, TUESDAY,WEDNESDAY, WEDNESDAY,THURSDAY, THURSDAY, FRIDAY, FRIDAY, SATURDAY, SATURDAY, SUNDAY; SUNDAY; int int nrinweek() nrinweek() this.ordinal() this.ordinal() ++ ; ; //nrinweek //nrinweek DayOfWeek DayOfWeek tomorrow() tomorrow() DayOfWeek[] DayOfWeek[] days days == DayOfWeek.values(); DayOfWeek.values(); days[(this.ordinal() days[(this.ordinal() ++ ) ) % % days.length]; days.length]; //tomorrow //tomorrow DayOfWeek DayOfWeek yesterday() yesterday() DayOfWeek[] DayOfWeek[] days days == DayOfWeek.values(); DayOfWeek.values(); days[(this.ordinal() days[(this.ordinal() -- ) ) % % days.length]; days.length]; //yesterday //yesterday static static DayOfWeek DayOfWeek getdaywithnr(int getdaywithnr(int daynr) daynr) DayOfWeek[] DayOfWeek[] days days == DayOfWeek.values(); DayOfWeek.values(); days[daynr days[daynr -- ]; ]; //getdaywithnr //getdaywithnr //DayOfWeek //DayOfWeek enum enum Customer Customer CHILD(5), CHILD(5), ADULT(), ADULT(), SENIOR(6); SENIOR(6); int int price; price; Customer(int Customer(int price) price) this.price this.price == price; price; //constructor //constructor int int getprice() getprice() price; price; //getprice //getprice //Customer //Customer En switch-sats är en selekteringssats med flervalsalternativ. Varje alternativ beskrivs av en case-sats; som består dels av ett case-uttryck, dels av de som anger vad som skall göras om alternativet inträffar. Returnerar vilket ordningsnummer i veckan Den aktuell dagen har I switch-satsen testas värdet av ett uttryck (expression) mot ett antal givna case-uttryck (value, value, ). Returnerar dagen efter aktuell dag Uttrycket (expression) måste vara en heltalstyp, typen char eller en uppräkningstyp (enum). Returnerar dagen före aktuell dag case-uttrycken måste ha samma typ som expression. Returnerar dagen med ordningsnummer daynr i veckan case-uttrycken måste ha olika värden. switch-satsen kan innehålla ett default-alternativ, som avser de möjliga alternativ som inte anges i ett eget case-uttryck Syntax: switch (expression) case value: case value: case value:...(more cases)... default:

9 switch-satsen Först evalueras uttrycket expression. Det erhållna värdet jämförs med värdena av caseuttrycken. Om det finns ett case-uttryck som har samma värde som expression, sker ett hopp till den sats som följer efter detta case-uttryck. Annars sker ett hopp till satsen efter default-alternativet (om ett sådant finns). switch-satsen: Flödesscheman Syntax: switch (expression) case value: case value: case value:...(more cases)... default: uttryck value value value value5 value4 enum DayOfWeek MONDAY,TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;..en case-sats, forsätter förbi Exekveringen. av andra case-uttryck tills switch-blocket är slut eller static void tellitlikeitis(dayofweek day) //DayOfWeek tills ett break-uttryck påträffas. Shorthand uttryck switch (day)motsvarand Flera case-uttryck kan således finnas framför ett visst alternativ. case MONDAY: Oops: om man glömmer ++x x+ break körs bad."); även System.out.println("Mondaysnästa are case. --x x- case FRIDAY: x++ x+ System.out.println("Fridays are better."); x-x- case SATURDAY: switch-satsen: Exempel Shorthand operatorer x += y x+y case SUNDAY: x = I Java finns ett antal shorthand operatorer. enum DayOfWeek för increment och decrement, både i en prefix och i en postfix are best."); xthursday, -= y FRIDAY, SATURDAY, SUNDAY;System.out.println("Weekends x =Dels xfinns-delsoperatorer yfinns sammansatta MONDAY,TUESDAY, WEDNESDAY, version, tilldelningsoperatorer. static void tellitlikeitis(dayofweek day) //DayOfWeek Motsvarand uttryck switch (day) y x *= x = x *Shorthand y default: case MONDAY: ++x x+ System.out.println("Mondays are bad."); System.out.println("Midweek days are so-so."); x- x/= y x = x / y --x case FRIDAY: x++ x+ System.out.println("Fridays are better."); Utförs för SATURDAY x-x- och SUNDAY //tellitlikeitis case SATURDAY: Utförs för TUESDAY, WEDNESDAY och THURSDAY uttryck value case SUNDAY: System.out.println("Weekends are best."); default: System.out.println("Midweek days are so-so."); //tellitlikeitis 5 value value x += y x=x+y x -= y x *= y x=x-y x=x*y x /= y x=x/y value4 value5 4 6

10 Shorthand operatorer Efter som operatorerna ++ och -- ändrar värdet på en variabel måste man vara observant om man använder dessa operatorer i kombination med en tilldelningsoperator. Betrakta nedanstående : firstnumber = ; secondnumber = ++firstnumber; Efter att na har utförts har både variabeln fistnumber och secondnumber värdet. När däremot följande exekveras firstnumber = ; secondnumber = firstnumber++; Har variabeln fistnumber värdet och variabeln secondnumber värdet. Prefixoperatorn (++i) utförs före tilldelningsoperatorn, medan postfixoperatorn (i++) utförs efter tilldelningsoperatorn. Använd shorthand operatorerna med med försiktighet! 7

Tvådimensionella fält

Tvådimensionella fält Tvådimensionella fält Tvådimensionella fält är fält av fält. int[][] tabell = new int[][4]; tabell Tvådimensionella fält Istället för att skapa ett tvådimensionellt fält med new kan fältet skapas genom

Läs mer

Föreläsning 7. Flerdimensionella fält ArrayList. Flerdimensionella. ArrayList. In- och utmatning av data

Föreläsning 7. Flerdimensionella fält ArrayList. Flerdimensionella. ArrayList. In- och utmatning av data Föreläsning 7 Läsa Läsa och och skriva skriva textfiler textfiler Flerdimensionella Flerdimensionella fält fält ArrayList ArrayList In- och utmatning av data Utan att kunna läsa och skriva data skulle

Läs mer

Föreläsning 8 Flerdimensionella fält ArrayList enum switch-satsen

Föreläsning 8 Flerdimensionella fält ArrayList enum switch-satsen Föreläsning 8 Flerdimensionella fält ArrayList enum switch-satsen Tvådimensionella fält Tvådimensionella fält är fält av fält. int[][] tabell = new int[3][4]; tabell 1 2 1 2 3 3 1 2 3 1 1 2 3 1 2 2 Tvådimensionella

Läs mer

Flerdimensionella fält och textfiler

Flerdimensionella fält och textfiler Flerdimensionella fält och textfiler Föreläsning 7 TDA54 - Objektorienterad Programmering Sammanfattning Fält (arrays) Sträng In- och utmatning av data Utan att kunna läsa och skriva data skulle de flesta

Läs mer

Föreläsning 8. Föreläsning 8 Textfiler Flerdimensionella fält ArrayList enum switch-satsen

Föreläsning 8. Föreläsning 8 Textfiler Flerdimensionella fält ArrayList enum switch-satsen In- och utmatning av data Föreläsning 8 Textfiler Flerdimensionella fält ArrayList enum switch-satsen Utan att kunna läsa och skriva data skulle de flesta program vara ganska meningslösa. Den data som

Läs mer

Föreläsning 8. Föreläsning 8 Flerdimensionella fält ArrayList enum. Flerdimensionella. ArrayList enum switch-satsen. switch-satsen

Föreläsning 8. Föreläsning 8 Flerdimensionella fält ArrayList enum. Flerdimensionella. ArrayList enum switch-satsen. switch-satsen Föreläsning 8 Flerdimensionella fält ArrayList enum Flerdimensionella switch-satsen Föreläsning 8 ArrayList enum switch-satsen Tvådimensionella fält Tvådimensionella fält är fält av fält. int[][] tabell

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 7: flerdimensionella fält och textfiler Dr. Alex Gerdes Dr. Carlo A. Furia Hösttermin 216 Chalmers University of Technology Sammanfattning föreläsning 6 Endimensionella

Läs mer

Föreläsning 8. Föreläsning 8 Flerdimensionella fält ArrayList enum. Flerdimensionella. ArrayList enum switch-satsen. switch-satsen

Föreläsning 8. Föreläsning 8 Flerdimensionella fält ArrayList enum. Flerdimensionella. ArrayList enum switch-satsen. switch-satsen Föreläsning 8 Flerdimensionella fält ArrayList enum Flerdimensionella fält switch-satsen Föreläsning 8 ArrayList enum switch-satsen Tvådimensionella fält Tvådimensionella fält är fält av fält. int[][]

Läs mer

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir

Läs mer

Repetition av OOP- och Javabegrepp

Repetition av OOP- och Javabegrepp ArrayList Repetition av OOP- och Javabegrepp En lista i vilken man kan lagra objekt Implementerar List-interfacet Skiljer sig från ett vanligt endimensionellt fält: Dynamisk expanderar när den blir

Läs mer

Föreläsning 8. Klassen String Mer om fält Klassen ArrayList

Föreläsning 8. Klassen String Mer om fält Klassen ArrayList Föreläsning 8 Klassen String Mer om fält Klassen ArrayList Standardklassen String Texter handhas i Java med standardklassen String. Ett objekt av klassen String består av en följd av tecken, dvs element

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

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

Saker du ska kunna Föreläsning 13 & 14 Saker du ska kunna Föreläsning 13 & 14 LISTOR Ta bort element från en vektor Både sorterad och osorterad Söka upp element i en vektor Linjärsökning räcker (jag har även visat binärsökning) Registrering

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

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

Föreläsning 7. for-satsen Fält Föreläsning 7 for-satsen Fält for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende: for (initiering; villkor; ändring) sats; for-satsen är ekvivalent med följande

Läs mer

Föreläsning 3. Iteration while-satsen

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

Läs mer

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

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

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0.. Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private

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

Arrayer. results

Arrayer. results Arrayer 85 Arrayer Deklarerar utrymme för många variabler i en enda deklaration Array (fält) Varje värde har ett numeriskt index i Java indexeras en array med N element med indexen till N-1 Exempel: 1

Läs mer

Klassen String Mer om fält Något om inläsning

Klassen String Mer om fält Något om inläsning Standardklassen String TDA43 I Programmerade system Föreläsning (OH-bilder 8) Klassen String Mer om fält Något om inläsning Christer Carlsson Texter handhas i Java med standardklassen String. Ett objekt

Läs mer

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

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen Föreläsning 3 Iteration while-satsen for-satsen do-satsen Datatypen double De enkla datatyperna, som används för att lagra tal (t.ex. int och double), har en begränsad storlek och representerar således

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

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

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer Exempel for (int antal=; antal < 75; antal++) System.out.println (antal); Arrayer for (int num=5; num

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

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

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

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 Lösningsförslag till tentamen 150117 a) Utskriften blir: 7 Metoden returnerar värdet av den största siffran som ingår i talet som skickas till metoden. b) Utskriften blir k= 5 a= [3, 1] b= [3,

Läs mer

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:

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: for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende: TDA143 I1 Programmerade system Föreläsning 8 (OH-bilder 7) for-satsen for ( initiering; villkor; ändring) sats;

Läs mer

Instuderingsfrågor, del E

Instuderingsfrågor, del E Uppgift 1. Instuderingsfrågor, del E Objektorienterad programmering, Z1 Skriv en en deklaration som skapar ett 2-dimensionellt heltalsfält med följande utseende: 1 3 6 10 2 5 9 13 4 8 12 15 7 11 14 16

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 3. Föreläsning 3. Iteration. while-satsen for-satsen do-satsen. while-satsen. do-satsen. Datatypen double

Föreläsning 3. Föreläsning 3. Iteration. while-satsen for-satsen do-satsen. while-satsen. do-satsen. Datatypen double Föreläsning 3 Föreläsning 3 Iteration while-satsen for-satseniteration do-satsen while-satsen for-satsen do-satsen Datatypen double De enkla datatyperna, som används för att lagra tal (t.ex. int och double),

Läs mer

Iteration. Föreläsning 3. TDA540 - Objektorienterad Programmering

Iteration. Föreläsning 3. TDA540 - Objektorienterad Programmering Iteration Föreläsning 3 TDA540 - Objektorienterad Programmering Meddelande Kursrepresentanter: - Mattias Ajander, Daniel Hultgren, Sanna Sandberg - Mejladresserna finns på kurshemsidan Jätte välkommen

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

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

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

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Iteration: while-satsen, for-satsen och do-satsen Dr. Alex Gerdes Dr. Carlo A. Furia Hösttermin 2016 Chalmers University of Technology Meddelande Studentrepresentanter Reflektera

Läs mer

Föreläsning 6. Fält. Fält Klassen String. Fält

Föreläsning 6. Fält. Fält Klassen String. Fält Föreläsning 6 Fält Fält Klassen Klassen String String 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

Läs mer

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

Föreläsning Innehåll. Hantera många element. Exempel: polygon Godtyckligt antal element. Exempel: polygon forts Föreläsning 11-12 Innehåll Hantera många element Tidigare har vi använt vektorer för att lagra många element av samma tp. Eempel: Klassen ArraList Inläsning från tetfil, utskrift på tetfil int[] nbrs

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

Objektorienterad programmering Objektorienterad programmering Föreläsning 8: testning och felhantering Dr. Alex Gerdes Dr. Carlo A. Furia Hösttermin 2016 Chalmers University of Technology Sammanfattning föreläsning 7 Skriva och läsa

Läs mer

Del A (obligatorisk för alla)

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

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F2:1 OOP Objekt-orienterad programmering Föreläsning 2 Input/Output Programsatser Selektion Output OOP F2:2 Görs via System.out, anropa antingen print eller println: System.out.print("Hej"); System.out.println(

Läs mer

Objektorienterad programmering

Objektorienterad programmering Objektorienterad programmering Föreläsning 6: fält och klassen String Dr. Alex Gerdes Dr. Carlo A. Furia Hösttermin 2016 Chalmers University of Technology Sammanfattning föreläsning 5 Abstraktion Abstraktion

Läs mer

Parallellism, återblick

Parallellism, återblick Parallellism, återblick Josef Svenningsson December 11, 2012 Lab7 Det är problem med lab7. Gå med i den grupp som ni använt tidigare. DEMO Flera saker händer samtidigt Ofta hanterar program olika indata

Läs mer

Testning och felhantering

Testning och felhantering Testning och felhantering Föreläsning 8 TDA540 - Objektorienterad Programmering Sammanfattning Textfiler Flerdimensionella fält ArrayList (dynamiska vs. statiska datastrukturer) Shorthand operatorer Testning

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

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

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 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

Mer om klasser och objekt

Mer om klasser och objekt Klassvariabler och klassmetoder En klass kan innehålla klassvariabler och klassmetoder. TDA143 I1 Programmerade system Föreläsning 5 (OH-bilder 5) Mer om klasser och objekt Christer Carlsson Det som skiljer

Läs mer

Laboration 4: Digitala bilder

Laboration 4: Digitala bilder Objektorienterad programmering, Z : Digitala bilder Syfte I denna laboration skall vi återigen behandla transformering av data, denna gång avseende digitala bilder. Syftet med laborationen är att få förståelse

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

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

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

Läs mer

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

TENTAMEN OOP

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

Läs mer

Föreläsning 7. Fält Klassen String

Föreläsning 7. Fält Klassen String Föreläsning 7 Fält Klassen String 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

Läs mer

Iteration while-satsen

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

Läs mer

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander

F12 - Collections. ID1004 Objektorienterad programmering Fredrik Kilander F12 - Collections ID1004 Objektorienterad programmering Fredrik Kilander fki@kth.se Collections (samlingar) En collection är ett objekt som fungerar som en samling av andra objekt En collection erbjuder

Läs mer

Lösningsförslag till tentamen 150317

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

Läs mer

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 2014-10-17 Skrivtid: 0800-1300 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

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

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2

Objektorienterad programmering E. Algoritmer. Telefonboken, påminnelse (och litet tillägg), 1. Telefonboken, påminnelse (och litet tillägg), 2 Objektorienterad programmering E Algoritmer Linjär sökning Binär sökning Tidsuppskattningar Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk; dess syntax och semantik, bibliotek

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-03-19 Skrivtid: 14:00 19: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

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

Abstrakt datatyp. -Algoritmer och Datastrukturer- För utveckling av verksamhet, produkter och livskvalitet. -Algoritmer och Datastrukturer- Abstrakt datatyp Datatyp för en variabel Betecknar i ett programmeringsspråk den mängd värden variabeln får anta. T ex kan en variabel av typ boolean anta värdena true och

Läs mer

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk Repetition EDAA10 Objekt-orientering Java är ett objekt-orienterat programmeringsspråk Program byggs upp av klasser och objekt Objekt instantieras från klasser Klasser och objekt innehåller attribut och

Läs mer

Enkla variabler kontra referensvariabel

Enkla variabler kontra referensvariabel Enkla variabler kontra referensvariabel En variabel är ett namngivet minnesutrymme i datorns primärminne. En variabel som används för att representera en primitiv datatyp kallas för enkel variabel. Deklarationssatsen

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 Lösningsförslag till tentamen 140828 a) public class MyMax { public static void main(string[] args) { //5 ändra String till String[] System.out.println("Maximum is: " + maximum(5, 7)); //2 ändra

Läs mer

Fält och klassen String

Fält och klassen String Fält och klassen String Föreläsning 6 TDA540 - Objektorienterad Programmering Meddelande Ni får inte ändra Robot.java Börjar med rätta efter deadlinen Sammanfattning Abstraktion Abstraktion Abstraktion

Läs mer

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 bänken.

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 bänken. Tentamen Programmeringsteknik I 2015-01-10 Skrivtid: 8.00 13.00 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

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

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 2018-03-16 Skrivtid: 8:00 13:00 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

Del A (obligatorisk för alla)

Del A (obligatorisk för alla) Del A (obligatorisk för alla) A1. Koden följer garanterat namnkonventionerna. Ringa in rätta svar och lämna in tillsammans med dina övriga svar! a) Hur många objekt skapas av följande kod? World w = new

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

Föreläsning 3. Föreläsning 3

Föreläsning 3. Föreläsning 3 Datatypen De enkla datatyperna, som används för att lagra tal (t.ex. int och ), har en begränsad storlek och representerar således endast en delmängd av de verkliga talen. Föreläsning 3 Detta innebär att

Läs mer

Föreläsning 3. Föreläsning 3

Föreläsning 3. Föreläsning 3 Datatypen De enkla datatyperna, som används för att lagra tal (t.ex. int och ), har en begränsad storlek och representerar således endast en delmängd av de verkliga talen. Föreläsning 3 Detta innebär att

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

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

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

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

Lösningsförslag: Instuderingsfrågor, del A Uppgift 1. Objektorienterad programmering, Z1 Lösningsförslag: Instuderingsfrågor, del A Följande regler gäller för namngivning av identifierare i Java: 1. Ett identifierarnamn består endast av bokstäver,

Läs mer

Föreläsning 3. Stack

Föreläsning 3. Stack Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista ADT Stack Grundprinciper: En stack

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

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

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

TENTAMEN OOP

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

Läs mer

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

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

public class BoundedCounter {

public class BoundedCounter { Uppgift 1 I Javas standardbibliotek finns en klass för rektanglar. Nedanstående kod visar relevanta delar av klassen: public class Rectangle {... public Rectangle(int height, int weight) {... public Rectangle(int

Läs mer

Hur ser ett Java-program ut?

Hur ser ett Java-program ut? (27 augusti 2012 Repetitionsmaterial 1 ) Hur ser ett Java-program ut? // Ett första Java-program som skriver // ut ett meddelande på terminalen public class HelloWorld { public static void main(string

Läs mer

Föreläsning 3. Stack

Föreläsning 3. Stack Föreläsning 3 Stack Föreläsning 3 ADT Stack Stack JCF Tillämpning Utvärdera ett postfix uttryck Stack implementerad med en array Stack implementerad med en länkad lista Evaluate postfix expressions Läsanvisningar

Läs mer

Algoritmer. Två gränssnitt

Algoritmer. Två gränssnitt Objektorienterad programmering E Algoritmer Sökning Linjär sökning Binär sökning Tidsuppskattningar Sortering Insättningssortering Föreläsning 9 Vad behöver en programmerare kunna? (Minst) ett programspråk;

Läs mer

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Sammanfattning och repetition utgående från typiska tentamensuppgifter (2 mars 2018 F6 1 ) Dagens föreläsning Sammanfattning och repetition utgående från typiska tentamensuppgifter (2 mars 2018 F6 2 ) A-fråga Hur många objekt skapas av nedanstående kod? World w = new World();

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 Lösningsförslag till tentamen 150418 a) i) Utskriften blir: ii) [8, 3, 9, 4, 5] Metoden mystery flyttar om elementen i fältet arr på så sätt att alla elementen, förutom det första, flyttas ett

Läs mer

Skillnader mellan Python och Java

Skillnader mellan Python och Java Java Utvecklat på SUN Microsystems mitten 1990-talet Ursprungligen för Webprogram Nu mycket spritt Massor med läroböcker Vi använder Lewis&Loftus http://javasuncom/javase/6/docs/api/ Skillnader mellan

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 Lösningsförslag till tentamen 131220 a) Första felet beror på att namnet på klassen är felstavat i konstruktorn! Således har vi ingen konstruktor utan en metod med namnet Trubel. En metod måste

Läs mer

DAT043 Objektorienterad Programmering

DAT043 Objektorienterad Programmering DAT043 Objektorienterad Programmering Detta är en exempeltenta som innehåller gamla tentauppgifter av ungefär liknande slag som ni kan förvänta er se på ordinarie tenta i Del 1 respektive Del 2. Dock är

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 Lösningsförslag till tentamen 170314 a) Falskt. Talområdet för ett 8-bitars tal på tvåkomplementsform är -128 till 127. b) Sant. c) Falskt, HTTP är ett kommunikationsprotokoll som används för

Läs mer

Föreläsning 1. Abstrakta datatyper, listor och effektivitet

Föreläsning 1. Abstrakta datatyper, listor och effektivitet Föreläsning 1 Abstrakta datatyper, listor och effektivitet Föreläsning 1 Datastrukturer Abstrakta DataTyper ADT Lista Lista och Java Collections Framework (ArrayList) Lista implementerad med en array Analys

Läs mer