Weblessen.nl - Voor iedereen die wat wil leren..


C

Index
C Index
Voorwoord
De eerste stap
Een inleiding tot C
Programma besturing
Toekennen en Logisch vergelijken
Funkties en Variabelen
Defines en Macros
Strings en Tabellen
Pointers
Standaard Invoer / Uitvoer
Bestands Invoer / Uitvoer
Structuren en Unions
Dynamisch ngeheugen aanvragen
Karakter- en bitmanipulatie

Appendix
Hungarian Notation
Voorbeeldprogramma's
Totaal programma
Scherm- en bestands beschrijvingen
Aanpassingen voor VM/CMS

Toekennen en Logisch vergelijken

 

Toekennen van gehele getallen

Bestudeer het programma TOEKENN.C om kennis te maken met toekenning van waarden aan variabelen in C. main () { int a, b, c; /* integer variabelen t.b.v. voorbeelden */ a = 12; /* initialisatie */ b = 3; c = a + b; /* 1 */ c = a - b; /* 1 */ c = a * b; /* 1 */ c = a / b; /* 1 */ c = a % b; /* 1 */ c = 12 * a + b / 2 - a * b * 2 / (a * c + b * 2); /* 2 */ c = c / 4 + 13 * (a + b) / 3 - a * b + 2 * a * a; /* 2 */ a = a + 1; /* 3 */ b = b * 5; /* 3 */ a = b = c = 20; /* 4 */ a = b = c = 12 * 13 / 4; /* 4 */ } Er worden drie variabelen gedeclareerd, de rest van het programma is niet veel meer dan een serie voorbeelden van een toekenning. De eerste twee statements kennen een initi‰le waarde toe aan de variabelen a en b. De volgende vijf statements (1) tonen de vier basis reken funkties (som, verschil, produkt en quoti‰nt) en hoe ze te gebruiken. De vijfde is de modulo funktie en geeft de rest bij deling. Deze funkties kunnen alleen worden toegepast op variabelen van het type int en char en de extensie's daarvan long, short enz.

Dan volgen twee statements (2) die laten zien hoe een en ander gecombineerd kan worden tot een complexe expressie. De daarop volgende twee statements (3) dienen om een variabele met een bepaalde waarde te verhogen. We zullen later in dit hoofdstuk zien hoe dat meer op een C manier kan.

Het zal duidelijk zijn dat geen van de gegeven voorbeelden van enig nut zijn.

Tenslotte blijven nog de laatste statements (4) over. Ze lijken in eerste instantie misschien wat vreemd. De C compiler doorloopt de toekenningen van rechts naar links (wij doen dat van links naar rechts). De compiler vindt de waarde 20 en kent die toe aan c, gaat verder naar links en ontdekt dat het resultaat van de voorgaande berekening (20) ook aan b moet worden toegekend, gaat verder naar links en kent 20 ook aan a toe. Het laatste statement laat nog zien dat het ook om werkelijke berekeningen mag gaan.

Het programma drukt niets af, dus compileren en testen heeft niet echt veel zin. Wil je het programma toch testen, voeg dan printf statements toe. Je weet inmiddels hoe dat moet.

Dan is nu het moment gekomen een regel te geven die moet worden opgevolgd in C: Variabelen moeten altijd worden gedeclareerd VOOR het eerst uitvoerbare statement van een programma blok. Om deze reden zul je variabelen declaraties altijd bovenaan in een C programma vinden. Als je een nieuwe variabele hebt gedeclareerd NA een statement, zal de compiler een foutboodschap geven.


Toekennen aan andere data types

Programma TKANDER.C laat zien hoe nog andere datatypes gebruikt kunnen worden. Opnieuw zijn hier een paar integer variabelen gedeclareerd, die je nu bekend voor zullen komen. Er zijn ook twee nieuwe types aan toegevoegd, char en float. main () { int a, b, c; /* -32768 tot 32767 zonder komma */ char x ,y, z; /* 0 tot 255 zonder komma */ float jan, piet, klaas; /* 10E-38 tot 10E+38 met momma */ a = b = c = -27; /* initialisatie */ x = y = z = 'A'; jan = piet = klaas = 9.7531; a = y; /* a wordt 65 (karakter A) */ x = b; /* x wordt een vreemd karakter */ jan = b; /* jan wordt -27.00 */ a = piet; /* a wordt 9 */ }

