Efterår 2009VVU-IT: Softwarekonstruktion1 Velkommen til Softwarekonstruktion Aase Bøgh, Systemudvikling Martin Siegumfeldt,

Slides:



Advertisements
Lignende præsentationer
Velkommen til Softwarekonstruktion
Advertisements

KAPITEL 2 Renterisiko.
KAPITEL 7 Kreditrisiko.
KAPITEL 3 Volatilitet, Beta og Tracking Error
Ventilation og indeklima
KAPITEL 10 Derivater.
KAPITEL 5 Delta Normal Value at Risk
dagsorden Metoder i samfundsfag – hvorfor?
Gode råd om ansøgning til MUDP 2017
Forældre-information
Statisk ubestemte konstruktioner. Robusthed
Trigonometri som værktøj for problemløsninger ved geometri og måling
Pengurusan Pembayaran Penyelidikan Research Management Centre
Hvilke sager ligger der på vejlederkonsulentens bord for tiden?
C4 C4 i Hillerød Erhverv Handel Turisme, kultur, sport Uddannelse
Amukurs.dk Power point 1: Online præsentation af amukurs.dk - Sådan gør du: Læs ”Værd at vide, når du skal give en online præsentation af amukurs.dk”
Mit liv - nu med DAT MIT LIV - nu med DAT.
Et liv med OCD Nicoline Møller.
Interaktion og usability
KAPITEL 13 Kapitalkrav.
Almen statskundskab Politisk meningsdannelse v/ Peter Nedergaard
Vejledning Opdaterede faktorer til kapacitetsberegning - Oktober 2016
P4: Vejledning i læreruddannelsen
Tema 5: Relationer og kommunikation Psykoedukation til patienter med emotionel ustabil personlighedsforstyrrelse.
Kort om Hjerteforeningen
Aarhus: Program - dag 1 - d. 17. januar
Det danske ejendomsmarked
Ea Thystrup & Louise Mikkelsen 3øa
3d Billeddata (Side i artiklen: 2. Repræsentation og manipulation af Data)
Teknisk service på hoteller, konference - og feriecentre
Eva Danielsen, Nærum Gymnasium
Folkeskolens prøver i matematik
Hans Ole Lund Christiansen
Hvad er Lindebjergskolens CO2 fodaftryk
Introduktion.
Rullede deje.
CUSTOMER LIFETIME VALUE
Også kendt som Dynamisk fræsning…
Redesign af antennetårn for test af antenner i DTU’s radiodøde rum, under integreret anvendelse af Creo Top-Down Design og Creo simulate Indlæg ved.
Talentudvikling... Fortalt af et Talent
Fremme af LGBTI-personers ligestilling i Den Europæiske Union
Velkommen Dagens program.
Klasse 5 Oplæg 4 + opgave 4 haben i nutid ”har”.
Børnehus ved Jernalderlandsbyen Møde i Det Grønne Råd 14. maj 2019
3. Sundhedsmappe Patienten har log-in og password
Problemer med forskellige
             Økonomi Årsmøde på DBI 8. april 2019.
