5.7.1 Priemgetallen Driehoek van Pascal Matrix-product Begrippen... 42

Maat: px
Weergave met pagina beginnen:

Download "5.7.1 Priemgetallen Driehoek van Pascal Matrix-product Begrippen... 42"

Transcriptie

1 Inhoudsopgave 1 Algoritmes en computerprogramma s Basiselementen van een computer Algoritmes Som van twee getallen Een eerste poging Een script versie Omzetting mijl naar kilometer Berekening van de grootste gemene deler Python omgeving Begrippen Numerieke data en expressies Constanten Variabelen Expressies Rekenkundige expressies Logische expressies Toekenningsstatements Prioriteit en associativiteit Enkele voorgedefinieerde functies Begrippen Controle structuren Keuze statements Het if statement Iteratie statements Het while statement Het for statement Het break en continue statement Nog enkele voorbeelden Begrippen Functies van eigen maak Waarom zelfgedefinieerde functies Functies zonder parameters en terugkeerwaarde Functies met parameters maar geen terugkeerwaarde Functies met een functie-(return)-waarde Voorbeelden van gebruik van functies Geheugenklassen Een functie met meerdere resultaten Een probleem in deelproblemen opsplitsen Leesoefening Begrippen Arrays Waarom arrays Een lijst Numeric Python Een-dimensionale arrays Functies met arrays als argumenten Meer-dimensionale arrays Uitgewerkte voorbeelden I

2 5.7.1 Priemgetallen Driehoek van Pascal Matrix-product Begrippen Interne voorstelling, types en conversies Voorstelling van gegevens: bits en bytes Binaire en andere talstelsels Gehele getallen Reële getallen Elementaire types Nauwkeurigheid Type conversie Begrippen Niet-numerieke data-types Interne voorstelling van tekens Strings Constanten Variabelen Bewerkingen Lijsten van strings Operaties met bits Begrippen Samengestelde datatypes Sequenties en mappings Tuple Definitie Operaties Toekenning en terugkeerwaarde Named tuple Lijst Definitie Operaties en bewerkingen Lijsten en strings Objecten en waarden Lijsten en tuples Dictionary Definitie Bewerkingen en methodes Dictionaries en tuples Begrippen Persistentie via bestanden Inleiding Bestanden Lezen en schrijven van strings Opvangen van excepties Lezen en schrijven van andere waarden Programma met argumenten Begrippen II

3 10 Voorbeelden Sorteren Binair zoeken Een adressenbestand Ontwerpen van programma s Een overzicht van de operatoren De keywords van de taal Leesoefening Ontwerp Structuur van een programma III

4 1 Algoritmes en computerprogramma s 1.1 Basiselementen van een computer Een computer is opgebouwd uit een heleboel verschillende onderdelen. Een schematisch diagram wordt getoond in de volgende figuur. secundair geheugen CD-ROM hard disk USB-stick tape computer box CPU RAM in/uitvoer apparatuur scanner toetsenbord beeldscherm muis printer Er zijn drie belangrijke elementen: het secundair geheugen voor grote hoeveelheden gegevens op te slaan; de computer box samengesteld uit de Central Processing Unit (CPU) en werkgeheugen of Random Access Memory (RAM); de in/uitvoer (I/O) apparatuur voor de interactie tussen de gebruiker en de computer. Deze fysische onderdelen van de machine noemt men de hardware. Software zijn verzamelingen instructies die er voor zorgen dat de hardware operaties en berekeningen uitvoert. Software wordt geschreven in een programmeertaal. Zo n programmeertaal moet een aantal elementen bevatten om de processor berekeningen te laten uitvoeren; om informatie efficiënt beschikbaar te hebben in het werkgeheugen; om de communicatie te verzekeren met de gebruiker via toetsenbord, muis, beeldscherm,...; om grote hoeveelheden gegevens te kunnen lezen van secundaire geheugens en om resultaten te kunnen schrijven naar die secundaire geheugens voor latere raadpleging. 1.2 Algoritmes Computers worden gebruikt om problemen op te lossen. Om tot een oplossing te komen, moeten berekeningen uitgevoerd worden: de som van een aantal getallen; een tabel met x-waarden en bijhorende functiewaarden; een nulpunt van een functie; de bepaalde integraal van een functie tussen twee grenzen; de oplossing van een stelsel lineaire vergelijkingen;... 1

5 Sommige van deze berekeningen zijn heel eenvoudig, voor andere bestaat de berekening uit een heleboel stappen. Een berekening kan beschreven worden in de vorm van een algoritme. Een algoritme is een duidelijke en preciese procedure (een opeenvolging van goed-gedefinieerde stappen) om een gegeven probleem op te lossen. Een voorbeeld is het algoritme van Gauss voor het oplossen van een stelsel lineaire vergelijkingen. Voor heel veel problemen bestaan (nog) geen algoritmes die het probleem exact oplossen. In die gevallen wordt dikwijls een beroep gedaan op een procedure die een benaderende oplossing genereert, bijvoorbeeld de trapeziumregel voor het berekenen van een bepaalde integraal. Niettegenstaande een algoritme een precieze beschrijving van de oplossingsprocedure is, is dit meestal niet door een computer interpreteerbaar. Het algoritme moet omgezet worden in een programma. Een programma is geschreven in een programmeertaal. Een computerprogramma is een lijst van instructies welke door de processor interpreteerbaar en uitvoerbaar zijn. Een programma kan ook gezien worden als een verzameling van data en routines om deze data te verwerken. Deze routines (procedures of functies) worden neergeschreven met behulp van instructies. De processor voert deze instructies sequentiëel (één na één) uit. Een computerprogramma moet dus (in het algemeen) zoals een tekst gelezen worden: lijn per lijn van boven naar onder. Elke lijn bevat een aantal instructies voor de processor. Een programmeertaal bevat een aantal speciale keywords om aan te geven dat een aantal instructies in herhaling moeten uitgevoerd worden of dat een beslissing moet gemaakt worden omtrent welke set instructies moeten uitgevoerd worden. Naast een sequentiële uitvoering van een programma is er dus de mogelijkheid voor een lus : de mogelijkheid om een verzameling instructies een aantal maal na elkaar uit te voeren; keuze : de mogelijkheid om te beslissen welke verzameling instructies uitgevoerd worden. Begin instructie 1 instructie 2 instructie 3. instructie i 1 instructie i. instructie n Einde sequentie Begin instructie 1 while (voorwaarde) instructie 2 instructie 3 instructie 4 instructie 5. instructie n Einde herhaling Begin instructie 1 if (voorwaarde) instructie 2 else instructie 3 instructie 4. instructie n Einde keuze Deze drie elementen, sequentie, herhaling (iteratie) en keuze, bepalen de controle stroom doorheen het programma. 1.3 Som van twee getallen Een eerste poging De som van twee getallen maken is vrij eenvoudig: In de CPU is namelijk een elementaire machine-instructie aanwezig om een optelling uit te voeren. Om het resultaat van deze bewerking te zien is een gereedschap nodig dat deze bewerking leest, interpreteert en uitvoert en dan het resultaat toont. 2

6 Python kan hiervoor gebruikt worden, door deze in interactieve mode te starten. Afhankelijk van de gebruikte omgeving kan dit gebeuren door aan de shell prompt python in te tikken of door op het gepaste icoontje op de desktop te klikken: Python ( r265 :79063, Jul , 11:46:13) [GCC [ gcc 4 5 branch revision ]] on linux2 Type help, copyright, c r e d i ts or l i c e n s e for more information. >>> De chevron, >>> is de prompt en geeft aan dat de Python interpreter klaar is om invoer in te lezen. >>> >>> Nadat , gevolgd door een enter (return) ingetikt is, berekent de Python interpreter het resultaat en toont dit. Op deze manier kan de Python interpreter als rekenmachine gebruikt worden. Deze interactieve mode laat ook toe om korte stukken programma code in te tikken en uit te voeren: >>> a = >>> b = 9852 >>> a+b >>> a b 3553 >>> In de berekening worden geen concrete gehele getallen vermeld, maar variabelen. Zo n variabele is een symbolische naam van een (getal)waarde of meer algemeen van een object. Deze waarde wordt in een geheugenplaats in het centraal geheugen van de computer geplaatst. Deze naam aan een waarde toewijzen gebeurt met een toekenning: a = Deze waarde (23405) heeft een type. Het type geeft aan hoe groot de geheugenplaats moet zijn, en dus hoeveel bytes voor de desbetreffende waarde moet voorzien worden. In dit voorbeeld wordt een geheel getal gebruikt, men spreekt van het type int. Het type van een waarde bepaalt ook welke operaties (bewerkingen) toegelaten zijn. Op waarden van het type int kunnen de verschillende rekenkundige bewerkingen uitgevoerd worden: +, -, *, /, % en **. Voor de deling zijn twee operaties voorzien, namelijk voor de berekening van het quotiënt en de rest: 34 / 6 --> 5 34 % 6 --> 4 Naast waarden van type int zijn ook float waarden beschikbaar waarmee echte delingen kunnen gebeuren: 34.0 / > % > Een script versie Python kan ook in script versie gebruikt worden. Het programma wordt ingetikt in een bestand. De suffix van de naam van dit bestand is.py. 3

