Forelæsning Uge 9 Mandag

Størrelse: px
Starte visningen fra side:

Download "Forelæsning Uge 9 Mandag"

Transkript

1 Forelæsning Uge 9 Mandag Arrays Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog Principper for design af klasser Undgå f.eks. at have den samme kode stående to steder Mundtlig præsentation Kan som alt andet trænes De næste fem uger vil vi gøre det systematisk Vi vil fokusere på mundtlig eksamen Men det i lærer, vil også være nyttigt i mange andre situationer Afleveringsopgaver Funktionel programmering (Uge 9) Dronninger (Uge 10)

2 Arrays Arrays har et fast (på forhånd kendt) antal elementer Ligner Collections, men er bygget direkte ind i Java sproget med egen specieltilpasset syntax Skal ikke importeres 1. Erklæring (som feltvariabler) private String[] texts; private int[] hourcounts; 2. Initialisering (ofte i konstruktør) hourcounts = new int[24]; Eksempler på brug count = hourtcounts[hour]; hourcounts[hour]++; De firkantede parenteser angiver, at det er et array Kan også bruges på primitive typer Udtrykket i [ ] skal evaluere til et ikke negativt heltal, som angiver størrelsen Udtrykkene i [ ] skal evaluere til et heltal i intervallet [0,23] (ellers runtime fejl) Antal elementer i { } bestemmer størrelsen Oprettelse og initialisering med værdier kan slås sammen private int[] monthlength = new int[]{31,28,31,30,,30,31}; 2

3 To metoder, der bruger et array Indlæser data fra logfil og opdaterer hourcounts med det antal events, der er indtruffet i den pågældende klokketime public void analyzehourlydata() { while(reader.hasmoreentries()) { LogEntry entry = reader.nextentry(); int hour = entry.gethour(); hourcounts[hour]++; } } Opdatering af arrayet Udskriver antal events indtruffet i hver klokketime Collection:.size() Array:.length Længden af arrayet Variabel (ingen parenteser bagefter) Arrayets index'er nummereres fra 0 til length-1 public void printhourlycounts() { System.out.println("Hr: Count"); for(int hour = 0; hour < hourcounts.length; hour++) { System.out.println(hour + ": " + hourcounts[hour]); } } Opslag i arrayet 3

4 for løkker brugt på arrays Javas for-each løkke kan også bruges på arrays private String url; private String[] urls; for(string url : urls) { System.out.println(url); } for løkken giver adgang til at bruge indexet for(int hour=0; hour < hourcounts.length; hour++) { System.out.println( hour + ": " + hourcounts[hour]); } Det gør for-each løkken ikke for(int value : hourcounts) { System.out.println(???? + ": " + value); } 4

5 Forskelle på arrays og arraylister Arrays har et fast (på forhånd kendt) antal elementer Kan anvendes på primitive typer (uden brug af wrapper klasse) Simplere syntax Erklæring Initialisering Kald private int[] hourcounts; private ArrayList<Integer> hourcounts; hourcounts = new int[24]; hourcounts = new ArrayList<>(); hourcounts[13]; hourcounts.get(13); Velegnet til at håndtere flerdimensionale strukturer minutecounts = new int[24][60]; secondcounts = new int[24][60][60]; Indbygget i Java sproget Giver mere effektiv implementering hurtigere kode og simplere syntax Kendt fra mange andre programmeringssprog Ikke en Collection type Men man kan alligevel bruge for-each løkker på dem Array objekter har ikke metoder (i stedet kan man bruge klassemetoder fra forskellige klasser bl.a. java.util.arrays) 5

6 Eksempler på brug af arrays En arrayliste er en liste af objekter implementeret ved hjælp af et array Der er ubrugte elementer i arrayet, således at man kan indsætte nye elementer i arraylisten Når alle elementer er brugt, udskiftes arrayet med et nyt (og større) En tekststreng (objekt af typen String) er en liste af tegn (char) implementeret ved hjælp af et array 6

7 Adressebog med personer String objektet er implementeret via et char array Arraylisten er implementeret via et Object array 7

8 Billedrepræsentation via arrays 0 0 j width Gråtoneværdi: Pixel (x,y) [0..255] hvor 0 ~ sort og 255 ~ hvid i To dimensionalt array private int[][] pixels = new int[width][height]; height Elementtypen er int Størrelsen er width x height 8

9 Skab et billede public class Image // Feltvariabler private int width, height; private String title; private int[][] pixels; 2-dimensionalt array... // Konstruktør public Image(int width, int height, String title){ this.width = width; j this.height = height; 0 0 this.title = title; pixels = new int[width][height]; // Lav alle pixels hvide for(int i=0; i < height; i++) { for(int j=0; j < width; j++) { i pixels[i][j] = 255; } }... } Hvid } height width 9

10 Afbildning via arrays En afbildning Map<Integer, V> kan erstattes af et array V[ ] Forudsætter at vi på forhånd ved, hvilket interval af heltal nøglerne befinder sig i At der ikke er for store "huller" imellem nøglerne Hvis de brugte nøgler ligger i intervallet [min, max] repræsenteres afbildningen ved et array V[max min+1], og nøgler konverteres til indices ved at subtrahere min : Map<int,String> 2 "Peter" 4 "Ole" 9 "Ida" 6 "Ole" : String[] String "Peter" String "Ole" String "Ida" De fire andre array indgange er lig null 10

11 Nyttige metoder Konvertering fra lister til arrays ArrayList og andre List klasser indeholder metoden toarray, der konverterer listen til et array Klassen java.util.arrays indeholder nogle nyttige klassemetoder til manipulation af arrays, heriblandt aslist returnerer en (fixed-size) LIST implementeret via et array stream returnerer en Stream med elementerne i et array equals tester om to arrays er ens (samme elementer i samme rækkefølge) tostring tekstrepræsentation af et array og dets elementer [e 0, e 1,...,e last ] fill opdaterer alle elementer i et array til en specificeret værdi sort sortering af elementerne i et array binarysearch søgning i et array efter en specificeret værdi Polymorfi (og mangel på samme) Der er utrolig mange metoder i ovenstående klasse For hver metode er der 9 versioner (en for hver primitive type og en for objekt typer) Det slipper vi for ved Collections (idet de kun arbejder på objekt typer) 11

