Pascal uitgediept Recursie
|
|
|
- Sterre de Boer
- 9 jaren geleden
- Aantal bezoeken:
Transcriptie
1 Pascal uitgediept Recursie Herman Post MSX Computer & Club Magazine nummer 72 - december '94 / januari '95 Scanned, ocr ed and converted to PDF by MSXHans, 2001 Recursie is deze keer het onderwerp, maar een aantal lezers verzocht om voorbeelden te geven van het gebruik van de compiler directives; het onderwerp van de vorige aflevering. Fibonacci Voor de niet wiskundige onder ons, Fibonacci was de bijnaam van Leo-nardo van Pisa, een wiskundige die leefde van ~ ~1250. Hij was een van de voorstanders van het Arabische cijferen met decimaal stelsel, in plaats van het abacus rekenen. De wiskundige rij die naar hem genoemd is, bestaat uit een serie getallen, waarbij ieder getal de som is van de twee dat getal voorafgaande getallen. Beginnen we met l, l wordt de reeks: 1, 1, 2(1+1), 3 (1+2), 5(2+3), 8(3+5), 13(5+8), 21(8+13), 34, 55,... In de vorige aflevering van 'Pascal uitgediept' heb ik besproken welke compiler directives er in turbo Pascal beschikbaar zijn. Zoals meestal ging ik hierbij erg diep op alles in en nam aan dat alle gebruikte termen direct duidelijk zouden zijn. Dat dit echter niet zo is, werd mij duidelijk door een aantal vragen die ik over deze materie mocht ontvangen. In deze aflevering zal ik dan ook wat voorbeelden geven met de meest gebruikte compiler directives. Daarnaast zal ik proberen duidelijk te maken wat recursie is en voor de gevorderden uitleggen welke onverwachte moeilijkheden er bij recursie kunnen optreden. I/O error afhandeling De meest gebruikte compiler directive in Pascal is ongetwijfeld de {$I+/ - } Met deze compiler directive kunt u voorkomen, dat uw programma terugkeert naar DOS op het moment dat u een niet bestaande file probeert te lezen. In het voorbeeldprogramma is te zien dat de controle plaatsvindt bij het reset-ten van de file en niet bij het assignen. Als de functie IORESULT de waarde 0 oplevert, dan is de file aanwezig en is deze te openen. Het statement CLOSE levert geen foutmelding op en hoeft niet binnen de controle te vallen. Ik heb in dit geval alleen op de plaats waar het nodig is, deze controle aangezet, zodat u kunt zien waar een foutmelding zou optreden. U kunt natuurlijk de controle boven in uw programma aanzetten en daarna nooit meer uitzetten.
2 PROGRAM IOCheck; VAR fil : TEXT; regel : STRING[255]; ASSIGN(fil,'demo.txt'); {$i-} RESET(fil); {$i+} IF IORESULT<>0 THEN WRITELN('File DEMO.TXT is niet aanwezig!') ELSE REPEAT READLN(fil,regel); WRITELN(regel) UNTIL EOF(fil); CLOSE(fil); Range check De compiler directive {$R+/ -} is vooral handig tijdens het ontwikkelen van een programma om er voor te zorgen dat ingegeven waarden niet buiten een array vallen. Als dit namelijk wel gebeurt, wordt een aantal andere variabelen aangetast. In het ergste geval kan een programma hierop vastlopen. In het voorbeeldprogramma ziet u een demonstratie van dat overschrijven van niet bedoelde variabelen. De beide lijsten worden met FILLCHAR gevuld met een beginwaarde. Lij st_a wordt helemaal met de waarde 55 en lij st_b met de waarde 44 gevuld. Hierna wordt alleen een deel van lij st_b gevuld met de waarde 66. Omdat er echter buiten het bereik van de array wordt geschreven zal het programma een fout-melding op het scherm zetten. Verwijdert u echter de tussenstaande compiler directive, dan zult u zien dat ook in lij st_a de eerste 51 waarden zijn veranderd in 66 en er dus een onverwachte verandering in uw variabelen heeft plaatsgevonden. In dit geval is het als voorbeeld natuurlijk verwacht en is de overschrijving met wel 51 bytes wel erg fors, maar het gebeurt erg gemakkelijk in een eigen programma dat een teller juist één byte te ver doortelt en er daardoor onduidelijke fouten ontstaan. Plaatst u de range-check compiler directive dan voorkomt u dit soort foutjes, doordat ze erg vlug opvallen. PROGRAM RangeCheck; VAR lijst_a : ARRAY[0..99] OF BYTE; lijst_b : ARRAY[0..99] OF BYTE; tel : INTEGER; FILLCHAR(lijst_a,100,55); FILLCHAR(lijst_b,100,44); {$R+} FOR tel:=50 TO 150 DO lijst_b[tel]:=66; FOR tel:=0 TO 99 DO WRITELN(lijst_a[tel],lijst_b[tel]:10); Absolute code Vorige keer vertelde ik bij de ({$A+ / - } directive dat hiermee recursieve routines te schrijven zijn. Ik ging er hierbij vanuit, dat iedereen deze term wel zou begrijpen en
3 ging er daarom niet verder op in. Ten onrechte. Een recursieve routine is een procedure of functie die zichzelf aanroept. Dit is een redelijk ingewikkelde manier van programmeren, maar er zijn vaak erg korte constructies mee te maken. Een beroepsprogrammeur die ik hierover sprak kwam met de mededeling dat recursie eigenlijk alleen geschikt is voor het berekenen van de 'rij van Fibonacci'. Zie kader. Recursie is echter voor veel meer te gebruiken. Het kan worden gebruikt bij het doorlopen van binaire bomen, richtingen zoeken bij een instructie paint, het weghalen van bommen in een spelletje minesweeper, het berekenen van bezier-krommen zie grafische objecten MCCM 71 het berekenen van fractals en natuurlijk bij het berekenen van de termen in de rij van Fibonacci. In het voorbeeld gebruik ik recursie voor het namaken van de BASIC functie BIN$. Een functie die een decimaal of hexade-cimaal getal omzet naar een binaire notatie zonder voorloopnullen. Jacco merkt in zijn artikel over bezier-krommen terecht op dat recursieve routines vaak trager zijn dan nietrecursieve methoden, maar omdat het gaat om de uitleg wil ik het toch recursief verwerken. Voor mensen die niet zo dol zijn op de programmeersport, heb ik de nietrecursieve versie ook vermeld. De truc van recursie zit hem in de waarde die meegegeven wordt aan de functie. Doordat de functie hierop een bewerking uitvoert, en de veranderde waarde opnieuw naar de functie stuurt ontstaat er een zichzelf aanroepende routine. In de routine zit een eindvoorwaarde verwerkt en daardoor komt de machine niet in een eindeloze lus. De inputvaria-bele mag nooit variabel zijn, de reden vindt u onderin bij de uitleg voor gevorderden. De echt recursieve aanroep zit hier in het stukje B in: =Bin (input DIV 2). Hier wordt opgevraagd en toegekend in één stap, waardoor het wat onoverzichtelijk wordt. Om het wat duidelijker te maken daarom hier een procedure die hetzelfde binaire getal op het scherm afdrukt. Hierin zijn de gemaakte stappen wat minder groot, en daarmee is de zaak overzichtelijker. De functie is echter veel bruikbaarder in eigen programma's. {$A-} PROCEDURE PrintBin(input: INTEGER); IF input>l THEN PrintBin(input DIV 2); WRITE(input AND 1) {$A+} Probeert u eens te volgen wat er gebeurt als u deze procedure aanroept met input 2. De eerste keer dat u de procedure binnen komt is input groter dan l, en wordt de procedure opnieuw aangeroepen met '2 DIV 2' (=1). Nu wordt weer gekeken of input groter is dan 1. Dit is niet zo want input=l. Nu wordt de wr ite uitgevoerd die in dit geval een l op het scherm zet. Het einde van de procedure is bereikt en er wordt teruggesprongen naar het punt waar de procedure is aangeroepen. Dit punt ligt in de procedure zelf en daar wordt dan ook weer verdergegaan. Toen we hier echter wegsprongen had input de waarde 2. De opdracht wr ite die er onder staat wordt weer uitgevoerd, en drukt een O af. (2 AND l =0) De procedure roept zichzelf in dit geval maar één keer aan. Als u het getal 256 meegeeft zal het hele proces zich 8 keer afspelen, (meegegeven 256, eerste aanroep 128, tweede aanroep 64, derde aanroep 32, vierde aanroep 16, vijfde aanroep 8, zesde aanroep 4, zevende aanroep 2, achtste aanroep 1) Let u er ook even op dat oneven getallen door de DIV instructie naar
4 beneden worden afgerond. Als u datgene wat hiervoor \ staat nog niet goed begrijpt, bestudeer het geheel dan nog eens goed. Recursie is een lastige bezigheid die u niet in een paar minuten onder de knie hebt. Als u bijvoorbeeld dacht dat de functie en de procedure hetzelfde resultaat voor alle getallen oplevert moet u het getal O maar eens invoeren. U zult zien dat de procedure de nul wel weergeeft, maar de functie niet. Zoek uit waarom... Nee, het zit niet in de vergelijking met 0 of 1. Diepgang Om de naam van deze rubriek eer aan te doen ga ik nu even echt diep. Hebt u het bovenstaande niet begrepen, dan kunt u hier beter ophouden, dit is voor de echte fanatici. Tijdens het werken met recursieve routines maakt Pascal gebruik van een tweede stack. Dit is nodig omdat de lokale variabelen in de routine niet mogen worden overschreven. Dit is dan ook precies wat u met de compiler directive instelt. Deze tweede stack (recursie-stack) bevind zich 1kB ($400) onder de normale CPUstack. Als uw recursieve aanroepen een diepte bereiken van ongeveer 300 aanroepen, dan zal de CPU-stack zich over de recursie-stack gaan schrijven en is vastlopen bijna onvermijdelijk. Er zijn in Pascal, buiten de pointers die in # 66 stonden vermeld, nog drie pointers beschikbaar. Dit zijn HeapPtr, RecurPtr en StackPtr. Door de RecurPtr aan te passen kunt u een grotere stack voor de CPU creëren. De nieuwe plaats wordt berekend met: RecurPtr : =StackPtr -2*Maxdiepte- 512, met Maxdiepte dat natuurlijk staat voor de diepte die uw recursieve routine kan bereiken. De extra 512 bytes zijn nodig als marge voor tussenresultaten bij de evaluatie van expressies. De HeapPtr en de Re -curptr mag u hetzelfde gebruiken als alle andere integers. De StackPtr mag u alleen gebruiken in toekenningen en expressies. In de tekening hieronder kunt u zien hoe het geheugen is ingedeeld tijdens het uitvoeren van een programma. De ruimte die aangegeven staat als LOADER wordt alleen gebruikt als u vanuit het Pascal hoofdmenu met X (execute) een programma opstart. Hier staat dan de code die nodig is om terug te keren naar de Pascal omgeving. Als MemMan is geïnstalleerd, dan staat deze tussen de loader en het systeemgebied in. Let er op dat de Pascal heap een andere is als de MemMan heap. In het spraakgebruik kan hierin vlug verwarring ontstaan. Als Pascal gebruik maakt van zijn RecurPtr of zijn HeapPtr, dan wordt gecontroleerd of deze elkaar overschrijven. Als dit voorkomt, dan treedt er een runtime 255 Heap/stack collision error op. Dit wordt gecontroleerd door te kijken of HeapPtr kleiner is dan RecurPtr. Als u de RecurPtr zelf aanpast, let er dan goed op dat deze groter is dan de HeapPtr. De volgorde is wel altijd: HeapPtr < Recur Ptr < StackPtr. Het is natuurlijk niet nodig om te vertellen dat u deze pointers niet moet aanpassen als ze in gebruik zijn.
5 PROGRAM Recursie; TYPE str16=string[16]; VAR tel : INTEGER; {$A-} {recursieve versie} FUNCTION Bin(waarde : INTEGER) : STR16; BIN:=''; IF waarde>0 THEN Bin:=Bin(waarde DIV 2)+CHR((waarde AND 1)+48) {$A+} {niet recursieve versie} FUNCTION BIN2(waarde : INTEGER) : str16; VAR rij : str16; rij:=''; WHILE waarde>0 DO rij:=chr((waarde and 1)+48)+rij; waarde:=waarde div 2 bin2:=rij FOR tel:=0 TO 20 DO WRITELN(Bin(tel):16,bin2(tel):20)
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
Turbo Pascal deel 3 MSX CLUB MAGAZINE 36. Erik van Bilsen. Scanned, ocr ed and converted to PDF by HansO, 2001
Turbo Pascal deel 3 MSX CLUB MAGAZINE 36 Erik van Bilsen Scanned, ocr ed and converted to PDF by HansO, 2001 In deze aflevering van de cursus gaan we scrollen en wel smooth-scroll in maar liefst vier richtingen.
In deze aflevering van deze serie zal ik proberen een groot gebrek van Turbo Pascal weg te nemen, namelijk het gemis aan Random Access Files.
Turbo Pascal deel 7 Erik van Bilsen MSX Club Magazine 40 Scanned, ocr ed and converted to PDf by HansO, 2001 In deze aflevering van deze serie zal ik proberen een groot gebrek van Turbo Pascal weg te nemen,
HomeOffice to ASCII Teksten converteren
HomeOffice to ASCII Teksten converteren Marco Soijer MCCM 65 Scanned, ocr ed and converted to PDF by HansO, 2001 Dit al enige tijd geleden ingezonden programma zet tekstbestanden, gemaakt met Home Office
Herman Post MSX Computer & Club Magazine nummer 66 - maart / april 1994
Pascal uitgediept Herman Post MSX Computer & Club Magazine nummer 66 - maart / april 1994 Scanned, ocr ed and converted to PDF by HansO, 2001 Deze keer wordt de duistere kant van Pascal wat in het zonnetje
Fractals in Pascal deel 1. Henk van Wulpen, MSX CLUB MAGAZINE 44. Scanned, ocr ed and converted to PDF by HansO, 2001
Fractals in Pascal deel 1 Henk van Wulpen, MSX CLUB MAGAZINE 44 Scanned, ocr ed and converted to PDF by HansO, 2001 Henk van Wulpen schreef over fractals en perste en passant ook het uiterste uit zijn
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
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
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
Dynamic Publisher Twee handige hulpjes voor DP
Dynamic Publisher Twee handige hulpjes voor DP Ron Holst MSX Computer & Club Magazine nummer 89 - zomer 1997 Scanned, ocr ed and converted to PDF by HansO, 2001 Bij het doorspitten van diskettes en directory's
Programmeermethoden. Recursie. week 11: november kosterswa/pm/
Programmeermethoden Recursie week 11: 21 25 november 2016 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Pointers Derde programmeeropgave 1 Het spel Gomoku programmeren we als volgt: week 1: pointerpracticum,
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
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
Turbo Pascal deel 4 MSX CLUB MAGAZINE 37. Erik van 'Bilsen. Scanned, ocr ed and converted to PDF by HansO, 2001
Turbo Pascal deel 4 MSX CLUB MAGAZINE 37 Erik van 'Bilsen Scanned, ocr ed and converted to PDF by HansO, 2001 Muziek en geluid met Turbo Pascal. Dat zijn de ingrediënten voor deze aflevering. De Play-procedure
7 Omzetten van Recursieve naar Iteratieve Algoritmen
7 Omzetten van Recursieve naar Iteratieve Algoritmen Het lijkt mogelijk om elke oplossings-algoritme, die vaak in eerste instantie recursief geformuleerd werd, om te zetten in een iteratieve algoritme
Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen
Disclaimer Het bestand dat voor u ligt, is nog in ontwikkeling. Op verzoek is deze versie digitaal gedeeld. Wij willen de lezer er dan ook op wijzen dat er zowel typografische als inhoudelijke onvolkomenheden
Achtste college algoritmiek. 8 april Dynamisch Programmeren
Achtste college algoritmiek 8 april 2016 Dynamisch Programmeren 1 Werkcollege-opgave Dutch Flag Problem Gegeven een array gevuld met R, W, en B. Reorganiseer dit array zo dat van links naar rechts eerst
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
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
Turbo Pascal uitgebreid: GIOS GRAPHICAL INPUT OUTPUT SYSTEM EXTRA MOGELIJKHEDEN VOOR TURBO PASCAL
Turbo Pascal uitgebreid: GIOS GRAPHICAL INPUT OUTPUT SYSTEM EXTRA MOGELIJKHEDEN VOOR TURBO PASCAL MSX Computer Magazine nummer 51 - januari 1992 Scanned, ocr ed and converted to PDF by HansO, 2001 Voor
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
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
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
Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/
Programmeermethoden Recursie Walter Kosters week 11: 20 24 november 2017 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Vierde programmeeropgave 1 De Grote getallen programmeren we als volgt: week 1: pointerpracticum,
Blog-Het gebruik van variabelen in Excel VBA
Blog-Het gebruik van variabelen in Excel VBA Versie : 2012.01.31.1 (Blog http://www.reinder.eu) Dank voor de leuke reacties op het vorige blog en ook dank voor de kritische noot over het nivo dat de gebruiker
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
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,
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.
MDL-lib maakt Pascal eenvoudiger BIBLIOTHEEK VOOR PASCAL PROGRAMMEURS
MDL-lib maakt Pascal eenvoudiger BIBLIOTHEEK VOOR PASCAL PROGRAMMEURS MSX Computer Magazine nummer 45 - maart 1991 Scanned, ocr ed and converted to PDF by HansO, 2001 Het programmeren in Turbo Pascal is
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
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,
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
2.0 Voorkennis. Rekenregels machten: 5) a 0 = 1. p p q p q a p q q. p q pq p p p. Willem-Jan van der Zanden
2.0 Voorkennis Voorbeeld: (a + b) 2 = a 2 + 2ab + b 2 (a + b) 3 = (a +b)(a2 + 2ab + b2) = a 3 + 2a 2 b + ab 2 + a 2 b +2ab 2 + b 3 = a 3 + 3a 2 b + 3ab 2 + b 3 Rekenregels machten: p p q pq a pq 1) a a
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
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
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
Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur
Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, 13.00-15.00 uur 1. De situatie die ontstaat door class A : B C D; kan beschreven worden door (a) B is een A (b)
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
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
Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.
een symbolische naam voor een object. Variabelen Constanten Variabelen Expressies naam : geeft de plaats in het geheugen aan waarde : de inhoud van het object identifier : een rij van letters en/of cijfers
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
Lab Webdesign: Javascript 25 februari 2008
H4: FUNCTIES We zullen in dit hoofdstuk zien hoe we functies moeten maken, aanroepen, argumenten doorgeven en waarden retourneren. Ook zullen we het hebben over het begrip "recursie", en laten zien hoe
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
extra oefening algoritmiek - antwoorden
extra oefening algoritmiek - antwoorden opgave "Formule 1" Maak een programma dat de gebruiker drie getal A, B en C in laat voeren. De gebruiker zorgt ervoor dat er positieve gehele getallen worden ingevoerd.
Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?
Inhoud Computervaardigheden Hoofdstuk 4 Scripting (Let op: dit is enkel voor studenten Biologie.) Dit hoofdstuk bekijkt heel kort de basis van scripting. - Opstellen van functies. - Conditionele code.
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)
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
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
[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.
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
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
De Floppy Disk Drive (5)
De Floppy Disk Drive (5) Peter van Overbeek PTC Print Scanned, ocr ed and converted to PDf by HansO, 2001 Elke sector op elk track van een floppy disk wordt voorafgegaan door een sectoradres, zagen we
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
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
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
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
RAAD HET GETAL. Hoofdstuk 4. Het spelletje 'Raad het getal' Voorbeeld van uitvoering van 'Raad het getal' Hoofdstuk 4 Raad het getal 21
Hoofdstuk 4 Raad het getal 21 Hoofdstuk 4 RAAD HET GETAL In dit hoofdstuk behandelen we: import-statements Modules Argumenten while-statements Voorwaarden Blokken Boole-waarden Vergelijkingsoperatoren
Examen Datastructuren en Algoritmen II
Tweede bachelor Informatica Academiejaar 2014 2015, eerste zittijd Examen Datastructuren en Algoritmen II Naam :.............................................................................. Lees de hele
Faculteit Economie en Bedrijfskunde
Faculteit Economie en Bedrijfskunde Op dit voorblad vindt u belangrijke informatie omtrent het tentamen. Voordat u met het tentamen t: lees dit voorblad! Tentamen: V&O IV: Programmeren Tentamendatum &
VBA voor doe het Zelvers deel 22. Handleiding van Helpmij.nl. Auteur: leofact
VBA voor doe het Zelvers deel 22 Handleiding van Helpmij.nl Auteur: leofact december 2015 Vorige aflevering In de vorige aflevering werden de regular expressions behandeld. Voor VBA zijn deze beschikbaar
Hoofdstuk 6: Zelf functies maken
Programmeren in Microsoft Visual Basic 2010 Express, lessenserie voor het voortgezet onderwijs HAVO/VWO David Lans, Emmauscollege, Vespucci College, Marnix Gymnasium Rotterdam, december 2011 Hoofdstuk
Proeftentamen in1211 Computersystemen I (NB de onderstreepte opgaven zijn geschikt voor de tussentoets)
TECHNISCHE UNIVERSITEIT DELFT Faculteit Informatietechnologie en Systemen Afdeling ISA Basiseenheid PGS Proeftentamen in1211 Computersystemen I (NB de onderstreepte opgaven zijn geschikt voor de tussentoets)
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,
Programmeermethoden NA. Week 3: Controlestructuren
Programmeermethoden NA Week 3: Controlestructuren Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ Bij ons leer je de wereld kennen 1 Inleveren opdracht 1 Lever digitaal sxxxxxxx-syyyyyyy-opdr1.py
Geheugen onder DOS2 MSX turbor
Geheugen onder DOS2 MSX turbor MSX Computer & Club Magazine nummer 77 - juli / augustus 1995 Alex Wulms Scanned, ocr ed and converted to PDF by HansO, 2001 Deze keer maak ik een uitstapje naar het aansturen
BLOK 3 HOOFDSTUK 8 PARAGRAAF 2
BLOK 3 HOOFDSTUK 8 PARAGRAAF 2 4-BITS DEMOCOMPUTER IN 1000 STO R0 0000 opdracht tot opslaan 0000 waar moet het worden opgeslagen IN 1000 LD R1 0011 opdracht tot kopiëren 0000 welk adres moet gekopieerd
Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2
Controle structuren De algemene vorm: 1 bloks door middel van indentatie Keuze Herhaling if expressie :...... In de volgende vorm is het else gedeelte weggelaten: if expressie :... Het if keuze- of conditioneel
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
Computerarchitectuur en netwerken. Memory management Assembler programmering
Computerarchitectuur en netwerken 2 Memory management Assembler programmering Lennart Herlaar 10 september 2018 Inhoud 1 Protectie: Hoe het O.S. programma s tegen elkaar kan beschermen modes memory management
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.
Tutorial 1, Delphi: Geldspraak
Tutorial 1, Delphi: Geldspraak Versie Datum Auteurs Opmerkingen 1 25-09-2001 Kees Hemerik (code) Gebaseerd op Delphi 5 Enterprise. Roel Vliegen (tekst) 2 17-03-2005 Kees Hemerik Aanpassingen: Delphi 7,
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
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
Zelftest Programmeren in COBOL - deel I
Zelftest Programmeren in CBL - deel I Document: n1290test.fm 05/01/2016 ABIS Training & Consulting P.. Box 220 B-3000 Leuven Belgium TRAINING & CNSULTING INLEIDING BIJ DE ZELFTEST PRGRAMMEREN IN CBL -
compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken
compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken - belangrijkste punten: - ontleden van de programmatekst - bijhouden van de datastructuren Data Structuren en Algoritmen
Bij elkaar behorende instructies die een probleem oplossen of een taak uitvoeren.
1 Programma Structuur Diagram: Een gestructureerd programma is een programma dat we gemakkelijk kunnen begrijpen. Dit kunnen we bereiken door het programma op te bouwen uit drie programmacomponenten: Als
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
Datastructuren: stapels, rijen en binaire bomen
Programmeermethoden Datastructuren: stapels, rijen en binaire bomen week 12: 23 27 november 2015 www.liacs.leidenuniv.nl/ kosterswa/pm/ 1 Inleiding In de informatica worden Abstracte DataTypen (ADT s)
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
Zelftest Programmeren in PL/I
Zelftest Programmeren in PL/I Document: n0830test.fm 26/03/2012 ABIS Training & Consulting P.. Box 220 B-3000 Leuven Belgium TRAINING & CNSULTING INLEIDING BIJ DE ZELFTEST PRGRAMMEREN IN PL/I m de voorkennis
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
Numerieke benadering van vierkantwortels
HP Prime Grafische Rekenmachine Numerieke benadering van vierkantwortels Doel: De waarde van een vierkantswortel met een recursieve rij benaderen, het schrijven van een klein programma. Sleutelwoorden:
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
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
Dynamiek met VO-Script
Dynamiek met VO-Script Door Bert Dingemans DLA Ontwerp & Software [email protected] Inleiding Op de SDGN nieuwsgroep voor Visual Objects ontstond laatst een draad van berichten over de nieuwe libraries
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
Bij elkaar behorende instructies die een probleem oplossen of een taak uitvoeren.
Programma Structuur Diagram: Een gestructureerd programma is een programma dat we gemakkelijk kunnen begrijpen. Dit kunnen we bereiken door het programma op te bouwen uit drie programmacomponenten: Als
