CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
C (programmeertaal) - Wikipedia

C (programmeertaal)

De programmeertaal C is gebaseerd op de programmeertaal B, die zelf weer op BCPL was gebaseerd. Het is een zeer praktische programmeertaal die meer op Algol lijkt dan op andere voorlopers, zoals - in historische volgorde - Fortran, LISP, COBOL en BASIC.

Ook Pascal is een versimpeling van Algol, maar dan in een andere richting. Terwijl Pascal meer afstand neemt van de machine waar het op moet werken, ligt C juist dicht tegen de machine aan; het is betrekkelijk 'low-level'.

De invloed van C is zo groot dat sindsdien de meeste nieuwe talen zoals C++, Objective-C, Java, JavaScript, C# en PHP grotendeels de syntaxis van C gebruiken.

Inhoud

[bewerk] Kenmerken in vogelvlucht

[bewerk] Datatype

C heeft getypeerde data, maar maakt conversie wel mogelijk. Conversie kan door middel van zogenaamde casts, de datatypes hoeven niet van dezelfde grootte te zijn, hoewel dit wel aan te raden is. De datarepresentatie van een type op de machine wordt niet door de taal voorgeschreven; een variabele van het type int (een verkorting van het Engelse integer, hetgeen "geheel getal" betekent) kan dus tussen verschillende machines verschillen en bijvoorbeeld 16 of 32 bits lang zijn.

[bewerk] Programmastructuur

De taal C is procedureel. Alle code is onderdeel van een functie. Het hoofdprogramma dat 'main' heet, is zelf ook een functie.

De lusconstructies zijn de for-, while- en do-while statements. Een GOTO-statement is ook beschikbaar, maar gebruik hiervan wordt in de informatica ontraden, voor doeleinden anders dan fout-exit constructies. Ook werkt C met logische operatoren als and (&&), or (||) en not (!) en het if-statement, waarvan de if-else versie verkort als condition?statement:statement; geschreven kan worden.

Er zijn een aantal increment- en decrementoperatoren die bij veel processors als machinetaalinstructies aan arraybewerkingen kunnen worden gekoppeld (bv. a = b[x++]; betekent: a krijgt de waarde in b[x] en x wordt daarna 1 opgehoogd. Voor veel processoren (80x86, 68xxx) is dit een enkele machinetaalinstructie).

Statements worden door een puntkomma afgesloten. Indices van arrays beginnen bij nul.

[bewerk] Pointers

C geeft directe toegang tot het geheugen met behulp van pointers, dit is een variabele die naar een geheugenadres wijst waar een andere variabele is opgeslagen. Dit kan weer een pointer zijn. Het gebruik hiervan heeft vele voordelen, men kan bijvoorbeeld een pointer doorgeven aan een functie, zodat deze de variabele waarnaar de pointer wijst, direct kan wijzigen. Dit is voordelig qua geheugengebruik, want er hoeft geen kopie van de variabele gemaakt te worden en er hoeven geen globale variabelen gedefinieerd te worden door de programmeur. Er zijn echter ook valkuilen: als men een pointer voortijdig wijzigt, d.w.z. voordat de geheugenplaats is vrijgegeven, kan het programma niet langer de geheugenplaats waarnaar de pointer wees, aanspreken. Staat zo een constructie in een lus, bijvoorbeeld een while-loop, dan kan dat een zogenaamd geheugenlek opleveren.

Men kan gewoon getallen optellen bij pointers, deze waren immers gewoon geheugenadressen:

#include <stdio.h> 
/* Dit is een alternatief van het "hello world"-programma. */

int main(void)
{
  char * statement = "hello world!\n";  
  while(*statement) 
  { 
       putchar(*statement++); /* gewoon 1 bij optellen */
  } 
    
  return 0; 
}

De syntaxis van de taal is tamelijk beperkt, maar er is een grote bibliotheek van standaardfuncties beschikbaar voor bv. stringbewerkingen (tekst wordt in C beschouwd als een array van karakters (type char, afgeleid van het Engelse character) met een nullbyte ter afsluiting). Arrays zijn in C te benaderen als pointers.

[bewerk] Hello world

Als voorbeeld het klassieke hello world-programma in C.

#include <stdio.h> /* laad de bibliotheek met functies voor standaardin- en 
                      uitvoer (stdio.h) */

/* begin de main()-functie en vermeld dat deze functie een waarde teruggeeft
   als geheel getal (int), maar geen argumenten heeft (void).
   De waarde die teruggeven wordt door de main()-functie is de exitcode van 
   het programma. */

int main(void)
{
  printf("Hello, world!\n"); /* gebruik de printfunctie "printf()" om "hello
                                world!" af te drukken op het scherm. De '\n'
                                staat voor newline ("nieuwe regel").
                                De definitie van printf komt uit stdio.h. */

  return 0;                  /* Stop het programma met exitcode 0. */
}

[bewerk] Voor- en nadelen van C

Zoals gezegd is C een taal die tamelijk dicht aansluit bij de hardware. Dat heeft zowel voor- als nadelen. Voordelen zijn dat C voor van alles gebruikt kan worden en erg snel is.

Nadelen zijn dat de taal niet erg vergevingsgezind is m.b.t. fouten en dat de C-compiler weinig controles uitvoert (hoewel die controles met diverse tools alsnog uitgevoerd kunnen worden). Een C-programma dat door de C-compiler correct wordt bevonden, hoeft niet per definitie goed te functioneren. Een oorzaak van vele problemen hier situeert zich ter hoogte van het gebruik van pointers, dit is dan ook de reden waarom deze in afgeleide talen zoals Java en C# achterwege gelaten zijn.

Een bekend spreekwoord over C is "C provides all the rope you need to hang yourself" ("C levert al het touw dat je nodig hebt om jezelf op te hangen"). Er kan veel met C, maar alleen als je echt weet wat je doet. Daarom vind je deze taal veel in de technische wereld.

Besturingssystemen als Unix en Windows worden grotendeels in C geschreven. Vaak wordt er een combinatie gebruikt van C en C++, zoals bij Windows, waarbij C wordt gebruikt voor de kernel en C++ voor de overige componenten. Een ander veelgebruikt alternatief is een combinatie van C en (ingebedde) assembler, dit komt dan terug voor bij de Linux kernel, deze is quasi volledig in C geschreven met enkele low level zaken in assembler. Voor vrijwel iedere processor (processor zowel in de context als processor als microcontroller) is een C-compiler beschikbaar. Dientengevolge kent de taal C een hoog percentage professionele programmeurs.

[bewerk] Literatuur

Wikibooks Wikibooks heeft een Inleiding over dit onderwerp: Programmeren in C

Overzicht van programmeertalen

Industrieel:
Ada | AWK | Assembler | C | C++ | C# | COBOL | Fortran | F# | Java | JavaScript | Lisp | Object Pascal | Pascal | Perl | PHP | Python | Visual Basic
Academisch:
Eiffel | Haskell | Logo | ML | Prolog | Scheme | Smalltalk
Historisch:
ALGOL | APL | BASIC | Clipper | MUMPS | PL/I | PowerBuilder | Simula

 
Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com