7 1 # som1.py: eerste poging De eerste lijn geeft uitleg over het programma dat volgt. Dit is voor de (menselijke) lezer van het programma bestemd en wordt commentaar genoemd. Alles wat zich achter een # bevindt, is commentaar en heeft geen betekenis voor de computer. Daarna volgen de instructies die door de computer moeten uitgevoerd worden. In plaats van instructie wordt in het computer-jargon statement gebruikt. In dit geval gaat het over een optelling. Het einde van een statement wordt aangegeven door het einde van de lijn. Bij het starten van python wordt dit bestand als argument meegegeven: % python som1.py % Er is echter geen resultaat te zien, omdat er geen visueel effect is van een rekenkundige expressie in de script mode van de Python interpreter. Als programma (of script) is bovenstaande vrij nutteloos. De computer heeft wel de som van twee getallen berekend, maar het resultaat zou moeten zichtbaar gemaakt worden. Daarnaast kan het programma maar de som van twee specifieke getallen berekenen. Wanneer de som van twee andere getallen moet berekend worden, moet het programma aangepast worden. Om een volwaardig programma te maken, zijn variabelen nodig en communicatie met de gebruiker via toetsenbord en beeldscherm. # som2.py: een meer zinvolle poging 2 def main ( ) : invoer = raw input ( Geef getal 1: ) 4 a = int ( invoer ) invoer = raw input ( Geef getal 2: ) 6 b = int ( invoer ) som = a + b 8 print som # startoproep 10 main () Met behulp van def wordt een functie gedefinieerd. Afspraak is dat elk python programma minstens de functie main bevat. De twee haakjes (()) geven aan dat het vorige woord de naam van een functie is. Na : volgt de definitie van de functie: een aantal statements die in deze functie moeten uitgevoerd worden. Deze eerste lijn wordt de hoofding van een functie genoemd. Het blok met statements is het lichaam van de functie; deze statements zijn geïndenteerd. De uitvoering van deze functie wordt gestart door de laatste lijn van het programma, dit is de oproep van de functie. In de berekening worden geen concrete gehele getallen vermeld, maar variabelen. Een variabele is een symbolische naam van een (getal)waarde in het werkgeheugen. De combinatie van zo n geheugenplaats met een waarde wordt object genoemd. Het statement waarin de berekening gebeurt (som van twee getallen) werkt met variabelen: neem de inhoud van variabele a (waarde van het object) ; tel hierbij de inhoud van variabele b (waarde van het object) op; geef het object met resultaatwaarde de naam som (variabele). Het = teken is het symbool voor de operatie toekenning. Langs de rechterkant van dit symbool worden de waarden van objecten (in dit geval numerieke waarden) gebruikt; langs de linkerkant 4

8 staat een naam (variabele) die vanaf dan het object met daarin de waarde van het resultaat van de bewerking aanduidt. Wanneer een variabele langs de rechterkant van een = gebruikt wordt, moet deze een waarde hebben. Dit kan bijvoorbeeld gebeuren door deze in te lezen van het toetsenbord. De communicatie met de gebruiker is een vrij moeilijke taak. Maar hiervoor zijn standaard elementen voorzien, raw_input voor invoer van het toetsenbord en print voor uitvoer naar het beeldscherm. Met behulp van raw_input kan wat ingetikt wordt op een toetsenbord, ingelezen worden in een waarde. Wanneer deze functie opgeroepen wordt, wacht de Python interpreter totdat de gebruiker iets intikt en afsluit met enter (return). De ingetikte tekens worden als object teruggeven uit de functie. Aan dit object wordt een naam toegewezen door middel van de = operator. Deze variabele bevat nu een opeenvolging van tekens die door de gebruiker op het toetsenbord ingetikt zijn (zonder de enter). Zo n opeenvolging van tekens is van type string. Probleem hiermee is dat op strings geen rekenkundige bewerkingen kunnen gebruikt worden. Met behulp van de functie int kan de ingegeven string omgezet worden in een geheel getal. Aan dit resulterend object wordt een naam toegewezen door middel van de = operator. Om een gebruiksvriendelijk programma te hebben, moet natuurlijk aan de gebruiker aangegeven worden wat er door het programma verwacht wordt dat er ingetikt wordt. Deze prompt kan als argument bij input meegegeven worden. Met behulp van hetprint statement wordt de waarde van de variabele die bij print vermeld wordt, op het scherm getoond. In plaats van alleen het resultaat te tonen, kunnen ook de twee ingegeven getallen getoond worden, samen met de uitgevoerde bewerking: print a, +, b, >, som Het print statement heeft nu verschillende argumenten, gescheiden dooor komma s. Van de argumenten a, b en som wordt de waarde genomen en deze wordt getoond op het scherm. De argumenten die beginnen en eindigen met een quote ( ) zijn strings: deze worden zonder meer op het scherm getoond. Het resultaat wordt nu: > Merk op dat print zelf zorgt voor gepaste spaties tussen de verschillende elementen. Het print statement kan vervangen worden door een aantal print statements: print a, print +, b, print >, som De komma op het einde van eenprint geeft aan dat nog niet naar een volgende lijn mag overgegaan worden. Omdat in de strings extra spaties opgenomen zijn, worden in het resultaat ook deze spaties getoond: > Omzetting mijl naar kilometer Het algoritme om een aantal mijl om te zetten in een aantal kilometers is vrij eenvoudig: vermenigvuldig het aantal mijl met de factor Opgave. Schrijf een programma dat twee afstanden in mijl inleest en het verschil tussen deze afstanden in aantal kilometer afdrukt. 1 # mijl2km.py: omzetting van mijl naar km def main ( ) : 3 invoer = raw input ( Geef twee afstanden in mijl : ) mijl1, mijl2 = invoer. s p l i t () 5 afstand1 = f l o at ( mijl1 ) 5

9 afstand2 = f l o at ( mijl2 ) 7 km = ( afstand1 afstand2 ) print v e r s c h i l tussen, afstand1, en, afstand2, i s, km, kilometer 9 # startoproep main () De twee afstanden worden op één lijn achter elkaar ingevoerd gescheiden door een spatie. Het resultaat van raw_input is een string bestaande uit cijfers, punten en een spatie. Door middel van de split methode kan deze string opgesplitst worden in twee strings waarbij de spatie als scheidingsteken gebruikt wordt. Elke afstand die als string ingelezen wordt, moet omgezet worden naar een reëel getal. Dit kan door de functie float. In dit programma wordt een constante gebruikt, van type float (reële getallen). Op waarden van het type float kunnen de verschillende rekenkundige bewerkingen uitgevoerd worden: +, -, *, / en ** (en ook de minder zinvolle %). 1.5 Berekening van de grootste gemene deler Opgave. Lees twee gehele getallen en bereken de grootste gemene deler (ggd) van deze twee getallen. In dit geval (ggd), kan beroep gedaan worden op het algoritme van Euclides: 1. Noem de twee getallen x en y met x < y. 2. Bereken de rest r bij deling van y door x. 3. Vervang y door x, en x door r. 4. Herhaal stap 2 en 3 totdat r nul is. 5. De grootste gemene deler is gelijk aan y. Voorbeeld: ggd van en de rest van de deling 34017/16966 is gelijk aan 85 de rest van de deling 16966/85 is gelijk aan 51 de rest van de deling 85/51 is gelijk aan 34 de rest van de deling 51/34 is gelijk aan 17 de rest van de deling 34/17 is gelijk aan 0 de grootste gemene deler van en is gelijk aan 17. Om dit algoritme door een computer te laten uitvoeren, moet dit omgezet worden naar een computerprogramma. # ggd. py: bereken grootste gemene deler van twee getallen 2 def main ( ) : invoer = raw input ( Geef eerste getal : ) 4 a = int ( invoer ) invoer = raw input ( Geef tweede getal : ) 6 b = int ( invoer ) if a > b : 8 x = b y = a 10 else : x = a 12 y = b while x!= 0 : 14 r = y % x y = x 6

