Imperatief programmeren. Introductie 9. Leerkern 10. Zelftoets 15. Terugkoppeling 16. Inhoud leereenheid 16

Maat: px
Weergave met pagina beginnen:

Download "Imperatief programmeren. Introductie 9. Leerkern 10. Zelftoets 15. Terugkoppeling 16. Inhoud leereenheid 16"

Transcriptie

1 Inhoud leereenheid 16 Imperatief programmeren Introductie 9 Leerkern 10 1 Sleutelbegrippen 10 2 Pragmatisme 10 3 Case study: C 10 4 Case study: Ada 11 5 Overzicht van concepten in C en Ada 14 Zelftoets 15 Terugkoppeling 16 1 Uitwerking van de opgaven 16 2 Uitwerking van de zelftoets 17 8 OUN

2 Leereenheid 16 Imperatief programmeren I N T R O D U C T I E Het imperatieve programmeerparadigma is nog steeds het meest toegepaste paradigma. Het gebruik van Cobol, een van de oudste imperatieve talen. is vandaag de dag zelfs nog groter dan het gebruik van de qua ontwerp veel modernere talen als Pascal, C en Ada. Voor een deel is dit te verklaren uit het feit dat bedrijven destijds veel geld hebben geïnvesteerd in de ontwikkeling van programmatuur en dat de kosten van het onderhouden van deze programma s het herstellen van fouten en aanpassen aan nieuwe omstandigheden en wensen al zo n zestig procent van het totale softwarebudget opslokken. Het herschrijven van deze programma s in een andere programmeertaal is alleen mogelijk als dit budget fors wordt verhoogd. Een tweede verklaring is dat programma s geschreven in deze talen door de bank genomen efficiënt gebruik maken van de hardware; de talen staan dicht bij de machine en men duidt ze daarom ook wel aan als high level assemblers. In de praktijk zien we dat men voor bestaande toepassingen zo lang mogelijk de oudere talen blijft hanteren en de nieuwere talen (zowel imperatieve talen als niet imperatieve talen) alleen inzet bij de ontwikkeling van nieuwe toepassingen. In deze leereenheid bekijken we twee bekende representanten van de klasse van conventionele imperatieve talen: C en Ada. Met conventioneel bedoelen we hier imperatieve talen die niet specifiek zijn ontworpen voor objectgeoriënteerd programmeren. Op de specifieke verschillen tussen deze beide paradigma s (imperatief en objectgeoriënteerd) gaan we in leereenheid 18 nader in. LEERDOELEN Na het bestuderen van deze leereenheid wordt verwacht dat u vier essentiële kenmerken van een imperatieve taal kunt noemen aan kunt geven of, en op welke wijze, de hierna genoemde concepten zijn gerealiseerd in respectievelijk C en Ada: typen, expressies, opdrachten, variabelen, declaraties, abstracties, parameters, inkapseling, polymorfie, exceptions aan kunt geven in hoeverre C en Ada voldoen aan de in de cursus geformuleerde ontwerpprincipes voor een programmeertaal het verschil kunt aangeven tussen de concepten genericiteit en parametrische polymorfie aan de hand van de behandelde taalconcepten de sterke en zwakke kanten van C en Ada kunt aangeven. Relatie met het tekstboek In deze leereenheid gebruiken we hoofdstuk 11 van het tekstboek. Het voorbeeld A simple spellchecker dient slechts ter illustratie van de concepten. U kunt volstaan met het globaal doorlezen van de paragrafen OUN 9

3 Concepten van programmeertalen die daarop betrekking hebben, namelijk paragraaf en paragraaf Studeeraanwijzingen In deze leereenheid komt uiteraard een aantal C en Ada voorbeelden voor. Het is niet de bedoeling dat u dergelijke voorbeelden zelf kunt schrijven, wel moet u deze voorbeelden kunnen begrijpen. Tevens moet u globaal aan kunnen geven op welke wijze een bepaald concept is geïmplementeerd in C of Ada. Gebruik hiervoor tabel 16.1 als richtlijn. De studielast van deze leereenheid is circa 3 uur. L E E R K E R N 1 Sleutelbegrippen Geen verdere aanvullingen op het tekstboek. 2 Pragmatisme Geen verdere aanvullingen op het tekstboek. 3 Case study: C Opmerking Abstractieprincipe Om te beoordelen of de taal voldoet aan de geformuleerde principes, maken we uitsluitend gebruik van de informatie gegeven in het tekstboek. Andere versies of varianten van de taal kunnen uiteraard andere voorzieningen bevatten, waardoor de beoordeling anders zou komen te liggen. Deze opmerking geldt ook voor de andere beoordeelde talen. C kent alleen blokopdrachten, geen blokexpressies (alleen body van een procedure) of blokdeclaraties. De taal voldoet dus niet aan het in leereenheid 4 geformuleerde kwalificatieprincipe: in elke taalconstructie kunnen lokale declaraties worden gemaakt. In leereenheid 5 hebben we het abstractieprincipe geformuleerd: van elke taalconstructie kan een abstractie worden gemaakt, die later kan worden aangeroepen. OPGAVE 16.1 Voldoet C goed of slecht aan dit abstractieprincipe? Kwalificatieprincipe Correspondentieprincipe C voldoet slecht aan het correspondentieprincipe uit leereenheid 5: elke soort declaratie heeft een corresponderend parametermechanisme en omgekeerd. C kent slecht een parametermechanisme: copy in. De typedeclaratie en proceduredefinitie in C hebben geen corresponderend parametermechanisme. In het voorgaande zagen we dat C slecht voldoet aan de in de cursus geformuleerde ontwerpprincipes voor een programmeertaal. Daarnaast zijn er op basis van de behandelde taalconcepten meer negatieve punten in het ontwerp van C aan te wijzen (zie opgave 16.2). 10 OUN

