Föreläsning REPETITION & EXTENTA

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

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

Föreläsning 3-4 Innehåll

Föreläsning ALGORITMER: SÖKNING, REGISTRERING, SORTERING

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

Föreläsning 9-10 Innehåll

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

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Om att lära sig programmera. Föreläsning 1-2 Innehåll.

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

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

Föreläsning 1 & 2 INTRODUKTION

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

Föreläsning 1 & 2 INTRODUKTION

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

Föreläsning 5-6 Innehåll

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

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

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

Föreläsning 5 Innehåll

Föreläsning 10 OM DELMÅLSKONTROLLEN ; VARIABLERS SYNLIGHET STRING OCH STRINGBUILDER

Föreläsning 5 Innehåll. Val av algoritm och datastruktur. Analys av algoritmer. Tidsåtgång och problemets storlek

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

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

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

Algoritmer och effektivitet. Föreläsning 5 Innehåll. Analys av algoritmer. Analys av algoritmer Tidskomplexitet. Algoritmer och effektivitet

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

Tentamen OOP

Typkonvertering. Java versus C

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

JAVAUTVECKLING LEKTION 8

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

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

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

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

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

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

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

Del A (obligatorisk för alla)

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

F4. programmeringsteknik och Matlab

Föreläsning Innehåll. Checklista. Några metoder i klassen ArrayList<E> Exempel på vad du ska kunna

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

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

Programmering A. Johan Eliasson

725G61 - Laboration 2 Loopar och arrayer. Johan Falkenjack

Objektorienterad programmering i Java

Föreläsning 7 Innehåll. Rekursion. Rekursiv problemlösning. Rekursiv problemlösning Mönster för rekursiv algoritm. Rekursion. Rekursivt tänkande:

Föreläsning 2, vecka 8: Repetition

2. Betrakta följande program, där fyra heltal läses från tangentbordet och några (ointressanta) beräkningar görs:

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

Namn: Personnr: 1 2D1310 Programmeringsteknik i Java för B,V (1p) 13 januari 2001, kl Hjälpmedel: En Javabok. För betyget godkänt krävs at

Repetition av OOP- och Javabegrepp

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

Repetition av OOP- och Javabegrepp

SMD 134 Objektorienterad programmering

F9 - Polymorfism. ID1004 Objektorienterad programmering Fredrik Kilander

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

Instuderingsfrågor, del D

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Föreläsning Innehåll. Generisk klass. Några metoder i klassen ArrayList<E>

Tentamen , Introduktion till Java, dtaa98, dtea53

Instuderingsfrågor, del E

Arrayer (fält)

Tentamen, EDAA20/EDA501 Programmering

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

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

Del A (obligatorisk för alla)

Tentamen, EDA501 Programmering M L TM W K V

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

Föreläsning 13 Innehåll

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

Föreläsning 1-2 innehåll

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

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

Algoritmer. Två gränssnitt

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

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

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

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

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

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

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

Repetition av viktiga begrepp inom objektorienterad programmering

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

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

Tentamen ID1004 Objektorienterad programmering April 7, 2015

TDDC77 Objektorienterad Programmering

1 Repetition av viktiga begrepp inom objektorienterad programmering

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

Objektorienterad Programmering (TDDC77)

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

OOP Objekt-orienterad programmering

Tentamen i Objektorienterad programmering

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

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 ID1004 Objektorienterad programmering May 29, 2012

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

OOP Objekt-orienterad programmering

Transkript:

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 de täcker givetvis inte hela kursen!

Program i Java Java-program består av klasser Varje klass beskrivs i en egen fil Klasser beskriver objekt Om en klass innehåller metoden public static void main(string[] args) kan den köras som ett program

Klasser Innehåller metoder (med Java-satser) Innehåller attribut Tillstånd för objekt Består under objektets livstid Vanliga (icke-statiska) metoder och attribut är knutna till objekt Statiska metoder och attribut är gemensamma för en klass

Klasser, objekt och arv Klasser beskrivs i Java-koden Objekt finns bara i datorns minne när programmet kör En klass kan vara en subklass (specialisering) av en annan (superklass) Ett objekt av en subklass innehåller allt som finns i superklassen (och ofta något mer) Ett objekt av en subklass passar in överallt där ett objekt av superklassen efterfrågas

Variabler i datorns minne Variablernas värden lagras i datorns primärminne. Minnet är uppdelat i olika minnesceller. Vid deklarationen av en variabel reserveras plats för variabeln i minnet. Vid tilldelning läggs variabelns värde i motsvarande minnescell/er. double nbr1 = 12.5; double nbr2 = 0.7; double sum = nbr1 + nbr2; 5200 5208 5216 12.5 0.7 13.2 nbr1 nbr2 sum Variabelns namn hänvisar alltså till en plats i datorns minne.