10 16 x = r print ggd(, a,,, b, ) i s, y 18 # startoproep main () Naast statements met toekenningen en in/uitvoer functies, bevat dit programma twee nieuwe statements: een if en een while statement. Dit zijn voorbeelden van controle-statements om de sequentiële uitvoering van het programma om te kunnen buigen. Het if statement (keuze) wordt gebruikt om de getalwaarden van de twee ingelezen getallen aan de variabelenxen y toe te wijzen zodat de waarde van object met naam x kleiner is dan de waarde van object met naam y (x < y). Het while statement (herhaling) is een mogelijke vertaling van de Herhaal stap in het algoritme van Euclides. Deze twee statements zijn compound of blok statements omdat onderdelen ervan zelf statements zijn. De vorm waarin het programma ingetikt wordt, is bij Python vastgelegd: de statements van het hoofdblok moeten in de eerste kolom beginnen. Net zoals bij def moeten statements die horen bij een if en een while geïndenteerd worden: hiermee wordt het begin en het einde van een blok aangegeven. Dit bevordert ook de leesbaarheid van het gehele prgramma. In de beschrijving van het algoritme gebeurt de test of de rest gelijk is aan 0 op het einde. Deze test gebeurt in het programma in het begin. In het programma is deze aanpassing nodig voor een goede afloop van het programma wanneer één van de ingelezen getallen gelijk is aan nul (ggd(0,1) = 1!). 1.6 Python omgeving In het vorige is aangegeven dat Python zowel in interactieve mode als in script mode kan gebruikt worden. In de volgende hoofdstukken zullen de verschillende concepten meestal geïllustreerd worden met behulp van Python scripts. Sporadisch zal de interactieve mode gebruikt worden om bepaalde effecten te illustreren. Dit wordt aangegeven door de transcriptie te plaatsen in een kader met afgeronde hoeken. In interactieve mode kunnen volledige scripts uitgevoerd worden door middel van de execfile functie, met de naam van het script als argument. >>> e x e c f i l e ( mijl2km. py ) Geef twee afstanden in mijl : v e r s c h i l tussen 3.0 en 2.0 is kilometer 1.7 Begrippen Een algoritme. Interactieve mode van een interpreter Een programma: interpretatie en uitvoering. Objecten: waarden (met type) en symbolische namen (variabelen). Rekenkundige en logische expressies. De main functie. Statements: toekenning, invoerfunctie (raw_input), uitvoerstatement (print). 7

11 2 Numerieke data en expressies 2.1 Constanten In het werkgeheugen kunnen volgende soorten data voorgesteld worden. Deze data moet door de CPU kunnen verwerkt worden. Integers : een exacte voorstelling van gehele getallen over een beperkt bereik (eventuele overflow/underflow problemen). Floating point numbers : een niet-exacte voorstelling van reële getallen omdat een eindige binaire string niet om het even welk reëel getal kan voorstellen; het bereik is veel groter dan bij integers. Strings : tekens tussen quotes, bijv. appel, zie een volgend hoofdstuk. Voorbeelden: gehele constanten reële constanten 123 (decimaal) (octaal).5 0x123 (hexidecimaal) 5. 5e4 Daarnaast zijn er ook de logische constanten True (voorgesteld door een niet-nul getal) en False (voorgesteld door een nul) beschikbaar. 2.2 Variabelen Een variabele is een symbolische naam voor een object of een geheugenplaats. Zo n naam kan ook worden aangeduid met de term identifier. Het is een rij letters en/of cijfers; tevens mag de underscore (_) in de naam voorkomen. Een naam mag niet beginnen met een cijfer. Hoofdletters en kleine letters worden als verschillend beschouwd. Er is geen beperking op de lengte, maar in sommige implementaties zijn bijvoorbeeld alleen de eerste acht tekens significant; de overige worden dan eenvoudig genegeerd (dit_is_een_variabele_voor_de_som). Een naam wordt door de programmeur gekozen. In de mate van het mogelijke moet de naam betekenisvol zijn: de naam moet iets vertellen over de functie van het object in het programma. Een variabele wordt niet gedeclareerd als zijnde van een bepaald type. Maar op het moment dat aan een object een naam toegekend wordt, is het type van de variabele vastgelegd op basis van het type van het object. Dit type bepaalt hoeveel bytes in het werkgeheugen nodig zijn voor zo n object. Het geeft ook aan welke operatoren toegelaten zijn op het object. int 8 bytes gehele getallen float 8 bytes reële getallen In volgende hoofdstukken zullen nog andere types aan bod komen. 1 # varid. py: variabelen: geheel getal en reeel getal def main ( ) : 3 i = 2 j = 5 / 3 5 f f = 5.0 / 3 print i =, i 7 print j =, j print f f =, f f 9 # startoproep main () 8

12 De output van dit programma is: i = 2 j = 1 ff = Merk op dat de deling van twee gehele getallen (variabele j) het geheeltallig quotiënt oplevert. 2.3 Expressies De algemene vorm van een eenvoudige expressie is: operand_1 operator operand_2 zoals bijvoorbeeld a + b Rekenkundige expressies Rekenkundige operatoren: + optelling - aftrekking * vermenigvuldiging / deling het quotiënt % modulus de rest bij geheeltallige deling ** machtsverheffing De operatoren *, / en % hebben een hogere prioriteit dan + en -. Machtsverheffing heeft nog een hogere prioriteit. Naast deze binaire operatoren kan ook het unaire plusteken (+) en het unaire minteken (-) vermeld worden, met een prioriteit net lager dan **. >>> >>> Wanneer beide operands van hetzelfde type zijn, is het resultaat van de expressie ook van dat type: >>> 1 / 2 0 >>> 1.0 / >>> +5 % 3 2 Wanneer één operand int is en de ander float, wordt de int operand omgezet naar een float en dan wordt de operator uitgevoerd. Het resultaat van de expressie is float: >>> 1 / >>> 1.0 /

13 2.3.2 Logische expressies Een logische expressie heeft twee mogelijke uitkomsten: waar of True : alle niet nul-waarden; onwaar of False : een nul-waarde In een eenvoudige logische expressie worden de waarden van twee objecten (of expressies) met elkaar vergeleken, met behulp van relationele operatoren. Om eenvoudige logische expressies te combineren, gebruikt men logische operatoren: relationeel logisch < kleiner dan not logische niet (unair) <= kleiner dan of gelijk aan and logische en > groter dan or logische of >= groter dan of gelijk aan == gelijk aan!= verschillend van Voorbeelden: >>> x = 10.0 >>> x <= 40.0 # heeft x een waarde kleiner dan of gelijk aan 40.0 True >>> 2.0 < x and x < 7.5 # is waarde van x gelegen tussen 2.0 en 7.5 False In tegenstelling tot vele andere programmeertalen kunnen relationele operatoren geketend worden: de expressie 2.0 < x < 7.5 heeft dus dezelfde semantische betekenis als de meer complexe 2.0 < x and x < 7.5. Merk ook het verschil op tussen = (toekenning) en == (test op gelijkheid). x = 5 x == 5 # toekenning: geeft aan object met waarde 5 een naam # test: alleen waar als het object met naam x # als inhoud de waarde 5 heeft Combinatie van eenvoudige logische expressies: exp1 and exp2 is waar wanneer zowel exp1 als exp2 waar is; exp1 or exp2 is waar wanneer één van beide (exp1 en/of exp2) waar is; not exp1 is waar wanneer exp1 niet waar is. Dit wordt meestal weergegeven in waarheidstabellen: False True False False False True False True e1 and e2 False True False False True True True True e1 or e2 False True True False not e1 Kortsluitingsprincipe: bij een logische operator wordt de tweede operand niet geëvalueerd tenzij dit nodig is. Dus, een operand na and of or wordt niet meer berekend als de operand ervoor al uitsluitsel over het resultaat geeft. (De waarde van de tweede operand is van geen belang.) Toepassing: n!=0 and t/n>1 n==0 or t/n>1 False and... # heeft de waarde false (intern 0) True or... # heeft de waarde true (intern 1) # wanneer n gelijk is aan nul wordt t/n niet berekend # wanneer n gelijk is aan nul wordt t/n niet berekend In tegenstelling tot sommige andere talen, geven deze expressies geen Run time error. 10

14 2.3.3 Toekenningsstatements Het resultaat van een expressie wordt meestal toegekend aan een variabele. Hiervoor wordt de toekenningsteken (=) gebruikt. x = y + z Eerst wordt de waarde van het rechterdeel, de expressie y+z, berekend: hiervoor worden de waarden van de objecten met namen y en z gebruikt. Het resulterende object wordt dan een naam toegewezen, aangegeven door het linkerdeel, de variabele x. Langs de linkerkant van het toekenningsteken moet steeds een naam staan: namelijk de naam die vanaf dan kan gebruikt worden om het object aan te spreken. (Langs links kan dus geen constante, bijvoorbeeld 6, staan want een constante kan niet als naam gebruikt worden van een object.) Langs de rechterkant van het = teken worden de waarden van de verschillende objecten gebruikt. Met deze waarden wordt een resultaat berekend. Ook aan het resultaat van een logische expressie kan een naam toegekend worden: 1 # logex. py: logische expressies def main ( ) : 3 invoer = raw input ( Geef eerste getal : ) a = int ( invoer ) 5 invoer = raw input ( Geef tweede getal : ) b = int ( invoer ) 7 r = a<=0 or b>=10 print r (, a,,, b, ) i s, r 9 r = a>0 and b<10 print r (, a,,, b, ) i s, r 11 # startoproep main () Het is mogelijk om de waarde van het rechterdeel aan meerdere variabelen toe te wijzen: a = x = y + z De waarde van y+z wordt berekend en hieraan wordt zowel variabele x als variabele a toegewezen. Langs de linkerkant van het = kunnen ook meerdere variabelen gescheiden door komma s staan: a, b = 3, 9 Langs de rechterkant moeten dan evenveel expressies (in het voorbeeld constanten) gescheiden door komma s staan. De toekenningen gebeuren opeenvolgend: a wordt de naam van het object met waarde 3 en b de naam van het object met waarde 9. Wanneer het resultaat van een operatie op een variabele terug toegewezen wordt aan deze variabele, kan dit korter geschreven worden. Bij deze operatoren wordt een rekenbewerking gecombineerd met een toekenning. Ze worden ook toekenningsoperatoren genoemd. i += 4 i = i + 4 z -= x z = z - x k *= j k = k * j d /= 3 d = d / 3 z %= y z = z % y z **= y z = z ** y Bijvoorbeeld, bij i += 4 wordt eerst de waarde van het object met naam i bepaald. Bij deze waarde wordt 4 bijgeteld; het resulterende object (met de nieuw berekende waarde) krijgt terug de naam i toegewezen. Net zoals bij het gewone toekenningsteken moet langs de linkerkant steeds een variabele staan Prioriteit en associativiteit Wanneer verschillende operatoren in één expressie gebruikt worden, gelden prioriteitsregels om te bepalen welke operator eerst moet uitgevoerd worden. Deze regels kunnen natuurlijk opgeheven worden door gebruik te maken van haakjes ( () ). 11