4 Leereenheid 16 Imperatief programmeren OPGAVE 16.2 a Geef ten minste vijf punten van kritiek op de taal C. b Noem ook een positieve kant van C. 4 Case study: Ada Ada voldoet beter aan het typevolledigheidsprincipe dan C. Waarden van standaardtypen, samengestelde typen en pointer typen mogen alle op dezelfde wijze worden gemanipuleerd. Variabelereferenties mogen we echter alleen als argument van een procedure of functie gebruiken, functies en procedures zelf zijn op geen enkele wijze te manipuleren, ze kunnen zelfs niet als argument worden doorgegeven. Ada kent blokopdrachten en blokdeclaraties (packages), maar geen blokexpressies. De taal voldoet dus niet geheel aan het in leereenheid 4 geformuleerde kwalificatieprincipe. Evenals bij C kunnen we nagaan in hoeverre Ada aan het Abstractieprincipe abstractieprincipe voldoet. OPGAVE 16.3 Voldoet Ada goed of slecht aan het abstractieprincipe? a Toon aan dat de procedureaanroep add(a, b, c) het verwachte effect heeft als er voor de parameters gebruik wordt gemaakt van hetzij het kopieermechanisme of het referentiemechanisme. Gebruik in het geval van het kopieermechanisme voor de in parameters copy in parameters en voor de out parameter een copy out parameter. Gebruik in het geval van het referentiemechanisme voor de inparameters, constant parameters en voor de out parameter een variableparameter. Typevolledigheidsprincipe Kwalificatieprincipe Correspondentieprincipe Evenals C voldoet Ada slecht aan het correspondentieprincipe. De functie en proceduredeclaratie hebben geen corresponderend parametermechanisme. Het reference mechanisme correspondeert niet met een declaratie: Ada kent geen variabeledefinitie. Daar komt nog bij dat een Ada implementatie voor samengestelde typen mag kiezen tussen het kopieermechanisme en het definitiemechanisme. OPGAVE 16.4 Gegeven is de volgende procedure in Ada: type Vector is array (1..n) of Float; procedure add(v, w: in Vector; sum: out Vector) is begin for i in 1.. n loop sum(i) := v(i) + w(i); end loop; end; b Toon dat ook voor de aanroep add(a, b, b) en laat zien dat in dat geval aliasing kan plaatsvinden. OUN 11

5 Concepten van programmeertalen Genericiteit en parametrische polymorfie Polymorfe versus generieke functies In Ada kunnen we generieke packages en generieke procedures en functies declareren. Zo op het eerste gezicht lijkt het concept genericiteit (generics) van Ada hetzelfde als de parametrische polymorfie uit leereeenheid 8. Een generieke functie is echter iets anders dan een polymorfe functie en een generiek type is iets anders dan een (geparametriseerd) polymorf type. We laten aan de hand van twee voorbeelden de verschillen tussen beide concepten zien. De volgende polymorfe Haskell functie snd mogen we op parameters van verschillende typen toepassen: snd :: (a, b) -> b snd (_, y) = y Hugs> snd (13, True) True Hugs> snd ("Jeffrey", "Watt") "Watt" Hugs> a en b zijn typevariabelen die elk een nog vrij te kiezen type representeren. In Ada kunnen we de volgende generieke functie snd declareren. generic type a is private; type b is private; function snd (x : a; y : b) return b is begin return y; end; a en b zijn hier formele typeparameters (dus geen typevariabelen) met behulp waarvan we een type kunnen doorgeven. Voor we snd kunnen gebruiken, moeten we de generieke functie eerst instantiëren met concrete typen als actuele parameters: function snd_1 is new snd (Integer, Boolean); function snd_2 is new snd (String, String); Hierna kunnen we van snd_1 en snd_2 gebruikmaken: snd_1 (13, True) = True snd_2 ("Jeffrey", "Watt") = "Watt" Polymorfe versus generieke typen In feite creëren we eerst twee afzonderlijke functies, een voor de typen Integer en Boolean en een voor het type String, en er is dus geen sprake van één (polymorfe) functie die op parameters van verschillende typen mag worden toegepast. In leereenheid 8 is in voorbeeld 8.10 in Haskell het volgende polymorfe type List gedefinieerd samen met onder andere de functies head en tail met de volgende specificaties: data List a = Nil Cons (a, List a) head :: List a -> a tail :: List a -> List a 12 OUN

6 Leereenheid 16 Imperatief programmeren In de definitie van List geeft de typevariabele a aan dat het type van de elementen van List willekeurig kan zijn. De functies head en tail zijn polymorfe functies, het maakt voor deze functies niet uit wat het type van de lijstelementen is. Een generieke package declaratie voor het type List (een generiek abstract type) kan in Ada als volgt luiden. generic type a is private package list_type is type List is limited private; function cons (x : a; xs : List) return List; function head (xs : List) return a; function tail (xs : List) return List; private type Node; type List is access Node; type Node is record element : a; rest : List; end record; end list_type; a is hier weer een typeparameter. Voor ieder verschillend elementtype van List moet een nieuwe package worden geïnstantieerd met dat elementtype als actuele parameter, bijvoorbeeld: package list_type_int is new list_type (Integer); package list_type_char is new list_type (Character); Deze beide instantiaties resulteren in twee verschillende lijsttypen (namelijk list_type_int.list en list_type_char.list) en in twee verschillende functies voor zowel head als tail (list_type_ int.head en list_type_char.head, idem voor tail). Er is dus geen sprake van één (polymorf) type List en evenmin van polymorfe functies head en tail. Aanvulling bij voorbeeld Hoewel we de naam swap gebruiken voor waarden van een willekeurig type, is ook hier geen sprake van een polymorfe procedure. Door verschillende instantiaties van de generieke procedure krijgen we immers verschillende gewone procedures met elk een eigen naam en parametertype. OPGAVE 16.5 Maak van exercise op bladzijde 294 in het tekstboek de vragen a en b. Aanwijzing: een blokopdracht heeft in Ada de volgende vorm. declare declaraties begin opdrachten end; OUN 13

