b'\n_START_ARTICLE_\nImperatief programmeren\n_START_PARAGRAPH_\nImperatief programmeren (ook wel procedureel programmeren genoemd) is een programmeerconcept uit de informatica waarbij programma\'s opgesteld worden in de vorm van opdrachten die direct uitgevoerd kunnen worden. Het tegenovergestelde van imperatief programmeren is declaratief programmeren, dat niet iets doet maar iets beschrijft._NEWLINE_Vaak wordt imperatief programmeren ook naast object-geori\xc3\xabnteerd programmeren gelegd. Een taal waarmee alleen geprogrammeerd kan worden met klassen en hun bijbehorende memberfuncties, zoals Java (elke functie moet hier een member zijn van een klasse), wordt dan een zuiver object-geori\xc3\xabnteerde programmeertaal genoemd. Hiernaast ligt de zuiver imperatieve taal, bijvoorbeeld C, om alleen losstaande functies te plaatsen. Als laatste zijn er nog hybride talen zoals C++ en PHP, waarmee men zowel object-geori\xc3\xabnteerd als imperatief kan programmeren.\n_START_SECTION_\nBerekeningsmodellen\n_START_PARAGRAPH_\nAls een computer een programma uit moet voeren, dan doet de computer dat door achtereenvolgens de instructies uit te voeren die het programma voorschrijft. Dit werkt doordat beide (computer en programma) opgesteld zijn volgens hetzelfde concept van programmaverwerking \xe2\x80\x93 zij "denken" beide hetzelfde over hoe het programma uitgevoerd dient te worden._NEWLINE_In dit concept van uitvoering zijn twee termen belangrijk: de turingmachine en de Von Neumann-cyclus.\n_START_SECTION_\nGeheugen\n_START_PARAGRAPH_\nHet geheugen dient om alle relevante informatie over de berekening bij te houden: in het geheugen ligt opgeslagen wat er al gebeurd is en wat de uitkomsten waren, wat er nog behandeld dient te worden en in welke volgorde, en belangrijkst van alles: waar de berekening nu ("op dit moment") is, in welk stadium. Dit laatste wordt de toestand van de machine genoemd.\n_START_SECTION_\nToestandsautomaat\n_START_PARAGRAPH_\nDe toestandsautomaat voert de eigenlijke berekening uit, in kleine stapjes. De automaat bestaat in feite uit \xc3\xa9\xc3\xa9n grote serie beschrijvingen van de vorm "in deze toestand moet je deze stap zetten". Een hele berekening van de turingmachine is dan een aaneenschakeling van veel van deze kleine stappen.\n_START_SECTION_\nVon Neumann-cyclus en hardware\n_START_PARAGRAPH_\nDe Von Neumann-cyclus beschrijft hoe een computer in praktische zin zou kunnen werken, in termen van het ophalen en uitvoeren van \xc3\xa9\xc3\xa9n enkele instructie en dan doorgaan met de volgende instructie. Dit is de centrale gedachte achter de werking van vrijwel iedere, moderne computer.\n_START_SECTION_\nOnderscheid met andere soorten programmeertalen\n_START_PARAGRAPH_\nImperatieve talen zijn in hun vorm sterk verbonden aan het berekeningsmodel van Turing en de onderliggende hardware. Hierin onderscheiden zij zich van functionele programmeertalen, die het Churchmodel van functietoepassing gebruiken als model van berekening (zie ook Lambdacalculus)._NEWLINE_Ook onderscheiden de imperatieve talen zich van de logische programmeertalen, waarin het bewijsobject en de predicatencalculus als berekeningsmodel centraal staan._NEWLINE_De logische en functionele talen, die in vorm sterk afwijken van de imperatieve talen, worden declaratieve programmeertalen genoemd._NEWLINE_Ten slotte is er veel onenigheid over de positie van objectgeori\xc3\xabnteerde programmeertalen in dit geheel; deze talen verdelen een berekening in verschillende onderdelen, waarbij ieder onderdeel de verantwoordelijkheid is van een opzichzelfstaand programmaobject. Deze objecten op zich worden intern echter weer opgesteld aan de hand van \xc3\xa9\xc3\xa9n (of meer) van de bovengenoemde modellen, dus de vraag blijft of dit model als iets geheel afzonderlijks gezien kan worden.\n_START_SECTION_\nElementen van imperatieve programmeertalen\n_START_PARAGRAPH_\nIn de meeste talen worden sleutelwoorden (of keywords) gebruikt om opdrachten aan te geven. Deze woorden zijn eigenlijk altijd uit het Engels afkomstig. Ook in andere landen gebruikt een programmeur de Engelstalige sleutelwoorden. Veel programmeertalen komen niet alleen qua programmeerparadigma overeen, maar ook gedeeltelijk qua syntaxis en sleutelwoorden, zodat de kenner van een programmeertaal weinig moeite zal hebben met het leren van een verwante taal.\n_START_SECTION_\nGetal\n_START_PARAGRAPH_\nGetallen worden op de gebruikelijke wijze geschreven. Het decimaalteken is een punt. Er is geen scheidingsteken tussen duizendtallen._NEWLINE_Zeer grote en kleine getallen kunnen worden aangegeven met een macht van tien, zoals gebruikelijk in de wetenschap, en daarvoor wordt meestal de letter E gebruikt. Dus het getal 6,022 \xc3\x97 10\xc2\xb2\xc2\xb3 wordt geschreven als 6.022E23._NEWLINE_In sommige talen kan men een ander talstelsel kiezen. Bij ieder getal moet worden aangegeven welk talstelsel wordt gebruikt (dat verschilt per taal). Een hexadecimaal getal kan, afhankelijk van de taal, worden genoteerd als 0Xabcd of als 0abcdH. Let op de voorafgaande nul, een getal moet altijd met een cijfer beginnen (wat met een letter begint is immers een identifier). In C begint een octaal getal met een nul, dus 15 is decimaal en 013 is octaal.\n_START_SECTION_\nString\n_START_PARAGRAPH_\nEen string is een reeks tekens die afgedrukt kan worden. Een string staat meestal tussen aanhalingstekens. Daaruit volgt dat het niet goed mogelijk is aanhalingstekens in een string op te nemen. De gebruikelijke oplossing daarvoor is dat men twee aanhalingstekens achter elkaar zet. In sommige talen geldt een string als eenheid, in andere is het een array van tekens, die dus ge\xc3\xafndiceerd kan worden.\n_START_SECTION_\nImperatieve elementen\n_START_PARAGRAPH_\nBij imperatief programmeren is een programma een samenstel van instructies die de computer moet uitvoeren, waarbij aan geheugenlocaties of meer abstracte variabelen waarden worden toegewezen en uitgelezen. Zulke instructies worden samengesteld tot programma\'s met behulp van elementen die de control flow specificeren. De meeste programmeertalen veronderstellen of ondersteunen deze manier van werken; typische elementen in zulke talen zijn de volgende.\n_START_SECTION_\nSWITCH of CASE\n_START_PARAGRAPH_\nEen IF-statement heeft twee takken, de THEN-tak en de eventuele ELSE-tak. Is er een gecompliceerde keuze nodig, dan kan men vaak gebruikmaken van een SWITCH-statement (in andere talen CASE). Er wordt een expressie genoemd en die wordt vergeleken met een aantal constanten om te bepalen welke tak moet worden uitgevoerd.\n_START_SECTION_\nFOR EACH\n_START_PARAGRAPH_\nfor each. Geeft een iteratie, een lopende variabele en een enumeratie, dat wil zeggen, een object dat zelf al een standaardmethode definieert op iteratie over de waarden ervan mogelijk te maken. Het kan gaan om een al bepaalde collectie waarden (zoals een lijst of array), maar dat hoeft niet._NEWLINE_Het belangrijke verschil met FOR is dat er geen volgnummer wordt gebruikt om de elementen af te lopen.\n_START_SECTION_\nGOTO\n_START_PARAGRAPH_\nNa GOTO of GO TO komt een label. De uitvoering van het programma gaat op de plek van het label verder. Bijna alle programmeertalen kennen GOTO, maar het gebruik ervan wordt in de moderne programmeerpraktijk afgeraden omdat het gemakkelijk aanleiding geeft tot het schrijven van spaghetticode .'