15 Overzicht van de reeds geziene operatoren gerangschikt van hoge naar lage prioriteit: ** rechts - + rechts * / % links + - links ==!= < <= > >= keten not rechts and links or links Het unaire min-teken (voor negatieve getallen) is terug te vinden op de tweede lijn en heeft dus een hogere prioriteit dan de andere rekenkundige binaire operatoren, met uitzondering van de machtsverheffing. Wanneer twee operatoren van dezelfde prioriteit in een expressie voorkomen, dan wordt gekeken naar de associativiteit. De meeste operatoren associëren van links naar rechts: a+b+c wordt geïnterpreteerd als (a+b)+c. Machtsverheffing en unaire operatoren worden uitgevoerd van rechts naar links: bijv. a = --c wordt geïnterpreteerd als a = -(-c). >>> >>> 8/2/2 2 >>> 16/ >>> 4 4 >>> Oefening. i, j, r = 8, 4, 0 r = i j r = ( i / j ) == i % j r = i < j or i > j 2.4 Enkele voorgedefinieerde functies Naast constanten en variabelen kunnen in expressies ook functie-oproepen voorkomen. In vorige voorbeelden werden reeds enkele functies gebruikt, namelijk raw_input, int en float (en main). Daarnaast zijn er nog een aantal standaard functies: exit(status); abs(n); beëindigen van een programma absolute waarde (integer of float argument) Python voorziet in een heleboel functies die meestal gegroepeerd zijn in modules. De meest voor de hand liggende voorbeelden zijn wiskundige functies, gegroepeerd in de module math. Wanneer zo n functie gebruikt wordt in een programma, moet deze geïmporteerd worden. Dit kan op twee manieren gebeuren: 1. ofwel wordt uit de volledige module geïmporteerd: import math x = 1.0 y = math. cos (x) 12

16 bij het gebruik van de functie moet de module ook aangegeven worden: dit gebeurt met de dot notatie, de modulenaam gevolgd door een punt en dan de naam van de functie; 2. ofwel wordt uit de module een specifieke functie geïmporteerd: from math import cos x = 1.0 y = cos (x) bij het gebruik van de functie moet de modulenaam niet gespecificeerd worden. Indien meerdere functies moeten kunnen geïmporteerd worden, kunnen deze na elkaar gescheiden door komma s gespecificeerd worden (from math import sin,cos). Alle functies van een module importeren kan met from math import. In beide gevallen wordt voor het argument x (in radialen) de cosinus-waarde berekend en dit object wordt de naam (variabele) y toegewezen. Wiskundige functies uit de module math: naam betekenis type resultaat cos(x) cosinus float sin(x) sinus float tan(x) tangens float exp(x) exponentiële waarde float log(x) natuurlijk logaritme float log10(x) logaritme met grondtal 10 float pow(x, y) x tot de macht y float sqrt(x) vierkantswortel float floor(x) geheel getal net kleiner dan x float ceil(x) geheel getal net groter dan x float acos(x) boogcosinus float asin(x) boogsinus float atan(x) boogtangens float Opgave. Schrijf een programma dat een tabel met cosinuswaarden afdrukt voor hoeken van 0 tot 360 met stappen van 30 graden. # costab.py : een tabel met cosinus waarden 2 import math def main ( ) : 4 graden = 0.0 print %7s %10s % ( x, cos (x) ) 6 print 18 while graden <= : 8 radialen = graden math. pi /180.0 y = math. cos ( radialen ) 10 print %7.1 f %10.4 f % ( graden, y) graden += # startoproep main () Resultaat: x cos(x) Omdat de voorgedefinieerde functie een argument in radialen verwacht, moet de hoek gegeven in graden, omgezet worden (πx/180). math.pi is een constante die gedefinieerd is in de module math met een waarde (benaderend) gelijk aan π: math. pi =

17 Om een mooi uitgelijnde tabel te krijgen, worden bij het print statement de format (%) operator gebruikt: de eerste operand is een formaatstring met daarin formaatsequenties die aangeven hoe de elementen van de tweede operand moeten geformatteerd worden. Het resultaat van de % operator is een string. Een formaatsequentie in een formaatstring (eerste operand van de format operator) geeft per element van de tweede operand aan hoe deze waarde moet geformatteerd worden: %d int waarde eventueel getal geeft veldbreedte aan %f float waarde eventueel eerste getal geeft veldbreedte aan eventueel tweede getal geeft aantal cijfers na de komma aan %s string waarde eventueel getal geeft veldbreedte aan Om in de tabel een lijntje te hebben onder de titel, wordt een operatie op de string - uitgevoerd (lijn 5): een vermenigvulding met 18 resulteert in een string bestaande uit 18 mintekens. 2.5 Begrippen Constanten, objecten, variabelen, identifiers, types. Expressies: rekenkundig, vergelijkend, logisch. Operatoren: unair en binair, prioriteit en associativiteit. Voorgedefinieerde functies. De format operator. 14

18 3 Controle structuren 3.1 Keuze statements Het if statement Om te kunnen laten beslissen of een statement al dan niet moet worden uitgevoerd, kan gebruik gemaakt worden van een keuze- of conditioneel statement. if expressie : statement1 else : statement2 Als de expressie een waarde True) ( d.i. verschillend van 0) heeft, dan wordt statement1 uitgevoerd en statement2 niet. Wanneer de waarde van de expressie gelijk is aan False (d.i. waarde 0), dan wordt statement2 uitgevoerd en statement1 wordt overgeslagen. De expressie waarvan de waarde getest wordt, is meestal een logische expressie. Zowel statement1 als statement2 kunnen blok-statements zijn, zodat de algemene vorm ook als volgt weergegeven wordt: if expressie : statement statement... else : statement statement... In de volgende vorm is het else gedeelte weggelaten: if expressie : statement statement... Opgave. Lees een geheel getal en druk af of het even of oneven is. # even1.py: test of een ingelezen geheel getal even of oneven is 2 def main ( ) : invoer = raw input ( Geef een geheel getal : ) 4 getal = int ( invoer ) if getal%2 == 0 : 6 print getal, i s even else : 8 print getal, i s oneven # startoproep 10 main () De expressie in de if test hoeft niet een logische expressie te zijn. De waarde van een rekenkundige expressie kan ook gebruikt worden, waarbij een niet-nul waarde als True geïnterpreteerd wordt, en nul als False: # even2.py: test of een ingelezen geheel getal even of oneven is 2 def main ( ) : invoer = raw input ( Geef een geheel getal : ) 4 getal = int ( invoer ) if getal%2 : 6 print getal, i s oneven else : 8 print getal, i s even # startoproep 10 main () 15

19 Opgave. Schrijf een programma dat twee tijden in seconden inleest en de som afdrukt. Indien de som één minuut of meer is, moet dit afgedrukt worden. Indien de som één uur of meer is, moet dit afgedrukt worden. # tijd2.py: twee tijden in seconden inlezen, som afdrukken in uur:min:sec 2 def main ( ) : l i j n = raw input ( Geef twee tijden : ) 4 een, twee = l i j n. s p l i t () tijd1 = int ( een ) 6 tijd2 = int ( twee ) som = tijd1 + tijd2 8 if som < 60 : print de som i s, som, seconden 10 else : factor = som/60 12 if factor < 60 : print de som i s, factor, minuten en, som%60, seconden 14 else : print de som i s, factor /60, uren,, 16 print factor %60, minuten en, som%60, seconden # startoproep 18 main () De twee getallen worden op één lijn achter elkaar ingevoerd gescheiden door een spatie. Het resultaat van raw_input is een string bestaande uit cijfers en een spatie. Door middel van de split methode kan deze string opgesplitst worden in twee strings waarbij de spatie als scheidingsteken gebruikt wordt. Deze twee strings kunnen dan met de int functie omgevormd worden tot gehele getalwaarden. Wanneer een if statement gebruikt wordt binnen een if statement, moet duidelijk gemaakt worden waar de else bijhoort. # nestif1.py def main ( ) : a, b, c = 1, 2, 3 if a < b : if a < c : print klein, a else : print midden, a # startoproep main () # nestif2.py def main ( ) : a, b, c = 1, 2, 3 if a < b : if a < c : print klein, a else : print ergens, a # startoproep main () In Python is indentatie voldoende om de juiste blokstructuur aan te geven. In de testexpressie kan geen toekenning gebeuren. Dus het hiernaast staand if getal = 5 : fragment resulteert in een syntactische print getal fout: De expressie waarvan de waarde getest wordt, kan natuurlijk bestaan uit een aantal relationele expressies die met behulp van logische operatoren gecombineerd zijn: if getal >= 5 and getal <= 10 : print getal, in het interval [5,10] if getal < 5 or getal > 10 : 16