7 Concepten van programmeertalen Kanttekeningen bij Ada Ada kent meer geavanceerde taalconcepten dan C, onder meer inkapseling en exceptions. Dat is ook logisch, gezien het feit dat de taal tien jaar later dan C is ontworpen. We kunnen ons echter afvragen of het ontwerp van Ada, gezien in het licht van de in de blokken 1 en 2 behandelde taalconcepten, inderdaad zo goed is als men vaak suggereert. In de voorgaande paragraaf zagen we reeds dat Ada aan de vier ontwerpprincipes niet volledig voldoet. Daarnaast zijn nog de volgende punten van kritiek te noemen: polymorfie is niet mogelijk; weliswaar kent Ada het concept generics, maar zoals we in deze paragraaf aangeven, is dit wat anders dan parametrische polymorfie en kunnen we het hoogstens zien als een soort surrogaat hiervoor Ada kent weliswaar contextafhankelijke overloading van procedures, functies en operatoren, maar mist de fundamentele aanpak van overloading met typeklassen à la Haskell net als in C kunnen recursieve typen alleen met behulp van pointers worden gemaakt naast garbage collection kent Ada ook de mogelijkheid om zelf expliciet aan te geven dat een heap variabele niet langer nodig is ( unchecked deallocation), hetgeen het gevaar van dangling references met zich meebrengt naast escape opdrachten en exceptions is er ook nog een (overbodige) goto opdracht de taal is groot en mede daardoor lastig te leren en te interpreteren. 5 Overzicht van concepten in C en Ada In tabel 16.1 zetten we de concepten die al dan niet in Ada en C zijn te vinden, op een rijtje. TABEL 16.1 Taalconcepten in C en Ada (x = aanwezig) taalconcept C Ada primitieve typen numerieke typen x (integer, floating-point) x (integer, floating-point, fixed-point) karakters x boolean x enumeration x x samengestelde typen cartesisch product x (structure) x (record) disjuncte vereniging x (union type, untagged) x (discriminated record) functieruimte x (array) x (array) recursieve typen (via pointers) (via pointers) subtypen (ja, maar is geen type) expressies toekenningsexpressie x functieaanroep x x conditionele expressies x iteratieve expressies blokexpressies variabelen globale variabelen x x locale variabelen x x heap-variabelen x (low-level) x allocator x (malloc) x (new) 14 OUN

8 Leereenheid 16 Imperatief programmeren opdrachten lege opdracht x x toekenningsopdracht x procedureaanroep x sequentiële opdracht x x conditionele opdracht x x iteratieve opdracht x x blokopdracht x x sequencer x (break, continue, return) x (exit, return) jump x x exception handling x binding, scope globale typedefinities program units met globale variabelen procedures, packages, functiedefinities generieke units locale declaraties locale variabelen statische variabelen abstractie van proceduren functie x x procedure (via void) x parametermechanismen copy-in in-parameter geen reference parameter in-out-parameter (wel via pointer) out-parameter functies geen procedures geen eersteklas-waarden eersteklas-waarden voor samengestelde waarden keus tussen by copy of by reference overloading x generieke abstractie x (generieke packages, generieke proceduren) compilatie onafhankelijke gescheiden Z E L F T O E T S l Noem enkele essentiële kenmerken van een imperatieve programmeertaal. 2 Noem enkele taalconcepten die C niet biedt en Ada wel. 3 Wat is het kenmerkende verschil tussen een polymorfe functie in Haskell en een generieke functie in Ada? 4 Geef ten minste vier punten van kritiek op de taal Ada. OUN 15

9 Concepten van programmeertalen T E R U G K O P P E L I N G 1 Uitwerking van de opgaven 16.1 In C kunnen we alleen abstracties maken van een expressie (functie) en een opdracht (functie met terugkeerwaarde van type void). De taal kent geen abstracties van bijvoorbeeld een variable access (selectorabstractie), declaratie (generieke abstractie) of type (abstract type) en voldoet dus slecht aan het abstractieprincipe a Naast het slecht voldoen aan de ontwerpprincipes voor een taal, kunnen als negatieve punten van C verder worden genoemd: het typesysteem is zwak C kent geen abstractie van gegevens, geen generieke abstracties, geen exceptions C heeft een beperkt aantal primitieve typen C ondersteunt geen directe recursie opdrachten kunnen in onleesbare vorm geformuleerd worden door de onafhankelijke compilatie kan de consistentie in gevaar komen. b C is een populaire programmeertaal die uitstekend gebruikt kan worden voor het schrijven van efficiënte software op systeemniveau In Ada kunnen we abstracties maken van een expressie (functie), een opdracht (procedure), een type (abstract type) en een declaratie (generiek package), echter niet van een variable access (selector). Hiermee voldoet de taal in redelijke mate aan het abstractieprincipe a We bekijken eerst de aanroep add(a,b,c) voor beide mechanismen. 1 v en w zijn copy in parameters, sum is een copy out parameter: Bij aanroep van add worden de lokale variabelen v, w en sum gecreëerd en worden de waarden van de actuele parameters a en b toegekend aan respectievelijk v en w. Vervolgens wordt in de procedure de waarde van sum (de som van v en w) bepaald en bij beëindiging van add wordt deze waarde toegekend aan c. De waarden van a en b zijn niet gewijzigd. 2 v en w zijn constant parameters en sum is een variable parameter: Bij aanroep worden de namen v, w en sum gebonden aan respectievelijk a, b en c. In de procedure wordt vervolgens de waarde van sum (= c) gewijzigd in de som van a en b. De waarden van a en b blijven ongewijzigd. b We bekijken nu de aanroep add(a,b,b) voor beide mechanismen. 1 v en w zijn copy in parameters, sum is een copy out parameter: Bij aanroep van add worden de lokale variabelen v, w en sum gecreëerd en worden de waarden van de actuele parameters a en b toegekend aan respectievelijk v en w. Vervolgens wordt in de procedure de waarde van sum (de som van v en w) bepaald en bij beëindiging van add wordt deze waarde toegekend aan b. De waarde van a is niet gewijzigd; de waarde van b is gewijzigd in de som van a en de oude waarde van b. 2 v en w zijn constant parameters en sum is een variable parameter: Bij aanroep wordt de naam v gebonden aan a en de namen w en sum aan b. Vervolgens wordt in de procedure de waarde van sum (de som van v en w) bepaald. Hierdoor verandert tevens de waarde van w (sum en w zijn aliassen). Deze aliasing is in dit geval niet erg, omdat w in de procedure niet meer wordt gebruikt. Bij beëindiging van add is de 16 OUN