12 Principper for design af klasser Software er ikke er ikke noget, der laves på kort tid, for derefter at forblive uændret i al sin levetid Software vedligeholdes (rettes, udvides, tilpasses, porteres, ) Mange forskellige mennesker er involveret med en tidsmæssig udstrækning på flere årtier Software overlever kun, hvis det kan vedligeholdes ellers har det kort levetid (og dårlig økonomi) Principper for design af klasser så de bliver lette(re) at læse, vedligeholde og genbruge Undgå dublering af kode (code duplication) Løs kobling mellem klasserne (loose coupling) Sammenhængende klasser og metoder (cohesion) Ansvarsfuldt design (responsibility-driven design) Tænk fremad (think ahead) Regelmæssig omstrukturering (refactoring) 12

13 Undgå dublering af kode Vi vil gerne undgå at samme kode (sekvens af sætninger) forekommer flere steder Sparer tid både for dem, der skriver koden, og for dem, der skal læse og forstå koden Gør koden meget lettere at vedligeholde, idet man kun skal rette et sted Man undgår inkonsistente versioner, hvor en rettelse er foretaget nogle steder, men glemt andre steder Midler til at undgå dublering af kode Indpakning i hjælpemetode (private or public) God parametrisering af metoder, så man kan nøjes med én metode, i stedet for at have flere, der ligner hinanden I kapitel 10 skal vi se, at subklasser (med nedarvning) er fortrinlige til at undgå dublering af feltvariabler og deres tilhørende accessor og mutator metoder 13

14 Løs kobling mellem klasserne Klasser interagerer med hinanden via deres metoder og konstruktører Vi vil gerne kunne ændre implementationen af en klasse, uden at skulle ændre implementationen af alle de klasser, der bruger den Klasser der opfylder dette siges at være løst koblede Feltvariabler skal være private, således at de kan ændres uden at genere andre klasser Når feltvariabler er private, kan andre klasser kun tilgå dem via deres accessor og mutator metoder Disse metoder er lette at lokalisere og modificere, når implementationen ændres, idet de befinder sig i samme klasse som feltvariablerne Det er vigtigt, at signaturerne for metoder og konstruktører er så velvalgte og generelle, at man ikke behøver at ændre disse undervejs På et BlueJ klassediagram er mængden af pile en god indikation for koblingsgraden mellem klasserne Jo færre pile jo bedre 14

15 Sammenhængende (cohesion) Hver klasse skal være en sammenhængende enhed Det betyder at klassen skal håndtere ét problemkompleks, og alle de data og metoder, der hører til denne Hvis en klasse håndterer to eller flere forskellige problemkomplekser, kan klassen med fordel opdeles i to eller flere klasser Opdelingen gør det nemmere for brugeren at finde de rigtige metoder, og nemmere for programmøren at lokalisere de steder, som skal ændres, når der laves en opdatering Metoder skal også være sammenhængende En metode, der konstruerer en tekststreng, og udskriver den på terminalen, kan med fordel ændres til at returnere den konstruerede tekststreng Det er så op til klasse, der kalder metoden, at beslutte, hvad tekststrengen skal bruges til. Den kan udskrives, lægges ind i en HashMap, analyseres eller noget helt fjerde Metoder, der kun gør én ting, har langt større sandsynlighed for at kunne bruges i mange forskellige sammenhænge 15

16 Ansvarsfuldt design Hver klasse bør være ansvarlig for håndtering af egne data Klassen bør f.eks. have en (eller flere) metoder der returnerer en tekststreng, som beskriver objektets tilstand (eller dele heraf) Andre klasser kunne selv gøre det ved at få den nødvendige information via accessor metoder og stykke den sammen til en tekststreng Men det ville betyde, at disse klasser skal tilpasses, hver gang der tilføjes/fjernes feltvariabler Når de metoder, der skal ændres, er i samme klasse som feltvariablerne, er det langt mere sandsynligt, at man husker at ændre dem, og det er langt hurtigere at lokalisere de steder, hvor ændringerne skal foretages 16

17 Tænk fremad Prøv at forudse fremtidige ændringer/tilføjelser Eksempel: Når man designer de første versioner af et computerspil, vil det være nærliggende at interaktionen med brugere på et tidspunkt skal ske via et grafisk interface i stedet for tekstbaseret input/output via terminalen Hvis man fra start forsøger at samle de ting, der har med burgerinteraktionen at gøre, i en enkelt klasse, bliver det sidenhen meget lettere at ændre interaktion fra at være tekstbaseret til at være grafisk Hvis man i begyndelsen bruger lidt tid på at forudse mulige fremtidige ændringer/tilføjelser og forberede disse kan man senere spare enorme mængder af tid og kræfter 17

18 Regelmæssig omstrukturering (refactoring) Når man er i gang med et større (eller mindre) projekt får man fra tid til anden behov for at omstrukturere sin kode Man kan f.eks. ønske at opdele en klasse, der er blevet stor og gør mange forskellige ting, i to eller flere klasser, som er nemmere at overskue Begreber, der indtil nu er repræsenteret ved hjælp af en simpel tekststreng, vil man måske fremover modellere via en dedikeret klasse med feltvariabler, der kan give en mere fyldestgørende beskrivelse af objekternes tilstand Omstrukturering af software kaldes også refaktorering (refactoring) Principper for refaktorering Start med at lave den ønskede omstrukturering uden at tilføje ny funktionalitet Test at det ændrede program opfører sig som det gamle (vi vender tilbage til testmetoder i kapitel 9) Først når man er overbevist om, at det ændrede program er korrekt (dvs. opfører sig som det gamle) tilføjes ny funktionalitet Ved at iagttage denne tidsmæssige opdeling i refaktorering og tilføjelse af ny funktionalitet kan man spare masser af tid og kræfter 18

