C-taal voor beginners - samenvatting

een laatste beschouwing


[s1 wat doe ik nu?] [s2 verklarende woordenlijst] [i3 herhaling van de leerstof]


s1 wat doe ik nu?

Nu dat u deze cursus vervolledigd hebt, heeft u de kennis opgedaan van de C programmeertaal, maar heeft u nogal weinig ervaring in het gebruik ervan. Ik kan drie aanbevelingen doen om uw kennis van C te vergroten.

Ten eerste, bemachtig de tweede edite van "The C programming Language" of in het Nederlands "C handboek", geschreven door Brian Kernighan en Dennis Ritchie, Prentice Hall, 1988. Een nauwkeurige kijk op dit boek zal u een rijkdom aan kennis geven, inclusief vele details die volgens mij buiten het bereik van deze beginnnersgids vallen. Het boek behandelt geen "prototyping", aangezien dit later pas toegevoegd werd door het ANSI-C commitée.

De tweede en waarschijnlijk meest belangrijke aanbeveling, is om programma's te schrijven. C code schrijven, problemen vinden en oplossen en tenslotte het programma uitvoeren op de juiste manier geeft een groot gevoel van voltooing.

De derde aanbeveling is om huidige informatie over de taal te raadplegen. Goede bronnen voor informatie zijn programmeermagazines, nieuwe boeken over C, of het lezen van internet-nieuwsgroepen zoals comp.lang.c of comp.lang.c.moderated. Er zijn andere nieuwsgroepen over andere talen of specifieke compilers die u interessant en informatief kan vinden.

Des te meer blootstelling aan C, des te meer u ervan zal leren en des te meer plezier u er aan zal beleven.

Veel geluk!

s2 verklarende woordenlijst

In deze cursus worden woorden en symbolen gebruikt die u misschien moeilijk begrijpt of simpelweg nog nooit gezien heeft. Vaak gebruikte ik een Engels woord omdat het in het Nederlands moeilijk kon uitgedrukt worden. De volgende lijst zou alle problemen van de baan moeten vegen. Sommige woorden komen niet in deze cursus voor, maar wel in andere werken over de C-taal.

attribuut eigenschap, staat
compound samengesteld, samenstel, blok
concatenatie samenvoeging, samenplakken
conditional preprocessing voorwaardelijke compilatie
default standaard, gewoonlijk, anders
destination bestemming
do while doe... zolang...
EOF einde van het bestand
error systeemfout
execute executeren, uitvoeren, runnen
exit stoppen, verlaten
failure mislukking
FALSE onwaar, 0
file bestand
for voor..., zolang...
format formaat, vorm, uitzicht
formatting formatteren, veranderen, aanpassen
if als..., indien...
instructie opdracht, commando
I/O input/ouput of invoer/uitvoer
lvalue linkse waarde
module functie, stuk van een programma
monitor computerscherm
newline nieuwe lijn, nieuwe regel
nick, nickname bijnaam gebruikt op het internet en in irc
object voorwerp, stuk data
parenthesis ronde haken
recursief naar beneden tellend, afgaand
return teruggeven, enter (toetsenbord)
rvalue rechtse waarde
source bron
statement uitdrukking, opdracht, commando
success juist, juiste voltooing
TRUE waar, 1
type soort, model
unary unair, éénvormig
while zolang...
witruimte spatie(s), tab(s)

s3 herhaling van de leerstof

Als laatste herhaal ik nog enkele belangrijke dingen die in de cursus besproken werden. Dit is slechts een kleine samenvatting van een beperkt deel van de cursus, dat u zeker uit het hoofd moet kennen om niet telkens naar een boek te moeten grijpen bij het schrijven van een programma.

s3.1 hoe noteren we een long integer?

Plaats een grote of kleine "L" direct achter het decimale, octale of hexadecimale getal.

s3.2 voorbeelden van wetenschappelijke notaties:

100 = 1.0E2

100 = 1e+2

1000 = 1.0e3

1000 = 1+0e3

0.001234 = 12,34e-4

0.001234 = 1.234E-5

s3.3 hoe noteren we octale cijfers?

Een serie octale cijfers (0 tot 7), te beginnen met een 0 (nul). Vb: 0377 of 000.

s3.4 hoe noteren we decimale cijfers?

Een serie decimale cijfers, waarvan het eerste niet 0 is. Vb: -25 of 2343212.

s3.5 hoe noteren we hexadecimale cijfers?

Een serie hexadecimale cijfers (0 tot 9 en A tot F), beginnend met 0x of 0X. Vb: 0XFF of 0x4b.

s3.6 welke zijn de vijf elementaire types?

Int, char, float, long en double.

s3.7 welke waarden kan een gewone integer aannemen?

Van -32768 tot 32767.

s3.8 hoe is dit uit te breiden?

Door een grote of kleine "L" achter het decimale, octale of hexadecimale getal te plaatsen, dit is dan een long int met mogelijke waarden van (ongeveer) -2 miljard tot 2 miljard.

s3.9 op welke 2 manieren kan men een floating point constante voorstellen?

Als kommagetallen of met de wetenschappelijke notatie.

s3.10 het type van een gewone floating point (FP) constante?

Is altijd double en wordt in 64 bit voorgesteld.

s3.11 welke zijn de specificaties voor een FP met enkelvoudige precisie?

Deze heeft hetzelfde waardenbereik als bij de double, maar slechts met 7 significante decimale cijfers. Wordt weergegeven met het achtervoegsel "F" of "f". Vb: 1.234f of 98.98454F.

