Actions

C-expressguide

From Chalmers Robotics

Kan du programmera i andra språk men är lite rädd för C? Behöver du fräscha upp dina kunskaper i C? Grawr?

Då är den här guiden för dig!

Grunder

Syntaxen bygger på måsvingar och semikolon, så kod kan till exempel se ut såhär:

/* Den här funktionen adderar två tal om det första är mindre än det andra 
 * Och subtraherar det andra talet från det första om det första talet är 
 * lika stort eller större än det andra.
 */
void maybe_add_numbers(int a, int b) {
    if(a < b) {
        return a + b;
    } else {
        return a - b;
    }
}

Först några rader kommentarer som förklarar vad funktionen gör. Inled alltid med att skriva dem. Det gör att du har lättare att skriva funktionen sen. De följs upp av en funktionsdeklaration, med måsvingar och jox.

Typer

C är starkt typat på sätt som kommer att bita dig många gånger. Det ger att du behöver ange vilken typ variabler ska vara.

Ett urval av typer:

Typ Beskrivning
void Ingenting, praktiskt för att berätta att en funktion inte har ett returvärde.
char Åtta bitar. Används ofta för att representera tecken. Fungerar utmärkt för ASCII och latin-1, men inte för Unicode.
int Negativt och positivt heltal, minst 16 bitar stor, men det varierar mellan olika arkitekturer. Använd inte den här om du bygger saker embedded.
float Flyttal, är praktiskt för tal som har decimaler, typ pi. Men ett härke på plattformar utan flyttalsstöd.

Typerna kommer generellt sett i två varianter: signed och unsigned. Där signed är både negativa och positiva tal medan unsigned enbart är positiva tal. Det gäller dock inte för flyttal, för de är speciella.

Mer information: C data types (Wikipedia)

Exempel


int main() { 
    /* Notera datatypen int på main, det är en konvention.
     * Om programmet körs som det ska och allt fungerar ska det returnera 0,
     * om det inte fungerar ska det returnera en felkod som är ett heltal större än 0.
     */

    /* Bokstäver */
    char c = 'A';
    char d = 'B';

    /* Som även kan representeras som siffror. */
    char e = 65;
    char f = 66;

    /* Ett positivt heltal. */
    unsigned int power_level = 9001;

    /* Ett negativt heltal. */
    unsigned int bank_account = -7;

    /* Flyttal. */
    float pie = 3.14;

    /* Programmet fungerar som det ska så vi returnerar 0. */
    return 0;
}

if-satser

if-satser har som mest tre olika varianter: if, else if, else. Du kan ha som mest en if och en else per if-sats, men hur många else if som helst.

#include<stdio.h>

int main() {
    if(x > 10) {
        printf("GRAWR!");
    } else if(x > 2  && x < 10) {
        printf("Grawr?");
    } else if(x == 1) {
        printf("Exactly one.");
    } else {
        printf("Not in range.");
    }

    return 0;
}

while- och do-while-loopar

...