19 Mundtlig præsentation Det er vigtigt for it-folk at kunne præsentere tekniske problemstillinger for fagfæller og lægfolk Det er en essentiel del af vores faglige kompetencer, og I kommer alle til at bruge det i jeres daglige arbejde Mundtlig eksamen tester, at I kan jeres stof, og at I er i stand til at fremlægge det for andre (eksaminator og censor) Ved den mundtlige eksamen i Introduktion til Programmering forventer vi, at I demonstrerer Kendskab til de vigtigste begreber inden for det trukne emneområde Evne til at programmere i Java ved at præsentere små velvalgte programstumper indenfor emneområdet Evne til at svare på spørgsmål inden for emneområdet, herunder relatere kursets projektopgaver til emneområdet Varighed I er "på scenen" i ca. 15 minutter De næste 5 minutter bruges til votering, meddelelse og forklaring af jeres karakter samt skift til næste eksaminand 19

20 Træning gør mester Evnen til at lave gode mundtlig præsentationer kan (som næsten alt andet) forbedres kraftigt ved intensiv træning Vi vil derfor i resten af kurset bruge den første af de ugentlige øvelsesgange på systematisk træning i mundtlig præsentation I kommer hver i sær til at lave 2-3 præsentationer af eksamensspørgsmål I begyndelsen er det svært, men efterhånden bliver det meget lettere Husk på hvor gode og hurtige I blev til at programmere, da I trænede i ugerne op til køreprøven Det samme vil ske med jeres evne til at lave en god mundtlig præsentation Det vil hjælpe jer til eksamen i dette og efterfølgende kurser 20

21 Organisering af træningen I uge bliver holdet ved ugens første øvelsesgang delt i to Det ene delhold har øvelser på det normale øvelsestidspunkt Det andet delhold har øvelser på det tidspunkt, hvor der normalt er forelæsning (dvs. XXX) Ved hver øvelsesgang gennemgås 2 af de 10 eksamensspørgsmål Hvert spørgsmål præsenteres af 3 studenter (efter hinanden) Instruktoren fungerer som eksaminator Efter hver præsentation diskuteres hvordan den kan forbedres Der er 5 uger med 6 præsentationer på hvert af de 2 delhold, dvs. 60 præsentationer og dermed mindst 2-3 til hver student En af de mest effektive måder at træne til eksamen er, at høre andre studerende (og lære af deres gode og dårlige ting) Vi opfordrer derfor kraftigt til, at I deltager i alle øvelsesgangene også de gange I ikke selv skal præsentere Vi opfordrer også til, at I under den rigtige eksamen går ind og hører nogle af jeres medstuderende Nogle synes, at det er "upassende" men faktisk vil det for langt de fleste eksaminander være betryggende, at der er "neutrale" tilhørere tilstede under eksaminationen 21

22 Forløbet af eksamen Præsentationen De første 3-4 minutter får I lov til at skrive jeres disposition på tavlen og snakke uforstyrret (indtil den værste nervøsitet har lagt sig) Derefter vil eksaminator/censor afbryde med forskellige spørgsmål for at hjælpe jer med at rette eventuelle småfejl at få dækket de vigtigste ting indenfor emneområdet Jo bedre I har forberedt jer og jo mere initiativ I udviser jo bedre har I styr på, hvor I "kommer hen" under eksamen (f.eks. hvilke programmeringseksempler I skal gennemgå) Jeres karakter Køreprøven fra uge 7 tæller med ca. 20% Delafleveringerne fra computerspilsprojektet tæller med ca. 30% Mundtlig eksamen tæller med ca. 50% Alle tre dele skal være tilfredsstillende Det betyder, at I kan dumpe på en elendig mundtlig præstation selvom køreprøve og projekt er helt i top 22

23 Forberedelse til mundtlig eksamen Disposition For hver af de 10 spørgsmål laves en kort velgennemtænkt disposition A4-ark med ord (ingen figurer, formler, programstumper, eller lignende) Opremser de begreber og eksempler, som I vil bruge Til eksamen starter I med at skrive dispositionen op i et hjørne af tavlen Dulmer ofte den værste nervøsitet Herefter lægges dispositionen helt væk (eller med bagsiden opad) I får ikke point for at kunne læse op af dispositionen Derfor skal den være så kort som overhovedet mulig Den er blot en huskeliste over, hvad I vil præsentere og i hvilken rækkefølge Valg af eksempler Det er vigtigt, at I på forhånd, for hvert af de 10 spørgsmål, har valgt nogle gode eksempler på Java kode, som I vil præsentere De skal være korte og tydeligt vise de ting, som I vil illustrere med dem Eksemplerne kan være "stjålet" fra lærebogen, mine slides eller nogle af de opgaver, som I har lavet på kurset eller de kan være opfundet til lejligheden Brug tid på at finde gode eksempler, og tid på at træne i at præsentere dem Hvis I ikke selv præsenterer små velvalgte Java eksempler, finder vi nogle, som I skal præsentere og det gør jo ikke opgaven lettere 23

24 Træning gør mester Hvert spørgsmål bør trænes mindst 5 gange Træningen skal være så realistisk som overhovedet muligt Det er ikke nok at tænke på, hvad I vil sige og skrive I skal formulere sætningerne og sige dem højt I skal skrive tingene på et whiteboard eller et stykke papir I skal gennemgå alle de ting, som I har på jeres disposition Eksamen er ikke en test i skønskrift men det er oplagt en fordel at eksaminator og censor kan læse det, som I skriver Hold fornuftig tavleorden I må gerne forkorte lange navne og lignende og bruge gentagelsestegn/streger (øv jer I at gøre det på en god måde) Det kan være svært at skrive læseligt på et whiteboard (øv jer i det) Visk ikke noget ud (bortset fra smårettelser) Eksaminator og censor tæller alt det med, som I har skrevet og sagt Hold jer til dispositionen Lad være med at improvisere undervejs Opfind ikke nye eksempler, som I ikke har gennemtænkt Under de sidste træninger bør I ved hjælp af et ur tjekke, at I har stof nok til 10 minutter hverken mere eller mindre De sidste 5 minutter (af de 15 minutter som eksaminationen varer) bruges til at besvare spørgsmål fra eksaminator og censor 24