10 Leereenheid 16 Imperatief programmeren waarde van a niet gewijzigd; de waarde van b is gewijzigd in de som van a en de oude waarde van b a Instantiatie en aanroep van de generieke procedure kan overal gerealiseerd worden met een blokopdracht: declare procedure swapint is new swap (Integer); begin swapint (a(i), a(i+1)); end; b Instantiatie en aanroep van een generieke functie kan niet op vergelijkbare wijze worden gerealiseerd omdat Ada geen blokexpressie kent. 2 Uitwerking van de zelftoets 1 Een imperatieve programmeertaal is gebaseerd op de architectuur van de hardware. Imperatieve talen kunnen hierdoor in principe efficiënt worden geïmplementeerd. Een programma in een imperatieve taal bestaat uit een rij opdrachten die in een voorgeschreven volgorde moeten worden verwerkt. Voor de opslag van waarden worden (veranderbare) variabelen gebruikt die geheugenplaatsen in de computer representeren. Er bestaat een toekenningsopdracht voor het veranderen van de waarden van deze variabelen. 2 De volgende concepten zijn niet in C aanwezig, maar wel in Ada: packages (inkapseling) generieke abstracties generieke procedures en functies overloading (door programmeur) exceptions. 3 Een polymorfe functie is een functie die geen gebruikmaakt van de specifieke eigenschappen van een parameter. De functie kan daarom op waarden van elk type worden toegepast. In het type van de functie komt dit tot uiting in de vorm van typevariabelen. Een generieke functie heeft een typeparameter met behulp waarvan een type kan worden doorgegeven. Voor we de functie op een bepaald type kunnen toepassen, moeten we eerst een instance van de generieke functie creëren voor dat bepaalde type. Voor alle typen waarvoor we de functie nodig hebben, moeten we evenzovele functies creëren met elk een unieke naam; er is dus geen sprake van één polymorfe functie. 4 Als kritiekpunten op de taal Ada kunnen we onder meer noemen: Ada voldoet aan geen van de ontwerpprincipes volledig polymorfie is niet mogelijk Ada kent geen typeklassen à la Haskell recursieve typen zijn alleen mogelijk met behulp van pointers de mogelijkheid van unchecked deallocation van heap variabelen er is een overbodige goto opdracht de taal is groot en lastig te leren. OUN 17

Tijdens het tentamen mag het cursusmateriaal niet geraadpleegd worden.

Tijdens het tentamen mag het cursusmateriaal niet geraadpleegd worden. Eindtoets I N T R O D U C T I E Deze eindtoets is bedoeld als voorbereiding op het schriftelijk tentamen van de cursus Concepten van programmeertalen en is te beschouwen als proeftentamen. Het is belangrijk

Nadere informatie

College Notatie, Recursie, Lijsten

College Notatie, Recursie, Lijsten College 2016-2017 2. Notatie, Recursie, Lijsten Doaitse Swierstra (Jeroen Bransen) Utrecht University September 13, 2016 Functieapplicatie functieapplicatie associeert naar links: als x in f x y moet kiezen

Nadere informatie

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49

Stacks and queues. Introductie 45. Leerkern 45. Terugkoppeling 49. Uitwerking van de opgaven 49 Stacks and queues Introductie 45 Leerkern 45 6.1 Stacks 45 6.2 Queues 47 6.3 Double-ended queues 48 Terugkoppeling 49 Uitwerking van de opgaven 49 Bijlage: Diagrammen belangrijkste interfaces en klassen

Nadere informatie

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40

Recursion. Introductie 37. Leerkern 37. Terugkoppeling 40. Uitwerking van de opgaven 40 Recursion Introductie 37 Leerkern 37 5.1 Foundations of recursion 37 5.2 Recursive analysis 37 5.3 Applications of recursion 38 Terugkoppeling 40 Uitwerking van de opgaven 40 Hoofdstuk 5 Recursion I N

Nadere informatie

Als een PSD selecties bevat, deelt de lijn van het programma zich op met de verschillende antwoorden op het vraagstuk.

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

Nadere informatie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie

recursie Hoofdstuk 5 Studeeraanwijzingen De studielast van deze leereenheid bedraagt circa 6 uur. Terminologie Hoofdstuk 5 Recursion I N T R O D U C T I E Veel methoden die we op een datastructuur aan kunnen roepen, zullen op een recursieve wijze geïmplementeerd worden. Recursie is een techniek waarbij een vraagstuk

Nadere informatie

Inhoud. Introductie tot de cursus

Inhoud. Introductie tot de cursus Inhoud Introductie tot de cursus 1 De functie van de cursus 7 1.1 Motivering van de cursus 7 1.2 Plaats van de cursus 9 2 De inhoud van de cursus 9 2.1 Leerdoelen 9 2.2 Voorkennis 10 2.3 Programmeertalen

Nadere informatie

Een eenvoudig algoritme om permutaties te genereren

Een eenvoudig algoritme om permutaties te genereren Een eenvoudig algoritme om permutaties te genereren Daniel von Asmuth Inleiding Er zijn in de vakliteratuur verschillende manieren beschreven om alle permutaties van een verzameling te generen. De methoden

Nadere informatie

Stacks and queues. Hoofdstuk 6

Stacks and queues. Hoofdstuk 6 Hoofdstuk 6 Stacks and queues I N T R O D U C T I E In dit hoofdstuk worden drie datastructuren stack, queue en deque behandeld. Om deze datastructuren te implementeren, worden onder andere arrays en linked

Nadere informatie

Java. Basissyllabus. Egon Pas

Java. Basissyllabus. Egon Pas Java Basissyllabus Egon Pas 2011 BeanPole bvba Gasmeterlaan 92-9000 Gent BTW BE 472.902.516 Tel: + 32 9 224 42 17 Fax: + 32 9 223 62 88 www.beanpole.be info@beanpole.be 1 Programmeren 1.1 Hoe werkt een

Nadere informatie

1 Inleiding in Functioneel Programmeren

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

Nadere informatie

Zelftest Inleiding Programmeren

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

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Module 4 Programmeren

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

Nadere informatie

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89.

Inhoud leereenheid 7c. JavaScript: Objecten en functies. Introductie 59. Leerkern 60. Samenvatting 82. Opdrachten 83. Zelftoets 89. Inhoud leereenheid 7c JavaScript: Objecten en functies Introductie 59 Leerkern 60 1 Functies 60 1.1 Syntax - samenvatting 60 1.2 Functies definiëren 61 1.3 Functie als parameter (facultatief) 64 1.4 Functie

