C-taal voor beginners - samenvatting
een laatste beschouwing
[s1 wat doe ik nu?] [s2 verklarende woordenlijst] [i3 herhaling van de leerstof]
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!
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) |
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