Het type char is vrijwel gelijk aan de integer. Character variabelen echter kunnen slechts waarden bevatten van 0 tot en met 255 en beslaan 1 byte in het geheugen. Het type char wordt normaal gesproken gebruikt om er ASCII tekens in op te slaan of, om het anders uit te drukken, tekst. De tekst die je nu leest bijvoorbeeld werd geschreven op een computer met behulp van een tekstverwerker, die de woorden teken voor teken in het geheugen opslaat. In tegenstelling daarmee worden integers, op de meeste computers, opgeslagen in twee aaneengesloten bytes in het geheugen.

Verschillende datatypes tegelijk
Laten we eens gaan kijken hoe C omgaat met de types char en int. Veel funkties die C biedt zijn zo ontworpen dat ze zowel met integer- als met character variabelen kunnen werken. De funkties die als parameter een variabele van het type char verwachten, zullen dit karakter intern beschouwen als een integer en daar als zodanig mee werken. Het is daarom mogelijk char en int type variabelen onderling uit te wisselen. De compiler zal er niets van zeggen. Het is echter niet verstandig dit te doen vanuit ontwerp standpunt. Het is verstandiger zoveel mogelijk de toekenningen te doen met variabelen van hetzelfde type.

Het tweede nieuwe datatype is de float, ook wel bekend als floating point. Dit datatype heeft een groot waardebereik, een groot aantal decimalen en beslaat een groot aantal bytes in het geheugen. De float bevat een impliciet komma-getal.

Hoe wordt met de nieuwe datatypes gewerkt
De eerste drie regels van het programma TKANDER.C kent waarden toe aan alle negen variabelen, zodat we wat kunnen manipuleren met de datatypes onderling.

Omdat, zoals al eerder gezegd, een type char overeenkomt met een type int, hoeven we geen speciale voorzieningen te treffen om een character aan een integer toe te kennen. Omgekeerd ligt het wat moeilijker. Je kunt onvoorspelbare resultaten krijgen als de waarde van de integer buiten het waardebereik van het character ligt, ofwel groter is dan 255. Binnen dat bereik zal alles goed gaan, met andere woorden als de waarde van de integer 0 tot en met 255 is. In het voorbeeld waarbij -27 wordt toegekend aan character x zijn de resultaten slecht voorspelbaar en afhankelijk van de implementatie van de gebruikte C compiler.

De derde regel laat zien hoe eenvoudig het is een integer naar een floating point variabele te vertalen. Een toekenning programmeren is voldoende, het systeem regelt de conversie. De weg terug is wat moeilijker. Omdat er een getal achter de komma kan zijn (de z.g. fractie) en een integer geen fractie kent, gaat bij deze conversie informatie verloren. De fractie wordt eenvoudigweg afgekapt.

Het programma drukt niets af. We hebben het afdrukken van variabelen anders dan van het type int nog niet behandeld. Compileren en testen is op dit moment dus nog niet mogelijk. In de volgende hoofdstukken komt dat aan de orde.


De data types van C

Bestudeer het programma DATATYPS.C. Dit programma bevat alle standaard datatypes die in de programmeertaal C beschikbaar zijn. Er zijn nog andere datatypes, de structuren, maar die zullen we later behandelen. main () { int a; long int b; short int c; unsigned int d; char e; float f; double g; a = 1023; /* initialisatie */ b = 2222; c = 123; d = 1234; e = 'X'; f = 3.14159; g = 3.1415926535898; printf ("a = %d \n", a); /* decimaal afgedrukt */ printf ("a = %o \n", a); /* octaal afgedrukt */ printf ("a = %x \n", a); /* hexadecimaal afgedrukt */ printf ("b = %ld \n", b); /* decimaal 'long' */ printf ("c = %hd \n", c); /* decimaal 'short' */ printf ("d = %u \n", d); /* 'unsigned' */ printf ("e = %c \n", e); /* character */ printf ("f = %f \n", f); /* floating point */ printf ("g = %g \n", g); /* double float */ printf ("\n"); printf ("a = %d \n", a); /* integer gewoon afgedrukt */ printf ("a = %7d \n", a); /* integer op veldbreedte 7 */ printf ("a = %-7d \n", a); /* links aangesloten, 7 breed */ printf ("\n"); printf ("f = %f \n", f); /* float gewoon afgedrukt */ printf ("f = %12f \n", f); /* float op veldbreedte 12 */ printf ("f = %12.3f \n", f); /* 12 breed met 3 decimalen */ printf ("f = %12.5f \n", f); /* 12 breed met 5 decimalen */ printf ("f = %-12.5f \n", f); /* links aangesloten */ } Eerst wordt een eenvoudige int gedeclareerd gevolgd door een long int en een short int. Je zult altijd in het Reference Manual van de gebruikte compiler moeten kijken voor een exacte definitie van deze typen, omdat ze implementatie afhankelijk zijn.

