All data og informasjon som et dataprogram trenger for å utføre sin oppgave, må lagres i minnet på datamaskinen. Dataene er gjerne av forskjellig type og størrelse, som igjen medfører at de kodes forskjellig og krever ulik plass. Eksempelvis lagres heltall annerledes enn desimaltall og tekst. De vanligste datatypene er innebygd i programmeringsspråket, mens mer avanserte gjerne hentes fra tilknyttede biblioteker og rammeverk. Mange programmeringsspråk gir også programmereren mulighet til selv å definere nye datatyper.

Deklarasjon av en variabel

Deklarasjon og initiering av innebygde variabler

Første instruksjon oppretter heltallsvariabelen ved navn tall1 uten å angi startverdi. Den neste viser opprettelse av variabelen tall2 som samtidig initieres til startverdien 2. Den siste instruksjonen består av fire deler: datatypen int, variabelnavnet tall2, operatoren = og startverdien 1. Operatoren = er ikke et likhetstegn, men en tilordningsoperator som tar verdien (av uttrykket) på venstresiden og lagrer i den i lagerenheten (variabelen) på høyresiden. Instruksjonene er skrevet i programmeringsspråket Java.

Deklarasjon og initiering av innebygde variabler
Lisens: CC BY SA 3.0

Når vi skriver et dataprogram, trenger vi å reservere lagerplasser i minnet på datamaskinen til alle dataene programmet skal jobbe med. Lagerplassene må navngis slik at programmet kan gjenfinne det som er lagret, og navnene bør i størst mulig grad beskrive verdiene som er lagret. En navngitt lagerplass, der verdien kan endres mens programmet utføres, kalles for en variabel. Som nevnt innledningsvis, vil dataverdiene vi lagrer være av forskjellig type og trenge ulik plass. Det kreves, for eksempel, adskillig mer lagerplass til å lagre et bilde enn hva som kreves for å lagre et enkelt heltall.

Vi kan forestille oss at datamaskinen består av et stort antall celler (lagerplasser), der hver celle har sin egen adresse og kan lagre én enkelt binær verdi (0 eller 1). De fleste verdier som skal lagres, er imidlertid satt sammen av mange binære enkeltverdier og trenger følgelig flere celler. Med få unntak må programmereren selv angi datatypen til verdien som skal lagres, slik at datamaskinen kan reservere det riktige antall celler og kode verdien på riktig måte. Videre må programmereren gi variabelen (lagerplassen) et passende navn, slik verdien som ligger lagret der kan hentes frem og eventuelt endres senere i programmet:

<datatype> <variabelnavn>;

Ønsker vi at variabelen skal ha en startverdi, kan vi initiere den, det vil si gi den en startverdi i samme instruksjon som den deklareres:

<datatype> <variabelnavn> = <startverdi>;

I enkelte språk blir variablene som ikke initieres automatisk gitt en standardverdi (default-verdi), for eksempel verdien 0 for numeriske variabler.

De ulike dataspråkene tilbyr en mengde forhåndsdefinerte datatyper. Vi kan dele dem inn i to hovedgrupper: innebygde datatyper (også kalt primitive datatyper) og brukerdefinerte datatyper.

Innebygde datatyper

Plassbehov for ulike datatyper
Tabellen viser plassbehovet for de innebygde datatypene int (heltall), double (desimaltall), char (enkelttegn) og boolean (sannhetsverdiene true/false) i programmeringsspråket Java.
Plassbehov for ulike datatyper
Lisens: CC BY SA 3.0

Variabler av de innebygde datatypene opprettes ved hjelp av egne reserverte ord (nøkkelord) i programmeringsspråket. I Java har vi blant annet int for heltall, double for desimaltall, char for tegn og boolean for sannhetsverdier (true/false). Å lagre et heltall i Java av datatypen int, krever fire byte, der hver byte er på åtte bit. Hvis vi antar at hver celle tilsvarer en byte, vil variabelen trenge fire celler. En sannhetsverdi trenger i prinsippet kun ett bit (0/1), men siden den minste adresserbare minneenheten vanligvis er en byte, vil en variabel av type boolean normalt kreve en byte. I tabellen til høyre ser vi plassbehovet for variabler av de vanligste innebygde datatypene.

Brukerdefinerte datatyper

Visualisering av variabler av brukerdefinerte datatyper
Figuren illustrerer hvordan variabelnavn av brukerdefinerte datatyper peker på plassene i minnet på datamaskinen der variabelenes verdier er lagret.
Visualisering av variabler av brukerdefinerte datatyper
Lisens: CC BY SA 3.0

I mange objektorienterte språk har vi mulighet til å lage egne, brukerdefinerte datatyper som vi selv navngir. Disse datatypene kan bestå av flere verdier av ulik type, både av innebygde og/eller brukerdefinerte, samt inneholde metoder (programkode) som kan utføre operasjoner på verdiene. Ved å opprette egne datatyper tilpasset oppgavene programmet skal utføre, blir det lettere for programmereren å gjenspeile ord og begreper fra den virkelige verden i dataprogrammet.

En variabel av en brukerdefinert datatype kalles gjerne for et objekt og lagres på en spesiell måte. Variabelens navn er i seg selv en liten adressevariabel, ofte kalt en referanse eller en peker, som lagrer minneadressen til der objektets verdier er lagret i minnet på datamaskinen. Vi kan si at navnet «peker på» objektet.

Datatyper i biblioteker og rammeverk

Brukerdefinert datatype

Definisjon av den brukerdefinerte datatypen Bil i programmeringsspråket Java, der nøkkelordet class brukes til å definere nye datatyper.

Brukerdefinert datatype
Lisens: CC BY SA 3.0
Deklarasjon og initiering av brukerdefinerte variabler
Opprettelse av variabler (objekter) av den brukerdefinerte datatypen Bil i programmeringsspråket Java.
Deklarasjon og initiering av brukerdefinerte variabler
Lisens: CC BY SA 3.0

I tillegg til å lage våre egne brukerdefinerte datatyper har vi gjerne tilgang på utallige datatyper definert i biblioteker og andre rammeverk som følger med det enkelte programmeringsspråket. Dette er datatyper, utviklet og tilgjengeliggjort av andre programmerere, som vi kan bruke direkte, eller videreutvikle hvis vi ønsker det. Den mest kjente datatypen i Javas klassebibliotek er datatypen String, som brukes til å lagre tekst:

String setning = «Dette er en artikkel i Store norske leksikon.»;

Her opprettes en tekstvariabel ved navn «setning» som samtidig gis startverdien «Dette er en artikkel i Store norske leksikon.». Legg merke til at datatypens navn, String, begynner med stor bokstav. Det er ikke tilfeldig. Ved å la de brukerdefinerte datatypene begynne med stor bokstav, blir det lettere for programmereren å se hva som er datatyper, noe som igjen bidrar til at det blir lettere å sette seg inn og forstå programkoden.

Les mer i Store norske leksikon

Kommentarer

Kommentarer til artikkelen blir synlig for alle. Ikke skriv inn sensitive opplysninger, for eksempel helseopplysninger. Fagansvarlig eller redaktør svarer når de kan. Det kan ta tid før du får svar.

Du må være logget inn for å kommentere.

eller registrer deg