25 Afleveringsopgave: Funktionel Programmering Op til køreprøven løste i en masse opgavesæt, hvor man i opgave 7-9 implementerede to metoder ved hjælp af de imperative udgaver af fem algoritmeskabeloner opgave 10 sorterede objekterne i en arrayliste ved at implementere en passende compareto metode for den klasse, som objekterne tilhørte Nu skal I prøve at løse nogle af de samme opgaver, hvor man i opgave 7-9 implementerer de to metoder ved hjælp af de funktionelle udgaver af de fem algoritmeskabeloner opgave 10 sorterer objekterne i en arrayliste ved at skrive passende lambda'er, som parametre til Comparator.comparing metoden Tag de fire opgaver, som I afleverede i uge 5 og 6 Modificér jeres løsning af spørgsmål 7-10, således at metoderne nu implementeres ved hjælp af funktionel programmering 25

26 Afleveringsopgave: Dronninger (Queens) I skal skrive et rekursivt program, der ved hjælp af backtracking finder alle løsninger til det såkaldte 8-dronningeproblem I skal placerede 8 dronninger på et 8 x 8 skakbræt, således at ingen af dronningerne kan slå hinanden Den enkelte dronning må ikke have andre dronninger i den række, søjle og de to diagonaler, som går igennem dens position Mere generelt skal I løse n-dronningeproblemet I skal placerede n dronninger på et n x n skakbræt, således at ingen af dronningerne kan slå hinanden (for n 1). Repræsentation af dronningernes position på skakbrættet 2-dimenionalt array boolean[n][n], hvor den boolske værdi angiver, om der står en dronning på feltet eller ej Men vi ved, at der højst kan være en dronning i hver række 1-dimensionale array int[n], hvor heltallet angiver, den position som dronningen i den pågældende række har int[3] == 5 betyder, at dronningen i række 3 står i søjle 5 Som sædvanlig starter vi nummereringen med 0, dvs. række 0 og søjle 0 26

27 positionqueens metoden (rekursiv metode) Kald (7) Kald (6) Kald (5) Kald (4) Kald (3) Og så videre For 8 dronninger findes første løsning efter 876 positioneringer 114 rekursive kald Godt vi ikke skal gøre det manuelt Et Alle kald, muligheder hvor parameterværdien prøvet er Rekursive lig med antallet kald af returnerer dronninger, betyder, at vi har fået alle dronninger placeret Alle muligheder prøvet Vi Rekursive udskriver den kald fundne returnerer løsning Derefter returnerer kaldet, og vi fortsætter med at finde de øvrige løsninger Kald (2) Når vi har afprøvet alle muligheder stopper vi. Kald (1) Kald (0) Række 0 Søjle 0 Problemet vokser meget hurtigt Dronninger Løsninger Rekursive kald Tid 8 92 Godt 2 tusinde 1 millisekund Knap 1 million Under 1 sekund 16 Knap 15 millioner Godt 1 milliard Nogle få minutter 27

28 legal metoden Skal tjekke om det er legalt at placere en dronning på et givet felt (0,0) Kan vi placere en dronning her? Vi skal tjekke søjlen og de to diagonaler Det gør ikke noget, at vi kommer uden for brættet (der er vi helt sikre på ikke at finde en dronning) Vi behøver ikke at tjekke opad (der har vi endnu ikke placeret dronninger) Det er vigtigt at denne metoder er effektiv For 8 dronninger kaldes den godt 15 tusinde gange For 12 dronninger kaldes den godt 10 millioner gange For 16 dronninger kaldes den godt 18 milliarder gange Metoden bruger godt halvdelen af den samlede beregningstid 28

29 legal metoden (fortsat) Det er selvfølgelig også vigtigt at legal metode er korrekt Lav en grundig aftestning, før I forsøger at bruge den i positionqueens Det kan f.eks. gøres som vist nedenfor public void testlegal() { queens = new int[]{4,6,3,0,0,0,0,0}; } System.out.print("Queens in: " + Arrays.toString(queens) + " => Legal positions: "); for(int i=0; i<8; i++) { if(legal(3,i)) { System.out.print(i + " "); } } Placer nogle dronninger i de første rækker Udskriv deres placering Udskriv, hvor næste dronning kan placeres 29

30 convert metoden Skal konvertere fra (row,col) notation til den sædvanlige skaknotation for felter, hvor (0,0) skrives som a1, mens (5,3) skrives som d6 og (7,7) som h8) Søjle før række Række ligger i [1,8] i stedet for [0,7] Søjle ligger i [a,h] i stedet for [0,7] Nyttigt trick I nedenstående udtryk sørger + operatoren for at tegnet 'a' forfremmes til et heltal (jvf. slides om primitive typer) Bogstaverne har successive heltalsværdier a ~ 97, b ~ 98, c ~ 99, d ~ 100, e ~ 101, osv. (char)('a' + 2) = (char)(97 + 2) = (char)(99) = 'c' Alternativt kan man lave et char array med alle bogstaverne og så slå op i det Begge løsninger fungerer kun godt for col < 26 Husk at afteste convert metoden, før I bruger den i printsolution 30

31 Udskrift af tabeller Når man skal udskrive tabeller som nedenstående, kan det være hensigtsmæssigt at bruge format metoden (i stedet for println) System.out.format(" %3d %,12d %,8d %,8d %n", noofqueens, noofsolutions, duration, noofsolutions/duration); Format metoden tager et variabelt antal parametre Første parameter beskriver formatet af den tekststreng, der skal udskrives, men de øvrige parmetre beskriver værdier, der skal indsættes i tekststrengen Format parameteren indeholder nogle format specifiers (såsom %3d, %,12d, %,8d, %,8d og %n) F.eks. angiver %,12d, at det heltal, der der skal udskrives på dette sted, skal fylde 12 tegn med et komma indsat for hver tredje (som i 2,680 og 14,200) %n angiver linjeskift (new line) Der er tilsvarende format specifiers for reelle tal, datoer og tidspunkter Detaljer kan ses på: Link 31

32 Opsummering Arrays Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog Principper for design af klasser Undgå dublering af kode (code duplication) Løs kobling mellem klasserne (loose coupling) Sammenhængende klasser og metoder (cohesion) Ansvarsfuldt design (responsibility-driven design) Tænk fremad (think ahead) Regelmæssig omstrukturering (refaktorering) Mundtlig præsentation Kan som alt andet trænes De næste fem uger vil vi gøre det systematisk Vi vil fokusere på mundtlig eksamen Men det i lærer, vil også være nyttigt i mange andre situationer Afleveringsopgaver: Funktionel Programmering + Dronninger 32

33 Det var alt for nu.. spørgsmål 33