20 print getal, buiten interval [5,10] Dikwijls moet de verwerking opgesplitst worden in meerdere onderling exclusieve acties. Dit kan gebeuren met de elif constructie. Opgave. Schrijf een programma dat een aantal gehele getallen leest en telt hoeveel er kleiner zijn dan 10, hoeveel er gelegen zijn tussen 10 en 99, hoeveel tussen 100 en 999 en hoeveel tussen 1000 en Als de rij getallen ingegeven zijn, wordt ingegeven om het einde van de ingave aan te geven. 1 # freq.py: frequenties van ingelezen getallen def main ( ) : 3 print Geef een aantal gehele getallen, eindig met invoer = raw input ( getal : ) 5 getal = int ( invoer ) c i j f e r, tiental, honderdtal, duizendtal = 0, 0, 0, 0 7 while getal!= : if getal < 10 : 9 c i j f e r += 1 elif getal < 100 : 11 t i e n tal += 1 elif getal < 1000 : 13 honderdtal += 1 elif getal < : 15 duizendtal += 1 else : 17 pass invoer = raw input ( getal : ) 19 getal = int ( invoer ) print c i j f e r, tiental, honderdtal, duizendtal 21 # startoproep main () Merk op dat de laatste else gevolgd door het leeg statement (pass), evengoed kan weggelaten worden. Opgave. Schrijf een programma dat een cijfer inleest. Wanneer dit cijfer groter is dan nul en kleiner is dan 4, moet de bijhorende woordwaarde afgedrukt worden. Bij een andere waarde kan gewoon de melding cijfer afgedrukt worden. # cijfer.py: inlezen van een cijfer en afdrukken als woord 2 def main ( ) : invoer = raw input ( geef een c i j f e r : ) 4 c i j f e r = int ( invoer ) if c i j f e r == 1 : 6 print een elif c i j f e r == 2 : 8 print twee elif c i j f e r == 3 : 10 print drie elif c i j f e r >= 4 and c i j f e r <= 9 : 12 print c i j f e r else : 14 print dit i s geen c i j f e r, c i j f e r 17

21 # startoproep 16 main () Merk op dat er in vele andere talen een alternatieve constructie (switch) bestaat om een aantal verschillende gevallen van elkaar te onderscheiden. 3.2 Iteratie statements Opgave. Schrijf een programma dat 10 gehele getallen leest en daarvan de som afdrukt. # intsom2.py: tien gehele getallen inlezen en de som berekenen 2 # op een langdradige manier def main ( ) : 4 som = 0 invoer = raw input ( Geef een geheel getal : ) 6 getal = int ( invoer ) som += getal 8 invoer = raw input ( Geef een geheel getal : ) getal = int ( invoer ) 10 som += getal invoer = raw input ( Geef een geheel getal : ) 12 getal = int ( invoer ) som += getal 14 invoer = raw input ( Geef een geheel getal : ) getal = int ( invoer ) 16 som += getal invoer = raw input ( Geef een geheel getal : ) 18 getal = int ( invoer ) som += getal 20 invoer = raw input ( Geef een geheel getal : ) getal = int ( invoer ) 22 som += getal invoer = raw input ( Geef een geheel getal : ) 24 getal = int ( invoer ) som += getal 26 invoer = raw input ( Geef een geheel getal : ) getal = int ( invoer ) 28 som += getal invoer = raw input ( Geef een geheel getal : ) 30 getal = int ( invoer ) som += getal 32 invoer = raw input ( Geef een geheel getal : ) getal = int ( invoer ) 34 som += getal print de som van deze getallen i s, som 36 # startoproep main () Dit is duidelijk geen elegante oplossing. Het wordt nog veel erger wanneer bijvoorbeeld 100 getallen moeten gesommeerd worden. De meeste programmeertalen hebben hiervoor een aantal controle structuren voorzien waarmee het mogelijk is een herhaling (een iteratie) compact neer te schrijven. In deze contekst spreekt men dikwijls over een programma-lus. Python heeft twee iteratie-structuren. 18

22 3.2.1 Het while statement Een eerste structuur is reeds gebruikt geweest in enkele voorgaande programma s bijvoorbeeld bij het algoritme van Euclides (ggd.py). De algemene vorm is: while expressie : statement Zolang de expressie een waarde True (d.i. een waarde verschillend van 0) oplevert, wordt statement uitgevoerd. Dit statement is meestal een blok-statement: while expressie : statement1 statement2... volgend statement In sommige van deze statements gebeuren normaal aanpassingen aan verschillende variabelen zodat na een tijd de expressie de waarde False oplevert. Op dat moment wordt de lus verlaten en gaat het programma verder met de uitvoering van volgend_statement. 1 # wsom2.py: berekenen van de som van 10 getallen AANTAL = 10 3 def main ( ) : print Geef tien gehele getallen om te sommeren 5 t e l l e r = 0 som = 0 7 while t e l l e r < AANTAL : invoer = raw input ( getal : ) 9 getal = int ( invoer ) som += getal 11 t e l l e r += 1 print som van deze getallen i s, som 13 print gemiddelde van deze getallen i s, som/aantal # startoproep 15 main () Merk op dat voor het berekenen van het gemiddelde een deling van twee gehele getallen gebruikt wordt en dat de uitkomst dus ook een geheel getal is. De drie basiselementen die in een herhalingsstructuur voorkomen, zijn: 1. de initialisatie: de variabele teller krijgt een beginwaarde; 2. de test op het beëindigen van de lus: de variabele teller wordt vergeleken met een eindwaarde (AANTAL); 3. de stap: de variabele teller wordt aangepast, in dit geval verhoogd. In de while constructie ligt alleen de test op einde syntactisch vast. Omdat deze test gebeurt voordat enig statement in de lus uitgevoerd wordt, kan het zijn dat deze test reeds de eerste maal False oplevert, zodat de statements in de lus nooit zullen uitgevoerd worden. Om het programma gemakkelijk te kunnen aanpassen wanneer het aantal op te tellen getallen wijzigt, kan best voor dit aantal een aparte naam voorzien worden, die in het begin van het programma een waarde krijgt en in de rest van het programma niet gewijzigd wordt (een soort naamconstante). Voor de duidelijkheid wordt zo n naam in hoofdletters genoteerd. Bemerkingen. Wanneer voor de logische expressie bij de while de waarde 1 (True) gebruikt wordt, krijgt men een oneindige lus (links onderstaand fragment). Na de while moet minstens één statement in het blok staan. Eventueel kan dit een leeg statement (pass) zijn. Indien er geen blok (via indentatie) volgt zoals in het rechts staand fragment, resulteert dit in een syntactische fout. 19

23 t e l l e r = 0 while 1 : print t e l l e r t e l l e r += 1 AANTAL = 10 while t e l l e r < AANTAL : invoer = raw input ( Geef getal : ) getal = int ( invoer ) som += getal t e l l e r += Het for statement In een tweede iteratie-structuur wordt via een functie vastgelegd hoe de drie basiselementen van een lus (initialisatie, test op einde en de stap) gedefinieerd worden. De semantiek is volledig identiek aan het while statement. for i in range ( i n i t e x p r e s s i e, eind expressie, stap expressie ) : statement De functie range genereert een lijst van gehele getallen tussen de waarde van de init_expressie en de waarde van de eind_expressie(niet inbegrepen), met een increment gelijk aan de stap_expressie. Met de for... in constructie neemt de lusvariabele telkens de volgende waarde uit deze lijst aan, waarmee dan het statement uitgevoerd wordt. Ook hier kan statement een blok-statement zijn. # fsom2.py: berekenen van de som van 10 getallen 2 AANTAL = 10 def main ( ) : 4 print Geef tien gehele getallen om te sommeren som = for t e l l e r in range (AANTAL) : invoer = raw input ( getal : ) 8 getal = int ( invoer ) som += getal 10 print som van deze getallen i s, som print gemiddelde van deze getallen i s, som/aantal 12 # startoproep main () De variabele teller is in dit voorbeeld de lusvariabele. In tegenstelling tot vorig voorbeeld is nu som geïnitialiseerd met een float (0.0) en wordt een juister gemiddelde berekend. Het eerste en laatste argument bij de range functie kunnen weggelaten worden, beginwaarde wordt dan 0 en de stap is dan gelijk aan 1, bijvoorbeeld: for t e l l e r in range (3,AANTAL) : for t e l l e r in range (AANTAL) : Na de for moet weer minstens één statement in de lus staan, ofwel achter de dubbele punt, ofwel geïndenteerd in een blok. Een eventueel leeg statement kan ongewenste resultaten opleveren. Opmerking. De argumenten van de range functie kunnen expressies zijn. Maar wijzigingen op de betrokken variabelen in het blok van de lus hebben geen effect op het aantal maal dat de lus uitgevoerd wordt. De functie range genereert de lijst van gehele getallen voordat één statement van het blok van de lus uitgevoerd wordt. Begin- en eindwaarden van de lusvariabele kunnen zelf variabelen zijn. 1 # argrange. py: geen effect van wijzigen van range argumenten 20

