Föreläsning 5″Array & List”

–DATASTRUKTURER–

ARRAYER (VEKTORER, FÄLT)
Hur gör man om man vill lagra månadskostnader för ett helt år?

int kostnad1 = 3010;
int kostnad2 = 2142;
int kostnad3 = 1072;
int kostnad4 = 2949;
int kostnad5 = 3111;

Hmm… finns det inget smartare sätt?

Jo, man kan använda sig av arrayer.

ARRAYER EXEMPEL
För att komma åt ett visst element i en vektor anger man namnet på vektorn följt av indexet inom ”hakar”.

int[] kostnad = new int[4];  //I det här fallet, int = datatyp, 4 = antal ”slots” i arrayen, dvs index 0-3
kostnad[0] = 3010;
kostnad[1] = 2142;
…..
kostnad[3] = 1234;

((BILD))

kostnad[4] refererar således till elementet som har index 4, vilket blir det 5:e elementet i vektorn, eftersom vi börjar räkna index på 0

VAD ÄR EN ARRAY?
En programkonstruktion för att gruppera och organisera data

Tillhör familjen av datastrukturer, och räknas som den mest primitiva av alla.

Med hjälp av en array/vektor kan vi deklarera en variabel som kan hålla mer än ett värde samtidigt.

Varje ”värde” i ett fält kallas för element.

En array kan vara av vilken datatyp som helst.
–    Array med heltal (int)
–    Array med flyttal (float/double)
–    Array med char
–    Array med ….

Alla element i en viss vektor är av samma typ

VILKA EGENSKAPER HAR EN ARRAY?
Maximala antalet element bestäms av instansieringen

Alla element är av samma datatyp (även om de kan ha olika värden)

Hela vektorn sparas som en sekvens av värden i minnet (det finns inga mellanrum mellan elementen)

Elementen lagras i en ordnand form, varje värde ligger på en specifik position i vektorn

Positionen kallas för index och anges alltid som ett heltal

I C# och C++ börjar indexet alltid på 0, vilket betyder att värdet som sparas på t.ex. index 5 i själva verket är det 6:e värdet

ARRAYER I ANVÄNDNING
Uttrycket age[4] refererar till ett heltal som sparats på en speciell minnesadress

Elementet kan användas varhelst en variabel kan användas:
–    Vid tilldelningar:
kostnad[4] = 2000;
–    I beräkningar:
medel = (kostnad[0] + kostnad[1] + kostnad[2]) / 3;
–    I utskrifter:
Console.WriteLine( kostnad[7] );

etc…

EXEMPEL ARRAY
static void Main(string[] args)
{
int[] kostnad = new int[12];
int totalt = 0;

kostnad[0] = 3112;
kostnad[1] = 2142;
kostnad[2] = 1942;
kostnad[3] = 5436;
//osv…

for (int i = 0; i < 12; i++)
{
totalt += kostnad[i];
}
Console.WriteLine(”Hela året: {0}”, totalt);
}

static void Main(string[]args)
{
int[] primtal = {1, 3, 4, 7, 11, 13, 17};

for (int i = 0, i < 7; i++)
{
Console.WriteLine(primtal[i]);
}
primtal[2] = 5;
}

Arrayer kan ha fler än en dimension

En array med en dimension kallas för array, vektor eller fält.

En vektor med två dimentioner kallas för matris

int[,] daysInMonth =
{
{31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
{31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31},
};

FÖR OCH NACKDELAR MED ARRAYER
Negativt
–    Storleken bestäms då vi deklarerar vektorn
–    –    Int[] arrayOfNumbers = new int[10];

–    Om vi behöver en större vektor måste vi kopiera över alla gamla värden till en ny array
–    Alternativt: Skapa ett för stort fält från början -> slöseri med minne, särskilt om vi aldrig behöver utnyttja hela     fältet.

Positivt
–    Enkelt och snabbt. Var ett element befinner sig beräknas med en enkel formel.
–    Fungerar bra då vi har en ”fast” storlek på vår data.

LIST <T>
Kan lagra all data.

List<T> fungerar som endynamisk array, med andra ord:
–    Den kan öka och minska antalet element

Hjälpmetoder – lägga till objekt, ta bort objekt, söka, sortera, och ändra data.

ITERERA VEKTORER OCH LISTOR
Indexera, for-loop
–    for (int = 0; i < dinosaurs.Count; i++)
Console.WriteLine(dinosaurs[i]);

Iterator, foreach
–    foreach (string dinosaur in dinosaurs)
Console.WriteLine(dinosaur);

FOREACH♠
foreach (datatyp identifierare in Collection)

datatyp = int, double, objekt etc
identifierare = namn
collection = array, list, dictionary