Variabler, uttryck och typer Typ Används till Exempel double Reella tal double r = 3.72; double c = r * 2 * Math.PI; int Heltal int a = 5; int b = a + 3; boolean Villkor, logiska värden (true eller false) int c = (int) Math.PI; boolean isold = (a > 100); if (isold) {

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 används någon annanstans i programmet, t ex x = 5; System.out.println(x); slår kompilatorn upp rätt variabel. Denna uppslagning följer vissa regler synlighetsregler.

public class Scopes { private int a; public Scopes(int a) { this.a = a; System.out.println(a); public void p1() { double a = 5.3; System.out.println(a); public void p2() { if (6 * 7 == 42) { boolean a = true; System.out.println(a); public void p3() { { a = 9; System.out.println(a); public static void main(string[] args) { Scopes s = new Scopes(29); s.p1(); s.p2(); s.p3(); Varje gång namnet a används söker kompilatorn upp motsvarande deklaration. Börja leta bland föregående satser i det block { där namnet används Sök därefter utåt, från blocket, via metoden, till klassen Sökningen fortsätter i superklassen Den närmsta deklarationen (enligt denna ordning) används Alltså: En deklaration är giltig i det block { där den står En deklaration kan skuggas av en annan (närmare) Parametrar är giltiga i metoden

En särskild sorts variabler: referensvariabler Objekt nås alltid med referenser Square sq1 = new Square(10, 10, 5); Square sq2 = sq1; sq2.move(5, 5); System.out.println(sq2.getX()); Även vektorer och matriser nås med referenser int[] i1 = new int[10]; int[] i2 = new int[10]; i1[0] = 7; i2 = i1; i2[0] = 5; System.out.println(i1[0]); Referensvariabler kan (till skillnad från vanliga variabler som int, double, boolean osv) peka på ingenting (null)

Datastrukturer En datastruktur kan innehålla många element har ett namn, men man kan även komma åt enskilda element. Exempel: Listor: Träd: Grafer: I kursen behandlas vektorer (ett av flera sätt att implementera listor), matriser och klassen ArrayList.

Vektor för att representera en polygon Antag att vi vill hantera polygoner med ett godtyckligt antal hörnpunkter. Då får vi gissa hur stor vektor vi behöver för punkterna: 0 1 2 3 4 5 6 7 vertices null null null null x 50 y 50 x 70 y 300 x 350 y 350 x 320 y 200 Det behövs också en variabel som håller reda på hur många punkter vi satt in i vektorn: n 4

Matriser: vektorer av vektorer int[][] m = new int[2][3]; m[0][0] = 7; m[1][2] = 6; System.out.println(m.length); System.out.println(m[0].length); [ 7 9 1 ] 3 0 6 Ofta första index som radindex, andra som kolonnindex men det är bara en konvention

Vektorernas begränsningar Här har vi valt ett maximalt antal punkter i polygonen. Hur väljer man ett sådant värde? Om man gör vektorn för liten från början kan inte alla polygoner representeras (t ex en 40-hörning). Om man gör vektorn stor från början (säg, 1000 element) blir många element oanvända (t ex 997 st för en triangel). Då slösar vi med minne. Ibland är det inte praktiskt möjligt att ange ett maximalt antal element på förhand!

ArrayList ArrayList: är en standardklass i Java (paketet java.util). innehåller alltid objekt (inte int, double,... ). lagrar sina element i en vektor. utökar vektorns storlek vid behov. har metoder för att sätta in och ta bort element

ArrayList och primitiva datatyper Elementtypen i ArrayList anger elementens klass. Men vad gör man om man vill ha element av primitiva datatyper som int eller double? Detta går alltså inte: ArrayList<int> list = new ArrayList<int>(); Javas lösning på detta har två delar: Typklasser (för objekt som innehåller tal) Autoboxing (specialregler för typklasser)

En heltalslista med autoboxing public class ArrayListExample { public static void main(string[] args) { ArrayList<Integer> list = new ArrayList<Integer>(); Scanner scan = new Scanner(System.in); while (scan.hasnextint()) { int nbr = scan.nextint(); list.add(nbr); // samma sak som: list.add(new Integer(nbr)); for (int i = list.size() - 1; i >= 0; i--) { int nbr = list.get(i); // samma sak som: int nbr = list.get(i).intvalue(); System.out.println(nbr);

Algoritmer: saker du ska kunna Ta bort element från en vektor Både sorterad och osorterad Söka upp element i en vektor Linjärsökning räcker (vi har även sett binärsökning) Registrering (d.v.s. att använda en vektor för att räkna förekomster av något) Sortering Vi har sett urvalssortering och bubbelsortering Sätta in element i sorterad följd

Linjärsökning /** Sök efter talet nbr i vektorn v. Om nbr finns returneras platsen för nbr, annars -1 */ public static int indexof(int[] v, int nbr) { int i = 0; while (i < v.length && v[i]!= nbr) { i++; if (i < v.length) { return i; else { return -1;

Linjärsökning, en variant till Eftersom metoden inte ska göra något annat än att returnera ett index, så kan man göra det direkt om man vill. /** Sök efter talet nbr i vektorn v. Om nbr finns returneras platsen för nbr, annars -1 */ public static int indexof(int[] v, int nbr) { for (int i = 0; i < v.length; i++) { if (v[i] == nbr) { return i; return -1;

Sortering Det ingår i kursen att kunna sortera en befintlig (osorterad) vektor. Det finns många olika sorteringsalgoritmer: - Urvalssortering - Insättningssortering - Bubbelsortering - Quicksort - m.fl..

Urvalssortering: idén Sortera vektorn v. 5 v 2 9 22 31 42 97 76 72 61 56

Urvalssortering: Java-kod public static void selectionsort(int[] a) { for (int i = 0; i < a.length - 1; i++) { // hitta det minsta elementet efter a[i] for (int k = i + 1; k < a.length; k++) { if (a[k] < a[i]) { int temp = a[i]; // byt a[i] och a[k] a[i] = a[k]; a[k] = temp; i k

Urvalssortering med en ArrayList public static void selectionsort(arraylist<integer> a) { for (int i = 0; i < a.size() - 1; i++) { // hitta det minsta elementet efter element i for (int k = i + 1; k < a.size(); k++) { if (a.get(k) < a.get(i)) { int temp = a.get(i); // byt element #i och #k a.set(i, a.get(k)); a.set(k, temp); i k