24 def main ( ) : 3 a, b, c = 1, 12, 3 for t e l l e r in range (a, b, c ) : 5 print t e l l e r=, t e l l e r, a=, a, b=, b, c=, c a += 1 7 b = 1 c += 1 9 t e l l e r += 4 # startoproep 11 main () Ook een wijziging bij de lusvariabele in het blok heeft geen effect op de volgende doorgang in het blok Het break en continue statement In de twee lus-constructies is een break statement mogelijk. Het effect is dat de lus (voortijdig) verlaten wordt en dat de uitvoering verder gezet wordt na het lus statement. Hiermee kan een lus beëindigd worden met behulp van een test die niet in het begin van de lus staat maar ergens tussenin of op het einde. Daarnaast is er ook het continue statement. Er wordt dan meteen de test op beëindiging die bij de while hoort, uitgevoerd. Bij for wordt verder gegaan met het volgende element van de lijst die door de range functie gegenereerd is. Opgave. Schrijf een programma dat een aantal gehele getallen leest; dit aantal is ten hoogste 100. De positieve getallen moeten gesommeerd worden, negatieve getallen worden overgeslagen en wanneer een nul ingelezen wordt, moet gestopt worden. 1 # fsompos. py: sommeren van een aantal positieve getallen AANTAL = def main ( ) : print Geef een aantal gehele getallen ( nul om te stoppen ) 5 som = 0 for i in range (AANTAL) : 7 invoer = raw input ( getal : ) getal = int ( invoer ) 9 if getal < 0 : continue 11 if getal == 0 : break 13 som += getal print aantal ingelezen getallen i s, i 15 print som van de positieve getallen i s, som # startoproep 17 main () Merk op. Wanneer de for-lus in bovenstaand voorbeeld vervangen wordt door een while-lus is er een klein verschil in wat het programma doet (afhankelijk van waar de aanpassing van de lus-variabele gebeurt). Bij de for en while kan ook een else toegevoegd worden: 21

25 for i in range (5) : statement else : statement while expressie : statement else : statement Bij for wordt het blok bij de else uitgevoerd wanneer alle elementen van de lijst (gegenereerd door range) behandeld zijn. Bij while wordt het blok bij de else uitgevoerd wanneer de expressie niet meer waar is. Dus in beide gevallen is dit wanneer de lus beëindigd wordt op een normale manier. Het blok bij de else wordt echter niet uitgevoerd wanneer de lus voortijdig eindigt omdat in het lusblok een break uitgevoerd wordt. De else constructie bij een lus heeft dus enkel zin in combinatie met een break zoals in volgend voorbeeld geïllustreerd wordt. Opgave. Schrijf een programma dat een willekeurig geheel getal, in het interval [1,100] kiest, dat dan moet geraden worden. Als de gok groter is, dan meldt het programma te hoog. Als de gok kleiner is, dan meldt het programma te laag. Als de gok gelijk is aan het gekozen getal, dan moet het programma het aantal gedane pogingen afdrukken. Er mogen maximaal 10 gokpogingen gedaan worden. Hulp. Er is een module random beschikbaar met daarin functies die random getallen kunnen genereren De functie-oproep random.randint(1,100) geeft een willekeurig geheel getal in het interval [1,100]. # spel.py: raden van een getal tussen 1 en import random AANTAL = 10 4 def main ( ) : print Zoeken van een getal in het interval [1,100] 6 t e l l e r = 0 zoekgetal = random. randint (1,100) 8 gevonden = False while t e l l e r < AANTAL : 10 invoer = raw input ( gok : ) gok = int ( invoer ) 12 t e l l e r += 1 if gok == zoekgetal : 14 gevonden = True break 16 elif gok > zoekgetal : print Uw gok i s te hoog 18 else : print Uw gok i s te laag 20 else : print Maximum aantal gokken bereikt 22 i f gevonden : print Juist gegokt in, teller, pogingen 24 print te gokken getal i s, zoekgetal # startoproep 26 main () 22

Constanten. Variabelen. Expressies. Variabelen. Constanten. Voorbeeld : varid.py. een symbolische naam voor een object.

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

Nadere informatie

Controle structuren. Keuze. Herhaling. Het if statement. even1.c : testen of getal even of oneven is. statement1 statement2

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

Nadere informatie

1 Algoritmes en computerprogramma s

1 Algoritmes en computerprogramma s 1 Algoritmes en computerprogramma s 1.1 Basiselementen van een computer Een computer is opgebouwd uit een heleboel verschillende onderdelen. Een schematisch diagram wordt getoond in de volgende figuur.

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

Niet-numerieke data-types

Niet-numerieke data-types Intern wordt een karakter voorgesteld als een rij van acht bits, Niet-numerieke data-types string de letter a 01100001 0110 0001 0x61 97 Bij interpretatie van de inhoud van een byte als een geheel getal,

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

Vakgroep CW KAHO Sint-Lieven

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 tony.wauters@kahosl.be en tim.vermeulen@kahosl.be

Nadere informatie

PYTHON REEKS 1: BASICS. Mathias Polfliet

PYTHON REEKS 1: BASICS. Mathias Polfliet PYTHON REEKS 1: BASICS Mathias Polfliet mpolflie@etrovub.be EENVOUDIGE REKENMACHINE 2 soorten getallen Getallen Z -> integers (gehele getallen) Getallen R -> floating points (reële getallen) Door beperkte

Nadere informatie

Persistentie via bestanden. Bestanden

Persistentie via bestanden. Bestanden programma is transient Persistentie via bestanden Administratieve gegevens zijn verzameld in het file-object: o.a. waar ergens op de disk de data van het bestand te vinden is. invoer van de gebruiker programma

Nadere informatie

Interne voorstelling. types en conversies. Binaire en andere talstelsels. Voorstelling van gegevens: bits en bytes

Interne voorstelling. types en conversies. Binaire en andere talstelsels. Voorstelling van gegevens: bits en bytes Interne voorstelling types en conversies Het geheugen wordt ingedeeld in een aantal gebieden van gelijke grootte. Een gebied van 8 bits noemt men een byte (nible een groep van bits). Een (computer)woord

Nadere informatie

OEFENINGEN PYTHON REEKS 1

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

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

PROS1E1 Gestructureerd programmeren in C Dd/Kf/Bd

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,

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

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

Lab Webdesign: Javascript 3 maart 2008

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

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

VAN HET PROGRAMMEREN. Inleiding. Het spiraalmodel. De programmeertaal. vervolgens de berekening van het totale bedrag, incl. BTW:

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,

Nadere informatie

Variabelen en statements in ActionScript

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

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

Java Les 3 Theorie Herhaal structuren

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

Nadere informatie

Programmeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014

Programmeren en Wetenschappelijk Rekenen in Python. Wi1205AE I.A.M. Goddijn, Faculteit EWI 22 april 2014 Programmeren en Wetenschappelijk Rekenen in Python Wi1205AE, 22 april 2014 Inleiding Cursus coördinator e-mail Docent e-mail : Jacco Hoekstra : J.M.Hoekstra@TUDelft.nl : Ingeborg Goddijn : I.A.M.Goddijn@TUDelft.nl

Nadere informatie

VAN HET PROGRAMMEREN. Inleiding

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,

Nadere informatie

DE INTERACTIEVE SHELL

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

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

Zoemzinnen. Algemene info. Functies met een variabel aantal argumenten

Zoemzinnen. Algemene info. Functies met een variabel aantal argumenten Zoemzinnen Functies met een variabel aantal argumenten Bij het definiëren van een functie leg je in principe vast hoeveel argumenten er aan de functie moeten doorgegeven worden. Dit aantal correspondeert

Nadere informatie

Opgaven. Python Assessment

Opgaven. Python Assessment Opgaven Python Assessment Nijmegen - Utrecht www.atcomputing.nl Copyright 2015,2016 Versie: 1a Inleiding Met dit assessment kun je controleren of je voldoende parate kennis over Python hebt om te beginnen

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

[13] Rondjes draaien (loops)

[13] Rondjes draaien (loops) [13] Rondjes draaien (loops) Met de if else uit de leerfiche [11] hebben we leren werken met één van de belangrijkste programmeerstructuren in Python. Bijna even belangrijk zijn de verschillende mogelijkheden

Nadere informatie

[8] De ene 1 is de andere niet

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

Nadere informatie

Een spoedcursus python

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

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

Groepen, ringen en velden

