C is 'n hoëvlakprogrammeertaal wat in die vroeë 1970's deur Dennis Ritchie by Bell Laboratoriums ontwikkel is. Dit is oorspronklik gebruik vir stelselprogrammering, maar het gou getoon dat dit kragtig en buigsaam genoeg is vir ontwikkeling van 'n verskeidenheid van programmatuur.
In C-taal word alle uitvoerbare kode omskryf in afsonderlike subroetines bekend as "funksies" (hierdie moet nie verwar word met funksionele programmering nie). Funksie parameters word altyd weergegee met hul waardes, aangesien verwysings nie werklik in C bestaan nie. Wanneer jy direk 'n veranderlike se waarde verander (meer bekend as werk met verwysings), dan word daar eintlik indirek aan die veranderlike verander deur gebruik te maak van wysers.
'n Enkele stelling in C word beëindig met 'n kommapunt, terwyl krulhakies gebruik word om groepe van stellings te vorm.
Meer as een waarde mag aan 'n veranderlike toegeken word in 'n enkele stelling (slegs die laas toegekende waarde word egter behou)
Alle datatypes het 'n swak vaste tipe - in ander woorde dit kan maklik omgestel word in 'n ander type (byvoorbeeld om die char 8 as die int 8 te gebruik).
Die verklarings sintaks stem oorreen met die gebruik van die taal. Daar is byvoorbeeld nie 'n defineer sleutelwoord om aan te dui jy defineer 'n nuwe veranderlike nie, eerder word die veranderlike se tipe gebruik om aan te dui dat 'n nuwe veranderlike gedefineer word (byvoorbeeld nie define num as int; nie maar slegs int num;) Daar is ook nie 'n sleutelwoord vir 'n funksie nie, in plaas daarvan word 'n funksie uitgeken deur rondehakies wat die argument lys omsluit.
Strings word nie as 'n afsonderlike datatipe behandel nie, maar eerder as 'n skikking van karakters met "\0" aan die einde.
Prosedures (funksies wat nie waardes terugvoer nie), is 'n spesiale tipe funksie wat met die tipe void gegee word.
Die ontstaan van C hou verband met die ontwikkeling van die Unix-bedryfstelsel wat oorspronklik geïmplementeer is in samestellertaal op 'n PDP-7 deur Ken Thompson en Dennis Ritchie. Hulle wou later die nuwe bedryfstelsel gebruik op 'n PDP-11. Hul eerste oorweging was om die sisteem te herskryf met die B programmeertaal, maar daardie taal kon nie die PDP=11 ten volle benut nie.
K&R C se funksiedefinisies het geen inligting bevat oor die argument van die funksie nie, dus kon daar foute wees met 'n aantal parameters wat 'n samesteller nie sou uitwys nie.
Die gebrek aan 'n ooreenkoms by een standaardbiblioteek sowel as die C-taal se hoë gebruik het daartoe gely dat 'n sekere mate van standaardisering vir die taal nodig was.
C het 32 standaard sleutelwoorde. Hulle verwys na spesifieke programmeerinstruksies wat vir geen ander doel as dit waarvoor hulle gedefineerd is, gebruik kan word nie. Hierdie woorde se gebruik is dus beperk tot 'n spesifieke doel en mag nie as veranderlikes, funksie of ander name gebruik word nie.
Soos gesien kan word uit die "Hello World" voorbeeld hieronder, is die funksie printf nie 'n sleutelwoord nie, terwyl return wel is. Dit is omdat printf op 'n verskeidenheid maniere vir verskillende platforme gedefineer kan word. In die voorbeeld is printf in stdio.h gedefineer en sal dit 'n string op die relevante venster vertoon. printf kan byvoorbeeld op 'n verwerkerbord gedefineer word om data oor 'n konneksie te stuur. Die ander datapunt is dan verantwoordelik om iets met die data te doen. Hierdie verskil van return, wat altyd in enige C-program dieselfde sal doen (naamlik dit sal teruggaan na die roeperfunksie met die argument wat saam met dit gegee is.)
C laat die gebruik van wysers toe, wat die adres van 'n objek of funksie in die geheue stoor. Wysers kan dan gebruik word om die data by die adres waarna dit wys te gebruik. Daar is ook spesiale wiskundige operasies wat gedefinieerd is vir wysers. 'n Wyser se tipe word bepaald deur die datatipe waarna dit wys. (Byvoorbeeld 'n int wyser sal die adres van 'n int stoor). Die wyserwiskunde word outomaties aangepas vir die grootte van die datatipe waarna dit wys.
'n Null wyser wys direk na 'n geen geldige adres. Om na daardie adres toe te gaan sal dus meestal 'n segmentfout tot gevolg hê. Null wysers word dus gebruik vir spesiale gevalle wat "nie bestaan nie", soos om die volgende objek in die laaste objek in 'n tou te beskryf.
'n Kritiese funksionaliteit van 'n programeringstaal is om die bestuur van geheue en stoor van objekte te beheer. C bied drie maniere om geheue toe te ken vir objekte.
Outomatiese geheue toekenning: tydelike objekte kan op die stack gestoor word en die hulle geheue word outomaties vrygestel en geherbruik na die die funksieblok waarin hulle verklaar is klaar uitgevoer is.
Dinamiese geheue toekening: segmente van geheue van arbitrêre geheue kan toegeken word tyden die uitvoer van die program deur gebruik te maak van funksies soos malloc wat geheue kry vanaf die heap. Hierdie geheue bly egter in gebruik totdat hulle weer gereed gestel word vir gebruik met realloc of free.
Die C programmeertaal gebruik biblioteke as sy hoofmetode van uitbreiding. In C is 'n biblioteek n stel funksies wat behou word in 'n enkel argief lêer.
Die volgende C kode is 'n eenvoudige program wat bloot die string "Hello, world!" druk op die skerm:
Hierdie lyn veroorsaak die voorverwerker ('n program wat die kode verwerk voordat dit vertaal word) om die inhoud van die stdio.h lêer in die plek van hierdie lyn in te voeg. stdio.h vorm deel van die standaard C biblioteek, en bevat definisies vir verskeie funksies om I/O te behandel, soos printf.
Die volgende lyn verklaar die main funksie. In C-programme dien die main funksie as beginpunt vir die program deurdat dit die eerste funksie is wat geroep word deur die bedryfstelsel wanneer die program uitgevoer word. Die int spesifiseer dat die funksie 'n heelgetalwaarde as afvoer lewer. Die hakies aan die einde van main spesifiseer dat die funksie geen argumente neem nie; dit kan ook as (void) geskryf word. Die krulhakies dui die bestek van die funksie aan.
Hierdie lyn roep die printf funksie met een argument (die string "Hello, world!\n") om die boodskap te vertoon op die skerm. Die funksie se implementering word bevat in 'n sogenaamde biblioteek wat bekend staan as die standaard C biblioteek, wat 'n groot hoeveelheid nuttige funksies bevat.
Omdat main verklaar is met 'n int afvoer, moet die funksie spesifiseer watter waarde teruggestuur gaan word na die funksie/omgewing wat dit geroep het. In hierdie geval word 'n 0 terug gestuur. In UNIX-stelsels is die konvensie dat 'n afvoer van 0 van die program (in hierdie geval, vanaf die main funksie) beteken dat die program suksesvol uitgevoer is, terwyl enige ander waarde 'n fout aandui.
Raymond Arthur Dart (4 Februarie 1893 - 22 November 1988) was 'n Suid-Afrikaanse antropoloog. Hy is gebore in Brisbane, Australië en studeer in die medisyne aan die Universiteite van Queensland en Sydney. Hy veg later in die Eerste Wêreldoorlog. Hy word 'n lektor aan die Universiteit van Londen en doen later navorsing by die Rockefellerstigting van 1921- 1922. In 1923 word hy 'n professor van Anatomie aan die Universiteit van die Witwatersrand. In 1925 word hy dekaan van die Fakulteit Geneeskunde. Hy het bekendheid verwerf vir sy herkenning van die belangrikheid van die Taung-skedel.