Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser
Jonny Karlsson Tabeller 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 i C-programme när man vill göra ett program som skall beräkna t.ex. medeltalet av ett visst antal värden. Tabeller behövs även vid lagring av teckensträngar i datorns minne.
Jonny Karlsson Deklaration av tabeller En tabell deklareras i C på följande sätt: datatyp tabellnamn[N]; datatyp Önskad datatyp för tabellen (t.ex. int, float eller char) NAntal tabellelement (tabellplatser)
Jonny Karlsson Taltabeller En heltalstabell på 10 element deklareras på följande sätt: int heltalstabell[10]; En heltalstabell på 10 element kan deklareras och initialiseras på följande sätt: int heltalstabell[] = {11, 33, 45, 12, 45, 32, 22, 14, 13, 11}; Detta skulle resultera i följande taltabell: Ett visst element av samma heltalstabell kan tilldelas ett värde enligt följande: heltalstabell[0] = 33;//plats 0 i heltalstabellen ”heltalstabell” tilldelas värdet
Jonny Karlsson Taltabeller OBS! heltalstabell[0]är första elementet i tabellen ”heltalstabell” heltalstabell[1]är andra elementet i tabellen ”heltalstabell”... Värdet av tabellelement 8 kan skrivas ut på bildskärmen så här: printf(”Tabellposition 8 innehåller: %d”, heltalstabell[7]); Ett heltal inläst från tangentbordet kan sparas i tabellposition 2 på följande sätt: scanf(”%d”, &heltalstabell[1]);
Jonny Karlsson Teckentabeller En teckensträng måste i C lagras i en teckentabell En teckentabell på 20 tecken deklareras på följande sätt: char teckentabell[20]; En teckentabell deklareras och initialiseras enligt följande: char text[] = ”Jordgubbe”; Denna initialisering skulle resultera i följande teckentabell: Jordgubbe
Jonny Karlsson Teckentabeller En teckensträng kan inläsas från tangentbordet och lagras i en teckentabell på följande sätt: scanf(”%s”, text);//Läser in tecken från tangentbordet ända tills ett radbrytstecken eller //mellanslagstecken tagits emot I teckentabellen ”text” lagras texten som inmatats från tangentbordet + ett ”\0” tecken (NULL) NULL-tecknet används här för att berätta var teckensträngen tar slut.
Jonny Karlsson Teckentabeller char text[10];//deklarerar en teckentabell av storlek 10 tecken scanf(”%s”, text);//Läser en teckensträng från tangentbordet som lagras i //teckentabellen ”text” Om man från tangentbordet skriver ”hej” + ”enter” skulle innehållet i teckentabellen ”text” se ut så här: hej\0
Jonny Karlsson Teckentabeller Innehållet av en teckentabell kan visas på bildskärmen på följande sätt: printf(”%s”, text); Printf-satsen skriver ut alla tecken som finns i teckentabellen, eller tills ett mellanslagstecken, radbrytstecken eller NULL-tecken påträffas: Om teckentabellen ”text” ser ut så här: hej\0 Skulle texten ”hej” visas på bildskärmen:
Jonny Karlsson Jämförelseoperatorer Behövs i C för att kunna jämföra olika värden. Relationsoperatorer: <”mindre än” >”större än” <= ”mindre än eller lika med” >= ”större än eller lika med Exempel: x < y Om x är mindre än eller lika med y blir uttrycket ovan sant/true men om x är större än y blir uttrycket falskt/false.
Jonny Karlsson Villkorssatser Behövs för program som skall kunna ta alternativa vägar beroende på användarens val. T.ex. ett program med en meny skall kunna utföra olika operationer beroende av vad användaren valt ur menyn. T.ex. 1 = Beräkna addition, 2 = avsluta programmet.
Jonny Karlsson if-satsen Det vanligaste sättet att åstadkoma alternativa vägar i ett program är att använda if- satsen. Den enklaste varianten av if-satsen har följande form: if(uttryck)sats Om uttrycket är ”sant” utförs satsen, annars utförs ingenting. Exempel: if(n > 0)//om variabeln n är större än noll medelvärde = summa / n;//utförs följande sats
Jonny Karlsson if-satsen Om man vill att en if-sats vid ”true” skall utföra flera satser använder man bågparenteser för att berätta vilka satser som skall utföras då ett visst uttrck blir ”true”. (sammansatta satser) if(uttryck){sats1;sats2;sats3;}Exempel: if(n > 1) { medelvärde = summa / n; standardav = (kvad_sum – sum * sum / n) / (n-1); }
Jonny Karlsson if-satsen Den andra versionen av if-satsen har följande form: if(uttryck)sats1;elsesats2; Om uttrycket ovan blir sant utförs sats1, om uttrycket blir falskt utförs sats2. Exempel: if(a > b) skillnad = a – b; else skillnad = b – a;
Jonny Karlsson if-satsen I C-program uppstår det ofta flervalssituationer. I sådana fall kan man ha en if-sats som ser ut enligt följande: if(uttryck1)sats1; else if(uttryck2) sats2; else if(uttryck3) else Detta kan t.ex. behövas när man programmerar ett C-program som har en meny med flera olika alternativ.
Jonny Karlsson switch - satsen I Vissa slag av flervalssituationer är det naturligare att använda en switch-sats i stället för if-satser i den form som beskrevs på föregående sida. switch(heltal){ case 1: satser;break; case 2: satser;break;default:satser;break;}
Jonny Karlsson Repetitionssatser Används för att åstadkomma repetitioner, dvs. om man vill att samma sats/satser skall utföras ett visst antal gånger. T.ex. ett program där användaren skall skriva in 10 olika värden från tangentbordet som skall sparas i en tabell behövs en sats som skall repeteras 10 gånger: Pseudokod: antal = 0; Så länge som antal < 10 { läs in från tangentbordet och spara i tabellposition antal öka antal med 1; }
Jonny Karlsson while-satsen Ett sätt att åstadkomma repetition är att använda while-satsen. Har den allmänna formen: while(uttryck)sats Satsen utförs så länge som uttrycket är sant
Jonny Karlsson while-satsen Exempel: programmet läser in 10 värden från tangentbordet och sparar dessa i en tabell: int tabell[10]; int index = 0; while(index < 10) { scanf(”%d”, &tabell[index]; index = index + 1; }
Jonny Karlsson do-satsen dosats;while(uttryck); do-satsen är likadan som while-satsen med den skillnaden att utrycket testas först efter utförd sats. I while-satsen testas uttrycket före utförd sats. do{ scanf(”%d”, &i); gör någåt med i; } while(i < 0);
Jonny Karlsson for-satsen Denna sats skiljer sig lite från andra repetitionssatser. Är mycket användbar. Den allmänna formen: for(uttyck1; utryck2; utryck3) sats; Satsen ovan är likadan som följande while-sats: utryck1:while(uttryck2){satsuttryck3;}
Jonny Karlsson for-satsen Exempel: programmet läser in 10 värden från tangentbordet och sparar dessa i en tabell: int tabell[10]; int index; for(index = 0; index < 10; index = index + 1) scanf(”%d”, &tabell[index];