s3.12 kan het long type ook bij een FP constante gebuikt worden?

Ja, dan is het een long double.

s3.13 welke zijn dan de maximumbereiken?

Wanneer te groot om weer te geven is het resultaat onbetrouwbaar.
Wanneer kleiner dan 10e-38 is het resultaat 0.

s3.14 wat is een karakterconstante?

Eén karakter tussen enkele quotes ' '.

s3.15 van welk type zijn deze?

Van het type integer.

s3.16 waarvoor dienen escape sequenties?

Deze dienen vooral om karakters voor te stellen die anders moeilijk of helemaal niet rechtstreeks in een code ingegeven kunnen worden. Een escape sequentie is een backslash \ gevolgd door één karakter.

s3.17 hoe kan men niet-afdrukbare tekens voorstellen?

Door gebruik te maken van een vorm van escape sequenties:
- een backslash gevolg door maximaal 3 octale cijfers;
- een backslash gevolgd door "X" en minstens 1 hexadecimaal cijfer

s3.18 wat wordt (door de compiler) gebruikt om het einde aan te geven van een string?

Het null karakter: een backslash gevolgd door één nul. Vb: de string "C-nerd Emulov" wordt door de compiler gebruikt als "C-nerd Emulov\0".

s3.19 zijn strings en karakters hetzelfde?

Neen. Ze mogen dan ook nooit op dezelfde manier beschouwd en gebruikt worden.

s3.20 aan welke regels moet een identifier voldoen?

- bestaat enkel uit letters en cijfers
- het eerste teken moet een letter zijn
- de underscore "_" wordt als letter beschouwd
- slechts de eerste 31 tekens worden door de compiler als significant beschouwd, er mogen er echter meer gebruikt worden
- hoofdletters en kleine letters mogen gebruikt worden, maar zijn NIET gelijk: Identifier, IDENTIFIER en IdENTIfier is niet hetzelfde.

s3.21 welke qualificators zijn mogelijk bij het type integer?

- long: 32 bits breed (= standaard)
- short: 16 bits breed
- unsigned: geen negatieve waarden (kan ook bij char gebruikt worden)

s3.22 waarvoor dient de qualificator "const"?

Deze wordt gebruikt om aan te geven dat een waarde van een variabele doorheen het ganse programma niet veranderd. Daarom moet bij de declaratie meteen de waarde meegegeven worden. Vb: const double Pi = 3.14159265358979; of const int DOZIJN = 12;.

s3.23 waarop letten we bij het delen van integers en floats?

Het gebruik van kommagetallen kan problemen geven.
Vb: 12 / 5 = 2 maar 12.0 / 5 en 12 / 5.0 = 2.4.

s3.24 opmerking bij de samengestelde toekenningsoperator:

De expressie wordt eerst uitgewerkt alvorens de operatie wordt uitgevoerd.
Vb: k*=3+x; is hetzelfde als k=k*(3+x); maar niet hetzelfde als k=k*3+x;.

s3.25 hoe drukken we een procentteken af in een string?

Door er een ander procentteken voor te plaatsen. Vb: ("De BTW bedraagt %d %%.", btw_getal);

s3.26 het gebruik van getchar() en putchar():

Vb: karakter = getchar(); en putchar(karakter);

s3.27 hoe initialiseren en drukken we een string?

pointernotatie: char* vb_string = "Dit is een voorbeeldstring."; printf("%s", vb_string);
arraynotatie: char vb_string[30] = "Dit is een voorbeeldstring."; printf("%s", vb_string);

s3.28 het gebruik van de conditionele operator:

Vb: min = a < b ? a : b;
Eerst wordt de voorwaarde gecontroleert en als deze true (waar) is wordt het eerste argument bekenen, zoniet het tweede.

s3.29 wat is het verschil tussen automatische en externe variabelen?

Auto variabelen hebben enkel betekenis in de functie waarin ze gedeclareerd worden. Externe variabelen kan men, door ze maar één maal te initialiseren, in alle functies gebruiken.

s3.30 wat is de definitie van een pointer?

Een pointer is een variabele die het adres van een ander object bevat.

s3.31 wat is daarbij de indirectie-operator?

het teken * : dit neemt de inhoud van de geheugenplaats waarnaar de pointer verwijst.

s3.32 hoe declareren we een pointer?

Dit doen we op dezelfde manier als gewone variabelen. Vb: int *ptrx; voor een pointer van het type integer.

s3.33 wat is belangrijk bij een pointer?

& = adres van
* = inhoud van

s3.34 welke soorten variabelen kennen we?

- automatische: hebben enkel waarde binnen de functie.
- statische: deze worden slechts één maal geinitialiseerd.
- externe: deze worden buiten de functie gedeclareerd.
- register: enkel met int, char, pointer naar int.

s3.35 wat is het expanderen van macro's?

Het expanderen van macro's is het vervangen van formele operatoren door actuele argumenten.

s3.36 waarvoor gebruikt men het "#" teken, indien het voor het formele argument staat?

Dit kan men gebruiken om aan te geven dat we dubbele quotes willen gebruiken.
Vb: #define FOUT(X) printf(#X)
Typen we nu bijvoorbeeld FOUT(Fout in het programma); dan zal de preprocessor dit vertalen in printf("Fout in het programma.");

 

Verder naar referenties en dankbetuigingen

Terug naar inleiding