Programmeringsspråket C

Variabler

Vad är variabler?

Variabler är i princip en plats i minnet där ett värde kan lagras. Dessa värden kan kommas åt och ändras efter programmerarens behag, och är en självklar viktig del av programmering.

När man försöker förklara variabler lite simpelt, så är den vanliga metoden att likna dem vid en låda. Denna låda kan innehålla ett värde och har en etikett. I lådan kan du lägga grejer, och när du vill åt grejerna ber du om lådan som har den etiketten du har bestämt.

Ett variabel-exempel.

Här kommer lite nytt i och med variablerna, men det bör till viss del vara ganska straightforward. Fundera inte för mycket över de nya grejerna, utan de du förstår direkt kan du göra en anteckning om, resten förklaras nedan.

#include <stdio.h>
 
int main() {
    int heltalsvariabel;
    heltalsvariabel = 36;
 
    printf("Variabeln har vardet %i.\n", heltalsvariabel);
 
    return 0;
}

Det första nya i detta program är raden int heltalsvariabel. Denna rad säger helt enkelt till processorn att "Jag vill ha en plats i ram-minnet, den ska kallas 'heltalsvariabel' och jag vill kunna lägga heltal där."

Det finns ett gäng olika typer av variabler tillsammans med heltal. Dessa finns återgivna i en tabell i ren text som kommer komma upp mer senare. Många av dessa typer används inte alltför ofta, de viktigaste just nu är char, int och double. Dessa är helt klart också de tre vanligaste.

Nästa nya del är raden som innehåller heltalsvariabel = 36. Detta är vad som kallas en tilldelning, en variabel får ett (nytt) värde.

Det sista nya är utseendet på anropet till printf(). %i, som finns mitt i strängen, betyder att den ska hämta värdet på nästa argument (i det här fallet variabeln heltalsvariabel) och stoppa in där i strängen. Just %i betyder att värdet som ska hämtas är av heltalstyp. Vill man hämta ett float- eller double-värde används %f Vill man hämta en char, %c. Vill man skriva tecknet '%' används %%. Det finns många fler "specialsekvenser" av denna typ, men de är onödiga att ta här.

Man kan ändra på variablers innehåll under körning, som i exemplet nedan.

#include <stdio.h>
 
int main() {
    int variabeltest;
    variabeltest = 36;
 
    printf("Variabeln har vardet %i.\n", variabeltest);
    variabeltest = 27;
    printf("Variabeln har nu vardet %i.\n", variabeltest);
 
    return 0;
}

Notera här hur initialiseringen av variabeln (int heltalsvariabel) endast får göras en gång per variabel. I övrigt fungerar programmet ungefär som man kan vänta sig.

Några korta ord kring namngivningen av variabler: De får inte vara oresonligt långa, två saker får inte heta samma sak (du kan till exempel inte ha två variabler som båda heter "heltalsvariabel", och du får inte heller ha en variabel som heter "printf", eftersom det namnet redan används). I övrigt, håll dig till tecknen A-Z, a-z, siffror och underscore. Variabelnamn får inte börja med siffror. De är även känsliga för små/stora bokstäver (med andra ord, "vaRiabel" är inte samma sak som "variabel"). Dessutom är det bra om namnen är logiska, så det är lätt att förstå vad de innehåller och vilken funktion i programmet de har.

Nu har vi ingen användning för variabler om de inte går att behandla relativt till varandra, och till sig själva. Men detta är ju naturligtvis möjligt. Den experimentelle kanske redan har kommit fram till att till exempel följande är möjligt.

#include <stdio.h>
 
int main() {
    int heltal, tal2;
    heltal = 13;
 
    printf("Variabeln har vardet %i.\n", heltal);
    tal2 = heltal + 14;
    printf("Andra variabeln har vardet %i.\n", tal2);
 
    return 0;
}

Första nya här är initialiseringen sker av två variabler samtidigt, kommaseparerade. Detta betyder att både variabeln heltal och tal2 blir av typen int, alltså heltal.

Andra variabeln tilldelas värdet av heltal + 14. Eftersom heltal har värdet 13, så kommer tal2 få värdet 27. De matematiska operatorer som finns att tillgå är, bland andra, addition (+), subtraktion (-), multiplikation (*) samt division (/). Dessa operatorer följer samma prioritetsregler som i matematiken. För att kringgå detta kan man använda parenteser, också där som i matematiken. Exempelvis 10 + 4 / 2 ger svaret 12. Däremot (10 + 4) / 2 ger svaret 7. Prioriteringen av tilldelningsoperatorn (=) är låg, väldigt låg. Detta har flera fördelar, till exempel den illustrerad i exemplet som följer.

Varning: vid tilldelning är det alltid variabeln till vänster som antar värdet till höger, inget annat.

#include <stdio.h>
 
int main() {
    int variabel;
    variabel = 36;
 
    printf("Variabeln har vardet %i.\n", heltalsvariabel);
    variabel = variabel - 12;
    printf("Variabeln har nu vardet %i.\n", heltalsvariabel);
 
    return 0;
}

Det som utförs här är att variabeln först får värdet 36. Sedan får den värdet av sig själv minus 12. Som i detta fall är 24, men inte måste vara det. I nästa del kommer vi ta upp simpel inmatning av nummer, och då kommer du märka nyttan av detta, bland annat.

Här finns det några intressanta omskrivningar som är till för att göra programmerandet effektivare. Exempelvis följande är exakt samma operation som variabel = variabel - 12.

variabel -= 12;

Detta gäller alla de aritmetiska operatorerna. variabel = variabel OP värde kan alltid uttryckas som variabel OP= värde, där OP motsvarar antingen +, -, * eller /.

En operation som utförs ofta är variabel += 1 (går också att uttrycka som variabel = variabel + 1) och variabel -= 1. Därför har man kommit på specialsätt att skriva detta också, nämligen som följer.

variabel++;
variabel--;

Det första ökar "variabel" med 1, den andra minskar med 1.

Experimentera gärna med variabler och utför matematik med dem, för att se hur de reagerar. Om något inte blir som du tänkt, skriv ut värdet vid varje steg, så kanske du kan lista ut var det blir fel.

← Absoluta grunderna

Inmatning av tal →

Copyleft kqr & slaeshjag 2009, 2012 some rights reserved