Forelæsning Uge 9 Mandag

Forelæsning Uge 9 Mandag Forelæsning Uge 9 Mandag Arrays Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog Principper for design af klasser Undgå f.eks. at have den samme

Læs mere

Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog

Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog Forelæsning Uge 9 Arrays Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog Principper for design af klasser Undgå f.eks. at have den samme kode

Læs mere

Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog

Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog Forelæsning Uge 9 Arrays Objektsamlinger med et fast (på forhånd kendt) antal elementer Velkendt fra mange andre programmeringssprog Principper for design af klasser Undgå f.eks. at have den samme kode

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt) antal elementer Afleveringsopgave:

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering (bl.a. brug af for-løkker) Gråtonebilleder (som er lidt simplere end farvebilleder) Arrays Kan "opbevare" et antal objekter (som ArrayList) Fast (på forhånd kendt)

Læs mere

DRONNINGER (QUEENS) Opgave 1

DRONNINGER (QUEENS) Opgave 1 DRONNINGER (QUEENS) I denne opgave vil vi beskæftige os med det såkaldte 8-dronningeproblem, hvor man skal placerede 8 dronninger på et 8 x 8 skakbræt, således at ingen af dronningerne kan slå hinanden.

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Rekursive metoder Metoder der kalder sig selv Giver ofte meget elegante og simple løsninger på komplekse

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Køreprøven i uge 7 Form Forberedelse

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (i mandags) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList Collection (samling af objekter) med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet i JavaDoc) MusicOrganizer projektet Eksempel

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Levetid for variabler og parametre Virkefeltsregler Hvor kan man bruge de forskellige variabler?

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList klassen Gør det let at lave en objektsamling (collection) med et variabelt antal elementer Der er mange andre slags objektsamlinger (se Collection interfacet i JavaDoc)

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Information om køreprøven i uge

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner Kan (ved simple tilretningerne) bruges til at implementere metoder, der gennemsøger en arrayliste (eller anden objektsamling) og finder objekter, der opfylder

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof (sidste mandag) findbest Brug af klassen Collections og interfacet Comparable BlueJ s Debugger Nyttig til at inspicere

Læs mere

Forelæsning Uge 3 Mandag

Forelæsning Uge 3 Mandag Forelæsning Uge 3 Mandag ArrayList Collection med variabelt antal elementer Der er mange andre Collection typer (se Collection interfacet i JavaDoc) MusicOrganizer projektet Eksempel på brug af ArrayList

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Rekursive metoder Metoder der kalder sig selv Giver ofte meget elegante og simple løsninger på komplekse

Læs mere

Forelæsning Uge 3 Torsdag

Forelæsning Uge 3 Torsdag Forelæsning Uge 3 Torsdag Billedredigering Gråtonebilleder (som er lidt simplere end farvebilleder) Rekursive metoder Metoder der kalder sig selv Giver ofte meget elegante og simple løsninger på komplekse

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 20. marts, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

COMPUTERSPIL 1. Opgave 1. Opgave 2

COMPUTERSPIL 1. Opgave 1. Opgave 2 COMPUTERSPIL 1 I løbet af de kommende fem uger skal I programmere et computerspil, hvor spillerne rejser rundt mellem byer i forskellige lande og indsamler point. Der er en delaflevering hver uge, hvor

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2018 Projekt, del II Institut for matematik og datalogi Syddansk Universitet 13. marts, 2018 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DANMARKS TEKNISKE UNIVERSITET

DANMARKS TEKNISKE UNIVERSITET DANMARKS TEKNISKE UNIVERSITET Skriftlig prøve, 14. december 2018, 4 timer Side 1 af 18 Kursus navn: 02101 Indledende Programmering Kursus : 02101 Tilladte hjælpemidler: Ikke-digitale skriftlige hjælpemidler

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Forelæsning Uge 4 Mandag

Forelæsning Uge 4 Mandag Forelæsning Uge 4 Mandag Algoritmeskabeloner findone, findall, findnoof, findsumof Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Opfølgning på Skildpadde

Læs mere

Forelæsning Uge 1 Torsdag

Forelæsning Uge 1 Torsdag Forelæsning Uge 1 Torsdag Objekters tilstand og opførsel Java og BlueJ Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Java's for løkke Parametre i metoder Forskellige

Læs mere

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne.

b) Udvid din implementation af forme til at understøtte.equals. To objekter af samme form er ens hvis de har samme værdier i felterne. Exercise 1: Opgave 9.1 på CodeJudge. a) Lav klasserne Cirkel, Rektangel og Kvadrat, som implementerer vedhæftede interface From.java (se CodeJudge). Lav Rektangel før du laver Kvadrat. Kan du bruge nedarvning

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Java syntax og style guide Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Brug

Læs mere

Forelæsning Uge 4 Torsdag

Forelæsning Uge 4 Torsdag Forelæsning Uge 4 Torsdag Klassevariabler og klassemetoder Levetid for variabler og parametre Virkefeltsregler Projektopgave Kaninjagt Lommeregner (for MAT studerende) Klassevariabler og klassemetoder

Læs mere

Forelæsning Uge 2 Torsdag

