Practical C Programming, 3rd Edition by Steve Oualline

Hoe C werkt

C is ontworpen als een brug tussen de programmeur en de ruwe computer. Het idee is om de programmeur een programma te laten schrijven op een manier die hij gemakkelijk kan begrijpen. De compiler vertaalt vervolgens de taal in iets dat de machine kan gebruiken.

Computerprogramma’s bestaan uit twee hoofddelen: gegevens en instructies. De computer legt weinig of geen organisatie op aan deze twee delen. Computers zijn immers ontworpen om zo algemeen mogelijk te zijn. De programmeur moet zijn organisatie aan de computer opleggen, niet andersom.

De gegevens in een computer worden opgeslagen als een reeks bytes. C ordent die bytes tot bruikbare gegevens. Gegevensverklaringen worden door de programmeur gebruikt om de informatie te beschrijven waarmee hij werkt. Bijvoorbeeld:

int total; /* Total number accounts */

vertelt C dat we een deel van het geheugen van de computer willen gebruiken om een geheel getal met de naam total op te slaan. We laten de compiler beslissen welke bytes van het geheugen gebruikt moeten worden; die beslissing is een klein boekhoudkundig detail waar we ons geen zorgen over willen maken.

Onze variabele total is een eenvoudige variabele. Zij kan slechts één geheel getal bevatten en slechts één totaal beschrijven. Een reeks gehele getallen kan als volgt in een array worden geordend:

int balance; /* Balance (in cents) for all 100 accounts */

Opnieuw zal C de details afhandelen van het opleggen van die organisatie aan het geheugen van de computer. Tenslotte zijn er nog complexere datatypes. Bijvoorbeeld, een rechthoek kan een breedte, een hoogte, een kleur en een vulpatroon hebben. C laat ons deze vier items ordenen in een groep die een structuur wordt genoemd.

struct rectangle { int width; /* Width of rectangle in pixels */ int height; /* Height of rectangle in pixels */ color_type color; /* Color of the rectangle */ fill_type fill; /* Fill pattern */};

Het punt is dat structuren de programmeur in staat stellen de gegevens te ordenen naar zijn behoeften, ongeacht hoe eenvoudig of complex die gegevens zijn. De vertaling van deze gegevensbeschrijving in iets dat de computer kan gebruiken, is de taak van de compiler, niet van de programmeur.

Maar gegevens zijn slechts één onderdeel van een programma. We hebben ook instructies nodig. Wat de computer betreft, die weet niets van de layout van de instructies. Hij weet wat hij moet doen voor de huidige instructie en waar de volgende komt, maar meer niet.

C is een taal op hoog niveau. Het laat ons een verklaring op hoog niveau schrijven zoals:

area = (base * height) / 2.0; /* Compute area of triangle */

De compiler zal deze verklaring vertalen in een serie cryptische machine-instructies op laag niveau. Dit soort instructie wordt een toewijzingsinstructie genoemd. Het wordt gebruikt om de waarde van een rekenkundige uitdrukking te berekenen en op te slaan.

We kunnen ook control statements gebruiken om de volgorde van verwerking te regelen. Verklaringen zoals de if- en switch-verklaringen stellen de computer in staat eenvoudige beslissingen te nemen. Verklaringen kunnen steeds opnieuw worden herhaald met behulp van lusverklaringen zoals while en for.

Groepen van verklaringen kunnen worden ingepakt om functies te vormen. Zo hoeven we maar één keer een algemene functie te schrijven om een rechthoek te tekenen, en die kunnen we dan hergebruiken wanneer we een nieuwe rechthoek willen tekenen.

C voorziet het programma van een rijke verzameling standaardfuncties die veelvoorkomende functies uitvoeren, zoals zoeken, sorteren, invoer en uitvoer.

Een verzameling verwante functies kan worden gegroepeerd in één bronbestand. Veel bronbestanden kunnen worden gecompileerd en aan elkaar worden gekoppeld om een programma te vormen.

Eén van de belangrijkste doelstellingen van de C-taal is het organiseren van instructies in herbruikbare componenten. U kunt immers veel sneller programma’s schrijven als u het grootste deel van uw code ergens anders vandaan kunt “lenen”. Groepen van herbruikbare functies kunnen worden gecombineerd in een bibliotheek. Op deze manier kunt u, wanneer u bijvoorbeeld een sorteerroutine nodig hebt, de standaardfunctie qsort uit de bibliotheek pakken en deze in uw programma koppelen.

De gegevensdeclaraties, structuren en besturingsstatements, en andere C-taalelementen, zijn niet in het voordeel van de computer. De computer kan het verschil niet zien tussen een miljoen willekeurige bytes en een echt programma. Alle C-taalelementen zijn ontworpen om de programmeur in staat te stellen zijn ideeën duidelijk uit te drukken en te organiseren op een manier die op hem is afgestemd, niet op de computer.

Organisatie is de sleutel tot het schrijven van goede programma’s. In dit boek weet u bijvoorbeeld dat de inhoudsopgave voorin staat en de index achterin. We gebruiken deze structuur omdat boeken op die manier georganiseerd zijn. Organisatie maakt dit boek gemakkelijker te gebruiken.

In de taal C kunt u uw programma’s organiseren met behulp van een eenvoudige maar krachtige syntaxis. Dit boek gaat verder dan de C syntaxis en leert u stijlregels waarmee u zeer leesbare en betrouwbare programma’s kunt maken. Door een krachtige syntaxis te combineren met een goede programmeerstijl, kunt u krachtige programma’s maken die complexe en prachtige bewerkingen uitvoeren, maar ook zo georganiseerd zijn dat u ze gemakkelijk kunt begrijpen wanneer het tijd is voor wijzigingen.

Leave a Reply