Presentation laddar. Vänta.

Presentation laddar. Vänta.

Jonny Karlsson 18.12.2007 1 INTRODUKTION TILL PROGRAMMERING Föreläsning 6 (18.12.2007) INNEHÅLL: -Mera om tabeller.

Liknande presentationer


En presentation över ämnet: "Jonny Karlsson 18.12.2007 1 INTRODUKTION TILL PROGRAMMERING Föreläsning 6 (18.12.2007) INNEHÅLL: -Mera om tabeller."— Presentationens avskrift:

1 Jonny Karlsson 18.12.2007 1 INTRODUKTION TILL PROGRAMMERING Föreläsning 6 (18.12.2007) INNEHÅLL: -Mera om tabeller

2 2Jonny Karlsson 18.12.2007 Mera om tabeller Är en variant av referenstyp (arraytyp). Används för att lagra en mängd olika variabler av samma datatyp i datorns minne. Brukar även kallas för vektorer eller ”arrays” En tabell kan behövas när man vill göra ett program som skall beräkna t.ex. medeltalet av ett visst antal värden.

3 3Jonny Karlsson 18.12.2007 Mera om tabeller Deklaration av en tabell int [ ] a; eller int a [ ]; När man deklarerat en tabell enligt ovan kommer variabel a inte att innehålla en tabell utan egentligen en referens till en tabell. Referensvärdet är helt enkelt en adress som berättar var tabellen finns lagrad i datorns minne.

4 4Jonny Karlsson 18.12.2007 Mera om tabeller

5 5Jonny Karlsson 18.12.2007 Mera om tabeller Att ”skapa” en tabell Efter deklarationen innehållar variabeln a alltså en referens till den plats i minnet där en heltalstabell finns lagrad. Heltalstabellen har i detta skede ännu en ospecificerad längd. Nästa steg är att skapa själva tabellen, dvs att ge den en längd: a = new int[2]; Efter detta innehåller variabeln a fortfarande en referens till tabellen men tabellen (a) har fått en specifik längd, i detta fall 2.

6 6Jonny Karlsson 18.12.2007 Mera om tabeller

7 7Jonny Karlsson 18.12.2007 Mera om tabeller Detta är alltså skillnaden mellan primitiva datatyper (int, float, double...) och referenstyper (t.ex. Tabeller). Jämför följande två variabler: int a = 5; int b[ ] = new int[10]; - variabeln a innehåller värdet 5 - variabeln b innehåller en referens till den plats i minnet där heltalstabellen (b) finns lagrad.

8 8Jonny Karlsson 18.12.2007 Mera om tabeller Kompilera och kör följande kod och analysera vad som händer: public class test { static void modifieraTabell(int tabb[ ]) { tabb[0] = 44; } static void modifieraVariabel(int tal) { tal = 44; } public static void main(String args[ ]) { int tabb[ ] = new int[3], tal = 0; System.out.println(”Tal = ” + tal + ”\nTabellplats 0 = ” + tabb[0]); modifieraTabell(tabb); modifieraVariabel(tal); System.out.println(”Tal = ” + tal + ”\nTabellplats 0 = ” + tabb[0]); }

9 9Jonny Karlsson 18.12.2007 Mera om tabeller När du kör koden på föregående slide märker du kanske att variabeln tal inte byter värde efter anrop av modifieraVariabel medan första värdet i tabellen tabb byter värde efter anrop av modifieraTabell. VARFÖR? JO! I metoden modifieraVariabel är variabeln tal en kopia av variabeln tal i huvudmetoden. I modifieraVariabel tilldelar man variablen tal värdet 44. Men detta ändrar förstås inte på värdet av variabeln tal i huvudmetoden. I metoden modifieraTabell innehåller variablen tabb en referens till en minnesplats där det finns en heltalstabell. När man i metoden modifieraTabell säger: tabb[0] = 44; Betyder det att i den tabell som variabeln tabb refererar till skall man ställa in första värdet till 44. Variabeln tabb i huvudmetoden refererar till samma minnesplats som variabeln tabb i metoden modifieraTabell eftersom man gav referensvärdet som argument när man anropade modifieraTabell. Därför ändras värdet av tabb[0] också i Huvudmetoden. Att förstå detta är mycket värdefullt!!!


Ladda ner ppt "Jonny Karlsson 18.12.2007 1 INTRODUKTION TILL PROGRAMMERING Föreläsning 6 (18.12.2007) INNEHÅLL: -Mera om tabeller."

Liknande presentationer


Google-annonser