Wat is de beste programmeertaal?
|
|
|
- Nele van Beek
- 10 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Wat is de beste programmeertaal? Profielwerkstuk Hoofdvak: Wiskunde Matthijs Melissen Stedelijk Gymnasium Breda Klas 6B December 2003 Begeleidend docent: dhr. Martens
2 Inhoudsopgave Inleiding... 4 Syntaxis...5 Wat is syntaxis?...5 Opdrachten... 5 Conclusie... 5 Commentaar... 6 Tot einde regel... 6 Van begin-commentaar tot einde-commentaar... 6 Conclusie... 6 Variabelen...7 Datatypes...7 Declareren... 8 Arrays...8 Records of structures...9 Conclusie... 9 Operatoren... 9 Toekenningsoperatoren...10 Rekenkundige operatoren String-operatoren Vergelijkingsoperatoren...10 Conclusie Programmavolgorde Groeperen...12 Keuze Goto Onbeperkte herhaling...14 Herhaling van tevoren vastgesteld aantal keren...14 Herhaling met controle vooraf Herhaling met controle achteraf...15 Herhaling binnen een array Conclusie Programmeerparadigma s
3 Wat zijn paradigma s? Imperatief programmeren Procedureel programmeren...17 Object-georiënteerd programmeren Functioneel programmeren Logisch programmeren Conclusie Conclusie Gebruikersomgeving Conclusie Toepassingsgebied Conclusie Historie...27 Hoe het begon De eerste talen...27 De moderne talen De jaren Conclusie Conclusie...30 Bronvermelding
4 Inleiding Zoals al in het voorwoord vermeld, zal ik in dit werkstuk verschillende programmeertalen met elkaar vergelijken, en kijken wat de beste programmeertaal is. Programmeren is het schrijven van een aantal opdrachten in een bepaalde computertaal, die de computer vertellen wat hij precies moet doen. Zo n computertaal wordt een programmeertaal genoemd. Er zijn enkele honderden van dit soort talen. Overigens, soms stelt men aan een programmeertaal de eis dat het programma, na eventueel gecompileerd (voor de processor leesbaar gemaakt) gemaakt te zijn, zonder speciale aanvullende software uitgevoerd kan worden. Talen waar specifieke aanvullende software voor nodig is worden scripttalen genoemd. Dit onderscheid wordt in dit werkstuk niet gemaakt: ook scripttalen worden hier onder de noemer programmeertalen geschaard. Sommige van die talen lijken erg op elkaar, terwijl andere totaal verschillen. In deze scriptie worden die onderlinge overeenkomsten en verschillen behandeld. Het gaat hierbij om de syntaxis (de regels van een programmeertaal) en de gebruikersomgeving. Verder komen de toepassingsgebieden van de talen aan bod, en ten slotte volgt de geschiedenis van programmeertalen. 4
5 Syntaxis Wat is syntaxis? Een programmeertaal heeft altijd specifieke regels, die met de grammaticaregels in een normale taal te vergelijken zijn. Het geheel van deze regels wordt de syntaxis of syntax van een taal genoemd. De regels in een programmeertaal zijn wel veel strikter dan die van een gewone taal: wij kunnen bij een fout tegen de grammatica meestel wel begrijpen wat er bedoeld wordt, maar een computer kan dit niet. Elke programmeertaal heeft een andere syntaxis. In dit hoofdstuk wil ik de overeenkomsten en verschillen tussen de syntaxis van verschillende talen laten zien. Verder probeer ik te onderzoeken welke taal de beste syntaxis heeft. Opdrachten De meeste programmeertalen bestaan uit een serie opdrachten. In assemblertaal, Basic, E, Fortran, Haskell en Lua staat elke opdracht op een nieuwe regel. De opdrachten worden dus gescheiden door regeleindes. Mocht je in Basic meerdere opdrachten op een regel willen, dan scheid je die met een dubbele punt. In de vrijwel alle nieuwere programmeertalen (Ada, Awk, B, Beta, C, C#, C++, E, Haskell, Java, JavaScript, merd, Modula-3, OCaml, Perl, PHP, Pike, PL/I, Pliant, Python, Ruby, sh, SML, Tcl) worden de opdrachten gescheiden door puntkomma s. Soms worden opdrachten gescheiden door een punt (Smalltalk), een spatie (Eiffel), of >> (Haskell). Opdrachten kunnen onderbroken worden door regeleindes (C, C++, Common Lisp, Java, JavaScript, Perl, PHP). Ze staan dan dus verspreid over twee of meer regels. In Basic kan dat ook, maar je moet dan wel een _ aan het einde van de regel, dus voor het regeleinde, zetten. Conclusie Er zijn dus grofweg twee methodes te onderscheiden, met elk hun eigen voor- en nadelen: de eerste is dat regeleindes expliciet moeten worden aangegeven. Dit maakt opdrachten over meerdere regels mogelijk, maar het einde-opdracht-teken mag niet vergeten worden, omdat het programma dan niet werkt. De tweede methode is een opdrachteinde aangeven door een 5
6 nieuwe regel. Dit heeft mijn voorkeur, want nu hoeft niet elke keer aan het sluitteken gedacht te worden, hoewel een opdracht nu wel op een regel moet passen. Commentaar Commentaar wordt gebruikt om stukken tekst in de programmacode te zetten die niet hoeven te worden uitgevoerd. Het kan gebruikt worden om informatie over de werking van delen van het programma te geven aan iemand die de code leest (of aan de programmeur zelf). Andere toepassingen van commentaar zijn de mogelijkheid informatie over bijvoorbeeld het copyright in de code te zetten, of om het programma te kunnen uitvoeren zonder bepaalde regels. Deze regels hoeven dan niet definitief te worden gewist, maar kunnen tot commentaar gemaakt worden. Er zijn twee typen commentaar: commentaar vanaf het commentaarteken tot het einde van de regel, of commentaar tussen de code begin commentaar en einde commentaar. Tot einde regel De meest voorkomende manieren om alles tot het einde van de regel commentaar te maken zijn # (Awk, E, Icon, merd, Perl, PHP, Pliant, Python, Ruby, sh, Tcl) en // (BCPL, C#, C++, C99, Dylan, E, Java, JavaScript, PHP, Pike). Ook -- (Ada, Cecil, Eiffel, Haskell, Lua, Sather, Simula), een puntkomma (assembler, Common Lisp, Emacs Lisp, Rebol, Scheme) en een procentteken (Erlang, Mercury, Oz, Postscript, Prolog, TeX) komen veel voor. Verder wordt in Basic het woord REM gebruikt, in Visual Basic de apostrof ( ), in Forth de backslash (\), in assembler en Fortran90 het uitroepteken en in Fortran een C of een *. Bij Fortran moet het commentaarteken wel in de eerste kolom staan. Van begin-commentaar tot einde-commentaar In de meeste talen is alles wat tussen /* en */ (B, C, C#, C++, Java, JavaScript, Mercury, PHP, Pike, PL/I, Dylan, Oz) staat commentaar. Er zijn een aantal varianten hierop, zoals (* *) bij Beta, Modula-3, OCaml, Pascal en SML. In Pascal wordt commentaar meestal tussen accolades gezet. Conclusie De verschillen tussen de manier waarop de verschillende talen met commentaar omgaan zijn vrij klein. Wel is het handig als een taal beide typen commentaar ondersteunt. Verder kan de methode van Pascal verwarring wekken, omdat accolades in veel andere talen voor het groeperen van opdrachten gebruikt worden. 6
7 Variabelen Terwijl een programma wordt uitgevoerd, worden er constant waarden opgeslagen in het geheugen. In assemblertaal gebeurt dat door de opdracht te geven een waarde, bijvoorbeeld de score in een spel, op te slaan op een bepaalde plek in het geheugen. Het was natuurlijk erg onhandig om te onthouden dat de score op bijvoorbeeld plek stond. Daarom hoefde in de latere programmeertalen een opgeslagen waarde niet meer met een getal aangesproken te worden, maar kon ook een letter gebruikt worden, bijvoorbeeld een s om de score aan te spreken. Nog weer later waren ook woorden van meerdere letters toegestaan. Zo kon de score gewoon met het woord score aangeduid worden. Datatypes Er zijn verschillende soorten variabelen. In sommige variabelen wordt tekst opgeslagen en in andere getallen. Het type van een variabele heet een datatype. Een getal is een van de meest voorkomende datatypes. De score in het bovenstaande voorbeeld is een voorbeeld van een getal. Soms wordt dit datatype nog opgedeeld in onder andere integers, gehele getallen, en floating-pointgetallen, getallen met decimalen. Een veelvoorkomend datatype is een tekst, ook wel string of char genaamd. Een string kan in de meeste talen elke willekeurige lengte hebben. Ook strings van nul, één of duizenden tekens zijn mogelijk. Strings worden meestal genoteerd door ze tussen dubbele aanhalingstekens te zetten. Dat gebeurt in de talen Ada, Awk, C, C#, C++, Common Lisp, Dylan, Eiffel, FL, Haskell, Java, Modula-3, OCaml, Oz, Pascal, Pike, Pliant, Python en SML. Alleen Beta, Perl, Ruby, sh en Smalltalk gebruiken enkele aanhalingstekens. JavaScript, Lua, Python, PHP en Xpath ondersteunen zowel enkele als dubbele aanhalingstekens. Soms wil je een variabele in een string zetten. Je wilt bijvoorbeeld eerst de tekst Je hebt, dan de score, en dan de tekst punten. In Perl, PHP, sh en Tcl kan de variabele gewoon binnen de aanhalingstekens gezet worden. Dat is natuurlijk erg makkelijk. In merd moet de variabele tussen accolades komen. Ook in Ruby moet dat, maar er moet wel een hekje voor. In de meeste andere talen kan dit niet. Daar is het nodig eerst de aanhalingstekens te sluiten en een opdracht geven om twee strings te verbinden. Is sommige talen bestaat er een apart datatype voor een string van een teken. Dit wordt een character of char genoemd. Meestal (in Ada, B, C, C#, C++, Eiffel, Haskell, OCaml, Pike) wordt een waarde tussen enkele aanhalingstekens gezet om aan te geven dat het een char is. 7
8 Alleen merd gebruikt hiervoor dubbele aanhalingstekens. Er zijn ook nog andere mogelijkheden, bijvoorbeeld een vraagteken vóór het karakter in Emacs Lisp en Ruby. Een boolean is een datatype dat slechts twee waarden kan aannemen: waar (true) en niet waar of onwaar (false). Niet alle programmeertalen kennen dit. Dan worden er vaak de 0 (onwaar) en 1 (waar) of 0 (waar) en -1 (onwaar) voor gebruikt. Declareren Maar hoe weet de programmeertaal nu welk datatype een variabele is? In Fortran is het eenvoudig: de variabelen waarvan de namen met de letters i tot en met n beginnen, waren gehele getallen. De rest zijn decimale getallen. In Basic moeten namen van gehele getallen eindigen op het procentteken, strings eindigen op een dollarteken en de rest is van het type floating-point. In de nieuwere talen komen er steeds meer datatypes. Het is dus onmogelijk geworden om het datatype aan de hand van de naam te onderscheiden. Daarom moet expliciet worden verteld van welk datatype een variabele is. Dit heet declareren. In Pascal moeten de declaraties voor de opdrachten staan. In nieuwere talen mogen ze ook tussen de opdrachten staan. De wijze waarop een variabele gedeclareerd moet worden is erg wisselend per programmeertaal. Meestal wordt een codewoord als let of var gebruikt. Declareren is aan de ene kant erg lastig: voor elke variabele die de programmeur wil gebruiken, is een declaratie nodig. Aan de andere kant is het ook nuttig, want het helpt fouten voorkomen: als een variabele als string gedefinieerd is, geeft het programma een foutmelding als er geprobeerd wordt een getal bij op te tellen. Arrays In sommige spellen die over internet gespeeld worden kunnen tientallen spelers meedoen. Al die spelers hebben natuurlijk een eigen score. Het zou erg onhandig zijn om een scorespeler1, een scorespeler2, een scorespeler3, enzovoorts allemaal apart te moeten declareren. Bovendien moeten ze bijvoorbeeld bij het begin van het spel allemaal apart op nul worden gezet. Voor dit soort toepassingen gebruikt men normaal gesproken array s. Een array is een variabele die meerdere waarden tegelijk kan bevatten. Zo kan hier bijvoorbeeld de array score gebruikt worden, die de scores van alle spelers bevat. De afzonderlijke variabelen, elementen genaamd, kunnen worden aangesproken met bijvoorbeeld score[1] voor speler 1. Deze methode wordt gebruikt in B, C, C#, C++, Dylan, E, Java, JavaScript, Lua, merd, 8
9 Modula-3, Pascal, Perl, PHP, Pike, Python en Ruby. Er zijn een paar talen die afwijken, zoals Ada met de syntaxis score(1), gewone haken in plaats van rechte haken. Het datatype is een eigenschap van de array en niet van de elementen. Alle elementen van een array hebben daardoor hetzelfde datatype. De elementen worden in de meeste talen tussen rechte haken gezet, gescheiden door komma s (E, Haskell, JavaScript, merd, Perl, Postscript, Prolog, Python, Ruby, SML). Alleen C, C++ en Lua gebruiken accolades. Lisp gebruikt ronde haken, maar voor de eerste haak moet een enkele aanhalingsteken. Records of structures In Pascal kent men ook records. Dit is te vergelijken met een record uit een database. Het record kent verschillende velden, die elk een ander datatype kunnen hebben. Zo kan van een persoon de voornaam, achternaam en leeftijd worden bijgehouden in één record. Ook in C is dit mogelijk, maar daar wordt het een struct of structure genoemd. Een element van een record of structure wordt in vrijwel alle talen benaderd met een punt tussen de naam van de structure en de naam van het element, bijvoorbeeld persoon1.voornaam. Conclusie Er zijn maar weinig fundamentele verschillen tussen de manier waarop programmeertalen met variabelen omgaan. Enkele datatypen extra maakt weinig uit, of gewone haken of rechte haken. Wel erg nuttig is de mogelijkheid om zelf datatypen de kunnen definiëren. In de paragraag over object-georiënteerd programmeren wordt daar nader op in gegaan. Wel een belangrijk punt is of declareren verplicht is. Of dat een voordeel is, hangt af van de grootte van het programma. Er is extra aandacht en moeite voor nodig, maar het maakt het programma wel een stuk duidelijker Operatoren Operatoren zijn symbolen om bewerkingen met variabelen uit te voeren. Zo is het mogelijk variabelen een waarde te geven, er rekenkundige bewerkingen mee uit te voeren en ze te vergelijken. 9
10 Toekenningsoperatoren Een toekenningsoperator wordt gebruikt om een waarde aan een variabele te geven. Meestal gebeurt dit met het teken = (Awk, B, Basic, C, C#, C++, Erlang, Icon, Java, JavaScript, Lua, Oz, Perl, PHP, Pike, s): met a = 1 krijgt de variabele a de waarde 1. Soms wordt := gebruikt, om verwarring te voorkomen met = in de betekenis van het vergelijken van twee waarden (Ada, BCPL, Cecil, Dylan, E, Eiffel, Modula-3, Pascal, Pliant, Sather, Simula, Smalltalk). In dat geval wordt a = 1 gebruikt om te kijken of a gelijk aan 1 is, en a := 1 om a de waarde 1 te geven. Andere vormen die voorkomen zijn <- (OCaml), : (BCPL, Rebol), def (E, Postscript), setq (Emacs Lisp) en setf / setq / set (Common Lisp). Rekenkundige operatoren Praktisch alle programmeertalen kennen de rekenkundige operators + (plus), - (min), * (keer) en / (gedeeld door). Ze worden op dezelfde manier als in de wiskunde gebruikt. Voor negatieve getallen wordt meestal een min gebruikt. Alleen Oz gebruikt een tilde. De meeste talen kennen ook bepaalde functies voor bijvoorbeeld worteltrekken, logaritmes en goniometrie. String-operatoren Het is in alle talen mogelijk twee strings samen te voegen. In de meeste talen (C#, C++, E, Eiffel, Java, JavaScript, merd, Pascal, Pike, Pliant, Python, Ruby) gaat dat met een plus-teken. In Perl en PHP wordt de punt hiervoor gebruikt, in Smalltalk de komma, in Lua twee punten, in Ada, Modula-3 en Visual Basic de &, in OCaml, en SML de ^, in Cecil, Icon en PL/I en in Haskell ++. In TCL kunnen de strings gewoon achter elkaar worden gezet. Vergelijkingsoperatoren Voorwaarden worden gebruikt om als een variabele een bepaalde waarde heeft het ene te doen, en als die variabele een andere waarde heeft iets anders te doen. Een voorwaarde kan waar (true) of onwaar (false) zijn. Stel, de variabele a is 1. De voorwaarde a > 3 is dan onwaar, en de voorwaarde a < 3 waar. In bijna alle talen komen voorwaarden tussen haakjes. Soms is dat verplicht, soms is het facultatief. Zoals we net zagen, is het mogelijk om te kijken of een variabele groter of kleiner dan een andere variabele is. Dit gebeurt bijna altijd met de wiskundige tekens < (kleiner dan) en > (groter dan). Kleiner of gelijk aan is <= en groter of gelijk aan is >=. Alleen Mercury en Oz 10
11 gebruiken voor kleiner of gelijk aan =<, om verwarring met een pijltje te voorkomen. Perl gebruikt lt (kleiner dan), gt (groter dan), le (kleiner of gelijk) en ge (groter of gelijk). Fortran gebruikt.lt.,.gt.,.le. en.ge.. Het is ook mogelijk om te kijken of variabele a gelijk is aan b, of ongelijk aan b. Het eerste wordt meestal gedaan met = (Eiffel, Fortran90, Pliant, Modula-2, Modula-3, BCPL, E, merd, Python, Ruby) of met == (Awk, B, C, C++, Java, OCaml, Perl, Pike, Tcl, PHP, JavaScript, Lua, Smalltalk, Dylan), om verwarring te voorkomen tussen is a gelijk aan B? en maak a gelijk aan B. Voor is niet gelijk aan wordt meestal!= gebruikt (Awk, B, C, C++, Java, OCaml, Perl, Pike, Tcl, PHP, JavaScript). Andere mogelijkheden zijn /= (Fortran), <> (Pliant, Beta, OCaml, SML, Visual Basic), # (Modula-2, Modula-3), ~= (Lua, BCPL), ~~ (Smalltalk), ~== (Dylan), /= (Haskell, Ada) en \= (Oz). JavaScript kent ook === en!== om variabelen waarvan de datatypes verschillen te vergelijken. Normaal is dat namelijk niet mogelijk: het is onzinnig om te kijken of 5 groter is dan a. PHP kent ook ===, maar geen!==. Je kunt ook voorwaarden omkeren. Zo kun je controleren of ze juist niet waar zijn. Dat gebeurt met het woord not in Ada, Beta, Common Lisp, Eiffel, Emacs Lisp, Forth, Haskell, Lua, merd, OCaml, Perl, Pliant, Python, Smalltalk, SML en Xpath, en met een uitroepteken in Awk, B, C, C#, C++, Java, JavaScript, Perl, PHP, Pike, Ruby, Tcl. De talen BCPL, Dylan en PL/I gebruiken een tilde (~). Om meerdere voorwaarden te controleren, gebruik je en en of. Meestal is en && en of (Awk, C, C#, C++, E, Haskell, Java, JavaScript, merd, OCaml, Perl, PHP, Pike, Ruby, Tcl). B, BCPL en Dylan gebruiken een enkele & en. Ook de woorden or en and komen veel voor. Ze worden gebruikt door Common Lisp, Emacs Lisp, Lua, Modula-2, Perl, PHP, Pliant, Postscript, Python, Ruby, Smalltalk, Ada, Beta, Eiffel, Forth, Pascal, SML en Xpath. OCaml is inconsequent en gebruikt or en &. Conclusie Het gebruik van operatoren is in de meeste gevallen vrij logisch. De meeste operatoren zijn overgenomen uit de wiskunde, en daarom ook gelijk in de meeste talen. De talen die andere symbolen dan de wiskundige gebruiken, werken daardoor erg onprettig. Wel een punt is het gebruik van het teken. Dit betekent zowel is gelijk aan als wordt, en computers zijn niet blij met dubbelzinnige symbolen. Daarom kiezen sommige talen ervoor 11
12 om = als wordt te interpreteren, en andere als is gelijk aan. De ene keuze is echter niet beter te noemen als de andere, Programmavolgorde Groeperen Vaak moet als de voorwaarde waar is niet één opdracht, maar meerdere opdrachten uitgevoerd worden. Die opdrachten moeten daartoe gegroepeerd worden, zodat ze als het ware als één opdracht beschouwd worden. Dit groeperen gebeurt meestal met accolades (C, C++, Haskell, Java, JavaScript, Perl, PHP). In veel andere talen, bijvoorbeeld Pascal, gebeurt dit met de codewoorden begin en end. Keuze In het vorige hoofdstuk is al uitgelegd dat voorwaarden gebruikt kunnen worden om een reeks opdrachten voorwaardelijk uit te voeren. In dit hoofdstuk wordt daar verder op in gegaan. De simpelste keuzeopdracht is if-then. Hiermee wordt een opdracht (of een aantal gegroepeerde opdrachten) alleen uitgevoerd als een voorwaarde waar is. De simpelste vorm van een if-then-constructie is: if C then B merd, OCaml, Pascal In dit geval wordt de opdracht B alleen uitgevoerd indien C waar is. Een andere vorm is: if C do B BCPL Bij sommige talen die geen groeperen kennen is het noodzakelijk een opdracht te geven die aangeeft dat de opdrachten vanaf dat punt weer onvoorwaardelijk uit moeten worden gevoerd: if C then B end Eiffel, Lua, Oz, Ruby IF C THEN B END Modula-2, Modula-3 if C then B end if Ada Soms komt de voorwaarde verplicht tussen haakjes. if (C) then B end Dylan In de meeste nieuwere talen is de then-opdracht helemaal verdwenen, omdat logisch is dat na if het codewoord then volgt. if (C) B Awk, B, C, C#, C++, Java, JavaScript, PHP, Pike if C B Pliant if (C) {B} Perl 12
13 Soms is de omgekeerde vorm, de opdrachten vóór de voorwaarde, ook toegestaan: B if C Perl, Ruby Vreemdere vormen zijn: if C: B if C?then? B C -> B C if b1 then <xsl:if test="c">b</xsl:if> C iftrue: B (if C B) Python Tcl FL Forth XSLT Smalltalk Common Lisp, Scheme Soms is het nodig om niet alleen bepaalde opdrachten uit te voeren als een voorwaarde waar is, maar ook andere opdrachten uit te voeren als de voorwaarde niet waar is. Dit kan met een if-then-else-constructie. Meestal is de constructie hetzelfde als de if-then constructie. Het enige verschil is dat er nu het codewoord else staat achter de voorwaarden die uitgevoerd worden, als de constructie wel waar is. Dit wordt gevolgd door de opdrachten die uitgevoerd moeten worden als de voorwaarde niet waar is. De meest voorkomende vorm is: if (voorwaarde) opdrachten 1 else opdrachten2 Dit werkt in Awk, B, C, C#, C++, Java, JavaScript en Pike. Als de voorwaarde waar is, wordt opdrachten1 uitgevoerd, als de voorwaarde niet waar is, wordt opdrachten2 uitgevoerd. Er zijn in andere talen wat variaties. Zo mogen de haakjes soms weggelaten worden, komt het woord then soms tussen de voorwaarde en de opdrachten en komt er soms een woord endif op het einde. Goto De oudste opdracht om de opdrachten niet op volgorde uit te hoeven voeren is goto. Met deze opdracht wordt naar een bepaald regelnummer gesprongen. Een label is een regel met daarop een woord dat de naam van de regel aangeeft. 13
14 Deze opdracht is in de meeste talen verdwenen, omdat het gebruik ervan leidt tot een onoverzichtelijk programma: je kunt niet in een oogopslag zien in welke volgorde het programma wordt uitgevoerd. De opdracht ziet er in alle talen die hem gebruiken hetzelfde uit: Goto Ada, B, Basic, BCPL, C, C#, C++, Cobol, Fortran, Perl Onbeperkte herhaling Het is in sommige talen mogelijk een of meerdere opdrachten een oneindig aantal keren uit te laten voeren. In principe zal zo n programma dus nooit stoppen. In merd en Ruby gaat dit met de opdracht Loop. In Ada ook, maar hier moeten de te herhalen opdrachten worden afgesloten met de opdracht End loop, en in Modula-3 met End. In talen die geen opdracht voor onbeperkte herhaling kennen, kan dit bereikt worden door een herhaling met controle vooraf te gebruiken, die nooit waar zal worden. Je kunt bijvoorbeeld herhalen tot 1 = 2. Omdat 1 nooit 2 is, zal de lus altijd doorlopen blijven worden. Herhaling van tevoren vastgesteld aantal keren Sommige talen kennen een speciale mogelijkheid om één of meerdere opdrachten een van tevoren vastgesteld aantal keren te laten herhalen. Dit gebeurt met een speciale tellervariabele, die het aantal keren dat er herhaald is telt. In Basic gaat dat als volgt: FOR i = a TO b STEP c opdracht(en) Hier is i de teller-variabele, die loopt van waarde a tot waarde b, met stapjes van c: je kunt ook tellen. In veel nieuwe talen (Awk, C, C#, C++, Java, JavaScript, Perl, PHP, Pike, Tcl) is de syntaxis als volgt: for (initiatie; voorwaarde; ophoging) opdracht(en) Eerst wordt de initiatie-opdracht uitgevoerd. Dit kan bijvoorbeeld zijn: geef i waarde 0. Als de voorwaarde vervolgens waar is, worden de opdracht(en) uitgevoerd. Daarna wordt de opdracht ophoging uitgevoerd, bijvoorbeeld door bij i de waarde 1 op te tellen. Vervolgens wordt weer gecontroleerd of volgorde waar is. Zodra de voorwaarde niet meer waar is, wordt gestopt met deze lus. Dit is een vrij belangrijke uitbreiding ten opzicht van Basic, want nu hoeft de ophoging niet perse lineair te zijn. Het is bijvoorbeeld ook mogelijk de tellervariabele elke lus te vermenigvuldigen met een getal. 14
15 Ook bij dit commando kan opdracht(en) een losse opdracht of meerdere gegroepeerde opdrachten zijn. Herhaling met controle vooraf Bij deze herhaling worden een of meerdere opdrachten net zo lang herhaald als een voorwaarde waar is. Meestal gebeurt dat als volgt: while voorwaarde opdracht(en) Hier worden de opdrachten uitgevoerd zolang de voorwaarde waar is. Om precies te zijn: eerst wordt de voorwaarde gecontroleerd. Is deze waar, dan worden de opdrachten uitgevoerd. Vervolgens wordt de voorwaarde opnieuw gecontroleerd. Zodra de voorwaarde bij een controle niet waar is, dan gaat het programma verder met alles wat er na dit stuk code komt. Herhaling met controle achteraf Bij deze herhaling worden een of meerdere opdrachten net zo lang herhaald totdat of zolang (afhankelijk van de taal) de voorwaarde waar is, maar de opdrachten worden altijd eerst één keer uitgevoerd. In C, C++, Java en Perl gebeurt dat als volgt: do opdrachten until voorwaarde Hier worden de opdrachten uitgevoerd totdat of zolang de voorwaarde waar is. Om precies te zijn: eerst worden de opdrachten uitgevoerd. Dan wordt de voorwaarde gecontroleerd. Is deze niet waar, dan worden de opdrachten opnieuw uitgevoerd. Vervolgens wordt de voorwaarde opnieuw gecontroleerd. Zodra de voorwaarde bij een controle waar is, dan gaat het programma verder met alles wat er na dit stuk code komt. In Awk, C#, JavaScript, Pike, en Ruby is het precies andersom: zolang de voorwaarde waar is, wordt de lus doorlopen, maar als hij een keer niet waar is stopt de lus. Voorbeeld: do opdrachten while (voorwaarde) Herhaling binnen een array Er is in veel talen een speciale lus die alle elementen van een array doorloopt. De syntaxis is verschillend. Merd, Pliant en Ruby gebruiken het codewoord each. E, JavaScript, Python en Ruby gebruiken for in. Lua, Perl, Pike, PHP en Tcl kennen het woord foreach, C++ heeft for_each en Scheme for-each. Het codewoord forall wordt door Postscript en Oz gebruikt, do door Smalltalk en do_all door Eiffel. 15
16 De lus begint altijd met het codewoord, gevolgd door gegroepeerde opdrachten die een bepaalde bewerking op het element van de array uitvoeren. Conclusie Ook in dit hoofdstuk zijn er niet echt schokkende verschillen tussen de talen. Er zijn wel kleine afwijkingen in de precieze syntaxis, maar de concepten zijn hetzelfde. Hoe opdrachten gegroepeerd worden, is wel een vrij belangrijk verschil. In sommige talen moet hier voor altijd een begin-end-constructie voor gebruikt worden. Het gebruik van bijvoorbeeld accolades is hier efficiënter. Programmeerparadigma s Wat zijn paradigma s? Er zijn verschillende typen programmeertalen, die elk gebruik maken van andere concepten en een andere manier vragen om tegen een probleem aan te kijken. Die verschillende typen talen heten paradigma s. In figuur 1 staan de verschillende paradigma s schematisch weergegeven. Figuur 1 Het meest voorkomende paradigma is het imperatieve paradigma. Een onderdeel daarvan is het procedurele paradigma. Daarvan is object-georiënteerd programmeren weer een onderdeel. Bijna alle voorbeelden in voorgaande paragrafen komen uit imperatieve talen. Naast het imperatieve paradigma staat het declaratieve paradigma. In tegenstelling tot imperatieve programmeertalen geef je bij functionele programmeertalen geen serie opdrachten, maar het doel dat je wilt bereiken, met een serie definities. Er zijn twee types declaratieve programmeertalen: functionele en logische. In de volgende paragrafen worden de verschillende paradigma s besproken. Imperatief programmeren Imperatief betekent bevelend: bij dit type programmeertalen geven we bevelen aan de processor. De computer voert de bevelen, ook wel opdrachten of instructies genoemd, in de programmacode van boven naar beneden uit. Wel is het mogelijk om gedeelten code meerdere 16
17 keren uit te voeren, delen voorwaardelijk uit te voeren of de opdracht te geven naar een andere regel te springen. De meeste programmeertalen zijn imperatief. Procedureel programmeren Het procedurele programmeerparadigma is een uitbreiding op het imperatieve. De eigenschappen van puur imperatieve talen zijn dus ook van toepassing op procedurele talen. Het procedurele paradigma is er op gebaseerd dat in een programma een aantal taken vaak veelvuldig uitgevoerd moeten worden. Daarom wordt er van zo n taak die vaker uitgevoerd moet worden een deelprogramma gemaakt. De naam van zo n deelprogramma verschilt per programmeeraal. In assembler, Fortran en Basic heet het bijvoorbeeld een subroutine, in Algol en Pascal een procedure, in C en PHP een functie en in C++ en Java een methode. Het deelprogramma kan zo vaak als nodig is aangeroepen worden door het hoofdprogramma. Het aanroepen van een deelprogramma heet een call of functieaanroep. In C en Java wordt het hoofdprogramma zelf ook beschouwd als een functie, genaamd main. Het starten van het programma staat dan gelijk aan het aanroepen van de main-functie. Het komt vaak voor dat een taak meerdere keren uitgevoerd moet worden, maar telkens op een net iets andere manier. Het kan bijvoorbeeld voorkomen dat er 7 cirkels getekend moeten worden, maar wel met 7 verschillende kleuren en met 7 andere kleuren opgevuld. Ook hier kan gebruik worden gemaakt van deelprogramma s. In zo n geval wordt bij de functieaanroep opgegeven welke kleur de cirkelomtrek moet hebben, en met welke kleur de cirkel ingekleurd moet worden. De waarden die met de functieaanroep mee worden gegeven, in dit geval omtrekkleur en invulkleur, worden parameters of argumenten genoemd. De functieaanroep gebeurt meestal met de naam van de functie, gevolgd door de parameters gescheiden door komma s tussen komma s: tekencirkel(rood, groen) (Ada, Awk, Awk, B, C, C#, C++, Dylan, E, Eiffel, Java, JavaScript, Lua, Mercury, merd, Modula-3, Pascal, Perl, PHP, Pike, Python, Ruby, Xpath) De haakjes en komma s ontbreken bij Haskell, OCaml, Pliant, SML, Tcl: tekencirkel rood groen Bij Scheme, Oz en Lisp komt alles tussen haakjes: (tekencirkel rood groen) Bij Forth, Postscript en Smalltalk is de syntaxis andersom: rood tekencirkel FL en Pliant gebruiken een dubbele punt: tekencirkel: rood 17
18 In Haskell, OCaml, BCPL en merd, overigens geen procedurele maar functionele talen, wordt een functie meer op een wiskundige manier aangegeven. In Haskell gebeurt dat bijvoorbeeld op de volgende wijze: tekencirkel rood groen = Eerst komt de naam van de functie, dan de naam van de argumenten en dan, in dit voorbeeld op de plaats van de puntjes, de functie zelf. De functie zelf wordt ook met een codewoord aangegeven. Meestal komt eerst het codewoord, vervolgens de functienaam, dan de parameters (meestal tussen haakjes) en dan de gegroepeerde opdrachten. In Perl is het codewoord sub. In Python en Ruby is het def. In Awk, Visual Basic, JavaScript, Ada en Pascal wordt het woord function gebruikt. Soms is het handig als een deelprogramma een resultaat terug geeft aan het hoofdprogramma. Je kan bijvoorbeeld honderd keer een wortel uit moeten rekenen en daar een deelprogramma voor schrijven, maar daar heb je niets aan als het deelprogramma de waarde niet aan het hoofdprogramma door geeft. Het teruggeven van een waarde gebeurt in praktisch alle talen met de opdracht return, gevolgd door de variabele die teruggegeven moet worden. In sommige talen is de naam van een deelprogramma dat geen waarde teruggeeft en een die dat wel doet verschillend. Zo heet het eerste in Basic een subroutine en in Pascal een procedure, maar heet het tweede in beide talen een functie. Deelprogramma s kunnen ook elkaar aanroepen. Zo kan het hoofdprogramma een functie aanroepen die een vierkant tekent, en die functie kan op zijn beurt weer een functie die een lijn tekent aanroepen. Een functie kan zelfs zichzelf aanroepen! Dat heet recursie. Er moet dan wel voor gezorgd worden dat de functie zich maar een beperkt aantal keer aanroept. Variabelen die gedeclareerd worden in het deelprogramma, kunnen meestal alleen aangesproken worden binnen dat deelprogramma en variabelen uit het hoofdprogramma zijn niet binnen de deelprogramma s de lezen of te wijzigen. Je kunt in de meeste talen wel variabelen declareren die in alle functies te lezen en wijzigen zijn: globale variabelen. Bij procedurele talen kan ook gebruik worden gemaakt van zogenaamde abstracte datatypes (ADT). Deze bestaat altijd twee delen. Het eerste deel is een structure. Het tweede deel zijn 18
19 functies die als eerste parameter de structure hebben, en dus de structure bewerken. Men kan nu nieuwe variabelen hiervan maken. De structure moet bewerkt worden via de functie, en niet rechtstreeks. Het voordeel van deze werkwijze is dat de programmeur die het hoofdprogramma schrijft niet hoeft te weten hoe de functies precies werken, alleen hoe hij ze moet gebruiken. Stel, je hebt een spel waaraan meerdere spelers mee kunnen doen. Je kunt nu een abstract datatype speler aanmaken. Je maakt vervolgens net zoveel variabelen hiervan als er spelers zijn. Wil je nu bijvoorbeeld 100 punten geven aan speler 5, dan hoef je niet te weten waar de puntentelling wordt bijgehouden, maar je kunt gewoon bijvoorbeeld de functie geefpunten, die al door iemand anders gemaakt is, aanroepen: geefpunten(speler[5], 100) Object-georiënteerd programmeren Object-georiënteerd programmeren of object orientated programming (OOP) is een onderdeel van het procedurele paradigma. Het vervangt abstracte datatypes. Abstracte datatypen heten nu klassen of classes. De functies heten nu methoden. Een klasse valt te beschouwen als een blauwdruk van een object: van een klasse kunnen een aantal objecten worden gemaakt, net als er een aantal variabelen van een bepaald datatype gemaakt kunnen worden. Het aanmaken van een nieuwe klasse gebeurt in bijna alle talen met de opdracht new. Het verschil met abstracte datatypes is dat de methodes nu officieel bij de klasse horen. Het datatype als eerste parameter ontbreekt nu dus. De attributen mogen binnen de methode direct worden aangesproken. Daarbuiten kan dat niet, om de overzichtelijkheid te bewaren. Een klasse begint meestal met het woord class (C#, C++, Haskell, Java, MzScheme, OCaml, PHP, Pike, Python, Ruby), gevolgd door de methoden en variabelen, meestal binnen accolades. Er zijn vergelijkbare codewoorden in andere talen, zoals Defclass in Common Lisp, en Subclass in Smalltalk. Om een methode van een andere klasse aan te spreken, geef je eerst de naam van de klasse, gevolgd door de methode. Meestal zijn de klasse- en de methodenaam gescheiden door een punt (Beta, C#, C++, Cecil, Delphi-Kylix, Eiffel, Icon, Java, JavaScript, merd, Modula-3, Python, Ruby, Sather, Visual Basic). Alleen OCaml gebruikt een hekje, Lua een dubbele punt, Pliant en Tcl een spatie, E een pijltje (<-) en C++, Perl, PHP en Pike een pijltje de andere kant op (->). Het is mogelijk een klasse te maken die een uitbreiding (extensie) is op een klasse. Dit heet een subklasse. In de nieuwe klasse kunnen alle attributen en methodes van de oude klasse 19
20 gebruikt worden. Dit heet overerving of inheritence. Voordeel hiervan is dat wijzigingen in de hoofdklasse meteen worden overgenomen in de subklasse. In C++ is het mogelijk dat een subklasse meerdere superklassen heeft. Dit lijkt handig, maar het lijdt tot problemen als een klasse twee superklasses heeft die zelf weer een gemeenschappelijke superklasse hebben. Erft de subklasse nu elke methode van de gemeenschappelijke klasse een- of tweemaal? Om dit soort problemen te vermijden is in Java maar een superklasse toegestaan. Een klasse die een uitbreiding is op een andere klasse wordt op steeds verschillende manieren gemaakt. class nieuwe_klasse extends oude_klasse (Java) class nieuwe_klasse : oude_klasse (C++) class nieuwe_klasse(oude_klasse): (Python) class nieuwe_klasse < oude_klasse end (Ruby) class nieuwe_klasse inherit oude_klasse end (Eiffel) class nieuwe_klasse :< oude_klasse (Beta) parent oude_klasse: nieuwe_klasse (Smalltalk) Attributen en methoden kunnen voor alle klassen toegankelijk zijn (public), of alleen voor andere methoden binnen dezelfde klasse (private). In C++ mogen ook subklassen privateattributen en -methoden gebruiken. In Java mag dat niet, behalve als er in plaats van private een derde type, protected, wordt gebruikt. Als meerdere programmeurs aan een programma werken, of als een programma erg groot wordt, kan het lastig worden het overzicht van een programma te houden. De kans is dan erg groot, dat per ongeluk twee functies dezelfde naam krijgen, en dat leidt uiteraard tot foutmeldingen omdat het programma niet weet welk van de twee functies bedoeld wordt. Dit wordt in de objectgeoriënteerde talen opgelost door functies in klassen te plaatsen. In Java kun je zelfs klassen weer onderbrengen in zogenaamde packages. Nadeel is wel dat ook bij eenvoudige programma s gebruik van klassen gemaakt moet worden. Over het algemeen wordt de inmiddels in onbruik geraakte taal Simula uit 1975 als eerste OOP-taal beschouwd, maar ADT was al langer bekend. Ook Smalltalk uit 1980 was een vroege taal van dit concept. 20
21 OOP is vooral populair sinds grafische systemen met vensters, omdat die makkelijk als objecten met verschillende eigenschappen (bijvoorbeeld de kleur van het venster) en methoden (bijvoorbeeld het maximaliseren ervan) gezien kunnen worden. Belangrijke OOPtalen zijn C++ uit 1985, een object-georienteerde uitbreiding op C, en Java uit Functioneel programmeren Het functionele paradigma maakt onderdeel uit van het declaratieve. Er zijn dus een aantal definities, in plaats van een aantal opdrachten. Bij functionele programmeertalen zijn die definities een aantal functies. Voorbeelden hiervan zijn Lisp, Haskell, Miranda en Hope. Een belangrijk concept in functionele talen zijn atomen (atoms) en lijsten (lists). Een atoom kan zowel een variabele zijn als een getal. Een lijst is een opeenvolging van atomen en is enigszins te vergelijken met een array in andere talen. Een lijst kan overigens ook leeg zijn. Ook lijsten staan in Lisp altijd tussen haakjes. Als een functioneel programma gestart wordt, worden eerst de atomen geëvalueerd, en vervolgens de lijsten. Het evalueren van atomen komt er op neer, dat geprobeerd wordt de naam van de variabele te vervangen door de waarde ervan. Het evalueren van lijsten is wat ingewikkelder. Als een lijst geëvalueerd wordt, beschouwt het programma de lijst als een functie, met het eerste element van de lijst als functienaam en de volgende elementen als argumenten. Er bestaan ingebouwde functies, maar het is ook mogelijk functies zelf te definiëren. Een van de ingebouwde functies van Lisp is de functie +, om op te tellen. Om de getallen 1 tot en met 5 bij elkaar op te tellen gebruik je dus: ( ) Het is ook mogelijk functies te nesten. We bekijken het volgende Lisp-programma: (+ 1 2 (* 3 a)) Eerst wordt nu het atoom a geëvalueerd. Laten we even aannemen dat a de waarde 4 heeft. Dan worden 3 en 4 met elkaar vermenigvuldigd. Vervolgens worden 1, 2 en de uitkomst van de geneste functie, 12 dus, bij elkaar opgeteld. Soms is het niet de bedoeling dat een atoom of lijst geëvalueerd wordt. Dat kan het geval zijn als met a niet de waarde van a, maar de letter a bedoeld wordt, of als met (optellen aftrekken vermenigvuldigen delen) niet het optellen van de waarden van aftrekken, vermenigvuldigen en delen bedoeld wordt, maar een lijst met de namen van vier rekenkundige bewerkingen. Dit kan opgelost worden door een enkel aanhalingsteken voor het atoom of de lijst te zetten. Hiermee wordt dit niet geëvalueerd. 21
22 Er is in Lisp ook een functie voor lussen. Dat is de functie if. De argumenten van deze functie zijn achtereenvolgens de voorwaarde, de functie die uitgevoerd wordt als de voorwaarde waar is en de functie die uitgevoerd wordt als de functie onwaar is. Het volgende programma berekent dus het positieve verschil tussen x en y: (if (> x y) (- x y) (- y x)) Hier staat namelijk dat als x groter dan y is, y van x afgetrokken moet worden. Zo niet, dan moet y van x afgetrokken worden. Ook lussen zijn in een functionele programmeertaal mogelijk. Dit gebeurt door een functie zichzelf een aantal maal te laten aanroepen. Logisch programmeren Een procedureel algoritme is Zoek eerst een K met een deur van de keuken naar K. Zoek vervolgens een D dat zich in K bevind. In logische vorm zou je iets krijgen als Zoek een T en R waarvoor geldt dat er een deur van de keuken naar R is en T zich in R bevindt. Bij logische programmeertalen worden er een aantal zogenaamde predikaten gedefinieerd. Een predikaat kan een feit (fact) of regel (rule) zijn. Deze kennen we ook in de logica. Denk aan het bekende voorbeeld Socrates is een mens. Alle mensen zijn sterfelijk. Conclusie: Socrates is sterfelijk.. In dit voorbeeld is Socrates is een mens een feit en alle mensen zijn sterfelijk een regel. In Prolog ziet dit programma er bijvoorbeeld als volgt uit: mens(socrates). sterfelijk(x) :- mens(x). Hier is socrates een waarde en X is een variabele. Zoals te zien is, worden waarden met een kleine letter en variabelen met een hoofdletter geschreven. Variabelen zijn alleen beschikbaar binnen één predikaat. Een logisch programma wordt gestart met een zoekvraag (query). In dit voorbeeld kunnen we bijvoorbeeld vragen wie er sterfelijk zijn met de opdracht sterfelijk(x). Prolog zal socrates als antwoord geven. In een logisch programma worden feiten gebruikt om data in het programma op te nemen, terwijl dat in een imperatief programma vaak een database is. Het is ook mogelijk meerdere voorwaarden in een zoekvraag uit te voeren. Stel dat je wilt weten of iets eetbaar is en zich in de keuken bevindt, dan wordt het eerste voedsel bekeken en uitgezocht of dit eetbaar is. Zo nee, dan wordt het volgende voedsel bekeken, zo ja, dan wordt 22
23 bekeken of het zich in de keuken bevindt. Zo nee, dan wordt opnieuw bekeken of het volgende voedsel zich in de keuken bevindt (dit stapje terug doen heet backtracking), zo ja, dan wordt de naam naar het scherm geschreven. Dit systeem vervangt het systeem van lussen uit imperatieve programmeertalen. Functies worden vervangen door regels. Voorbeelden van logische talen zijn Prolog, Parlog en Trilogy. Conclusie De verschillen tussen de in dit hoofdstuk besproken paradigma s zijn erg groot. Als je gewend bent aan een bepaald concept, is het lastig om een ander te leren. Talen binnen een paradigma lijken wel sterk op elkaar. Omdat de paradigma s onderling zo totaal verschillend zijn, is het moeilijk ze te vergelijken, laat staan een beste aan te wijzen. Wat het beste paradigma is voor een bepaalde programmeur is, is ook afhankelijk van zijn achtergrond. Een logicus zal sneller een logische taal kunnen leren, terwijl functionele talen meer bij de wiskundige manier van denken aansluiten. Het object-georiënteerde paradigma is op het moment het verst ontwikkeld, dus de beste talen zijn momenteel waarschijnlijk van dit type. Conclusie Ik heb nu de belangrijkste aspecten van de syntaxis van programmeertalen besproken. Er blijkt dat de verschillen in syntaxis tussen de verschillende talen zijn kleiner dan op het eerste gezicht lijkt. Er zijn wel kleine verschillen in welke codewoorden en leestekens precies gebruikt worden, maar de structuur van de meeste talen is hetzelfde. Een uitzondering hierop vormen de niet-imperatieve talen: deze zijn heel anders opgebouwd. Er valt echter geen conclusie te trekken of deze talen beter zijn dan de imperatieve, of welk paradigma het beste is. 23
24 Gebruikersomgeving Voor het schrijven van een computerprogramma zijn verschillende onderdelen nodig. Een eerste vereiste is natuurlijk een text editor, om de programmacode in te typen. Verder is er een compiler of interpreter nodig, of beide. Een compiler is een computerprogramma dat het hele programma in de programmeertaal omzet in een programma in machinetaal. Een interpreter is een programma dat de opdrachten in de programmeertaal rechtstreeks kan uitvoeren, zonder eerst het hele programma te hoeven compileren. Sommige talen hebben alleen een compiler, andere alleen een interpreter, weer andere beiden. Tot slot is het handig om een debugger te hebben: een programma dat meehelpt met het opsporen van fouten. Wanneer een text editor, compiler of interpreter en debugger in een programma samengevoegd zijn, spreekt men van een IDE, een integrated development environment. Elke IDE is in principe altijd geschikt voor slechts één programmeertaal. De eerste taal met een IDE was Dartmouth Basic uit De IDE werd aangesproken door het invoeren van commando s, en niet met menu s, zoals tegenwoordig. De eerste echt populaire IDE was Turbo Pascal. Ook Delphi, de opvolger ervan, werd veel gebruikt. De IDE s zijn in de loop der jaren steeds geavanceerder geworden. Momenteel is Microsoft Visual Studio de populairste IDE. Deze bestaat uit IDE s voor onder andere C++, Visual Basic en VB.NET. Een andere populaire IDE van Microsoft is Microsoft Development Environment, voor onder andere Java. Nieuw in de IDE van Visual Basic is dat niet langer alles via programmacode geprogrammeerd hoeft te worden, maar dat met de muis objecten, bijvoorbeeld elementen van een formulier, in het scherm gesleept kunnen worden. Conclusie IDE s worden de laatste jaren steeds uitgebreider. Op het moment zijn de geavanceerdste IDE s die van Microsoft, bijvoorbeeld Visual Studio. Figuur 2: Microsoft Visual Studio Figuur 3: Microsoft Development Environment 24
25 25
26 Toepassingsgebied Natuurlijk zijn niet alle programma s even geschikt voor alle toepassingen. Zo was efficiënt omgaan met rekenkracht in het begin van het computertijdperk erg belangrijk voor wetenschappelijke berekeningen. Voorbeelden van programma s die daarop inspeelden waren Fortran en Algol. Andere talen moesten weer makkelijk te leren zijn (Basic), educatief verantwoord (om leerlingen goede programmeergewoonten aan te leren, Pascal), of geschikt voor zakelijk gebruik (Cobol). Sommige talen hebben heel specifieke toepassingsgebieden, zoals Lisp op het terrein van onderzoek naar kunstmatige intelligentie. Voor sommige toepassingsgebieden is een bepaalde taal het meest geschikt. Zo worden besturingssystemen meestal in C (en C++) geprogrammeerd, en simulaties vaak in C++. Visual Basic is het meest geschikt voor toepassingen voor Microsoft Windows. De laatste jaren worden talen steeds algemener, dat wil zeggen minder gericht op één doel. Toch zijn er nog steeds talen die hoofdzakelijk voor een doel worden gebruikt, bijvoorbeeld PHP en Perl voor het ontwerpen van internetpagina s. Conclusie De meeste programmeertalen zijn de laatste jaren zo uitgebreid geworden, dat ze voor alle toepassingen geschikt zijn. Daarom maakt het bij het kiezen van de programmeertaal niet zo veel meer uit, welk doel de programmeur wil bereiken. 26
27 Historie Hoe het begon De eerste computer was de Difference engine ontworpen door Charles Babbage in Het bleef bij het ontwerp, want de techniek was in Babbage s tijd niet ver genoeg om deze machine ook werkelijk te bouwen. De manier moest geprogrammeerd worden door de tandwielen die de berekeningen uitvoerden te vervangen of verplaatsen. De machine werd dus door fysieke beweging aangestuurd. Dit veranderde toen de Amerikaanse overheid in 1942 de ENIAC bouwde. Dit was een apparaat dat werkte met elektrische signalen. De principes van Babbage bleven voor het grootste deel wel bewaard. Zo kon het programma van dit gevaarte alleen worden veranderd door het omzetten van schakelaars en het anders aanleggen van de bedrading. In 1945 bedacht John Von Neumann twee ideeën die beide een grote invloed op de geschiedenis van programmeertalen hadden. Het eerste was dat het onhandig is de apparatuur elke keer fysiek aan te passen, dus hij vond dat de hardware zo simpel mogelijk moest worden gehouden. Deze simpele hardware moest worden bestuurd met behulp van ingewikkeldere instructies, waardoor de computer veel simpeler te herprogrammeren was. Het tweede idee kwam neer op het maken van subroutines, kleine blokjes code, die op elk gewenst moment aangeroepen konden worden, in plaats van vooraf de hele chronologie van het programma op te hoeven schrijven. De eerste talen In 1949 ontstond de eerste echte programmeertaal: Short Code. Wel moesten hier de opdrachten nog steeds met de hand in nullen en enen omgezet worden. Dit veranderde met de uitvinding van de eerste compiler door Grace Hooper in Een compiler zet de opdrachten van de programmeertaal zelf om in machinetaal (nullen en enen). Nu hoefde de programmeur dit niet meer te doen, wat leidde tot het veel sneller kunnen programmeren. In 1957 ontstond de eerste van de echt grote programmeertalen: Fortran, een afkorting van Formula Translator. Deze taal was ontworpen door IBM voor het maken van wetenschappelijke berekeningen. De taal was erg primitief, en bevatte slechts opdrachten als GOTO, IF en DO. Al wel aanwezig waren de meeste datatypen van variabelen die we nu kennen, en logische waarden (waar en onwaar). Fortran was sterk op het gebied van berekeningen, maar minder goed op het terrein van invoer en uitvoer, punten die voor zakelijk gebruik erg belangrijk waren. In 1959 haakte de taal 27
28 Fortran op deze tekortkoming in. De taal was speciaal ontworpen voor zakelijk gebruik: invoer en uitvoer werkte beter, en de taal was redelijk simpel te leren. In 1958 werd LISt Processing, of kortweg LISP, ontworpen door John McCarthy. Het was speciaal ontworpen voor studie over kunstmatige intelligentie. LISP was een buitenbeentje onder de programmeertalen, wegens de vreemde syntaxis. Het was de eerste declaratieve programmeertaal. LISP is de oudste programmeertaal die tegenwoordig nog serieus gebruikt wordt. In 1958 werd Fortran opgevolgd door Algol als programmeertaal voor wetenschappelijk gebruik. Algol zelf was niet echt succesvol, zeker niet na 1968 toen er een nieuwere, maar veel ingewikkelder te gebruiken versie op de markt kwam. Wel zijn veel modernere programmeertalen zoals Pascal, C en JAVA op het concept van Algol gebaseerd. In 1964 werd door John Kennemy en Thomas Kurtz de taal BASIC ontwikkeld. Deze taal was ontwikkeld voor wetenschappers die geen ervaring met computers hadden, en was dus erg eenvoudig. De moderne talen Pascal was in 1968 ontworpen door Niklaus Wirth, vooral om zijn leerlingen een taal te geven waarmee ze op een goede manier leerden programmeren. Een van de manieren waarop Wirth de taal geschikt maakte voor het onderwijs was het toevoegen van een debugger, een manier om fouten in het programma op te sporen. Pascal was een combinatie van de beste elementen van Cobol, Fortran en Algol. De inconsequenties van deze talen verwenen in Pascal. Dit maakte Pascal, in tegenstelling tot Wirth bedoeling, erg populair. Later maakte Wirth nog een opvolger van Pascal, Modula-2, maar deze werd niet zo succesvol. In de tijd van Modula-2 raakte de taal C wel erg populair. C was ontworpen in 1972 door Dennis Ritchie. Het leek erg op Pascal, alleen zonder de fouten ervan. C was een erg krachtige taal, maar moeilijk te lezen. C was oorspronkelijk ontworpen voor het nieuwe Unix-systeem. Daarom gingen C en Unix vaak hand in hand. In C werden ook de meeste besturingssystemen geschreven, zoals Unix, Windows, MacOS en Linux. Eind jaren 70 kwam Object georiënteerd programmeren, OOP, op. Bjarne Stroustroup gebruikte deze theorie om C with Classes te schrijven, wat later leidde tot C++. C++ was bedoeld om de brute kracht van C te organiseren met behulp van OOP, zonder de snelheid daarbij te verliezen. 28
29 De jaren 90 In het begin van de jaren 90 beschouwde men interactieve tv als de techniek van de toekomst. Sun Microsystems besloot dat deze taal wel een aparte programmeertaal kon gebruiken. Deze taal werd Java. Toen in 1994 echter bleek dat interactieve tv zou floppen, veranderden ze hun doelstelling in het aanpassen van hun taal voor het internet, de nieuwste mode. Het jaar daarna verleende Netscape een licentie aan SUN om de taal in hun browser te mogen toepassen. Java is helemaal gebaseerd op de ideeën van OOP, maar is wel een erg langzame taal. Microsoft was inmiddels ook in opkomst geraakt, en breidde Basic uit naar Visual Basic (VB). Het hart van Visual Basic is een formulier, waar je objecten als menuelementen en afbeeldingen op kan plaatsen. Al deze objecten kennen eigenschappen, zoals achtergrondkleur en tekst, en gebeurtenissen, zoals klikken en dubbelklikken. De meeste moderne interfaces werken op deze manier. Perl, ontworpen door Larry Wall in 1987, wordt vooral gebruikt voor scripts op internet. Deze taal was ontworpen omdat de functies van Unix om tekst te manipuleren niet langer aan Wall s wensen voldeden. Inmiddels wordt Perl steeds meer vervangen door de opvolger ervan, PHP. Conclusie De programmeertalen hebben zich de laatste jaren in een hoog tempo ontwikkeld. De vernieuwingen gaan zo snel, dat oudere talen al snel veel belangrijke nieuwe functies en concepten missen. De conclusie is simpel: de beste talen zijn de nieuwste 29
30 Conclusie In dit werkstuk heb ik proberen te onderzoeken welke programmeertaal de beste is. Ik zal nu proberen een conclusie uit dat onderzoek te trekken. Op het eerste gezicht ziet elke programmeertaal er totaal anders uit, maar nader beschouwd lijken in elk geval de talen binnen een paradigma erg op elkaar. Onderling verschillen de paradigma s wel sterk. Door de grote verschillen is het niet mogelijk een paradigma als het beste aan te wijzen. De nieuwe talen zijn over het algemeen de beste, ongeacht het doel dat de programmeur wil bereiken. De beste IDE is op dit moment waarschijnlijk Microsoft Visual Studio. 30
31 Bronvermelding Bij het maken van dit werkstuk zijn de volgende bronnen gebruikt: Jeroen Fokker en Willem van der Vegt, Programmeertalen en paradigma s Pixel, Programming language study Doug, The great computer language shooutout Andrew Ferguson, The history of computer programming languages The Brighton University Resource Kit for Students, Adventure in Prolog Collin Alen, Lisp Primer Wikipedia Lemma s Hello_world_program en Integrated_development_environment 31
Variabelen en statements in ActionScript
Ontwikkelen van Apps voor ios en Android Variabelen en statements in ActionScript 6.1 Inleiding Als we het in de informatica over variabelen hebben, bedoelen we een stukje in het geheugen van de computer
VAN HET PROGRAMMEREN. Inleiding
OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,
Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.
HOOFDSTUK 3 3.1 Stapsgewijs programmeren In de vorige hoofdstukken zijn programmeertalen beschreven die imperatief zijn. is het stapsgewijs in code omschrijven wat een programma moet doen, net als een
HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren
HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet
Algoritme noteren? Algoritmen voor de computer worden vastgelegd met behulp van een programmeertaal.
Programmeertalen Algoritme noteren? Algoritmen voor de computer worden vastgelegd met behulp van een programmeertaal. Taal // machine De geschiedenis van de programmeertalen loopt parallel met de geschiedenis
Vakgroep CW KAHO Sint-Lieven
Vakgroep CW KAHO Sint-Lieven Objecten Programmeren voor de Sport: Een inleiding tot JAVA objecten Wetenschapsweek 20 November 2012 Tony Wauters en Tim Vermeulen [email protected] en [email protected]
Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.
Algemeen C# Variabele Een variabele is een willekeurige waarde die word opgeslagen. Een variabele heeft altijd een datetype ( De soort waarde die een variabele bevat). Datatypes Een datatype is de sort
Javascript oefenblad 1
Leer de basis van Javascript. Javascript oefenblad 1 Niels van Velzen Javascript oefenblad 1 Pagina 2 Inleiding Javascript is niet altijd even makkelijk. Vooral aan het begin is het even wennen hoe de
Geavanceerde Programmeertechnologie. Prof. dr. Kris Luyten Jo Vermeulen
Geavanceerde Programmeertechnologie Prof. dr. Kris Luyten Jo Vermeulen Wat mag je verwachten? Je wordt efficiënter als software ontwikkelaar Je kan je weg vinden in nieuwe programmeertalen van verschillende
Algoritme noteren? Algoritmen voor de computer worden vastgelegd met behulp van een programmeertaal.
Programmeertalen Algoritme noteren? Algoritmen voor de computer worden vastgelegd met behulp van een programmeertaal. Taal // machine De geschiedenis van de programmeertalen loopt parallel met de geschiedenis
VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:
OVERZICHT VAN HET PROGRAMMEREN Inleiding Als je leert programmeren lijkt het nogal overweldigend om die eerste stappen te doorworstelen. Er zijn dan ook heel wat programmeertalen (Java, Ruby, Python, Perl,
Een korte samenvatting van enkele FORTRAN opdrachten
Een korte samenvatting van enkele FORTRAN opdrachten Inhoud 1 Introductie 3 2 De structuur van een FORTRAN programma 3 3 Datatypen, variabelen en declaraties 3 4 Expressies-volgorde van uitwerking 4 5
Module 3: Scratch programmeren: is het logisch of is het niet logisch?
Module 3: Scratch programmeren: is het logisch of is het niet logisch? Inhoudsopgave Module 3: Scratch programmeren: is het logisch of is het niet logisch?...1 Wat is een computerprogramma eigenlijk?...2
Lab Webdesign: Javascript 3 maart 2008
H5: OPERATORS In dit hoofdstuk zullen we het hebben over de operators (of ook wel: operatoren) in JavaScript waarmee allerlei rekenkundige en logische bewerkingen kunnen worden uitgevoerd. Daarbij zullen
Verder zijn er de nodige websites waarbij voorbeelden van objectgeoriënteerd PHP (of Objec Oriented PHP, OO PHP) te vinden zijn.
Objectgeoriënteerd PHP (versie 5) Kennisvereisten: Ervaring met programmeren in PHP met MySQL Je weet wat een class of klasse is Je weet wat een instantie van een klasse (een object) is Je weet wat een
Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET
Visual Basic.NET M. den Besten 0.3 VB. NET Inhoud Voorwoord Deel 1 Visual Basic.NET 1.1 Inleiding...13 1.2 De programmeertaal Visual Basic.NET...14 1.3 Microsoft Visual Basic 2010 Express Edition...15
Programmeren in Java 3
2 september 2007 voor deeltijdstudenten Kop van Zuid Rotterdam, 3 juni 2007 Even voorstellen Naam: Wessel Oele(31) Docent bij opleiding technische informatica Kamer: I210 (tweede verdieping, links de gang
Het voert eenvoudige instructies uit die achter elkaar in het geheugen van de machine zijn opgeslagen.
Antwoorden door een scholier 1809 woorden 28 september 2006 3,6 14 keer beoordeeld Vak Informatica Samenvatting Informatica 6.1) Van kleine instructies naar grote processen Noem 2 termen voor het centrale
Programmeren met Arduino-software
Programmeren met Arduino-software De software waarin we programmeren is Arduino IDE. Deze software is te downloaden via www.arduino.cc. De programmeertaal die hier gebruikt wordt, is gebaseerd op C en
1 Inleiding in Functioneel Programmeren
1 Inleiding in Functioneel Programmeren door Elroy Jumpertz 1.1 Inleiding Aangezien Informatica een populaire minor is voor wiskundestudenten, leek het mij nuttig om een stukje te schrijven over een onderwerp
MINICURSUS PHP. Op dit lesmateriaal is een Creative Commons licentie van toepassing Sebastiaan Franken en Rosalie de Klerk Bambara
MINICURSUS PHP Op dit lesmateriaal is een Creative Commons licentie van toepassing. 2017-2018 Sebastiaan Franken en Rosalie de Klerk Bambara PHP Cursus Deze cursus is om de eerste stappen in de wereld
OEFENINGEN PYTHON REEKS 1
Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren
BEGINNER JAVA Inhoudsopgave
Inhoudsopgave 6 Configuratie Hallo wereld! Praten met de gebruiker Munt opgooien Voorwaarden Lussen......6 Configuratie Met deze Sushi kaarten ga je een simpel spel maken met één van de meest populaire
Een spoedcursus python
Een spoedcursus python Zoals je in de titel misschien al gezien hebt, geven wij een spoedcursus Python. Door deze cursus leer je alle basics, zoals het rekenen met Python en het gebruik van strings. Het
Hoofdstuk 7: Werken met arrays
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 7: Werken met arrays 7.0 Leerdoel
Programmeren: Visual Basic
PETERSTUYVESANT COLLEGE INFORMATICA 2009-2010 Programmeren: Visual Basic Algemene Kennis: 01. Programmeren Programmeren is het schrijven van een computerprogramma, een concrete verzameling instructies
Programmeren in Java
4 september 2015 Even voorstellen Naam: Wessel Oele(39) Email: [email protected] Website: http://med.hro.nl/oelew Kop van Zuid Rotterdam, 3 juni 2007 Overzicht van modules programmeren in Java In totaal 4 modules
Hoofdstuk 5: Functies voor getallen en teksten
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, maart 2001 Hoofdstuk 5: Functies voor getallen en teksten
van PSD naar JavaScript
2015 van PSD naar JavaScript F. Vonk versie 2 19-9-2015 inhoudsopgave 1. inleiding... - 2-2. ontwikkelomgeving... - 3-3. programmeerconcepten... - 4 - statement... - 4 - sequentie... - 4 - variabele en
Programmeren (1) Examen NAAM:
Schrijf al je antwoorden op deze vragenbladen (op de plaats die daarvoor is voorzien) en geef zowel klad als net af. Bij heel wat vragen moet je zelf Java-code schrijven. Hou dit kort en bondig. Je hoeft
Modelleren & Programmeren. Jeroen Fokker
Modelleren & Programmeren Jeroen Fokker Wat heb je nodig? Collegediktaat kopen bij A-Eskwadraat (BBG-238) of zelf downloaden en uitprinten www.cs.uu.nl / docs / vakken / KI1V13009 Solis-id met password
Mobiel programmeren. Jeroen Fokker
Mobiel programmeren Jeroen Fokker Wat heb je nodig? Website Met collegediktaat en software www.cs.uu.nl / docs / vakken / b1mop Laptop bring your own device Microsoft Visual Studio Community 2015 of Xamarin
Small Basic Programmeren Text Console 2
Oefening 1: Hoogste getal Je leest een reeks positieve gehele getallen in totdat je het getal 0 (nul) invoert. Daarna stopt de invoer en druk je een regel af met het hoogste getal uit de reeks. Voorbeeld:
Inhoudsopgave Voorwoord 5 Voordat je begint 6 Wat heb je nodig? 7 De website bij het boek 7 Voor ouders, verzorgers en leraren
Inhoudsopgave Voorwoord... 5 Voordat je begint... 6 Wat heb je nodig?... 7 De website bij het boek... 7 Voor ouders, verzorgers en leraren... 8 Vervolgboeken over programmeren... 8 1. Aan de slag met Python
Kleine cursus PHP5. Auteur: Raymond Moesker
Kleine cursus PHP5 Auteur: Raymond Moesker Kleine cursus PHP PHP is platform en CPU onafhankelijk, open source, snel, heeft een grote userbase, het is object georiënteerd, het wordt omarmd door grote bedrijven
Uitleg: In de bovenstaande oefening zie je in het eerste blokje een LEES en een SCHRIJF opdracht. Dit is nog lesstof uit het tweede trimester.
In onderstaande oefeningen zijn kleuren gebruikt. Deze dienen aleen om de structuren makkelijker terug te kunnen herkennen. Ze worden niet standaard zo gebruikt. De dunne rood/roze balken zijn ook geen
Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?
1 Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby? Voordat je begint met programmeren, moet je Ruby installeren.
OEFENINGEN PYTHON REEKS 1
Vraag 1: Expressies & Types OEFENINGEN PYTHON REEKS 1 Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3), zijn er float s die behoren
Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.
1 Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python. Voordat je leert programmeren, moet je jouw pc zo instellen dat
Een eerste applicatie
Een eerste applicatie 2.1 Inleiding Programmeren in Visual Basic.NET doe je niet alleen door regels met code te schrijven. Je begint met het ontwerpen van een venster in de design mode met allerlei controls,
Pascal uitgediept Data structuren
Pascal uitgediept Data structuren MSX Computer & Club Magazine nummer 68-juni/juli 1994 Herman Post Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering wordt bekeken hoe zelf een datastructuur
Simon de schildpad. 2015 J van Weert 1
Programmeren met Simon Simon de schildpad 2015 J van Weert 1 Inleiding: Wat is programmeren eigenlijk? Een computer doet niets zonder een programma. Die programma s worden geschreven door mensen: programmeurs.
Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma
3 Vereiste kennis Dit boek richt zich op het leren programmeren door het oefenen met programmeercodes. Veel theorie komt in het begin niet aan de orde. Dat is een grote uitdaging want het is niet makkelijk
1.Noem de vijf categorieën waarin programmeertalen kunnen worden ingedeeld en geef van elke categorie één voorbeeld.
Module 4 programmeren 1.Noem de vijf categorieën waarin programmeertalen kunnen worden ingedeeld en geef van elke categorie één voorbeeld. Machinecode Assembleertalen: assembly Hogere programmeertalen:
[8] De ene 1 is de andere niet
[8] De ene 1 is de andere niet Volg mee via 08_Types.py In de volgende leerfiche gaan we rekenen met Python. Dat kan je in een programma doen, maar dat kan je ook gewoon vanuit het Shell-venster doen.
Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele
Informatica Objectgeörienteerd leren programmeren Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele http://creativecommons.org/licenses/by-nc-nd/3.0/legalcode Objectgeörienteerd
Programmeren: Visual Basic
PETERSTUYVESANT COLLEGE INFORMATICA 2009-2010 Programmeren: Visual Basic Document Afbaking 01. VERSCHILLENDE PROGRAMMEERTALEN 02. PROGRAMMEER PAKKETTEN 03. GUI 03.1 GUI ELEMENTEN 03.2 GUI EIGENSCHAPPEN
II. ZELFGEDEFINIEERDE FUNCTIES
II. ZELFGEDEFINIEERDE FUNCTIES In Excel bestaat reeds een uitgebreide reeks van functies zoals SOM, GEMIDDELDE, AFRONDEN, NU enz. Het is de bedoeling om functies aan deze lijst toe te voegen door in Visual
Simon de schildpad. 2012 J van Weert 1
Programmeren met Simon Simon de schildpad 2012 J van Weert 1 Inleiding: Wat is programmeren eigenlijk? Een computer doet niets zonder een programma. Die programma s worden geschreven door mensen: programmeurs.
Zelftest Inleiding Programmeren
Zelftest Inleiding Programmeren Document: n0824test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST INLEIDING PROGRAMMEREN Deze
Java Les 3 Theorie Herhaal structuren
Java Les 3 Theorie Herhaal structuren Algemeen Een herhaal structuur een is programmeertechniek waarbij bepaalde Java instructies worden herhaald net zo lang tot een bepaalde voorwaarde is bereikt. Een
OEFENINGEN PYTHON REEKS 1
OEFENINGEN PYTHON REEKS 1 Vraag 1: Python als een eenvoudige rekenmachine Python maakt gebruik van enkele vaak voorkomende (data)types. Zo zijn er integers die behoren tot de gehele getallen (VB: 3) en
Programmeren in Java les 3
4 september 2015 Deze les korte herhaling vorige week loops methodes Variabelen Soorten variabelen in Java: integer: een geheel getal, bijv. 1,2,3,4 float: een gebroken getal, bijv. 3.1415 double: een
PHP. Les 4 : Variabelen
PHP Les 4 : Variabelen Interessante links: o http://www.dbzweb.be/moermant/ o http://php.net/manual/en/function.echo.php o http://www.w3schools.com/php/default.asp Wat zijn variabelen? Variabelen zijn
Hoofdstuk 6: Zelf functies maken
Programmeren in Microsoft Visual Basic 6.0, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Marnix Gymnasium Rotterdam, januari 2004 Hoofdstuk 6: Zelf functies maken 6.0 Leerdoel
Excel reader. Beginner Gemiddeld. [email protected]
Excel reader Beginner Gemiddeld Auteur Bas Meijerink E-mail [email protected] Versie 01D00 Datum 01-03-2014 Inhoudsopgave Introductie... - 3 - Hoofdstuk 1 - Databewerking - 4-1. Inleiding... - 5-2.
Turbo Pascal (deel 1)
Turbo Pascal (deel 1) MSX CLUB MAGAZINE 34 Erik van Bilsen Scanned, ocr ed and converted to PDF by HansO, 2001 Erik van Bilsen leert u het klappen van de Turbo Pascal zweep. Turbo Pascal toepassen Deze
Modelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 13 november 2015 Expressies Functies Ingebouwde functies Variabelenbereik Inleveropgave 1 Terugblik Programma is een lijst van opdrachten Terugblik Programma is
Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:
Java Les 2 Theorie Beslissingen Algemeen Net als in het dagelijks leven worden in software programma s beslissingen genomen, naast het toekennen van waarden aan variabelen zijn beslissingen één van de
Inleiding Programmeren 2
Inleiding Programmeren 2 Gertjan van Noord November 26, 2018 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te
eerste voorbeelden in Java
Beginselen van programmeren 2 eerste voorbeelden in Java vereisten: een editor: om programma in te tikken en te bewaren een Java compiler: zet ingetikte (bron-) programma om naar byte-code een Java Virtuele
Bij dit hoofdstukken horen geen opgaven.
6. Programmeertalen Een computer begrijpt eigenlijk alleen maar binaire code (bestaande uit 1 en 0). Om hem/haar makkelijk opdrachten te geven zijn programmeertalen ontwikkeld. Deze moeten een goed gedefinieerde
Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie
Leren Programmeren met Visual Basic 6.0 Les 3+4 Hoofdstuk 4 : De Selectie Visual Basic 6.0 1 Basisstructuren (herhaling) Sequentie (HK2) : Alle opdrachten gewoon na mekaar uitvoeren. Hier worden geen keuzes
3. Structuren in de taal
3. Structuren in de taal In dit hoofdstuk behandelen we de belangrijkst econtrolestructuren die in de algoritmiek gebruikt worden. Dit zijn o.a. de opeenvolging, selectie en lussen (herhaling). Vóór we
DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO
DE ASTRO PI PROGRAMMEREN DOCENTENHANDLEIDING 1 Deze handleiding is bedoeld om leerlingen te ondersteunen bij de Astro Pi Challenge, waarbij leerlingen een programma voor de Astro Pi-computer in het ISS
PYTHON REEKS 1: BASICS. Mathias Polfliet
PYTHON REEKS 1: BASICS Mathias Polfliet [email protected] EENVOUDIGE REKENMACHINE 2 soorten getallen Getallen Z -> integers (gehele getallen) Getallen R -> floating points (reële getallen) Door beperkte
Modulewijzer tirprog02/infprg01, programmeren in Java 2
Modulewijzer tirprog02/infprg01, programmeren in Java 2 W. Oele 17 november 2009 1 Inhoudsopgave 1 Inleiding 3 2 Studiehouding 3 3 Voorkennis 4 4 Inhoud van deze module 5 5 Leermiddelen 5 6 Theorie en
Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI
Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI Vrijdag 22 januari 2010 Toelichting Dit is een open boek tentamen. Communicatie en het gebruik van hulpmiddelen zijn niet toegestaan.
Het relaas van de beginnende programmeur. Het hoe en waarom van de assistent
Het relaas van de beginnende programmeur Het hoe en waarom van de assistent 1. Help, mijn code doet niks... Mogelijke oplossingen: Heb je op run geduwd (groene pijltje)? Zolang je niet op 'run' duwt, kent
10 Meer over functies
10 Meer over functies In hoofdstuk 5 hebben we functies uitgebreid bestudeerd. In dit hoofdstuk bekijken we drie andere aspecten van functies: recursieve functies dat wil zeggen, functies die zichzelf
Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14
Python Vraag 1: Expressies en types Integrated Development Environment (IDE): Ø Wing 101 (gratis te downloaden op www.wingware.com) Oefeningen in de shell >> noemen we de prompt Python commando s = expressies
Inleiding Visual Basic en VBA. Karel Nijs 2009/01
Inleiding Visual Basic en VBA Karel Nijs 2009/01 Leswijze Eerst wat theorie Begeleid met (korte) oefeningen Ms Excel 2003 Online hulp: http://www.ozgrid.com/vba/ http://msdn.microsoft.com/en-us/library/sh9ywfdk(vs.80).aspx
PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd
Inhoudsopgave 1 Inleiding... 1 2 Toekenning- en herhalingsopdrachten (for loop)... 2 2.1 De wet van Ohm... 3 2.2 De spaarrekening... 3 2.3 De transformator... 3 3 Keuze- en herhalingsopdrachten (if, switch,
Nu een leuk stukje wiskunde ter vermaak (hoop ik dan maar). Optellen van oneindig veel getallen
Nu een leuk stukje wiskunde ter vermaak (hoop ik dan maar). Optellen van oneindig veel getallen Ter inleiding: tellen Turven, maar: onhandig bij grote aantallen. Romeinse cijfers: speciale symbolen voor
Afhankelijk van wanneer je het programma uitvoert, zie je een van de volgende resultaten:
Hoofdstuk 4 Voorwaarden en vertakkingen Laten we eens teruggaan naar ons eerste programma. Zou het niet leuk zijn als we in plaats van het algemene Hallo wereld, afhankelijk van de tijd van de dag, Goedemorgen
Thinking of Development
Thinking of Development College 2 Imperatief programmeren Arjan Scherpenisse [email protected] @acscherp Dit college Programmeren, wat is dat dan? De programmeur als vormgever Pseudocode Scratch
{ auteur, toelichting }
Programmeren Blok A Trilogie van (programmeer)talen http://www.win.tue.nl/ wstomv/edu/ip0/ College Syntaxis (vormleer): Hoe ziet t eruit, hoe schrijf je t? Tom Verhoeff Technische Universiteit Eindhoven
Online c++ leren programmeren:
Online c++ leren programmeren: Inhoud 1)Waar vind ik een c++ compiler?... 2 2)Hoe start ik een programma in c++?... 2 3)Een eerste c++ programma:... 3 Een eerste programma schrijven:... 3 Mijn eerste programma
VBA voor Doe het Zelvers deel 20
VBA voor Doe het Zelvers deel 20 Handleiding van Auteur: leofact Augustus 2015 handleiding: VBA voor Doe het Zelvers deel 20 Vorige aflevering In het vorige deel werd besproken hoe je de structuur en vensteropbouw
6,1. Samenvatting door een scholier 1809 woorden 28 oktober keer beoordeeld. Informatica
Samenvatting door een scholier 1809 woorden 28 oktober 2005 6,1 16 keer beoordeeld Vak Methode Informatica Turing informatica samenvatting. hst3: algoritme:een beschrijving van stappen die gedaan moeten
OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.
Les C-02: Werken met Programma Structuur Diagrammen 2.0 Inleiding In deze lesbrief bekijken we een methode om een algoritme zodanig structuur te geven dat er gemakkelijk programmacode bij te schrijven
Lab Webdesign: Javascript 11 februari 2008
H2: BASISBEGRIPPEN In dit hoofdstuk zullen er enkele basisbegrippen worden behandelt PLAATSING VAN JAVASCRIPT-CODE DE SCRIPT-TAG De script-tag geeft aan dat er gebruik zal worden gemaakt van een scripttaal.
Hoofdstuk 20: Wiskundige functies
Hoofdstuk 20: Wiskundige functies 20.0 Introductie Er is een uitgebreid aanbod aan wiskundige functies in Excel, variërend van het simpele + teken tot de esoterische statistiek functies voor een correlatie
Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur
Uitwerking Aanvullend tentamen Imperatief programmeren Woensdag 24 december 2014, 13.30 15.30 uur 1. deze opgave telt voor 30% van het totaal. Schrijf een compleet programma, dat door de gebruiker vanaf
Modelleren en Programmeren
Modelleren en Programmeren Jeroen Bransen 11 december 2015 Ingebouwde datastructuren Meer boomstructuren Access specifiers Gebruikersinvoer Codestijl Packages SAT-solver Ingebouwde datastructuren Ingebouwde
HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Informatie. Voorbeeld. Voorbeeld: toegangsprijs
HOOFDSTUK 3 3.1 Stapsgewijs programmeren De programmeertalen die tot nu toe genoemd zijn, zijn imperatieve of procedurele programmeertalen. is het stapsgewijs in code omschrijven wat een programma moet
REKENVAARDIGHEID BRUGKLAS
REKENVAARDIGHEID BRUGKLAS Schooljaar 008/009 Inhoud Uitleg bij het boekje Weektaak voor e week: optellen en aftrekken Weektaak voor e week: vermenigvuldigen Weektaak voor e week: delen en de staartdeling
Informatie voor de leerkracht Introductie nieuw concept (pagina 1) Programmeren met Bomberbot (pagina 1)
Leerlingen herkennen dat de moderne technologie om ons heen geprogrammeerd is door mensen. Leerlingen begrijpen dat een computer-programma bestaat uit een set instructies die een computer uitvoert en dat
Programmeerstructuren met App Inventor
Programmeerstructuren met App Inventor Kevin Krul, Universiteit Utrecht Roncalli, Bergen op Zoom Inhoud: Les 1: Introductie tot App Inventor, when statement en variabelen. Les 2: Introductie if-statement
DE INTERACTIEVE SHELL
Hoofdstuk2 De interactieve shell 6 Hoofdstuk 2 DE INTERACTIEVE SHELL In dit hoofdstuk behandelen we: Integers (gehele getallen) en getallen met drijvende komma Expressies Waarden Operatoren Het evalueren
17 Operaties op bits. 17.1 Bitoperatoren en bitexpressies
17 Operaties op bits In hoofdstuk 1 is gezegd dat C oorspronkelijk bedoeld was als systeemprogrammeertaal om het besturingssysteem UNIX te implementeren. Bij dit soort toepassingen komt het voor dat afzonderlijke
Kennismaken Greenfoot
HOOFDSTUK 1 Kennismaken met Greenfoot onderwerpen: de interface van Greenfoot, omgaan met objecten, methodes aanroepen, een scenario uitvoeren concepten: object, klasse, methode-aanroep, parameter, retourwaarde
Modulewijzer Tirdat01
Modulewijzer Tirdat01 W. Oele 25 augustus 2008 1 Inhoudsopgave 1 Inleiding en leerdoelen 3 2 Voorkennis 3 2.1 tirprg01 en tirprg02........................ 3 2.2 tirprg03.............................. 4
Vorig jaar in 5v cluster, tot en met OO hoofdstukken, geen problemen. Nu in mengcluster, tot OO hoofdstukken, wel problemen bij 4h leerlingen
Eerste programmeertaal Leren programmeren vs. een programmeertaal leren In Nijmegen: Algol68 als basis voor o.a. Modula-2 en C Voor Codi/Boxmeer: Pascal, Java, HTML/PHP Niet helemaal tevreden over Java
De standaard programmeertaal
C De standaard programmeertaal Oorsprong CPL stond voor Combined Programming Language of Cambridge Programming Language. Ze stamt uit 1963, maar de eerste compiler arriveerde pas rond 1970. De taal was
Android apps met App Inventor 2 antwoorden
2014 Android apps met App Inventor 2 antwoorden F. Vonk versie 1 11-11-2014 inhoudsopgave Mollen Meppen... - 2 - Schrandere Scholier... - 15 - Meteoor... - 21 - Dit werk is gelicenseerd onder een Creative
WELKOM BIJ BOMBERBOT! LES 1: WAT IS PROGRAMMEREN LES 1: WAT IS PROGRAMMEREN WAAR GAAT DEZE LES OVER? INTRODUCTIE
WELKOM BIJ BOMBERBOT! Bij onze lessen horen ook nog een online game, waarin de leerlingen de concepten die ze geleerd krijgen direct moeten toepassen, en een online platform, waarin u de voortgang van