Forelæsning Uge 2 Torsdag Forelæsning Uge 2 Torsdag Niveauer af programbeskrivelser Statiske / dynamiske beskrivelser Klassevariabler og klassemetoder Variabler og metoder der et tilknyttet klassen (i stedet for at være tilknyttet

Læs mere

Forelæsning Uge 5 Mandag

Forelæsning Uge 5 Mandag Forelæsning Uge 5 Mandag Sortering ved hjælp af klassen Collections Ved hjælp af interfacet Comparable Ved hjælp af interfacet Comparator findbest som sorteringsproblem Information om køreprøven i uge

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Objekters tilstand og opførsel BlueJ og Greenfoot Java Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Forskellige slags variabler Afleveringsopgave:

Læs mere

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Tingene i denne forelæsning er ikke eksamenspensum Forelæsningen afrunder kurset, og forklarer nogle af de begreber, som I har mødt under kurset uden at få detaljeret forklaring

Læs mere

Ugeseddel 4 1. marts - 8. marts

Ugeseddel 4 1. marts - 8. marts Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,

Læs mere

Forelæsning Uge 1 Torsdag

Forelæsning Uge 1 Torsdag Forelæsning Uge 1 Torsdag Objekters tilstand og opførsel Java og BlueJ Skabelse af objekter (via new-operatoren) Iteration (gentagelser) og parametrisering Java's for løkke Parametre i metoder Forskellige

Læs mere

BILLEDREDIGERING (IMAGES)

BILLEDREDIGERING (IMAGES) BILLEDREDIGERING (IMAGES) I dette projekt skal I redigere gråtonebilleder ved hjælp af nogle af de teknikker, der blev beskrevet i en forelæsning. Hent BlueJ-projektet Image (zip) og husk at pakke det

Læs mere

COMPUTERSPIL 1. Opgave 1

COMPUTERSPIL 1. Opgave 1 COMPUTERSPIL 1 I løbet af de kommende fem uger skal I programmere et computerspil, hvor spillerne rejser rundt mellem byer i forskellige lande og indsamler point. Der er en delaflevering hver uge, hvor

Læs mere

Forelæsning Uge 12 Torsdag

Forelæsning Uge 12 Torsdag Forelæsning Uge 12 Torsdag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

Læs mere

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4

dintprog Manual Revision: 1241 August 24, 2010 I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 dintprog Manual Revision: 1241 August 24, 2010 Indhold I Introduktion 3 1 Notation 3 II Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering 4 III Sprogkonstruktioner 5 4 Klasser

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 29. februar, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 27. februar, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Forelæsning Uge 12 Mandag

Forelæsning Uge 12 Mandag Forelæsning Uge 12 Mandag Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser (objekter) af En abstrakt klasse

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 4 DM502 Forelæsning 4 Flere kontrolstrukturer for-løkke switch-case Metoder Indhold Arrays og sortering af arrays String-funktioner for-løkke Ofte har man brug for at udføre det samme kode, for en sekvens

Læs mere

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Funktionel programmering i Java (Kapitel 5) Forskellen på imperative og funktionelle programmeringssprog Lambda'er (kodestumper, der kan bruges som parametre i et metodekald) Streams

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:

Læs mere

Forelæsning Uge 15 Mandag

Forelæsning Uge 15 Mandag Forelæsning Uge 15 Mandag Design af applikationer Design mønstre Mundtlig eksamen Kursusevaluering Fraktaler og Mandelbrotmængden smukke computergenererede billeder Design af applikationer I dette kursus

Læs mere

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Funktionel programmering i Java (Kapitel 5) Forskellen på imperative og funktionelle programmeringssprog Lambda'er (kodestumper, der kan bruges som parametre i et metodekald) Streams

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 11 sider Skriftlig eksamen i Datalogi Modul 1 Sommer 2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 10% Opgave 2 10%

Læs mere

Forelæsning Uge 10 Mandag

Forelæsning Uge 10 Mandag Forelæsning Uge 10 Mandag Opremsningstyper Enumerated types Forskellige teknikker til test og debugging Når man tester undersøger man, om opførslen (semantikken) er den ønskede Når man debugger (afluser),

Læs mere

Forelæsning Uge 10 Torsdag

Forelæsning Uge 10 Torsdag Forelæsning Uge 10 Torsdag Opremsningstyper Enumerated types Forskellige teknikker til test og debugging Når man tester undersøger man, om opførslen (semantikken) er den ønskede Når man debugger (afluser),

Læs mere

Forelæsning Uge 15. Design af applikationer Designmønstre Computerspil 5 Exceptions og filhåndtering

Forelæsning Uge 15. Design af applikationer Designmønstre Computerspil 5 Exceptions og filhåndtering Forelæsning Uge 15 Design af applikationer Designmønstre Computerspil 5 Exceptions og filhåndtering Mundtlig eksamen Kursusevaluering Fraktaler og Mandelbrotmængden Smukke computergenererede billeder Design

Læs mere

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1.

class Time { int hours, min; } } Time t1; // Erklær variabel af type Time class Time1 { public static void main(string[] args) { Time t1; t1. Programmering 1999 Forelæsning 4, fredag 10. september 1999 Klasser og objekter Felter, konstruktorer, this Eksempler på klasser: Time, Appointment Eksempler på metoder i Time og Appointment Klassefelter:

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgave:

Læs mere

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3

University of Southern Denmark Syddansk Universitet. DM502 Forelæsning 3 DM502 Forelæsning 3 Indlæsning fra tastatur Udskrift til skærm Repetition Beregning af middelværdi Gentagelse med stop-betingelse (while) Heltalsdivision Division med nul Type-casting ( (double) ) Betinget

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2013 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 5. marts, 2013 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

Forelæsning Uge 11. Nedarvning. Object klassen. Projektopgave om computerspil

Forelæsning Uge 11. Nedarvning. Object klassen. Projektopgave om computerspil Forelæsning Uge 11 Nedarvning En klasse kan være en subklasse af en anden Det betyder at subklassen arver superklassens feltvariabler og metoder Object klassen Superklasse for alle klasser Indeholder en

Læs mere

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning

Datalogi OB, Efterår 2002 OH er, forelæsning 10/ Klasser og nedarvning Datalogi OB, Efterår 2002 OH er, forelæsning 10/9-2002 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Eftermiddagens opgave:

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2019 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 10. april, 2019 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Klasser og objekter. (Afsnit i manualen)

Klasser og objekter. (Afsnit i manualen) Klasser og objekter (Afsnit 4 + 5 i manualen) Grundbegreber Klasser og objekter beskrivelse oprettelse Attributter og metoder tilstand opførsel Indkapsling afskærmning datarepræsentationsuafhængighed Klasser

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Vinter 1998/99 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 16% Opgave 2 12% Opgave 3 10% Opgave

Læs mere

Forelæsning Uge 15 Mandag

Forelæsning Uge 15 Mandag Forelæsning Uge 15 Mandag Design af applikationer Design mønstre Mundtlig eksamen Kursusevaluering Fraktaler og Mandelbrotmængden smukke computergenererede billeder Design af applikationer I dette kursus

Læs mere

Forelæsning Uge 10. Opremsningstyper. Forskellige teknikker til test og debugging. Afleveringsopgave: Debugging + Test.