Daarna komt de unsigned, die even groot is als de int, maar geen teken heeft. De unsigned zal op de meeste computers een bereik hebben van 0 tot en met 65535. Bij de declaratie van de typen long, short en unsigned mag het woord int worden weggelaten.

De char en de float hebben we inmiddels behandeld, zodat alleen de double nog overblijft. De double heeft een groter waarde bereik dan de float en heeft meer cijfers beschikbaar voor nauwkeuriger berekeningen. Er is ook meer geheugen nodig om een double op te slaan. Een float variabele beslaat 4 bytes en een double beslaat 8 bytes in het geheugen. Kijk altijd in het Reference Manual van de compiler om precies te weten wat de precisie is.

Nadat in het programma variabelen van de diverse datatypes gedeclareerd zijn, wordt aan elk ervan een waarde toegekend. Met behulp hiervan zal in het volgende hoofdstuk gedemonstreerd worden hoe deze af te drukken.


Conversie karakters en printf

Het volgende overzicht is een lijst van conversie karakters en de manier waarop ze gebruikt moeten worden bij de printf() funktie:
Karakter Gebruik
d decimale notatie
o octale notatie
x hexadecimale notatie
u unsigned notatie
c character notatie
s string notatie
f floating point notatie

Elk van deze karakters wordt gebruikt in combinatie met het procent teken (%), die de printf() funktie vertelt welke conversie er plaats moet vinden. Tussen deze twee tekens mag nog extra besturing worden toegevoegd:

Karakter Funktie
- links aansluiten in het veld
(n) een getal dat de minimum veld breedte aangeeft
. scheidings teken (scheidt n van m)
(m) aantal cijfers achter de komma
l duidt een long variabele aan

Deze tekens worden in het voorbeeld programma toegepast. De string notatie vormt een uitzondering. Daar zullen we later in de cursus op terugkomen. Vanaf nu ben je dus in staat om alle mogelijke gegevens af te drukken.

Compileer en test het programma en probeer nog eens wat andere mogelijkheden uit.


Logisch vergelijken

Bestudeer nu het programma VERGELYK.C, waarin een aantal voorbeelden van vergelijkingen staan. Het programma begint met de declaratie en initialisatie van een negen-tal variabelen die daarna in een aantal vergelijkingen worden gebruikt. De manier waarop dat hier gebeurd is wellicht nieuw voor je en volledig toegestaan in C. main () { int x = 11, y = 11, z = 11; char a = 40, b = 40, c = 40; float r = 12.987, s = 12.987, t = 12.987; /* Eerste groep */ if (x == y) z = -13; /* z wordt -13 */ if (x > z) a = 'A'; /* a wordt 65 */ if (!(x > z)) a = 'B'; /* er verandert niets */ if (b <= c) r = 0.0; /* r wordt 0.0 */ if (r != s) t = c / 2; /* t wordt 20 */ /* Tweede groep */ if (x = (r != s)) z = 1000; /* x wordt WAAR, z wordt 1000 */ if (x = y) z = 222; /* x wordt y, z wordt 222 */ if (x != 0) z = 333; /* z wordt 333 */ if (x) z = 444; /* z wordt 444 */ /* Derde groep */ x = y = z = 77; /* initialisatie */ if ((x == y) && (x == 77)) z = 33; /* z wordt 33 */ if ((x > y) || (z > 12)) z = 22; /* z wordt 22 */ if (x && y && z) z = 11; /* z wordt 11 */ if ((x = 1) && (y = 2) && (z = 3)) r = 12.00; /* x wordt 1, y wordt 2, z wordt 3, r wordt 12.00 */ if ((x == 2) && (y = 3) && (z = 4)) r = 14.56; /* er verandert niets */ /* Vierde groep */ if (x == x); z = 27.345; /* z veranderd altijd ! */ if (x != x) z = 27.345; /* z veranderd niet */ if (x = 0) z = 27.345; /* x wordt 0, z veranderd niet */ } De eerste groep van vergelijkingen
De eerste groep van vergelijkingen geven de eenvoudigste vorm van vergelijken weer, omdat ze slechts twee variabelen vergelijken. Elke variabele mag vervangen worden door een constante, echter twee constanten met elkaar vergelijken lijkt weinig zinvol. De eerste vergelijking controleert of x gelijk is aan y en gebruikt daarvoor een dubbel is-gelijk (==) teken als operator. C gebruikt het enkele is-gelijk teken (=) voor de toekenning. De tweede vergelijking controleert of x groter is dan y.

