# Programmeren in C/Basis

In dit hoofdstuk leer je over de basis van C namelijk invoer, uitvoer en het werken met variabelen.

## Hello world

Zoals gebruikelijk bij het leren van een programmeertaal, beginnen we met het maken van een programma dat "Hello, world!" naar de outputstream (meestal de terminal) schrijft. Sla onderstaande broncode op als helloworld.c (gebruik voor C broncode de extensie .c) en compileer het.
C-code: Hello, world!
De eerste regel importeert een header-file. Hiermee geeft u aan dat u standaard Input en Output functies wilt gebruiken. Dit is een standaard onderdeel van de C-Compiler en biedt een reeks functies en definities voor het openen en sluiten van en schrijven naar streams.
De tweede regel declareert (maakt) een functie met de naam 'main'. Dit is het standaard startpunt (entry point) voor elk C-programma. De definitie geeft aan dat het resultaat van de functie een integer (geheel getal) is. Dit getal, de termination-code, wordt gebruikt om aan te geven of de uitvoering van het programma succesvol was of dat er een fout is opgetreden tijdens de uitvoering.
Een uitgebreidere uitleg vindt u in het hoofdstuk functies.
De derde regel geeft het begin van een blok code aan. Een blok wordt omsloten door accolades ({ en }). Tussen deze twee wordt de inhoud van de functie main gedefinieerd.
De vierde regel roept de functie printf op. Hiermee wordt de zin "Hello World!" naar stdout (Standard Output) geschreven. Meestal komt dat neer op de (virtuele) terminal; het beeldscherm (min of meer).
Regel vijf beeindigt de functie. De nul geeft aan dat er geen problemen zijn opgetreden.
Regel zes sluit het blok code af.

## Commentaar

Je kunt in C net zoals vrijwel alle andere programmeertalen commentaar toevoegen aan jouw programmacode. Je kunt dan zeggen wat bepaalde delen van jouw programmacode doet zodat je dat later makkelijk kunt achterhalen.
C-code: Commentaar
Commentaar moet je plaatsen tussen "/*" en "*/". Dit soort van commentaar kan meerdere regels lang zijn.
C-code: Commentaar
Naast het commentaar voor meerdere regels kun je een ander soort commentaar gebruiken voor slechts één regel namelijk //
C-code: Commentaar
Let op: // is recent toegevoegd aan C en sommige compilers ondersteunen dit nog niet.

## Variabelen

Een variabele is een stukje data dat de computer onthoudt en waar je waarden aan kunt toekennen. Variabelen zijn heel belangrijk in C. Er zijn verschillende soorten variabelen. Je hebt bijvoorbeeld char waar je karakters en andere waarden van één byte in opslaat en je hebt int waar je nummers (integers) in opslaat.
Hier is een lijst met de meest voorkomende soorten variabelen
*Dit zijn gebruikelijke waarden bij 32-bits programma's. Sommige compilers kunnen hiervan afwijken.
Variabelen (behalve gebroken getallen) kunnen signed of unsigned zijn.
Als een getal signed is kan het zowel positief als negatief zijn. Unsigned getallen kunnen alleen positief zijn. Daarentegen kan een unsigned variabele wel tweemaal zo grote getallen bevatten.
Standaard zijn variabelen unsigned.
C-code: Variabelen
Oke.. ik hoop dat het meeste duidelijk is, maar hoe ik met de functie printf variabelen print, is niet erg duidelijk.
In deze regel: printf("OnzeChar =\t%c \n", OnzeChar); staat ongeveer in het midden '%c'. Dat teken vervangt zich met wat er achter de string, na de komma staat. In dit geval dus 'OnzeChar'. Bij de regel daarna staat er geen %c, maar %d. Dat komt omdat er achter de komma geen character staat, maar een decimaal (getal). Voor characters gebruik je dus '%c' en voor getallen '%d'.
Er is nu al een hoop informatie besproken. Probeer er maar eens een programma mee te maken, dan zul je zien dat het best moeilijk wordt, zeker omdat als je ook maar iets fout typt, het meteen niet meer lukt. Let er ook op dat C "case-sensitive" is. Dat betekent dat AnderInt niet hetzelfde is als aNdErInT en printf ook niet hetzelfde als Printf. Dit wordt al makkelijker als je onthoudt dat alle commando's als printf en #include, met kleine letters worden geschreven.

## Input

Nu wordt het pas echt programmeren (heb ik dan nog niks bereikt? wil je zeggen, maar nu worden (hopelijk) de programma's handig om te gebruiken). We gaan een programma maken die de de oppervlakte van een cirkel uitrekent. Eerst vragen we om de diameter en dan passen we de formule toe.
C-code: Input
Merk op dat deze code alleen werkt voor even-getallen.
Dan nu waar we dit voor gemaakt hebben: de input. Om de lengte van de diameter te krijgen, gebruikten we scanf.
C-code: Input
Tussen dubbele aanhalingstekens, staat %d. Dat betekent (zoals je hopelijk al geraden hebt) dat er een decimaal verwacht wordt. Daarna, achter de komma, staat een ampersand (&) met daarachter waar de input in moet worden opgeslagen. Als we functies en pointers hebben gehad, leer je waarom er een ampersand voor 'diameter' komt, maar dat is nu niet belangrijk. Zorg er gewoon voor dat je het niet vergeet :P.
Probeer nu, als oefening, een programma te maken dat uitrekent hoeveel rente je krijgt.
Je kan natuurlijk ook een karakter als input geven. Dan gebruik je dus scanf ("%c", &SlaHierOp). Je kan niet meerdere karakters als input geven, aangezien een char maar 1 karakter kan bevaten. Later, met arrays, kan dat wel, maar dat is een ander verhaal.