Azine
Om tidningen Azine
Köpa Azine
Kontakta Azine
Hjälpa till
Annonsera i Azine
About Azine English

Senaste numret
Nästa nummer
Arkiv

Kurser/Skolor
Intervjuer
Forum

ACG
SUA
ACG Göteborg
AmigaGuiden

Annonsörer:
GGS-Data

Sponsorer:
AmigaRulez (Forum)
GGS-Data
WestSide Praetorian
M.Andersson

Försäljningsställen
GGS-Data
Guru Meditation


Senaste Nummer 8 Nummer 7 Nummer 7 bilaga Nummer 6 Nummer 5++ Nummer 4 Nummer 3 Nummer 2 Nummer 1









Vill du ha din banner här?
Skriv till [email protected]!
Välkommen till hela Sveriges Amigatidning.


ACGs maskot

Grunderna i C, del 2.

I förra delen lärde vi oss att kompilera program och att läsa in och skriva ut tal och strängar. I den här delen kommer vi att gå vidare med hur man styr programflöden och hur man manipulerar variabler.
För er som inte har varit med från början så finns första delen på Azines hemsida, .

Om och eller

Till att börja med ska vi lära oss hur man kan göra olika val i ett program. Till detta använder vi oss utav kommandot if.
Ett if hjälper oss att köra en del av programmet om vissa, av programmeraren specificerade, villkor uppfylls.
if kan även följas av ett else och här kan man säga åt programmet vad som ska hända då villkoren inte uppfylldes.
Vi gör ett litet försök i ett program. Skriv in enligt Figur 1. Kör programmet.

Figur 1.

#include <stdio.h>
int main()
{
    int tal = 10;    if(tal == 10)
        printf("Talet är 10!\n");
    else
        printf("Talet är inte 10!\n");    return 0;
}

Vad har vi gjort?

Vi går bara igenom det som är nytt. Undrar du över de rader som inte kommenteras här så gå tillbaka till del 1 där dessa är beskrivna.
if(tal == 10) 
Här kontrollerar vi om variabeln tal är 10. Observera att vi använder == och inte = här. Detta beror på att tal = 10" betyder att vi sätter värdet i variabeln till 10 och det är ingen jämförelse!
Är variabeln tal 10 så kommer tal == 10" att bli 1. 1 är samma sak som att det är sant. Är tal inte 10 så kommer tal == 10" att bli 0. 0 är samma sak som falskt. Detta betyder till exempel att if(1) alltid är sant. Jämförelser kan även göra med > som är större än, a > b returnerar 1 om a är större än b. På samma sätt finns < som är mindre än, a < b returnerar 1 om a är mindre än b.
Det som står efter if­satsen kommer att köras om det som står i if­satsen är 1 (sant).
printf(Talet är 10!\n);
Printf är inte något nytt, men här så hör raden ihop med raden ovanför som var en if(). Var if­satsen sann så skrivs denna rad ut.
else
En if kan följas av en else. Om if­satsen var falsk (0) så kommer det som står efter else att köras.
printf(Talet är inte 10!\n);
Eftersom denna rad står under else så kommer den att köras om if­satsen var falsk (0).
 
Testa att byta ut 10 i int tal = 10" och kontrollera att programmet skriver ut Talet är inte 10!

Göra flera saker i en if!

I exemplet så använde vi oss av printf för både if och else. Men man kan ju vilja göra mer saker än en om ett visst villkor är uppfyllt. Då kan man använda sig utav { och } för att göra block. Genom att använda block kan vi göra fler saker i en if­sats. Se Figur 2. Vi kommer alltid att använda oss av block från och med nu eftersom det kan vara bra att ha det som vana. Koden blir mer lättläst och det är lättare att lägga till saker om man alltid använder sig utav block. Men detta gör man som man själv vill.

Figur 2.

if(tal == 10)
{
    tal = 11;
    printf("Talet är %d!\n",tal);
}
else
{
    printf("Talet är inte 10!\n");
    tal = 10;
}

Så länge som...

Nu kan vi välja vägar i ett program. Men ofta vill man göra samma sak flera gånger på rad. För att repetera delar av programmet kan man använda sig utav ett kommando som heter while.
På samma sätt som en if­sats så har även while villkor knutet till sig. Så länge som vilkoret är sant (1) så kommer man att repetera det som står under, en rad eller ett block. Detta måste användas med viss försiktighet eftersom att ett villkor som aldrig blir falskt (0) fastnar i en evighetsloop, låser sig. Skriv in enligt Figur3.