De derde introduceert de not operator, zijnde het uitroepteken, die gebruikt wordt om het resultaat van een logische vergelijking te inverteren. De vierde controleert of b kleiner of gelijk is aan c De laatste controleert of r ongelijk is aan s.

In het voorgaande hoofdstuk hebben we geleerd dat als de expressie volgend op if WAAR is, het statement van de if wordt uitgevoerd. De resultaten van de voorbeelden staan er als commentaar achter vermeld.

Om het voorbeeld compact te houden is hier alles zo veel mogelijk op een regel gezet, hetgeen afwijkt van de voorgestelde standaard.

De tweede groep van vergelijkingen
De tweede groep komt al wat meer ter zake. De eerste bevat een wat vreemd aandoende expressie tussen de haakjes. Om te begrijpen wat hier staat zullen we eerst moeten weten wat een WAAR (true) en een ONWAAR (false) is in de programmeertal C. De waarde nul is gedefinieerd als ONWAAR (false) en elke niet-nul waarde als WAAR (true). Elke integer of character variabele kan worden gebruikt voor het opslaan van het resultaat van een vergelijking. Met andere woorden, boolean variabelen mogen gedeclareerd worden met behulp van variabelen van het type int of char.

Kijk nu eens naar het eerste voorbeeld. De expressie r != s zal ge‰valueerd worden als WAAR, omdat r de waarde 0.0 gekregen heeft. Het resultaat zal dus niet-nul zijn en het meest waarschijnlijk is dat de waarde 1. Hoewel de twee variabelen waarmee wordt vergeleken van het type float zijn, zal het resultaat van het type integer zijn. Het resultaat wordt namelijk niet aan een specifieke variabele toegekend, waardoor het resultaat impliciet een integer is. Tenslotte wordt het resulterende getal, hier 1, aan de integer variabele x toegekend.

Als er twee is-gelijk tekens (==) hadden gestaan, zou een systeem variabele de waarde 1 gekregen hebben en zou deze variabele vergeleken zijn met x. Omdat er slechts een is-gelijk teken staat, is er sprake van een toekenning. Omdat het resultaat van de vergelijking nu dus ook niet-nul is, is het resultaat van de hele vergelijking WAAR en krijgt z de waarde 1000. We hebben hiermee twee dingen tegelijk gedaan in dit statement; x kreeg een nieuwe waarde en z werd 1000.

Met dit voorbeeld hebben we een aantal dingen tegelijk behandeld. Kijk een en ander nog eens na en ga dan pas verder. De belangrijke dingen waren de definitie van WAAR en ONWAAR in C en het feit dat toekenning in een uitvraging is toegestaan.

Het voorbeeld erna maakt het wellicht nog eens duidelijk. Variabele x krijgt de waarde van variabele y. Omdat dit 11 is, is het resultaat niet-nul, dus WAAR, dus krijgt variabele z de waarde 222.

In het derde voorbeeld wordt x vergeleken met nul. Omdat x ongelijk is aan nul is het resultaat ONWAAR. Dit wordt ge‹nverteerd, dus WAAR. Variabele z krijgt dus de waarde 333.

Ook hier geldt weer het concept van WAAR en ONWAAR. Voorbeeld drie en vier laten een en ander nog eens opnieuw zien.

De derde groep van vergelijkingen
De derde groep behandelt de logische and en de logische or. De drie variabelen krijgen eerst de waarde 77 toegekend. De eerste vergelijking bevat de && operator, wat de logische and is. Het statement luidt: als x gelijk is aan y EN als x gelijk is aan 77 dan is het resultaat WAAR. Omdat dit WAAR is, wordt z 33.

De volgende vergelijking introduceert de || operator, die de logische or is. Het statement luidt: als x groter is dan y OF als z groter is dan 12, is het resultaat WAAR. Omdat z groter is dan 12 maakt het niet meer uit of x groter is dan y of niet. Het resultaat is WAAR, daarom wordt z 22.

De vierde groep van vergelijkingen
De vierde groep laat een valkuil zien, waar veel beginnende C programmeurs invallen. Na de sluithaak van de expressie van de if staat direct een punt-komma (;). Het gevolg is een loos statement (NOP). Variabele z zal dus altijd een nieuwe waarde krijgen. Wees hierop bedacht.

