Abstrakte datatyper – C#-version

Abstrakte datatyper – C#-version Abstrakte datatyper – C#-version

public.ucn.dk
from public.ucn.dk More from this publisher
29.07.2013 Views

NOEA/IT Programmeringsteknologi/C#.NET FEN/2004-02-20 Princippet er, at programmer kan anvende adt’en alene udfra kendskab til operationernes specifikationer. Man behøver altså ikke at bekymre sig datastrukturen og de algoritmer, som realiserer operationerne på datastrukturen. ADT’en sekvens En meget udbredt adt er sekvens eller ordnet liste ofte blot liste. Den findes i de fleste moderne programmeringssprogs bibliotek, således også i C#, hvor den hedder Ilist, og har en realisering, som hedder ArrayList. En sekvens er en samling af værdier, som står i en eller anden rækkefølge. Man kan altså tale om første værdi, sidste værdi eller syvende værdi. Ligeledes er det muligt at indsætte og slette værdier på en bestemt plads. Praktiske varianter af sekvenser er utallige, fx. en sekvens af studerende ved et erhvervsakademi, en sekvens af bøger i et bibliotek, en sekvens af tegn (kaldes ofte en streng) i et program, der arbejder med tekster. Vi vil i første omgang koncentrere os om et simpelt eksempel, nemlig sekvenser af heltal. Vi har kaldt typen SeqInt. Værdimængden for SeqInt Værdimængden for datatypen SeqInt er følger af heltal. Her er en række forskellige eksempler: [1, 3, 5] [1, 5, 3] [-1, 34, 56] [1] [2, 65, 8, 999, 434, 0, 12, 1, -5, 78, 9] [] (en tom sekvens, men dog stadig en sekvens). Elementerne i en sekvens refereres via deres index. Første element har index 0. I det følgende vil vi realisere SeqInt vha. C#’s ArrayList: Operationer på ArrayList Følgende operationer kan udføres på en variabel s af typen ArrayList: Definerer en sekvens s. Nulstiller s. ArrayList s= new ArrayList(); s.Clear(); 4/9

NOEA/IT Programmeringsteknologi/C#.NET FEN/2004-02-20 s.Insert(i,e); Indsætter elementet e på pladsen med index i og rykker eventuelle efterfølgende elementer. s.RemoveAt(i); Fjerner elementet med index i og rykker eventuelle efterfølgende elementer tilbage. s.Add(e); Tilføjer elementet e som det sidste element. Udover disse operationer, som er implementeret som metoder, har ArrayList et par operationer mere: s.Count; Returnerer en int indeholdende antallet af elementer i s. s[i] tilgår det i’te element, således at int x= s[i]; placerer værdien af det i’te element i x, og s[i]= x; ændrer værdien af det i’te element til x. Det skal slutteligt nævnes, at ArrayList har en lang række andre operationer, som vi ikke vil fordybe os i her. Se dokumentationen. Eksempel på brug af SeqInt På næste side ses et lille program, som opretter en SeqInt, sætter nogle tal ind i sekvensen, udskriver sekvensen, bruger et par operationer og udskriver sekvensen igen. 5/9

NOEA/IT <strong>–</strong> Programmeringsteknologi/<strong>C#</strong>.NET FEN/2004-02-20<br />

Princippet er, at programmer kan anvende adt’en alene udfra kendskab til operationernes<br />

specifikationer. Man behøver altså ikke at bekymre sig datastrukturen og de algoritmer, som<br />

realiserer operationerne på datastrukturen.<br />

ADT’en sekvens<br />

En meget udbredt adt er sekvens eller ordnet liste <strong>–</strong> ofte blot liste. Den findes i de fleste moderne<br />

programmeringssprogs bibliotek, således også i <strong>C#</strong>, hvor den hedder Ilist, og har en realisering,<br />

som hedder ArrayList.<br />

En sekvens er en samling af værdier, som står i en eller anden rækkefølge. Man kan altså tale om<br />

første værdi, sidste værdi eller syvende værdi. Ligeledes er det muligt at indsætte og slette<br />

værdier på en bestemt plads. Praktiske varianter af sekvenser er utallige, fx. en sekvens af<br />

studerende ved et erhvervsakademi, en sekvens af bøger i et bibliotek, en sekvens af tegn (kaldes<br />

ofte en streng) i et program, der arbejder med tekster. Vi vil i første omgang koncentrere os om<br />

et simpelt eksempel, nemlig sekvenser af heltal. Vi har kaldt typen SeqInt.<br />

Værdimængden for SeqInt<br />

Værdimængden for datatypen SeqInt er følger af heltal. Her er en række forskellige eksempler:<br />

[1, 3, 5]<br />

[1, 5, 3]<br />

[-1, 34, 56]<br />

[1]<br />

[2, 65, 8, 999, 434, 0, 12, 1, -5, 78, 9]<br />

[] (en tom sekvens, men dog stadig en sekvens).<br />

Elementerne i en sekvens refereres via deres index. Første element har index 0.<br />

I det følgende vil vi realisere SeqInt vha. <strong>C#</strong>’s ArrayList:<br />

Operationer på ArrayList<br />

Følgende operationer kan udføres på en variabel s af typen ArrayList:<br />

Definerer en sekvens s.<br />

Nulstiller s.<br />

ArrayList s= new ArrayList();<br />

s.Clear();<br />

4/9

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!