Nyeste it-job

Lektion 8: Arrays

I denne lektion kigger vi nærmere på hvad et array er, hvordan det bruges, og hvad det kan bruges til.

Lektionen kan godt virke lidt svært, hvis du aldrig har hørt om arrays før. Men prøv aligevel at læse den igennem - vi har forsøgt at gøre det så pædagoisk som muligt.

Hvad er et array?

et array er en række indekserede elementer, hvor hvert element har et unikt identifikationsnummer.

Lyder det forvirrende ? Måske en lille smule - men det er faktisk ikke så svært.

Forestil dig en lang række af forskellige ord adskilt af kommaer. Det er en såkaldt kommaseparetet liste - og den kunne f.eks. se sådan her ud:

æbler, pærer, bananer, appelsiner, citroner

Så prøv at forestil dig at man opdeler listen ved hvert komma - og giver hvert afsnit et unikt fortløbende tal, sådan her:

æbler (0), pærer (1), bananer (2), appelsiner (3), citroner (4)

Det du ser er et array. Vi kan f.eks. navngive dette array "frugter". Ideen er nu at vi kan kalde array'et med et tal, og få en værdi retur - sådan her:

frugter(0) = æbler
frugter(1) = pærer
frugter(2) = bananer
frugter(3) = appelsiner
frugter(4) = citroner

OK, det er systemet bag et array. Og lad os nu prøve at bruge det i praksis.

hvordan bruger man et array?

Lad os fastholde eksemplet med frugterne. Så vil vi kigge på trin for trin hvordan man gør. Først sætter vi en variabel lig listen med frugterne:

<%
Dim frugtliste

frugtliste = "æbler, pærer, bananer, appelsiner, citroner"
%>

Dernæst bruger vi funktionen dokumentationSplit til at lave opdelingen ved hvert komma:

<%
Dim frugtliste, arrFrugter

frugtliste = "æbler, pærer, bananer, appelsiner, citroner"

arrFrugter = Split(frugtliste,",")
%>

Sådan, "arrFrugter" er nu et array!

Læg mærke til at vi kaldte funktionen dokumentationSplit med to argumenter:

  1. listen, som skulle splittes
  2. og ved hvilket tegn der skulle splittes (i dette tilfælde et komma - angivet med citationstegn: ",").

Her bruger vi et komma som separator - men bemærk at man kan benytte alle tegn eller ord som separator.

Lad os prøve at kommentere scriptet og sætte det ind i et ASP dokument:

<html>
<head>
<title>Array</title>
</head>
<body>

<%
' to variabler til liste og array
Dim frugtliste, arrFrugter

' Kommasepareret liste
frugtliste = "æbler, pærer, bananer, appelsiner, citroner"

' Lav et array ved at splitte listen ved kommaer
arrFrugter = Split(frugtliste,",")

   ' Udskriv værdierne fra vores array
   Response.Write "<p>Listen med frugter indeholder:"

   Response.Write "<ul>"
   Response.Write "<li>" & arrFrugter(0)
   Response.Write "<li>" & arrFrugter(1)
   Response.Write "<li>" & arrFrugter(2)
   Response.Write "<li>" & arrFrugter(3)
   Response.Write "<li>" & arrFrugter(4)
   Response.Write "</ul>"
%>

</body>
</html>

Dette eksempel er naturligvis meget simpelt, og det kan måske være lidt svært at få øje på fordelen ved at benytte et array til netop denne opgave. Men bare vent - arrays kan bruges til utroligt mange smarte ting.

Gennemløb et array med en løkke

Tilbage i lektion 5 lærte du om løkker. Nu vil vi kigge på hvordan du kan bruge en løkke til at gennemløbe et array.

Når man ved hvor mange elementer et array indeholder er det intet problem af definere løkken. Man starter simpelthen blot med 0 og lader løkken fortsætte til det antal elementer der findes. I eksemplet med frugterne ville man kunne gennemløbe arrayet sådan her:

<html>
<head>
<title>Array</title>
</head>
<body>

<%
' to variabler til liste og array
Dim frugtliste, arrFrugter

' Kommasepareret liste
frugtliste = "æbler, pærer, bananer, appelsiner, citroner"

' Lav et array ved at splitte listen ved kommaer
arrFrugter = Split(frugtliste,",")

   Response.Write "<p>Listen med frugter indeholder:"
   Response.Write "<ul>"

   ' Her bruges en løkke til at genneløbe arrFrugt
   For t = 0 to 4
      Response.Write "<li>" & arrFrugter(t)
   Next

   Response.Write "</ul>"
%>

</body>
</html>

Variablen t (som gennem løkken antager værdier fra 0 til 4) bruges altså til at kalde arrayet.

Hvordan finder man størrelsen af et array?

Men hvad hvis vi tilføjer endnu en frugt til listen med frugter? Det vil betyde at vores array også kommer til at indeholde et element mere - og dette element vil have identifikationsnummeret 5. Kan du se problemet? Så er vi nødt til at rette vores løkke, så det løber fra 0 til 5 - ellers kommer alle elementerne ikke med.

Ville det ikke være smart hvis vi automatisk kunne finde ud af hvor mange elementer et array indeholder?

Jo, og det er netop hvad vi kan gøre med funktionerne dokumentationUbound og dokumentationLbound, som returnerer henholdsvis det højeste og laveste identifikationsnummer i et array.

Dermed kan vi fastslå størrelsen af et hvilken som helst array. Dette kan udnyttes til at lave en løkke, som fungerer uanset antallet af elementer:

<%
   For t = LBound(arrFrugt) to UBound(arrFrugt)
      Response.Write arrFrugter(t)
   Next
%>

Denne Løkke vil fungere uanset hvor mange eller få elementer et array indeholder.

Endnu et eksempel

Her kommer endnu et eksempel på hvordan du kan benytte et array. Denne gang til at få skrevet månedens navn:

<html>
<head>
<title>Array</title>
</head>
<body>
<%
' en variabel til måneder
Dim arrMaaneder

' Bemærk komma før januar - da der findes ikke nogen måned med nummeret 0
arrMaaneder = Array(,"jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec")

' Kald array med månedens nummer - skriv til klienten
Response.Write arrMaaneder(Month(Date))
%>
</body>
</html>

Det interessante her er at vi benytter funktionen dokumentationArray istedet for funktionen dokumentationSplit til at lave et array.

OK? Nu tror jeg at du har læst nok om arrays - den næste lektion handler om hvordan du kan skrive dine egne funktioner.


Nyhedsbrev
Tilmeld dig HTML.dk's nyhedsbrev


Er du jobsøgende?

 Ja
 Nej
Se det foreløbige resultat når du har stemt!


Se tidligere afstemninger

 Community
Brugernavn

Adgangskode

Husk

 *  Bliv medlem her
 *  Glemt password?


Om HTML.dk | Oplysninger om ophavsret | Politik om persondata | Annoncer på HTML.dk | RSS

Valid XHTML 1.1! Valid CSS! Powered by Scannet