Forelæsning Uge 10. Opremsningstyper. Forskellige teknikker til test og debugging. Afleveringsopgave: Debugging + Test. Forelæsning Uge 10 Opremsningstyper Enumerated types Forskellige teknikker til test og debugging Når man tester undersøger man, om opførslen (semantikken) er den ønskede Når man debugger (afluser), forsøger

Læs mere

Spørgetime Redigeret 15/ Først gennemgår jeg slagets gang, derefter tjekker vi tidsplanen, og så må I spørge om elektronik mm.

Spørgetime Redigeret 15/ Først gennemgår jeg slagets gang, derefter tjekker vi tidsplanen, og så må I spørge om elektronik mm. Dagsorden for spørgetime: Først gennemgår jeg slagets gang, derefter tjekker vi tidsplanen, og så må I spørge om elektronik mm. Til slut sætter I jeres produkter op så de er klar til at blive præsenteret.

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgaver

Læs mere

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden.

Programmering 1999 KVL Side 5-4. Klassen Time: metoder. Metoder i objektet giver mulighed for at ændre tilstanden, eller kigge på tilstanden. Programmering 1999 Forelæsning 5, tirsdag 14. september 1999 Oversigt Mere om klasser og objekter Klassefelter: static Konstante felter: final Indkapsling og synlighed: private og public Overlæsning af

Læs mere

Har kun én enkelt abstract metode De steder, hvor man skal bruge et objekt, hvis type er et funktionelt interface, kan man i stedet bruge en lambda

Har kun én enkelt abstract metode De steder, hvor man skal bruge et objekt, hvis type er et funktionelt interface, kan man i stedet bruge en lambda Forelæsning Uge 12 Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser af En abstrakt klasse kan indeholde abstrakte metoder, hvor kun hovedet er angivet, mens

Læs mere

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree.

class subklasse-navn extends superklasse-navn { } NorwaySpruce har superklassen Spruce, som igen har superklassen Tree. Programmering 1999 Forelæsning 11, tirsdag 5. oktober 1999 Oversigt Klasse-hierarkier: superklasser og subklasser Nedarvning Polymorfi Programmering 1999 KVL Side 11-1 Hierarkier En klasse repræsenterer

Læs mere

Forelæsning Uge 2 Mandag

Forelæsning Uge 2 Mandag Forelæsning Uge 2 Mandag Sætninger Simple sætninger (assignment, interne og eksterne metodekald) Sammensatte sætninger (blok, selektion, gentagelse) Udtryk og operatorer Java syntax og style guide Afleveringsopgaver

Læs mere

Introduktion til ActionScript

Introduktion til ActionScript Introduktion til ActionScript Kaspar Rosengreen Nielsen kaspar@interactivespaces.net i n t e r a c t i v e s p a c e s. n e t Kaspar Nielsen, kaspar@interactivespaces.net 1 Dagens program Opsamling på

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter side 1 af 9 sider Skriftlig eksamen i Datalogi Modul 1 Vinter 1999/2000 Opgavesættet består af 6 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 5% Opgave 2

Læs mere

Tree klassen fra sidste forelæsning

