1 / 20

Arrays & exception handling 1

Arrays & exception handling 1. 1-dimensionelle arrays Foreach Overførsel (eng.: passing ) af arrays til metoder Multidimensionelle (eng.: multidimensional) arrays Rektangulære arrays (eng.: rectangular arrays ) Jagged arrays ( dk .: takkede arrays )

shalom
Download Presentation

Arrays & exception handling 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Arrays & exception handling 1 • 1-dimensionelle arrays • Foreach • Overførsel (eng.: passing) af arrays til metoder • Multidimensionelle (eng.: multidimensional) arrays • Rektangulære arrays (eng.: rectangular arrays) • Jagged arrays (dk.: takkede arrays) • Variabel-længde argument lister (eng.: variable-lengthargument lists) • Kommandolinje argumenter (eng.: command-line arguments) • Klassen Array & dens statiske metoder • Steen Jensen, efterår 2013

  2. Arrays – intro 1 Et array er en gruppe af variable (kaldet elementer), der indeholder værdier af samme type Arrays er reference typer Elementerne i et array kan være værdityper (eng.: value types) eller reference typer (inkl. andre arrays) For at referere til et givet element i et array anvendes navnet på array’et og positionen i arrayet (også kaldet elementets index)

  3. Arrays – intro 2 • Et index skal være et positivt heltal (integer) og kan være et udtryk • Fx vil c[a + b] += 2; lægge 2 til array element c[11] forudsat, at a = 5, og b = 6 • Arrays har en længdeegenskab (eng.: Lengthproperty), som angiver antallet af elementer i array’et (dets længde). I figur 8.1 i foregående slide vil c.Length være = 12 • For at beregne summen af de tre første elementer ville man skrive: • sum = c[0] + c[1] + c[2]; • For at dividere indholdet af c[6] med 2 og tildele resultatet til variablen x ville man skrive: • x= c[6] / 2;

  4. Erklæring af arrays • Når et array oprettes, vil hvert element blive tildelt en standardværdi (eng.: default value) – 0 for numeriske elementer, false for bool elementer, null for referencer • Arrays kan normalt ikke resizes, men den statiske metode Resize kan benyttes For at erklære et array specificerer man typen og antallet af elementer Nedenstående figurer viser to måder at oprette arrays på

  5. Eksempler på brug af arrays 1 • Oprettelse & initialisering af array (figur 8.2 s. 327) • Brug af array initializer (figur 8.3 s. 328): • Det er muligt samtidigt at erklære et array samt initialisere dets elementer v.h.a. en såkaldt array initializer, som er en kommasepareret liste i ”tuborgklammer” (eng.: curlybraces) • Det er på denne måde ikke nødvendigt at angive new

  6. Eksempler på brug af arrays 2 • Summering af elementer i array (figur 8.5 s. 330) • Brug af søjlediagram (eng.: bar chart) til at vise data fra array grafisk (figur 8.6 s. 331): • Eksemplet viser fordelingen af eksamenskarakterer • Linje 9: array, der indeholder fordelingen mellem karakterniveauer • For elementer større end nul i arrayet udskrives det tilsvarende antal stjerner

  7. Brug af arrays til analyse af resultater fra spørgeskema (eng.: survey) (figur 8.8 s. 334) • Eksemplet simulerer, at 20 studerende er blevet bedt om at vurdere madens kvalitet i cafeteriaet på deres skole – skalaen går fra 1-5, hvor 1 er ”forfærdelig”, og 5 er ”glimrende” • Linje 10: de studerendes respons er angivet i array’etresponses • Linje 12: for at summere antal besvarelser for hver værdi i skalaen anvendes array’etfrequency • Linje 16-28: for-løkke, der gennemløber array responses • Linje 18-27: try-catch til fejlhåndtering (eng.: exception handling) • Linje 33-34: for-løkke, der udskriver frekvensfordelingen baseret på array frequency

  8. Simulering af at blande & give kort (eng.: shuffling & dealing) (figur 8.9, 8.10 + 8.11 s. 337 ) • Løsningen er opbygget med 3 klasser: • Card – figur 8.9, repræsenterer et spillekort m. en værdi (eng.: face) og en farve/kulør (eng.: suit) • DeckOfCards – figur 8.10, repræsenterer et sæt spillekort med 52 kort. Udover constructor indeholder klassen metoder til at blande (eng.: shuffle) og at give kort (eng.: deal) • DeckOfCardsTest – figur 8.11, er testklassen til at udføre simuleringen. Starter med at blande kort, og derefter deles alle 52 kort ud

  9. Foreach • Foreach-sætningen kan bruges som alternativ til for-sætningen til at løbe arrays igennem • Den generelle syntaks er: • Hvor type identifierer typen og navnet (fx intnumber) på iteration variable, og arrayName er det array, der ønskes gennemløbet • En foreach kan bruges i stedet for en for, når et array skal gennemløbes, og der ikke kræves adgang til tælleren (index) • Se figur 8.12 s. 342

  10. Overførsel (eng.: passing) af arrays til metoder • for at overføre et array som argument til en metode specificeres navnet på array’etuden nogen paranteser, fx

  11. Multidimensionelle (eng.: multidimensional) arrays • Multidimensionelle arrays bruges ofte til at repræsentere tabeller med værdier arrangeret i rækker og kolonner • For at angive et specifikt element angives to indekser • Som en konvention angiver det førsteindex række, og det andet kolonne • C# understøtter to typer af 2-dimensionelle arrays: • Rektangulære arrays (eng.: rectangular arrays) • Jagged arrays (dk.: takkede arrays)

  12. Rektangulære arrays (eng.: rectangular arrays) • I rektangulære arrays har hver række samme antal kolonner • Array initializerfor et 2-dimensionelt rektangulært array:

  13. Jagged arrays (dk.: takkede arrays) • Et jagged array er et 1-dimensionelt array, hvor hvert element refererer til en andet 1-dimensionelt array • Jagged arrays er meget fleksible, fordi længden på rækkerne ikke behøver være den samme • Fx kan et jagged array bruges til at gemme infoom en enkelt studerendes eksamenskarakterer for flere semestre, hvor antallet af eksamener kan variere for hvert semester • Array initializerfor et 2-dimensionelt jagged array – værdierne vil blive indsat i jagged[0][0], jagged[0][1], jagged[1][0] o.s.v.:

  14. Erklæring af 2-dimensionelle arrays med array-creationexpressions • Et 2-dimensionelt rektangulært array kan erklæres som flg.: • Et 2-dimensionelt jagged array kan erklæres som flg.:

  15. 2-dimensionelt array eksempel (figur 8.19 s. 357) • Linje 12: erklæring af rektangulært array rectangular • Linje 17-19: erklæring af jagged array jagged • Linje 21: kald af metoden OutputArray m. rectangularsom parameter • Linje 23: kald af metoden OutputArray m. jaggedsom parameter • NB! Metoden OutputArray er overloaded: • Linje 27-40: OutputArray til rectangular – bruger nestedfor-løkke • Linje 43-56: OutputArray til jagged– bruger nestedforeach-løkke

  16. Øvelser arrays – i klassen Prøv at besvare øvelse 8.2, 8.3, 8.4 s. 372-373 uden at se svaret Check derefter dine svar op imod svarene s. 373-374

  17. Variabel-længde argument lister (eng.: variable-length argument lists) • Variabel-længde argument lister giver mulighed for at lave metoder, der kan modtage et vilkårligt antal argumenter • For at kunne gøre det angives keywordparamsforan parametren i metodeerklæringen • NB! Paramskan kun angives for densidste parameter • Se fx figur 8.22 s. 366

  18. Kommandolinje argumenter (eng.: command-line arguments) • I mange systemer er det muligt at overgive (eng.: pass) argumenter fra kommandolinjen til en app • I Main-metoden er disse mulige argumenter angivet som: • Main ( string[] args ) • Se figur 8.23 s. 367 • Exe-filen kan I finde i mappen med kodeeksempler under fig08_23 … bin  Debug • Kopier denne exe-fil til fx roden af c-drevet, så det er nemt at skrive stien i kommandolinje-vinduet

  19. Klassen Array & dens statiske metoder • Alle arrays nedarver implicit fra klassen Array (namespaceSystem) • Array klassen indeholder en række statiske metoder • Se fx fig. 21.3 s. 856: • Linje 22: metoden Sort sorterer et array • Linje 25: metoden Copy kopierer et array til et andet • Linje 32: metoden BinarySearch gennemsøger et array for et element med den angivne værdi for index – NB! Forudsætter, at array’et er sorteret

  20. Programmeringsøvelser – metoder • Til nedenstående øvelser kan Problemløsning 2 med fordel benyttes • Resten af dagen + fortsæt hjemme: • Ex. 8.10, 8.15 s. 375 • Ex. 8.17, 8.18, 8.19, 8.20 s. 376 • Ex. 8.29 s. 382 • Making a difference ex. 8.34 s. 388 • Du/I må meget gerne lave øvelsen som pair programming, hvor I hjælpes ad – I kan f.eks. skiftes til at være ”leder” og ”sekretær” • Hvis du/I har problemer, så prøv først at vende det med det andet par i jeres gruppe, før I rækker hånden op og beder mig om hjælp

More Related