Figur 3.

#include <stdio.h>
int main()
{
    int tal = 0;    while(tal < 10)
    {
        tal = tal + 1;
    }    printf("Tal = %d",tal);    return 0;
}

Vad snurrar vi i nu då?

while(tal < 10)
Här kontrollerar vi om variabeln tal är mindre än 10. Är den mindre än 10 så är det sant (1) och programmet kommer att köra det som står efter. Därefter kommer programmet att hoppa tillbaka till denna while­sats och kontrollera villkoren igen. Är fortfarande tal mindre än 10 så körs allt igen. Detta körs tills tal inte är mindre än 10, tal < 10" är falskt (0).
tal = tal + 1;
Här tar vi variabeln tal och ger den ett nytt värde. Det nya värdet är det gamla värdet i tal plus ett.
Så vad detta programmet gör är att plussa på 1 till variabeln tal tills värdet i variabeln är 10, då tal < 10" returnerar falskt (0).

Lite mer kött på benen.

Då var det kanske dags för att lära oss lite mer om variabelmanipulation. Som vi såg i förra programmet så använde vi oss av tal = tal + 1" för att ändra värdet i variabeln. Det finns lite olika sätt att göra detta på. Vill man bara lägga till 1 till en integer så kan man använda sig utav ++tal eller tal++. Hur dessa skiljer sig åt går vi igenom senare. Sedan finns ett annat sätt för att lägga till ett godtyckligt tal till en variabel och det är tal += 1" som här lägger till 1 till tal.
På samma sätt kan man använda sig utav -= för att dra bort värden.
När det gäller ++tal och tal++ så betyder det helt enkelt vilken ordning man ska göra + 1" på talet. För att visa vad som är skillnaden så använder vi oss av Figur 4. I Figur 4a blir värdet i både variabeln summa och variabeln tal 2. Däremot så blir variabeln summa 1 i Figur 4b. Variabeln tal blir som i 4a 2. Hur kommer det sig att summan blir annorlunda?
Jo, det beror på att när man har ++tal så läggs 1 till i variabeln tal innan man sätter värdet i summa. I 4b med tal++ så lägger man till 1 till variabeln tal först efter att man tilldelat värdet i variabeln summa.

Figur 4a.

tal = 1;
summa = 0;
summa = ++tal;

Figur 4b.

tal = 1;
summa = 0;
summa = tal ++;

Då snurrar vi lite annorlunda.

Då hoppar vi raskt till nästa repeteringssätt. Nu ska vi lära oss använda for­loopen. Den fungerar som en while förutom att den har en inbyggd räknare som hjälper till med villkoret. En for­sats är uppbyggd av 3 delar. En del som säger vart värdet på räknaren ska börja, en del som är villkoret och en del som förändrar räknaren.
Till exempel så kan en for­sats se ut så här: for(i = 0; i < 10; i++).
Först så sätts integervariabeln i till 0. Sedan kommer vi att repetera så länge som variabeln i är mindre än 10. Varje repetering så kommer variabeln i att ökas med 1 (i++­delen).
Här kommer variabeln i kunna användas i blocket efter for-satsen och kommer att gå från 0 till 9. Hade vi haft ++i istället så hade i gått från 1 och inte 0 eftersom den hade plussat på före och inte efteråt.
Då tar vi Figur 5. Kan du lista ut vad summan kommer att hamna på?

Figur 5.

#include <stdio.h>
int main()
{
    int sum = 0;
    int i;    for(i = 0; i < 5; i++)
    {
        sum += i;
    }   printf("Summan blev %d\n",sum);
    return 0;
}

Vad har vi gjort?

Det står ganska bra beskrivet i föregående stycke så jag tycker inte vi behöver gå in djupare i det här.

Avslutning del 2

Då var den andra delen i kursen avslutad. Lite har vi hunnit med denna gång och snart så kan vi börja göra lite roliga saker.
Jag hoppas att det mesta går att förstå. Kommentarer och frågor skickas till mig på [email protected] med rubriken programmeringsskolan.


Hemsidorna underhålls av Magnus Andersson