Nadere informatie

Kleine cursus PHP5. Auteur: Raymond Moesker

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

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Tentamen Programmeren in C (EE1400) 3 feb. 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd

Nadere informatie

Objectgeoriënteerd programmeren in Java 1

Objectgeoriënteerd programmeren in Java 1 Objectgeoriënteerd programmeren in Java 1 CPP Javaprogrammeur Bijeenkomst 3 Leereenheden 7, 8, 9 De Java API Java bevat een grote bibliotheek standaardklassen: de Java API Voorbeelden java.lang basisklassen

Nadere informatie

Een korte samenvatting van enkele FORTRAN opdrachten

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

Nadere informatie

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 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

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 6 december 2013 Terugblik Programma en geheugen Opdrachten Variabelen Methoden Objecten Klasse Programma en geheugen Opdrachten Variabelen zijn gegroepeerd in

Nadere informatie

Inhoud introductie. Introductie tot de cursus

Inhoud introductie. Introductie tot de cursus Inhoud introductie Introductie tot de cursus 1 Plaats en functie van de cursus 7 2 Inhoud van de cursus 8 2.1 Voorkennis 8 2.2 Leerdoelen 8 2.3 Opbouw van de cursus 9 2.4 Leermiddelen 10 3 Aanwijzingen

Nadere informatie

Inhoud. Introductie tot de cursus

Inhoud. Introductie tot de cursus Inhoud Introductie tot de cursus 1 De functie van de cursus 7 2 De inhoud van de cursus 7 2.1 Voorkennis 7 2.2 Leerdoelen van de cursus 8 2.3 Opbouw van de cursus 8 3 Leermiddelen en wijze van studeren

Nadere informatie

10 Meer over functies

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

Nadere informatie

Programmeren in Java 3

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

Nadere informatie

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c

start -> id (k (f c s) (g s c)) -> k (f c s) (g s c) -> f c s -> s c Een Minimaal Formalisme om te Programmeren We hebben gezien dat Turing machines beschouwd kunnen worden als universele computers. D.w.z. dat iedere berekening met natuurlijke getallen die met een computer

Nadere informatie

College Introductie

College Introductie College 2016-2017 Introductie Doaitse Swierstra (Jeroen Bransen) Utrecht University September 13, 2016 Waarom is FP anders? in plaats van opdrachten die na elkaar moeten worden uitgevoerd, definiëren we

Nadere informatie

Scala. Korte introductie. Sylvia Stuurman

Scala. Korte introductie. Sylvia Stuurman Korte introductie Sylvia Stuurman Wat is er zo bijzonder aan? Schaalbaar Objectgeoriënteerd (handiger dan Java!) Functioneel Scripts schrijven Gecompileerd: Java bytecode Pagina 2 voor scripts Pagina 3

Nadere informatie

Inleiding tot Func.oneel Programmeren les 3

Inleiding tot Func.oneel Programmeren les 3 Inleiding tot Func.oneel Programmeren les 3 Kris Luyten, Jo Vermeulen {kris.luyten,jo.vermeulen}@uhasselt.be Exper.secentrum voor Digitale Media Universiteit Hasselt Currying Currying: een func.e met meerdere

Nadere informatie

Introductie tot de cursus

Introductie tot de cursus Inhoud introductietalen en ontleders Introductie tot de cursus 1 Plaats en functie van de cursus 7 2 Inhoud van de cursus 7 2.1 Voorkennis 7 2.2 Leerdoelen 8 2.3 Opbouw van de cursus 8 3 Leermiddelen en

Nadere informatie

Modelleren en Programmeren

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

Nadere informatie

Datastructuren Werkcollege Intro

Datastructuren Werkcollege Intro Bart Hijmans, Universiteit Leiden. Universiteit Leiden The Netherlands Focus 1 19 ˆ Ervaring in gebruik en implementatie van datastructuren ˆ Kennis van mogelijkheden ˆ Programmeren voor andere programmeurs

Nadere informatie

Inhoud leereenheid 1. Waarden en typen. Introductie 19. Leerkern 21. Zelftoets 36. Terugkoppeling 37

Inhoud leereenheid 1. Waarden en typen. Introductie 19. Leerkern 21. Zelftoets 36. Terugkoppeling 37 Inhoud leereenheid 1 Waarden en typen Introductie 19 Leerkern 21 1 Typen 21 2 Primitieve typen 21 3 Samengestelde typen 22 3.1 Cartesische producten, structuren en records 22 3.2 Functieruimten, arrays