Tree klassen fra sidste forelæsning Programmering 1999 Forelæsning 12, fredag 8. oktober 1999 Oversigt Abstrakte klasser. Grænseflader. Programmering 1999 KVL Side 12-1 Tree klassen fra sidste forelæsning class Tree { int age; // in years

Læs mere

Klasser og nedarvning

Klasser og nedarvning Datalogi C, Efterår 2004 OH er, forelæsning 21/9-2004 Klasser og nedarvning Hvad er formålet? Typer, generisk kode, typeparameterisering Kritisk kig på, hvordan man gør i Java. Opgaven til senere: Generalisere

Læs mere

Abstrakte datatyper C#-version

Abstrakte datatyper C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Abstrakte datatyper C#-version Finn Nordbjerg 1/9 Abstrakte Datatyper Denne note introducerer kort begrebet abstrakt datatype

Læs mere

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version

Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Note til Programmeringsteknologi Akademiuddannelsen i Informationsteknologi Algoritmeskabeloner: Sweep- og søgealgoritmer C#-version Finn Nordbjerg 1/9 Indledning I det følgende introduceres et par abstrakte

Læs mere

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Funktionel programmering i Java (Kapitel 5) Lambda'er (kodestumper, der kan bruges som parametre i et metodekald) Streams (sekvenser af data / strømme af data) Brug af assignments

Læs mere

Forelæsning Uge 6 Mandag

Forelæsning Uge 6 Mandag Forelæsning Uge 6 Mandag Funktionel programmering i Java (Kapitel 5) Lambda'er (kodestumper, der kan bruges som parametre i et metodekald) Streams (sekvenser af data / strømme af data) Brug af assignments

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2016 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 20. april, 2016 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Forelæsning Uge 11. Nedarvning. Object klassen. Projektopgave om computerspil

Forelæsning Uge 11. Nedarvning. Object klassen. Projektopgave om computerspil Forelæsning Uge 11 Nedarvning En klasse kan være en subklasse af en anden Det betyder at subklassen arver superklassens feltvariabler og metoder Object klassen Superklasse for alle klasser Indeholder en

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2015 Projekt, del I Institut for matematik og datalogi Syddansk Universitet 3. marts, 2015 Dette projekt udleveres i to dele. Hver del har sin deadline, således

Læs mere

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer

BRP Tal. Om computer-repræsentation og -manipulation. Logaritmer BRP 13.9.2006 Tal. Om computer-repræsentation og -manipulation. Logaritmer 1. Opgaverne til i dag dækker det meste af stoffet 2. Resten af stoffet logaritmer binære træer 3. Øvelse ny programmeringsopgave

Læs mere

dintprog Manual Revision: 731 September 30, 2009 1 Introduktion 3 1.1 Notation... 3 I Begreber 4 2 Grundbegreber om programmering 4

dintprog Manual Revision: 731 September 30, 2009 1 Introduktion 3 1.1 Notation... 3 I Begreber 4 2 Grundbegreber om programmering 4 dintprog Manual Revision: 731 September 30, 2009 Indhold 1 Introduktion 3 1.1 Notation................................. 3 I Begreber 4 2 Grundbegreber om programmering 4 3 Grundbegreber om modellering

Læs mere

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner

Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner Forelæsning 4.1 Opfølgning på Dygtig Skildpadde (Michael) To algoritmeskabeloner finden findalle Primitive typer (forfremmelse og begrænsning) Identitet versus lighed (for objekter, herunder strenge) Afleveringsopgave

Læs mere

Eksempel: Skat i år 2000

Eksempel: Skat i år 2000 Kursus 02199: Programmering afsnit 2.1-2.7 Anne Haxthausen IMM, DTU 1. Værdier og typer (bl.a. char, boolean, int, double) (afsnit 2.4) 2. Variable og konstanter (afsnit 2.3) 3. Sætninger (bl.a. assignments)

Læs mere

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt.

Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Merging og hashing Mål Målet for disse slides er at diskutere nogle metoder til at gemme og hente data effektivt. Dette emne er et uddrag af kurset DM507 Algoritmer og datastrukturer (2. semester). Mål

Læs mere

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations

Tabelbegrebet. Klassediagrammer (III) Oversigt. Anvendelse af Tabeller. Tabeller og qualified associations Tabelbegrebet Klassediagrammer (III) Tabeller og qualified associations originally by Michael R. Hansen modified/extended by Anne E. Haxthausen Informatics and Mathematical Modelling Technical University

Læs mere

Har kun én enkelt abstract metode De steder, hvor man skal bruge et objekt, hvis type er et funktionelt interface, kan man i stedet bruge en lambda

Har kun én enkelt abstract metode De steder, hvor man skal bruge et objekt, hvis type er et funktionelt interface, kan man i stedet bruge en lambda Forelæsning Uge 12 Protected access Alternativ til public og private Abstrakte klasser og interfaces En abstrakt klasse er en klasse, som man ikke kan lave instanser af En abstrakt klasse kan indeholde

Læs mere

Løsning af møntproblemet

Løsning af møntproblemet Løsning af møntproblemet Keld Helsgaun RUC, oktober 1999 Antag at tilstandene i problemet (stillingerne) er repræsenteret ved objekter af klassen State. Vi kan da finde en kortest mulig løsning af problemet

Læs mere

Skriftlig eksamen i Datalogi

Skriftlig eksamen i Datalogi Roskilde Universitetscenter Skriftlig eksamen i Datalogi Modul 1 Sommer 1999 Opgavesættet består af 5 opgaver, der ved bedømmelsen tillægges følgende vægte: Opgave 1 15% Opgave 2 15% Opgave 3 8% Opgave

Læs mere

Kursusarbejde 3 Grundlæggende Programmering

Kursusarbejde 3 Grundlæggende Programmering Kursusarbejde 3 Grundlæggende Programmering Arne Jørgensen, 300473-2919 klasse dm032-1a 21. november 2003 Indhold 1. Kode 2 1.1. forestillinger.h............................................. 2 1.2. forestillinger.cc.............................................

Læs mere

Kapitel 3 Betinget logik i C#

Kapitel 3 Betinget logik i C# Kapitel 3 i C# er udelukkende et spørgsmål om ordet IF. Det er faktisk umuligt at programmere effektivt uden at gøre brug af IF. Du kan skrive små simple programmer. Men når det bliver mere kompliceret

Læs mere

Spørgetime. Først gennemgår jeg slagets gang, derefter tjekker vi tidsplanen, og så må I spørge om elektronik mm..

Spørgetime. Først gennemgår jeg slagets gang, derefter tjekker vi tidsplanen, og så må I spørge om elektronik mm.. Design og Produktion, Elektronik ( redigeret 13/6-2015 ) Først gennemgår jeg slagets gang, derefter tjekker vi tidsplanen, og så må I spørge om elektronik mm.. Aflevere bøger, fumlebrædder, mm, oprydde

Læs mere

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering

Grundlæggende Programmering ITU, Efterår 1999. Skriftlig eksamen i Grundlæggende Programmering Skriftlig eksamen i Grundlæggende Programmering ITU, 20. januar 2000 Alle hjælpemidler tilladt, dog ikke datamat. Eksamen er skriftlig, fire timer, og bedømmes efter 13-skalaen. Opgavesættet består af

Læs mere

Rekursion C#-version

Rekursion C#-version Note til Programmeringsteknologi Akademiuddannn i Informationsteknologi Rekursion C#-version Finn Nordbjerg 1 Rekursion Rekursionsbegrebet bygger på, at man beskriver noget ved "sig selv". Fx. kan tallet

Læs mere

DM507 Algoritmer og datastrukturer

DM507 Algoritmer og datastrukturer DM507 Algoritmer og datastrukturer Forår 2017 Projekt, del III Institut for matematik og datalogi Syddansk Universitet 6. april, 2017 Dette projekt udleveres i tre dele. Hver del har sin deadline, således

Læs mere

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen.

Indledning. Hvorfor det forholder sig sådan har jeg en masse idéer om, men det bliver for meget at komme ind på her. God fornøjelse med læsningen. Indledning...2 Variabler...13 Eksempel: 1...13 Eksempel 2:...13 Eksempel 3:...15 Eksempel 4:...16 Metoder...17 Metode (intet ind og intet ud)...17 Metode (tekst ind)...18 Metode (tekst ind og tekst ud)...19

Læs mere

DM507 Eksamen Obligatorisk Opgave Rejseplanlægning

DM507 Eksamen Obligatorisk Opgave Rejseplanlægning Institut for Matematik og Datalogi Syddansk Universitet, Odense 21. februar 2011 LMF DM507 Eksamen Obligatorisk Opgave Rejseplanlægning 1 Problemet Denne opgave går ud på at lave et program, som ud fra

Læs mere

Tabeller (I) Tabeller

Tabeller (I) Tabeller Tabeller (I) Klassediagrammer (III) Tabeller og qualified associations Michael R. Hansen mrh@imm.dtu.dk Informatics and Mathematical Modelling Technical University of Denmark En tabel fra en mængde A til

Læs mere

Rekursion og dynamisk programmering

Rekursion og dynamisk programmering Rekursion og dynamisk programmering Datastrukturer & Algoritmer, Dat C Forelæsning 12/10-2004 Henning Christiansen Rekursion: at en procedure kalder sig selv eller et antal metoder kalder hinanden gensidigt.

Læs mere