Økonomisk ulighed i Danmark
JOHANNES MOURITSEN Docent emeritus
Basal videnskabsteori i forbindelse med SRO og SRP
Refleksionens betydning for den pædagogiske praksis i SFO og skole
GD1-GD2 Styregrupper Status på testprojektet 15. marts 2016
Vi har købt en lille bjerghytte på fjellet, og tænkte på om du ville tage familien med eller nogle venner og komme en tur i julen for en lille julegløg.
Kære Skole – Læs og fjern inden brug
Humanistisk Entrepreneurship 2 Forretningsmodellæredet Business Model Canvas Kreative grupper Pillon - KU.
Deployment Linux server on Digital Ocean droplet
En sundheds-aktivitet der henvender sig til de unge
Hvad kan vi lære af USA og Tyskland?
Oversvømmelses-beskyttelse
Det fælles ansvar Sikre kendskab til aftalen Holde dialog om aftalen
Kompendium: Scenarier - Øvelseskoncept for strategiske krisestabe
Videncenter for Velfærdsteknologi Vest Læringscenter
Introduktion til CE-mærkning
DDB Maj 2019.
[Dette oplæg indeholder udvalgte centrale budskabet fra informationsmaterialet om brug af lægemidler til personer med demens. Materialet er udarbejdet.
Svangreomsorgen starter hos praksispersonalet
Elevtrivselsundersøgelsen 2018 For erhvervsuddannelserne
HVAD MENER BORGERE OM BRUGEN AF EN CHATBOT?
Brønderslev den 6. august 2019
Statistisk usikkerhed Surveybank Statistikbanken
Præsentationens transcript:

Efterår 2009VVU-IT: Softwarekonstruktion1 Velkommen til Softwarekonstruktion Aase Bøgh, Systemudvikling Martin Siegumfeldt, Programmering og

Agenda Opsamling fra sidste gang –Forgreninger, –Løkker –Arrays –Metoder –Opgaver Algoritmeskabeloner: –Sweep-algoritmer –Søge-algoritmer Efterår 2009VVU-IT: Softwarekonstruktion2

if-sætningen int etTal=3, etAndetTal=7; if(etTal>7){ Console.WriteLine("Tal er større end 7"); } else{ if(etTal<7){ Console.WriteLine("Tal er mindre end 7"); } else { Console.WriteLine("Tal er lige med 7"); } } if((etTal==7) && (etAndetTal != 3)) Console.WriteLine(”Hallo.”); else Console.WriteLine(”Hello.”); Efterår 20093VVU-IT: Softwarekonstruktion

switch – en variant af if-sætningen Mange forgreninger Valg styret af en simpel værdi F.eks. månedsnavn ud fra månedsnummer: //indlæs månedsnummer i int nr switch(nr){ case 1: Console.WriteLine(”Januar”); break; case 2: Console.WriteLine(”Februar”); break; //fortsættes case 3: Console.WriteLine(”Marts”); break; //osv.….. case 12: Console.WriteLine(”December”); break; default: Console.WriteLine(”Ikke en måned”); } Efterår 20094VVU-IT: Softwarekonstruktion

Specielt ved fejl (exceptions) Hvis der sker en fejl, kan der kastes en exception, f.eks try{ double d= System.Convert.ToDouble(s); //en hel masse kode med d } catch{ System.Console.WriteLine(”Ikke et decimaltal); } Hvis s ikke er et gyldigt decimaltal, så kastes en exception fra …ToDouble(-) Hvis der kom en exception springes til catch-blokken Efterår 20095VVU-IT: Softwarekonstruktion

for eller while? Normalt bruges while, hvis man ikke ved hvor mange gange løkken skal løbes igennem, f.eks: –Led efter den første 7’er i et spil kort int i=1; do { Console.WriteLine(”Tal er ”+i); i++; }while(i<5); int i=1; while(i<5) { Console.WriteLine(”Tal er ”+i); i++; }; En variant af while er do–while: do-while udføres mindst én gang Efterår 20096VVU-IT: Softwarekonstruktion

for eller while ? for-sætningen bruges normalt når man ved hvor mange gange løkken skal køre, f.eks; –Tæl antal 7’ere i en kort-hånd (Du er nødt til at undersøge alle kort) Hvis man skal igennem en mængde af data kan man bruge foreach –Se eksempel med array om lidt Efterår 20097VVU-IT: Softwarekonstruktion

Array Æske-metaforen: Du kan betragte et array som en æske med et antal skillerum med samme størrelse. I hvert rum kan ligge en variabel af samme datatype. Rummene nummeres fra 0 til antal-1. Erklæring af et array: –int [] mitArray = {1,2,3,4,5}; //Opret og tildel værdier på een gang eller: –int [] mitArray = new int[5]; //Gør plads til 5 skillerum mitArray[0]=1; mitArray[1]=2; osv. Aflæs værdi fra arrayet: –int etTal = mitArray[3], //etTal får så værdien 4, hvorfor? Tildel værdi til en celle i arrayet: –mitArray[3]=etTal*2; //Nu står der 8 på den fjerde plads Efterår 20098VVU-IT: Softwarekonstruktion

Eksempel: Summen af alle tal i et array Eksempel med foreach: int sum=0; foreach( int tal in mitArray) sum=sum+tal; Console.WriteLine("Summen er "+sum); Sæt summen til nul For hvert element i arrayet: Aflæs tallet i arrayet, og læg det til summen. Eksempel med for: int sum=0; for( int i=0; i< mitArray.Length; i++) sum=sum+mitArray[i]; Console.WriteLine("Summen er "+sum); Løber hele arrayet igennem. For hvert gennemløb indlæses det næste element i tal Length fortæller længden på arrayet Efterår 20099VVU-IT: Softwarekonstruktion

Metoder Metoder kan betragtes som funktioner til et objekt. Metoder kan bruges til kode, der skal kaldes flere gange Metoder gør koden lettere at forstå og vedligeholde. Dette er en del af det begreb, der kaldes indkapsling WriteLine(..) er et eksempel på en metode i Console En metode kan kendes på, at der er parenteser! Man skelner mellem private og public metoder: –”public” metoder kan tilgås udenfor objektet: –”private” metoder kan ikke tilgås udefra, men bruges internt i objektet Er Length en metode på et array? Efterår VVU-IT: Softwarekonstruktion

Eksempel: tælleriet fra før class EnKlasse { static void Main(string[] args) { for(int i=1; i<5;i++) UdskrivTal(i); } private static void UdskrivTal(int n) { Console.WriteLine("Tal er "+n); } Efterår VVU-IT: Softwarekonstruktion Returtype Parameter

Et andet eksempel: sum class Sum { static void Main(string[] args) { int [] mitArray={12,3,4,7,3,1,7,8,7,9,10}; Console.WriteLine("Summen er " + beregnSum(mitArray)); } private static int beregnSum(int [] etArray) { int sum=0; foreach (int etTal in etArray) sum+=etTal; return sum; } Returner summen som en int Hvordan kan man se det er en int? Efterår VVU-IT: Softwarekonstruktion

Opgaver Alle følgende opgaver tager udgangspunkt i eksemplet med summen af tallene i et array: 1.Lav en metode, som beregner gennemsnittet af tallene i et array. 2.Lav en metode, som tæller antal forekomster af værdien 7 i et array. 3.Lav en metode, som returnerer sand, hvis værdien 3 findes i et array og falsk hvis ikke. 4.Generaliser opgave 2 og 3, så der kikkes efter en vilkårlig værdi (ind-parameter til metoderne) i stedet for 7 og 3 resp. Efterår VVU-IT: Softwarekonstruktion

Agenda Opsamling fra sidste gang –Forgreninger, –Løkker –Arrays –Metoder –Opgaver Algoritmeskabeloner : –Sweep-algoritmer –Søge-algoritmer Efterår 2009VVU-IT: Softwarekonstruktion14

Algoritmeskabeloner Mange forskellige problemer kan løses af algoritmer, som har et fælles mønster, en fælles struktur. Denne struktur kan genbruges med klarere og mindre fejlbehæftede programmer til følge Skabelonen har et navn, så man kan snakke om den Vi vil kigge på to: –Sweep-algoritmer: gennemløber altid hele datamængden og gør noget ved (nogen af) elementerne –Søge-algoritmer: leder efter et element med en bestemt egenskab og stopper når et (det første) element med egenskaben er fundet. Efterår VVU-IT: Softwarekonstruktion

Gennemløber altid hele datamængden og gør noget ved (nogen af) elementerne INIT, DONE, SELECT, REMOVE afhænger af sættets data repræsentation Konkretiseringen af DO og DO_INIT afhænger ydermere af den konkrete opgave Sweep – en algoritmeskabelon ; while { ; } Efterår VVU-IT: Softwarekonstruktion

INIT, DONE, SELECT og REMOVE kan konkretiseres til en tæller i, der Indikerer starten af det ubesøgte sæt (US) Indsættes dette i skabelonen, fås: Konkretisering af skabelonen på et array (int[ ] a) ; int i = 0; while ( i < a.length ) { ; i++; } // end while INIT: i = 0 DONE: i >= a.length SELECT: a[i] REMOVE: i++ Efterår VVU-IT: Softwarekonstruktion

I C# - simplere med for-løkke: Opgave konkretisering: Nul-tælling DO_INIT:int result= 0; DO:if(a[i]==0) result++ ; for (int i=0 ; i<a.Length ; i++ ) { ; } // end for int result= 0; for (int i=0 ; i<a.Length ; i++){ if (a[i] = = 0) result++; } // end for int result= 0; foreach (int x in a){ if (x = = 0) result++; } // end for Efterår VVU-IT: Softwarekonstruktion Kun, hvis x ikke skal ændres

Opgaver (fra før) – er der nogle sweeps? Alle følgende opgaver tager udgangspunkt i eksemplet med summen af tallene i et array: 1.Lav en metode, som beregner gennemsnittet af tallene i et array. 2.Lav en metode, som tæller antal forekomster af værdien 7 i et array. 3.Lav en metode, som returnerer sand, hvis værdien 3 findes i et array og falsk hvis ikke. 4.Generaliser opgave 2 og 3, så der kikkes efter en vilkårlig værdi (ind-parameter til metoderne) i stedet for 7 og 3 resp. Efterår VVU-IT: Softwarekonstruktion

Leder efter et element med en bestemt egenskab og stopper når et (det første) element med egenskaben er fundet. INITIER, KM  Ø, UDVÆLG, SPLIT afhænger af sættets data repræsentation Søgeskabelonen ; bool found= false; while ( ! found && ) { ; if ( k==m ) found = true; else { }//end if-else } // end while Kandidatmængde:KM Målelement:m Kandidatelement:k Efterår VVU-IT: Softwarekonstruktion

INITIER:int i = 0 UDVÆLG:k = a[i] KM  Ø:i < a.Length SPLIT:i ++ int k; int i= 0; bool found= false; while ( !found && i<a.Length ) { k = a[I]; if (k == m) found= true; else i ++; } // end while Efterår VVU-IT: Softwarekonstruktion Konkretisering af skabelonen på et array (int[ ] a) Igen kan flere skridt konkretiseres til en tæller i, der indikerer starten af det ubesøgte sæt (US)

Opgaver (fra før) – er der nogle søgninger? Alle følgende opgaver tager udgangspunkt i eksemplet med summen af tallene i et array: 1.Lav en metode, som beregner gennemsnittet af tallene i et array. 2.Lav en metode, som tæller antal forekomster af værdien 7 i et array. 3.Lav en metode, som returnerer sand, hvis værdien 3 findes i et array og falsk hvis ikke. 4.Generaliser opgave 2 og 3, så der kikkes efter en vilkårlig værdi (ind-parameter til metoderne) i stedet for 7 og 3 resp. Efterår VVU-IT: Softwarekonstruktion

Algoritmeskabeloner - opsummering Algoritmeskabeloner kan (gen)bruges til at løse mange forskellige problemer En god implementering karakteriseres ved –Tydelig identifikation af de enkelte skridt –Tydelig skelnen mellem traversering af datasæt og udførsel af den specifikke opgave Efterår VVU-IT: Softwarekonstruktion

Opgaver i løkker og skabeloner For alle opgaverne skal det overvejes hvilken skabelon, der benyttes, og hvordan operationerne er konkretiseret: 1.Lav en metode, som returnerer antallet af lige tal i et int[ ]. Test den. (Vink: et tal er lige, hvis rest ved division med 2 er 0) 2.Lav en metode, som returnerer antallet af tal i et double[ ], som ligger mellem 10,0 og 20,0. Test den. 3.Lav en metode, som tager en int x som parameter, og returnerer true, hvis x findes i et int [ ]. Ændr metoden, så index på første forekomst af x i arrayet returneres. Hvad hvis x ikke findes i array’et? 4.Lav en metode, som finder første forekomst af et tegn i et char[ ]. 5.Lav en metode, som finder antallet af vokaler i et char[ ]. (Vink: lav først en metode, som tager et bogstav som parameter, og returnerer true, hvis bogstavet er en vokal, ellers false.) Efterår VVU-IT: Softwarekonstruktion