Groepen, ringen en velden Groepen, ringen en velden Groep Een groep G is een verzameling van elementen en een binaire operator met volgende eigenschappen: 1. closure (gesloten): als a en b tot G behoren, doet a b dat ook. 2. associativiteit:

Nadere informatie

Programmeren met Arduino-software

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

Nadere informatie

OPDRACHT Opdracht 2.1 Beschrijf in eigen woorden wat het bovenstaande PSD doet.

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

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

Hoofdstuk 0. Van Python tot Java.

Hoofdstuk 0. Van Python tot Java. Hoofdstuk 0. Van Python tot Java. In dit eerste hoofdstuk maken we de overstap van Python naar Java. We bespreken de verschillen en geven wat achtergrondinformatie. In het volgende hoofdstuk gaan we dieper

Nadere informatie

BEGINNER JAVA Inhoudsopgave

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

Nadere informatie

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

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

Nadere informatie

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

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.

Nadere informatie

Week 2 : Hoofdstukken 2 en 6; extra stof: inleiding pointers

Week 2 : Hoofdstukken 2 en 6; extra stof: inleiding pointers Week 2 : Hoofdstukken 2 en 6; extra stof: inleiding pointers Hoofdstuk 6: Beslissingen: if-statement en switch-statement. Inleiding: Condities zijn waar (true) of onwaar (false) In C staat het int-getal

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

VBA voor Doe het Zelvers deel 20

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

Nadere informatie

DEC SDR DSP project 2017 (2)

DEC SDR DSP project 2017 (2) DEC SDR DSP project 2017 (2) Inhoud: DSP software en rekenen Effect van type getallen (integer, float) Fundamenten onder DSP Lezen van eenvoudige DSP formules x[n] Lineariteit ( x functie y dus k maal

Nadere informatie

Practicum Programmeerprincipes

Practicum Programmeerprincipes REEKS 3 Practicum Programmeerprincipes 2009-2010 fvdbergh@vub.ac.be WERKEN MET FUNCTIES IN PICO Functies, controlestructuren, recursie, iteratie, blokstructuren en functionele parameters in Pico. Het woordenboek

Nadere informatie

PSD. Reeksen van logische procedures om problemen op te lossen in een eindig aantal stappen.

PSD. Reeksen van logische procedures om problemen op te lossen in een eindig aantal stappen. Inleiding Computers en andere digitale apparatuur is tegenwoordig niet meer weg te denken in de huidige samenleving. Zonder programma s zijn deze apparaten echter niets waard. Het zijn de programma s die

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

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59.

Datastructuren Programmeeropdracht 3: Expressies. 1 Expressies. Deadline. Dinsdag 8 december 23:59. Datastructuren 2015 Programmeeropdracht 3: Expressies Deadline. Dinsdag 8 december 23:59. Inleiding. Deze opdracht is losjes gebaseerd op Opdracht 5.13.2 in het boek van Drozdek. U wordt gevraagd expressies

Nadere informatie

Inhoud. Informatica. Hoofdstuk 5 Scripting. Context. Editor voor Programmeercode. Scripting 1

Inhoud. Informatica. Hoofdstuk 5 Scripting. Context. Editor voor Programmeercode. Scripting 1 5.1 5.2 1rste BAC Biologie Hoofdstuk 5 Inhoud Inleiding Programeerconstructies functies variabelen (toekenning) statements (print, ) controlestructuren (if, while, until, for) Oefeningen 5.3 5.4 "functionzero.zip"

Nadere informatie

Een computerprogramma is opgebouwd uit een aantal instructies die op elkaar volgen en die normaal na elkaar uitgevoerd worden.

Een computerprogramma is opgebouwd uit een aantal instructies die op elkaar volgen en die normaal na elkaar uitgevoerd worden. 2 Programmeren 2.1 Computerprogramma s Een computerprogramma is opgebouwd uit een aantal instructies die op elkaar volgen en die normaal na elkaar uitgevoerd worden. (=sequentie) Niet alle instructies

Nadere informatie

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.

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

Nadere informatie

Inleiding Programmeren 2

Inleiding Programmeren 2 Inleiding Programmeren 2 Gertjan van Noord November 28, 2016 Stof week 3 nogmaals Zelle hoofdstuk 8 en recursie Brookshear hoofdstuk 5: Algoritmes Datastructuren: tuples Een geheel andere manier om te

Nadere informatie

Programmeermethoden NA. Week 3: Controlestructuren

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

Nadere informatie

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27

Programmeren. a. 0, 0, 0 b. 0, 0, 27 c. 15, 12, 0 d. 15, 12, 27 Programmeren 0. (1 punt.) Stel, een "afhankelijk kind" is een persoon is die jonger is dan 18 jaar, en hooguit 8.000 euro verdient. Welke van de onderstaande expressies definieert een afhankelijk kind?

Nadere informatie

RAAD HET GETAL. Hoofdstuk 4. Het spelletje 'Raad het getal' Voorbeeld van uitvoering van 'Raad het getal' Hoofdstuk 4 Raad het getal 21

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

Nadere informatie

Voorbeelden. Sorteren. Voorbeeld: n = 5. # intsort.py: sorteren van een rij getallen

Voorbeelden. Sorteren. Voorbeeld: n = 5. # intsort.py: sorteren van een rij getallen Voorbeelden Sorteren Schrijf een programma dat een rij gehele getallen sorteert een eerste functie leest de rij gehele getallen; een tweede functie sorteert deze getallenrij van klein naar groot; een derde

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

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens

Info-books. Toegepaste Informatica. Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) AL20. Jos Gils Erik Goossens Info-books AL20 Toegepaste Informatica Deel 20 : Algoritmen en programmeren in Access en Excel (Basis) Jos Gils Erik Goossens Hoofdstuk 6 Lusstructuren of iteraties 6.1 Probleemstelling Het gebeurt dikwijls

Nadere informatie

SEQUENTIE-STRUCTUUR. Oefening: Dichtheid

SEQUENTIE-STRUCTUUR. Oefening: Dichtheid SEQUETIE-STRUCTUUR Oefening: Dichtheid geef diameter vd bol(m) //Declaratie input variabelen double diameter; double soortmassa; //Declaratie variabelen voor tussenresultaten double volume; diameter //Declaratie

Nadere informatie

maplev 2010/7/12 14:02 page 15 #17 Nadere detaillering van een aantal zaken van Module 1 Geen,, " ", \, save, read, protect, unprotect

maplev 2010/7/12 14:02 page 15 #17 Nadere detaillering van een aantal zaken van Module 1 Geen,,  , \, save, read, protect, unprotect maplev 2010/7/12 14:02 page 15 #17 Module 2 Het gebruik van Maple, vervolg Onderwerp Voorkennis Expressies Nadere detaillering van een aantal zaken van Module 1 Geen,, " ", \, save, read, protect, unprotect

Nadere informatie

slides12.pdf December 14, 2001 1

slides12.pdf December 14, 2001 1 Onderwerpen Inleiding Algemeen 12 Getallen Getallen Representaties Rekenen Problemen Piet van Oostrum 12 dec 2001 INL/Alg-12 1 X INL/Alg-12 1 X Getallen Soorten getallen Wat is een getal? Experiment: met

Nadere informatie

algoritmiek - antwoorden

algoritmiek - antwoorden 2016 algoritmiek - antwoorden F. Vonk versie 1 28-8-2016 inhoudsopgave eenvoudige algoritmes... - 3 - complexe algoritmes... - 7 - zoeken (vwo)... - 10 - sorteren (vwo)... - 12 - Dit werk is gelicenseerd

Nadere informatie

1 Rekenen in eindige precisie

1 Rekenen in eindige precisie Rekenen in eindige precisie Een computer rekent per definitie met een eindige deelverzameling van getallen. In dit hoofdstuk bekijken we hoe dit binnen een computer is ingericht, en wat daarvan de gevolgen

Nadere informatie

Small Basic Programmeren Text Console 2

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:

Nadere informatie

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s.

2 n 1. OPGAVEN 1 Hoeveel cijfers heeft het grootste bekende Mersenne-priemgetal? Met dit getal vult men 320 krantenpagina s. Hoofdstuk 1 Getallenleer 1.1 Priemgetallen 1.1.1 Definitie en eigenschappen Een priemgetal is een natuurlijk getal groter dan 1 dat slechts deelbaar is door 1 en door zichzelf. Om technische redenen wordt

Nadere informatie

GEDETAILLEERDE INHOUD

GEDETAILLEERDE INHOUD GEDETAILLEERDE INHOUD dankwoord 17 Inleiding 19 Waarom leer je programmeren?... 19 Waarom Python?... 20 Waarom Minecraft?... 20 Wat staat er in dit boek?.... 20 Online bronnen... 22 Ga nu maar op avontuur...

Nadere informatie

II. ZELFGEDEFINIEERDE FUNCTIES

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

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

Bijlage 11 - Toetsenmateriaal

Bijlage 11 - Toetsenmateriaal Bijlage - Toetsenmateriaal Toets Module In de eerste module worden de getallen behandeld: - Natuurlijke getallen en talstelsels - Gemiddelde - mediaan - Getallenas en assenstelsel - Gehele getallen met

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

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

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte

