Fält (array)

Inledning

Ett fält (på engelska array) är en variabel som innehåller flera värden av samma typ. I ett fält kan du alltså lagra flera olika värden. Ett fält kan ha storleken 10 och innehåller då 10 olika värden av en viss typ. För att nå ett visst värde i fältet måste du veta på vilken plats i fältet du ska hämta detta värde. Detta brukar man kalla för ett index. Ett index anger alltid vilket värde i fältet som man är intresserad av. Detta index är alltid ett heltal, typ plats 0..1..2..3..osv.

Antag nu att du har 20 olika studenter, vars namn och ålder du ska lagra i variabler. Om du använder enkla variabler måste du ange 2*20 variabler för att lagra dessa värden, t ex:


string namn01 = "Kalle";
string namn02 = "Oskar";
string namn03 = "Sven";
//...osv
int ålder01 = 20;
int ålder02 = 28;
int ålder03 = 38;
//...osv

Om du däremot använder fält så räcker det med två fältvariabler:


string[] namn = new string[20];
int[] ålder = new int[20];

Vill man tänka i bilder så är följande bild ganska förklarande:

bild

Varje "box" i bilden är ett index i ett fält. I varje box så ryms det ett namn för namn eller en siffra för ålder eftersom dessa fält rymmer string och int.

Vi refererar till de enskilda elementen i fälten med namn[i] och ålder[i]. Det vi anger inom hakparentesen kallas för ett index och varje enskilt värde i fältet kallas en indexerad variabel eller ett element i fältet. Observera att i C# börjar vi räkna indexet från noll, så indexen i exemplet ovan kan vara något av värdena 0 t.o.m. 19.

Storleken på ett fält anges vid deklarationen. Om man senare i sitt program skulle vilja ändra storleken och samtidigt behålla den information som man har i fältet så blir det genast problem. Här ska du få se på en mycket nyttig användning av fält:

Exempel: Fält och loop

string[] namn = new string[5];
namn[0] = "Alf";
namn[1] = "Jonas";
namn[2] = "Jesper";
namn[3] = "Kalle";
namn[4] = "Hobbe";

for (int i = 0; i < namn.Length; i++)
{
    Console.WriteLine( namn[i] );
}

Programmet börjar med att skapa ett fält av strängar som håller 5 platser. Namnen sätts sedan i fältet så att alla 5 platser har något namn. Med hjälp av en for-sats så skriver vi sedan enkelt ut alla namn. Här behöver vi inte komma ihåg att fältet har 5 platser, det får vi reda på genom namn.Length. Fiffigt va?

För att inte gå utanför "ramarna" så är villkoret i < namn.Length. Detta har som tidigare med att göra att index börjar på 0!

Nu skulle vi kunna ha 10000 namn som ska skrivas ut men vi gör att med 4 rader kod (en for-sats).

Fält kan du göra av alla datatyper och klasser t.ex. rektanglar (Rectangle) men var då noga med att du skapar en rektangel för varje index i fältet. Det räcker inte med att bara skapa fältet när du jobbar med datatyper som inte hör till de så kallade värde-datatyperna.

Datatyper av värdetyp t.ex. int, string, double, bool, med flera samt sammansatta datatyper som struct har alltid ett standardvärde. Skapar du ett fält med t.ex. storlek 10 av dessa så ligger det 10 standradvärden i fältet.

Datatyper av referentyp fungerar lite annorlunda. Dessa byggs med class, alltså klasser. Skapar du ett fält med t.ex. storlek 10 av en referens-datatyp så får du ett fält med 10 stycken null-värden. För varje index i fältet måste det skapas ett objekt med new.

Viktigt

  • Vad är ett fält?
  • Vad är ett element?
  • Index börjar på 0!!
  • .Length anger antalet platser/index i ett fält.
  • [ tal ] anger index/plats i ett fält!
  • Storleken på fältet bestäms vid deklarationen!

Övning - Fält

Skapa ett Console Application som du döper till ”uFält”. I programmet ska 10 namn matas in via en loop. Datan ska lagras i ett fält som sedan ska skrivas ut igen med ytterligare en loop.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *

Scroll to top