In het tweede voorbeeld wordt x met zichzelf vergeleken, hetgeen altijd WAAR zal zijn. Het statement zal ONWAAR opleveren en dus in het geheel niets doen, wat verloren moeite is.

Het laatste statement tenslotte zal altijd de waarde nul aan x toekennen en dus ONWAAR opleveren. Het statement achter de voorwaarde zal dus nooit worden uitgevoerd.


Evaluatie van expressies

Evaluatie van een samengestelde expressie vindt plaats van links naar rechts en zodra het resultaat zeker is, stopt de evaluatie. In het geval van een and zal de evaluatie stoppen zodra het resultaat van een van de termen van de expressie ONWAAR is. De evaluatie kan worden gestaakt, omdat de hele expressie nooit meer WAAR kan worden. In het geval van een or zal de evaluatie stoppen zodra het resultaat van een van de termen van de expressie WAAR is. De evaluatie kan worden gestaakt, omdat de hele expressie nooit meer ONWAAR kan worden.

Beslissingen (statements met een voorwaarde) zijn bijzonder belangrijk en moeten goed doordacht worden om zo efficiënt mogelijke C programma's te schrijven. Als nog niet alles wat er besproken is tot je is doorgedrongen, raadt ik je aan een en ander nog eens door te lezen.


Voorrang regels

Het is altijd weer de vraag welke de voorrang regels zijn die de compiler hanteert tussen de diverse operators. Welke operators gaan voor de andere. Denk hierbij aan vermenigvuldigen en delen die voor optellen en aftrekken gaan. Ik wil voorstellen om dit niet aan het toeval over te laten, doch expressies van zoveel mogelijk haakjes te voorzien. Haakjes hebben de hoogste voorrang en maken in een klap duidelijk wat er precies moet gebeuren. Kijk eens naar de voorbeelden uit de derde groep van het programma VERGELYK.C.


Taal specifieke delen van C

De programmeertaal C biedt drie zeer specifieke constructies die, als je ze de eerste keer ziet, wat vreemd aandoen. Zij laten de compiler echter erg snelle code genereren en worden door ervaren programmeurs uitgebreid gebruikt. Ze zullen daarom nu behandeld worden, want je zult ze in vrijwel elk C programma tegenkomen. Bestudeer nu programma PLUSMIN.C. main () { int x = 0, y = 2, z = 1025; float a = 0.0, b = 3.14159, c = -37.234; /* Ophogen */ x = x + 1; /* x wordt 1 hoger */ x++; /* x wordt 1 hoger */ ++x; /* x wordt 1 hoger */ z = y++; /* z wordt 2, y wordt 3 */ z = ++y; /* z wordt 4, y wordt 4 */ /* Aflagen */ y = y - 1; /* x wordt 1 lager */ y--; /* x wordt 1 lager */ --y; /* x wordt 1 lager */ y = 3; /* y wordt 3 gemaakt */ z = y--; /* z wordt 3, y wordt 2 */ z = --y; /* z wordt 1, y wordt 1 */ /* Rekenkundige bewerkingen */ a = a + 12; /* a wordt 12 hoger */ a += 12; /* a wordt weer 12 hoger */ a *= 3.2; /* a vermenigvuldigd met 3.2 */ a -= b; /* b wordt afgetrokken van a */ a /= 10.0; /* a wordt gedeeld door 10 */ /* Conditional expression */ a = (b >= 3.0 ? 2.0 : 10.5); /* Deze constructie is */ /* identiek aan: */ if (b >= 3.0) a = 2.0; else a = 10.5; c = (a > b ? a : b); /* c wordt maximum van a en b */ c = (a > b ? b : a); /* c wordt minimum van a en b */ } In dit programma worden eerst wat variabelen gedeclareerd en ge‹nitialiseerd. Het eerste statement telt eenvoudigweg 1 op bij de waarde van x, hetgeen geen verrassing meer voor je moet zijn. De volgende twee statements tellen ook 1 op bij de waarde van x, echter nu is dat niet zo duidelijk meer zichtbaar als bij het vorige statement. In de programmeertaal C is deze bewerking gedefinieerd. Twee plus tekens achter elkaar, voor of achter een variabele geplaatst hoogt die variabele met 1 op.