Getallenleer Inleiding op codeertheorie. Cursus voor de vrije ruimte Getallenleer Inleiding op codeertheorie Liliane Van Maldeghem Hendrik Van Maldeghem Cursus voor de vrije ruimte 2 Hoofdstuk 1 Getallenleer 1.1 Priemgetallen 1.1.1 Definitie en eigenschappen Een priemgetal

Nadere informatie

6. Functies. 6.1. Definities en gebruik van functies/variabelen

6. Functies. 6.1. Definities en gebruik van functies/variabelen Computeralgebra met Maxima 6. Functies 6.1. Definities en gebruik van functies/variabelen Een van de belangrijkste gereedschappen in een CAS betreft het gebruik van functies (definitie, berekening en grafiek).

Nadere informatie

Rekenen aan wortels Werkblad =

Rekenen aan wortels Werkblad = Rekenen aan wortels Werkblad 546121 = Vooraf De vragen en opdrachten in dit werkblad die vooraf gegaan worden door, moeten schriftelijk worden beantwoord. Daarbij moet altijd duidelijk zijn hoe de antwoorden

Nadere informatie

1 Rekenen met gehele getallen

1 Rekenen met gehele getallen 1 Inhoudsopgave 1 Rekenen met gehele getallen... 1.1 De gehele getallen... 1. Optellen... 1. Opgaven... 1. Aftrekken... 1. Opgaven... 1. Vermenigvuldigen... 1. Opgaven... 1.8 Delen... 9 1.9 Opgaven...9

Nadere informatie

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

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.

Nadere informatie

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 ) OI 2010 Finale 12 Mei 2010 Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub VOORNAAM :....................................................... NAAM :..............................................................

Nadere informatie

Talstelsels, getalnotaties en Ascii code

Talstelsels, getalnotaties en Ascii code Talstelsels, getalnotaties en Ascii code 1 Algemeenheden Digitale systemen werken met nullen en enen omdat dit elektronisch gemakkelijke te verwezenlijken is. De transistor wordt in digitale systemen als

Nadere informatie

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

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

Nadere informatie

Matlab introductie. Kees Vuik

Matlab introductie. Kees Vuik Matlab introductie Kees Vuik 2014 Delft University of Technology Faculty of Electrical Engineering, Mathematics and Computer Science Delft Institute of Applied Mathematics Copyright 2014 by Delft Institute

Nadere informatie

Het warmteverlies van het lichaamsoppervlak aan de wordt gegeven door de volgende formule:

Het warmteverlies van het lichaamsoppervlak aan de wordt gegeven door de volgende formule: Opgave 1. (4 punten) Inleiding: Een vleermuis is een warmbloedig zoogdier. Dat wil zeggen dat hij zijn lichaamstemperatuur op een konstante waarde moet zien te houden. Als de omgeving kouder is dan de

Nadere informatie

TELEPORTEREN MET VARIABELEN

TELEPORTEREN MET VARIABELEN 2 TELEPORTEREN MET VARIABELEN Ben je zover dat je de kracht van Python kunt gebruiken om jouw Minecraft wereld te beheersen? In dit hoofdstuk krijg je een korte rondleiding langs de basisbegrippen van

Nadere informatie

PYTHON REEKS 2: FUNCTIES. Mathias Polfliet

PYTHON REEKS 2: FUNCTIES. Mathias Polfliet PYTHON REEKS 2: FUNCTIES Mathias Polfliet mpolflie@etrovub.be TERUG NAAR PYTHON BASICS VRAAG 1: VOLUME BOL Het volume van een bol met straal r is 4 3 πr3 π Wat is het volume in cm³ van een bol met straal

Nadere informatie

Een topprogrammeur in het OO programmeren is Graig Larman. Hij bedacht de volgende zin:

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

Nadere informatie

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

Nadere informatie

Python voor Natuur- en Sterrenkundigen Week 1

Python voor Natuur- en Sterrenkundigen Week 1 Python voor Natuur- en Sterrenkundigen Week 1 Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/pmpy2015/ Wat is Python & Waarom Python? "Scripttaal", ontworpen door Guido van Rossum eind

Nadere informatie

10.0 Voorkennis. cos( ) = -cos( ) = -½ 3. [cos is x-coördinaat] sin( ) = -sin( ) = -½ 3. [sin is y-coördinaat] Willem-Jan van der Zanden

10.0 Voorkennis. cos( ) = -cos( ) = -½ 3. [cos is x-coördinaat] sin( ) = -sin( ) = -½ 3. [sin is y-coördinaat] Willem-Jan van der Zanden 10.0 Voorkennis 5 1 6 6 cos( ) = -cos( ) = -½ 3 [cos is x-coördinaat] 5 1 3 3 sin( ) = -sin( ) = -½ 3 [sin is y-coördinaat] 1 Voorbeeld 1: Getekend is de lijn k: y = ½x 1. De richtingshoek α van de lijn

Nadere informatie

Uitwerking tentamen Analyse van Algoritmen, 29 januari

Uitwerking tentamen Analyse van Algoritmen, 29 januari Uitwerking tentamen Analyse van Algoritmen, 29 januari 2007. (a) De buitenste for-lus kent N = 5 iteraties. Na iedere iteratie ziet de rij getallen er als volgt uit: i rij na i e iteratie 2 5 4 6 2 2 4

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

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

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

Nadere informatie

Maak automatisch een geschikte configuratie van een softwaresysteem;

Maak automatisch een geschikte configuratie van een softwaresysteem; Joost Vennekens joost.vennekens@kuleuven.be Technologiecampus De Nayer We zijn geïnteresseerd in het oplossen van combinatorische problemen, zoals bijvoorbeeld: Bereken een lessenrooster die aan een aantal

Nadere informatie

16.0 Voorkennis. Voorbeeld 1: Los op in 2x + 3i = 5x + 6i -3x = 3i x = -i

16.0 Voorkennis. Voorbeeld 1: Los op in 2x + 3i = 5x + 6i -3x = 3i x = -i 16.0 Voorkennis Voorbeeld 1: Los op in 2x + 3i = 5x + 6i -3x = 3i x = -i Voorbeeld 2: Los op in 4x 2 + 12x + 15 = 0 4x 2 + 12x + 9 + 6 = 0 (2x + 3) 2 + 6 = 0 (2x + 3) 2 = -6 (2x + 3) 2 = 6i 2 2x + 3 =

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

Proefexemplaar. Wendy Luyckx Mark Verbelen Els Sas. Dirk Vandamme. bewerkt voor het GO! onderwijs van de Vlaamse Gemeenschap door. Cartoons.

Proefexemplaar. Wendy Luyckx Mark Verbelen Els Sas. Dirk Vandamme. bewerkt voor het GO! onderwijs van de Vlaamse Gemeenschap door. Cartoons. bewerkt voor het GO! onderwijs van de Vlaamse Gemeenschap door Wendy Luyckx Mark Verbelen Els Sas Cartoons Dirk Vandamme Leerboek Getallen ISBN: 78 0 4860 48 8 Kon. Bib.: D/00/047/4 Bestelnr.: 4 0 000

Nadere informatie

Instructies zijn niet alleen visueel, maar ook auditief, met hoogkwalitatief ingesproken geluid (geen computerstem).

Instructies zijn niet alleen visueel, maar ook auditief, met hoogkwalitatief ingesproken geluid (geen computerstem). Getallen 3 Doelgroep Getallen 3 is bedoeld voor leerlingen in klas 3-5 van de havo, klas 3-6 van het vwo en in mbo 3&4. Het programma is bijzonder geschikt voor groepen waarin niveauverschillen bestaan.

Nadere informatie

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

Nadere informatie

Programmeermethoden NA. Week 6: Lijsten

Programmeermethoden NA. Week 6: Lijsten Programmeermethoden NA Week 6: Lijsten Kristian Rietveld http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna2016/ Getal opbouwen Stel je leest losse karakters (waaronder cijfers) en je moet daar een getal

Nadere informatie

POD1 - Hoofdstuk 1: Inleiding

POD1 - Hoofdstuk 1: Inleiding POD1 - Hoofdstuk 1: Inleiding 2/59 POD1 - Hoofdstuk 1: Inleiding Stijn Lievens (Stijn.Lievens@hogent.be) Noemie Slaats (Noemie.Slaats@hogent.be) Lieven Smits (Lieven.Smits@hogent.be) Martine Van Der Weeen

Nadere informatie

OEFENINGEN PYTHON REEKS 6

OEFENINGEN PYTHON REEKS 6 OEFENINGEN PYTHON REEKS 6 1. A) Schrijf een functie die een getal x en een getal y meekrijgt. De functie geeft de uitkomst van volgende bewerking als returnwaarde terug: x y x als x y x y y als x < y B)

Nadere informatie

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen.

continue in een for, while of do lus herhaalt de lus vroegtijdig. De volgende herhaling wordt onmiddellijk begonnen. Hoofdstuk 3: controlestructuren instructies en blokken Naar elke instructie staat een ; Instructies worden door de haakjes {} in een block samengevat. if else if ( expression) statement1; else statement2;

Nadere informatie