Forelæsning Uge 9 Mandag
|
|
- Amanda Rebecca Ludvigsen
- 5 år siden
- Visninger:
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 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 mereObjektsamlinger 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 mereObjektsamlinger 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 mereForelæ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 mereForelæ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 mereDRONNINGER (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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereDM507 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 mereCOMPUTERSPIL 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 mereDM507 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 mereDANMARKS 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 mereForelæ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 mereForelæ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 mereForelæ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 mereb) 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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereUgeseddel 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 mereForelæ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 mereBILLEDREDIGERING (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 mereCOMPUTERSPIL 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 mereForelæ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 meredintprog 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 mereDM507 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 mereDM507 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 mereForelæ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 mereUniversity 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 mereForelæ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 mereForelæ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 mereForelæ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 mereForelæ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 mereSkriftlig 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 mereForelæ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 mereForelæ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 mereForelæ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 mereclass 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 mereForelæ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 mereUniversity 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 mereDM507 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 mereForelæ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 mereDatalogi 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 mereDM507 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 mereKlasser 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 mereSkriftlig 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 mereForelæ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 mereForelæ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 mereSpø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 mereForelæ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 mereProgrammering 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 mereHar 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 mereclass 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 mereForelæ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 mereIntroduktion 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 mereSkriftlig 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 mereTree 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 mereKlasser 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 mereAbstrakte 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 mereAlgoritmeskabeloner: 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 mereForelæ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 mereForelæ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 mereDM507 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 mereForelæ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 mereDM507 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 mereBRP 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 meredintprog 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 mereOpfø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 mereEksempel: 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 mereMå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 mereTabelbegrebet. 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 mereHar 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 mereLø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 mereSkriftlig 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 mereKursusarbejde 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 mereKapitel 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 mereSpø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 mereGrundlæ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 mereRekursion 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 mereDM507 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 mereIndledning. 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 mereDM507 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 mereTabeller (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 mereRekursion 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