Er is echter nog meer aan de hand. Als de plus tekens ervoor staan wordt de variabele eerst opgehoogd en daarna gebruikt. Als de plus tekens erachter staan wordt de variabele eerst gebruikt en daarna opgehoogd. Laten we kijken naar de voorbeelden. De waarde van y wordt toegekend aan de variabele z en daarna wordt y opgehoogd, want de plus tekens staan achter de variabele y. In het laatste statement van de groep wordt de waarde van y eerst opgehoogd en vervolgens toegekend aan de variabele z.

De volgende groep statements laat zien hoe het aflagen in zijn werk gaat. De definitie voor aflagen werkt net zo als die voor ophogen. Als de min tekens ervoor staan wordt de variabele eerst afgelaagd, daarna gebruikt en als de min tekens erachter staan wordt de variabele eerst gebruikt, daarna afgelaagd.

Een andere vreemde maar bruikbare operator is die voor rekenkundige bewerkingen. Deze operator wordt gebruikt om een variabele te veranderen met een bepaalde waarde. Het eerste statement uit de groep voorbeelden telt (op klassieke wijze) 12 op bij de waarde van de variabele a. Het tweede voorbeeld doet exact hetzelfde, echter nu op C specifieke wijze. Alle vier basis bewerkingen (optellen, aftrekken, vermenigvuldigen en delen) kunnen op deze wijze worden geprogrammeerd. Plaats het symbool van de bewerking direct voor het is-gelijk teken en laat de tweede referentie naar de naam van de variabele achterwege.

Nog een opmerking. De expressie rechts van het is-gelijk teken mag elke geldige expressie zijn. De voorbeelden zijn bewust eenvoudig gehouden, zodat je er makkelijk vertrouwd mee raakt.

Tenslotte wordt de derde constructie besproken, de Conditional Expression. Deze constructie is al even vreemd als de vorige twee en specifiek voor C. Probeer ook deze te doorgronden, want ervaren C programmeurs gebruiken hem veel. Je zult hem dus vaak tegenkomen.

De Conditional Expression is opgebouwd uit drie delen die van elkaar gescheiden zijn door een vraagteken (?) en een dubbele punt (:). De expressie voor het vraagteken wordt ge‰valueerd en resulteert in WAAR of ONWAAR. Als de expressie WAAR is, wordt het statement na het vraagteken gebruikt als rechterdeel van een toekenning; als de expressie ONWAAR is wordt het statement na de dubbele punt gebruikt als rechterdeel van een toekenning. Het uiteindelijke resultaat komt overeen met dat van een if statement met een else tak. Het tweede voorbeeld uit de groep laat dit nog eens zien. De Conditional Expression heeft het voordeel dat je compactere programma's kunt schrijven die met veel compilers ook snellere machinecode opleveren.

De laatste twee voorbeelden laten een compacte manier van coderen zien voor respectievelijk de max() en de min() funkties.

Veel programmeurs zeggen dat ze de bovengenoemde constructies van C niet mooi vinden en ze dus ook niet zullen gebruiken. Zolang ze programma's van en voor zich zelf schrijven en in onderhoud hebben, is dat geen enkel bezwaar. Op het moment echter dat programma code van anderen gebruikt of onderhouden moet gaan worden, is het handig als je van deze programmeer-technieken op de hoogte bent. Ook in de voorbeelden bij deze cursus zul je ze tegen komen.

Dit was een lang hoofdstuk. Het bevatte een aantal belangrijke concepten om je met C op weg te helpen. In het volgende hoofdstuk zal het gaan over de bouwstenen van C, de funkties. Met die kennis zal je reeds in staat zijn zinvolle programma's te bouwen.



Webdesign

Maak van Weblessen.nl uw startpagina!
Plaats Weblessen.nl bij uw favorieten. Neem contact met me op.
Heb je een Hosting?
Geef hier jouw mening over jouw web hosting

Webadres.info: Goede domeinnaam kiezen

Gesponsorde links:
Budget Webhosting
Web2host.nl
10eurohost.nl
Denit Hosting Solutions
YourHosting.nl
Starthosting.nl
Eduvision.nl
Educruitment.nl
Webadres.info


De link top 5:
Gratis Computercursussen
WebmasterStartpagina
MijnStartpagina.nu
Bluebird Animatie
Anouksweb
Link aanmelden
Alle Partners

Webmasterwoordenboek
A | B | C | D | E | F
G
| H | I | J | K | L | M
N
| O | P | Q | R | S | T
U | V | W | X | Y | Z

Films vanavond op Tv:

De klok:

(advertentie)

HTML leren
PHP cursus
XML lessen
XHTML les
CSS leer
leer C
REXX online
Red Hat Linux cursus