Nadere informatie

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2.

Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, , Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Voorbeeldtentamen Inleiding programmeren (IN1608WI), Oktober 2003, 14.00-15.30, Technische Universiteit Delft, Faculteit EWI, Afdeling 2. Dit tentamen bestaat uit twee delen. Deel 1 (14.00-14.45, gesloten

Nadere informatie

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding:

Programmeren A. Genetisch Programma voor het Partitie Probleem. begeleiding: Programmeren A Genetisch Programma voor het Partitie Probleem begeleiding: Inleiding Het Partitie Probleem luidt als volgt: Gegeven een verzameling van n positieve integers, vindt twee disjuncte deelverzamelingen

Nadere informatie

Modulewijzer Tirdat01

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

Nadere informatie

slides6.pdf 16 nov

slides6.pdf 16 nov Inhoud Inleiding Algemeen 5 Waarom programmeertalen? Geschiedenis Abstractiemechanismen Programmeertalen Piet van Oostrum 16 november 2001 INL/Alg-5 1 X INL/Alg-5 1 X Machinecode Voor- en nadelen assemblercode

Nadere informatie

Programmeren in Java les 3

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

Nadere informatie

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse

Objective-C Basis. 23 april 2005, Eindhoven Patrick Machielse Objective-C Basis 23 april 2005, Eindhoven Patrick Machielse patrick@hieper.nl Algemeen // extensies Objective-C code in bestanden met.m extensie // commentaar moet! /* Alles hiertussen wordt genegeerd

Nadere informatie

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109

Inhoud leereenheid 4. Inleiding JavaScript. Introductie 99. Leerkern 100. Zelftoets 108. Terugkoppeling 109 Inhoud leereenheid 4 Inleiding JavaScript Introductie 99 Leerkern 100 1 Leren programmeren in JavaScript 100 2 Chapter 1: Introduction 101 3 Chapter 2, paragrafen 1 t/m 5 102 4 Chapter 2, paragrafen 6

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Tentamen Programmeren in C (EE1400) 5 april 2012, 9.00 12.00 Faculteit EWI - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code

Nadere informatie

Zelftest Programmeren in Java

Zelftest Programmeren in Java Zelftest Programmeren in Java Document: n0883test.fm 22/01/2013 ABIS Training & Consulting P.O. Box 220 B-3000 Leuven Belgium TRAINING & CONSULTING INLEIDING BIJ DE ZELFTEST PROGRAMMEREN IN JAVA Deze test

Nadere informatie

Datastructuren en algoritmen

Datastructuren en algoritmen Datastructuren en algoritmen Doelstelling Datastructures + algorithms = programs Boek van Niklaus Wirth: bedenker Pascal en Modula Datastructuur: structuur om informatie op te slaan Algoritme: voorschrift

Nadere informatie

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren Universiteit van Amsterdam FNWI Voorbeeld van tussentoets Inleiding programmeren Opgave 1: Wat is de uitvoer van dit programma? public class Opgave { static int i = 0 ; static int j = 1 ; int i = 1 ; int

Nadere informatie

inleiding theoretische informatica practicum 1 deadline woensdag 20 februari 2008 om uur

inleiding theoretische informatica practicum 1 deadline woensdag 20 februari 2008 om uur 1 Inleiding inleiding theoretische informatica 2007-2008 practicum 1 deadline woensdag 20 februari 2008 om 14.00 uur Dit practicum is een kennismaking met functioneel programmeren. Twee belangrijke functionele

Nadere informatie

Inhoud. Introductie tot de cursus

Inhoud. Introductie tot de cursus Inhoud Introductie tot de cursus 1 De functie van de cursus 7 2 De inhoud van de cursus 7 2.1 Voorkennis 7 2.2 Leerdoelen van de cursus 8 2.3 Opbouw van de cursus 8 3 Leermiddelen en wijze van studeren

Nadere informatie

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

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

Nadere informatie

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS

UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS UNIVERSITEIT ANTWERPEN FACULTEIT WETENSCHAPPEN DEPARTEMENT WISKUNDE-INFORMATICA OBERON CODE CONVENTIONS Laatste aanpassing: 15 oktober 2003 Inhoudsopgave 1 Bestandsnamen 3 2 Organizatie Bestanden 3 3 Indentatie

Nadere informatie

Inleiding Programmeren 2

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

Nadere informatie

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces. Hoofdstuk 1: Inleiding Objectoriëntatie: 1. Objecten & klassen: samenwerking van componenten om bepaald doel te bereiken; herbruikbaarheid. 2. Encapsulation: afschermen gedragingen en kenmerken van de

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 13 december 2013 Terugblik Fibonacci public class Fibonacci { public static void main(string[] args) { // Print het vijfde Fibonaccigetal System.out.println(fib(5));

Nadere informatie

Syntax- (compile), runtime- en logische fouten Binaire operatoren

Syntax- (compile), runtime- en logische fouten Binaire operatoren Inhoud Syntax- (compile), runtime- en logische fouten Binaire operatoren Operaties op numerieke datatypen Evaluatie van expressies, bindingssterkte Assignment operaties en short-cut operatoren Controle

Nadere informatie

Deeltentamen Grammatica s en ontleden 22 december 2005

Deeltentamen Grammatica s en ontleden 22 december 2005 Tentamen Grammatica s en ontleden 22 december 2005 1 Deeltentamen Grammatica s en ontleden 22 december 2005 Let op: opgave 1 t/m 4 tellen voor (slechts) 5 punten mee, opgave 5 voor maar liefst 50 punten,

Nadere informatie

Ontwerp van Informatiesystemen

Ontwerp van Informatiesystemen 1ste bach HIB Ontwerp van Informatiesystemen Prof. Verelst Q www.quickprinter.be uickprinter Koningstraat 13 2000 Antwerpen 112 2,50 Online samenvattingen kopen via www.quickprintershop.be Table of Contents

Nadere informatie

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

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.

Nadere informatie

De standaard programmeertaal

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

Nadere informatie

Javascript oefenblad 1

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

Nadere informatie

17 Operaties op bits. 17.1 Bitoperatoren en bitexpressies

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

Nadere informatie

HOE TEKEN IK EEN OMGEVINGSMODEL

HOE TEKEN IK EEN OMGEVINGSMODEL HOE TEKEN IK EEN OMGEVINGSMODEL MATTIAS DE WAEL 1. Inleiding Om de allereenvoudigste Scheme expressies te begrijpen volstaat het substitutiemodel. Het substitutiemodel verondersteld het bestaan van een

Nadere informatie

Polymorfie 142. PersonalityObject. + PersonalityObject( ) + speak( ): String. OptimisticObject ExtrovertedObject PessimisticObject IntrovertedObject

Polymorfie 142. PersonalityObject. + PersonalityObject( ) + speak( ): String. OptimisticObject ExtrovertedObject PessimisticObject IntrovertedObject Polymorfie 142 V POLYMORFIE Als inkapseling en overerving het een-tweetje van OOP zijn, dan is polymorfie de daaropvolgende schop in het doel. U zou zonder de beide andere steunpilaren geen polymorfie

Nadere informatie

Tentamen Programmeren in C (EE1400)

Tentamen Programmeren in C (EE1400) TU Delft Faculteit EWI Tentamen Programmeren in C (EE1400) 28 jan 2011, 9.00 12.00 - Zet op elk antwoordblad je naam en studienummer. - Beantwoord alle vragen zo nauwkeurig mogelijk. - Wanneer C code gevraagd

Nadere informatie

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma:

Arrays. Complexe datastructuren. Waarom arrays. Geen stijlvol programma: Geen stijlvol programma: Complexe datastructuren Arrays vijf verschillende variabelen voor iets dat als één rij getallen bestempeld wordt; onbruikbaar wanneer het over meer getallen (bijvoorbeeld ) gaat.

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Functies Vorige week bekeken we functies: def

Nadere informatie

Inhoud introductie. Introductie tot de cursus

Inhoud introductie. Introductie tot de cursus Inhoud introductie Introductie tot de cursus 1 Functie en plaats van de cursus 7 1.1 Voorkennis 7 1.2 Leerdoelen 7 2 Opbouw van de cursus 8 2.1 Cursusbestanddelen 8 2.2 Nummering en studielast van de leereenheden

Nadere informatie

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e

4EE11 Project Programmeren voor W. College 2, , Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 4EE11 Project Programmeren voor W College 2, 2008 2009, Blok D Tom Verhoeff, Software Engineering & Technology, TU/e 1 Onderwerpen Terugblik Functies Organisatie (architectuur) van programma s Arrays Structuren

Nadere informatie

Informatica: C# WPO 11

Informatica: C# WPO 11 Informatica: C# WPO 11 1. Inhoud Pass by reference (ref, out), recursie, code opdelen in verschillende codebestanden 2. Oefeningen Demo 1: Swapfunctie Demo 2: TryParse(int) Demo 3: Recursion Tree Demo

Nadere informatie

Modelleren en Programmeren

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

Nadere informatie

Inhoud leereenheid 8. Programmeren in JavaLogo (1) Introductie 73. Leerkern 75. Samenvatting 94. Zelftoets 95. Terugkoppeling 97

Inhoud leereenheid 8. Programmeren in JavaLogo (1) Introductie 73. Leerkern 75. Samenvatting 94. Zelftoets 95. Terugkoppeling 97 Inhoud leereenheid 8 Programmeren in JavaLogo (1) Introductie 73 Leerkern 75 1 Inleiding 75 1.1 Wat is programmeren? 75 1.2 Logo, Java en JavaLogo 76 2 Eerste programma s 77 2.1 Pen en Tekenblad 77 2.2

Nadere informatie

Verzamelingen, Lijsten, Functioneel Programmeren

Verzamelingen, Lijsten, Functioneel Programmeren Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 17 mei 2010 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen

Nadere informatie

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Bijlage bij opgaven 9. Terugkoppeling 12

Inhoud. Eindtoets. Introductie 2. Opgaven 3. Bijlage bij opgaven 9. Terugkoppeling 12 Open Universiteit Inhoud Introductie 2 Opgaven 3 Bijlage bij opgaven 9 Terugkoppeling 12 1 Open Universiteit Objectgeoriënteerd programmeren in Java 1 I N T R O D U C T I E Deze eindtoets is bedoeld als

Nadere informatie

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld Afdeling ST Faculteit EWI TU Delft Bij dit tentamen mag u gebruik maken van: Barnes, Object-Oriented Programming with Java en de Notitie Algoritmiek

Nadere informatie

Wat is FP? The Haskell School of Expression. Functies. Types 1+1=2. Iedere expressie (en waarde) heeft een type.

Wat is FP? The Haskell School of Expression. Functies. Types 1+1=2. Iedere expressie (en waarde) heeft een type. Wat is FP? The Haskell School of Expression Functioneel Programmeren Een andere manier om tegen programmeren aan te kijken Gebaseerd op het uitrekenen van expressies 1+1=2 Eenvoudig maar krachtig (modulair,

Nadere informatie

Inhoud. Introductie tot de cursus

Inhoud. Introductie tot de cursus Inhoud Introductie tot de cursus 1 Plaats en functie van de cursus 7 2 Inhoud van de cursus 7 2.1 Tekstboek 7 2.2 Voorkennis 8 2.3 Leerdoelen 8 2.4 Opbouw van de cursus 9 3 Leermiddelen en wijze van studeren

Nadere informatie

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college

EE1400: Programmeren in C BSc. EE, 1e jaar, , 3e college EE1400: Programmeren in C BSc. EE, 1e jaar, 2012-201, e college Arjan van Genderen, Computer Engineering 4-12-2012 Delft University of Technology Challenge the future Hoorcollege Arrays, Pointers en Strings

Nadere informatie

Inhoud leereenheid 1. Security en IT: inleiding. Introductie 15. Leerkern 15. Terugkoppeling 18. Uitwerking van de opgaven 18

Inhoud leereenheid 1. Security en IT: inleiding. Introductie 15. Leerkern 15. Terugkoppeling 18. Uitwerking van de opgaven 18 Inhoud leereenheid 1 Security en IT: inleiding Introductie 15 Leerkern 15 1.1 What Does Secure Mean? 15 1.2 Attacks 16 1.3 The Meaning of Computer Security 16 1.4 Computer Criminals 16 1.5 Methods of Defense

Nadere informatie

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax, Deel 1: Arduino kennismaking Wat is een microcontroller, structuur van een programma, syntax, Wat is een microcontroller Wat is een microcontroller? Microcontroller = kleine dedicated computer. - Beperkt

Nadere informatie

rh276a 0 We breiden nu bovenstaand programmafragment uit door assignments toe te voegen aan een nieuwe variabele m, aldus:

rh276a 0 We breiden nu bovenstaand programmafragment uit door assignments toe te voegen aan een nieuwe variabele m, aldus: rh276a 0 Een paar praktische stellinkjes 0 Standaardeindiging stelling (standaardeindiging 0) : Het volgende programmafragment eindigt, heeft als repetitie-invariant 0 n n N en als variante functie N n

Nadere informatie

Software Reverse Engineering. Jacco Krijnen

Software Reverse Engineering. Jacco Krijnen Software Reverse Engineering Jacco Krijnen Opbouw Inleiding en definitie Techniek Assemblers/Disassemblers Compilers/Decompilers Toepassingen Security Overige Softwarebeveiliging Piracy Anti RE technieken

Nadere informatie

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/

Programmeermethoden. Functies vervolg. Walter Kosters. week 5: 1 5 oktober kosterswa/pm/ Programmeermethoden Functies vervolg Walter Kosters week 5: 1 5 oktober 2018 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Files manipuleren 1 Deze void-functie telt niet-lege regels in een file invoer: void

Nadere informatie

Python. Vraag 1: Expressies en types. Vraag 1 b: Types -Ingebouwde functies- Vraag 1 a 3/10/14

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

Nadere informatie

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg) Programmeermethoden NA Week 5: Functies (vervolg) Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Functies Vorige week bekeken we functies: def bereken(a, x): return a * (x

Nadere informatie

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur

Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, uur Aanvullende toets Gameprogrammeren (INFOB1GP) Woensdag 24 december 2014, 13.30-15.30 uur Naam: Studentnummer: Het tentamen bestaat uit 4 opgaven. Opgaven 1 levert 8 punten op, opgave 2 levert 12 punten

Nadere informatie

Programmeren. Cursus Python

Programmeren. Cursus Python Programmeren Cursus Python Cursus Python Omschrijving In deze cursus leren de deelnemers te programmeren in de objectgeoriënteerde programmeertaal Python. Python is een taal die vaak wordt gebruikt voor

Nadere informatie

Verzamelingen, Lijsten, Functioneel Programmeren

Verzamelingen, Lijsten, Functioneel Programmeren Verzamelingen, Lijsten, Functioneel Programmeren Jan van Eijck jve@cwi.nl Stage Ignatiuscollege, 20 mei 2008 Samenvatting In deze lezing gaan we in op de overeenkomsten en verschillen tussen verzamelingen

Nadere informatie

Inhoud. Introductie tot de cursus

Inhoud. Introductie tot de cursus Inhoud Introductie tot de cursus 1 Inleiding 7 2 Voorkennis 7 3 Het cursusmateriaal 7 4 Structuur, symbolen en taalgebruik 8 5 De cursus bestuderen 9 6 Studiebegeleiding 10 7 Huiswerkopgaven 10 8 Het tentamen

Nadere informatie

Inhoud leereenheid 2. Overerving (1) Introductie 59. Leerkern 60. Samenvatting 88. Zelftoets 90. Terugkoppeling 94

Inhoud leereenheid 2. Overerving (1) Introductie 59. Leerkern 60. Samenvatting 88. Zelftoets 90. Terugkoppeling 94 Inhoud leereenheid 2 Overerving (1) Introductie 59 Leerkern 60 1 Specialisatie en generalisatie 60 2 Functionaliteit aan een klasse toevoegen 62 2.1 Toegangsspecificaties 63 2.2 Definitie van subklassen

Nadere informatie

Versieperikelen. Bijlage C

Versieperikelen. Bijlage C Bijlage C Versieperikelen In dit boek beschrijven we PL/SQL aan de hand van Oracle versie 11g. Alle eigenschappen die in dit boek behandeld worden, zijn in deze versie van Oracle (en in nog te verschijnen

Nadere informatie

OEFENINGEN PYTHON REEKS 1

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

Nadere informatie

Inhoud. Introductie tot de cursus

Inhoud. Introductie tot de cursus Inhoud Introductie tot de cursus 1 Plaats en functie van de cursus 7 2 Inhoud van de cursus 8 2.1 Voorkennis 8 2.2 Leerdoelen 8 2.3 Opbouw van de cursus 8 2.4 Leermiddelen 9 3 Aanwijzingen voor het bestuderen

Nadere informatie

Programmeren in Java 3

Programmeren in Java 3 26 september 2007 Deze les korte herhaling vorige les Unified Modelling Language notatie van een class afleiding pointers abstracte classes polymorphisme dubieuze(?) constructies interfaces Meer over class

Nadere informatie

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies

C++ C++ als een verbetering van C. Abstracte datatypen met classes. Constructoren en destructoren. Subklassen. binding van functies C++ C++ als een verbetering van C Abstracte datatypen met classes Constructoren en destructoren Subklassen binding van functies 1 Commentaar In C: /* Deze functie berekent de omtrek van een cirkel */ float

Nadere informatie

Programmeren in C++ Efficiënte zoekfunctie in een boek

Programmeren in C++ Efficiënte zoekfunctie in een boek Examen Software Ontwikkeling I 2e Bachelor Informatica Faculteit Wetenschappen Academiejaar 2010-2011 21 januari, 2011 **BELANGRIJK** 1. Lees eerst de volledige opgave (inclusief de hints/opmerkingen)!

Nadere informatie

Geavanceerde Programmeertechnologie. Prof. dr. Kris Luyten Jo Vermeulen

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

Nadere informatie

HOOFDSTUK 3. Imperatief programmeren. 3.1 Stapsgewijs programmeren. 3.2 If Then Else. Informatie. Voorbeeld. Voorbeeld: toegangsprijs

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

Nadere informatie

Visual Basic.NET. Visual Basic.NET. M. den Besten 0.3 VB. NET

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

Nadere informatie

Programmeren Blok B. Onderwerpen. wstomv/edu/2ip05/ College 8. Tom Verhoeff

Programmeren Blok B. Onderwerpen.   wstomv/edu/2ip05/ College 8. Tom Verhoeff Programmeren Blok B Onderwerpen http://www.win.tue.nl/ wstomv/edu/2ip05/ College 8 Tom Verhoeff Technische Universiteit Eindhoven Faculteit Wiskunde en Informatica Software Engineering & Technology Verdelen

Nadere informatie

PROGRAMMEERTALEN EN -PARADIGMA S. Universiteit Utrecht

PROGRAMMEERTALEN EN -PARADIGMA S. Universiteit Utrecht PROGRAMMEERTALEN EN -PARADIGMA S Jeroen Fokker Informatica-instituut Universiteit Utrecht Willem van der Vegt Chr. Hogeschool Windesheim Zwolle 1 2 INHOUDSOPGAVEInleiding Geschiedenis van programmeertalen

Nadere informatie

Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, uur

Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, uur Naam: Eerste deeltentamen Gameprogrammeren Vrijdag 25 september 2015, 11.00-13.00 uur Studentnummer: Het tentamen bestaat uit 4 opgaven. Elke opgave levert 10 punten op. Je cijfer is het totaal aantal

Nadere informatie

Modelleren en Programmeren

Modelleren en Programmeren Modelleren en Programmeren Jeroen Bransen 25 november 2015 Herhaling Meer herhaling Recursie Mutuele recursie Objecten Herhaling Fibonacci class Fibonacci { public static void fibonaccitot(int bovengrens)

Nadere informatie

Modulewijzer tirprog02/infprg01, programmeren in Java 2

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

Nadere informatie