Programmeermethoden NA. Week 3: Controlestructuren

Vergelijkbare documenten
Programmeermethoden. Controle-structuren. Walter Kosters. week 3: september kosterswa/pm/

Python voor Natuur- en Sterrenkundigen Week 1

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

Programmeermethoden NA. Week 5: Functies (vervolg)

Programmeermethoden NA. Week 5: Functies (vervolg)

Inhoudsopgave Voorwoord 5 Voordat je begint 6 Wat heb je nodig? 7 De website bij het boek 7 Voor ouders, verzorgers en leraren

Small Basic Programmeren Text Console 2

Programmeermethoden NA

Programmeermethoden NA. Week 6: Lijsten

[13] Rondjes draaien (loops)

Programmeermethoden NA

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

De keuzestructuur. Versie DD

Programmeermethoden. Recursie. week 11: november kosterswa/pm/

Een spoedcursus python

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

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

Java Les 3 Theorie Herhaal structuren

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp

De Sense HAT heeft een temperatuursensor waarmee je de temperatuur. #lees de temperatuur van de sensor en sla op als temp

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

GEDETAILLEERDE INHOUD

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

VAN HET PROGRAMMEREN. Inleiding

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.

Modelleren en Programmeren

Uitwerking tentamen Analyse van Algoritmen, 29 januari

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

BEGINNER JAVA Inhoudsopgave

Rekenoefening groep 5 Doel

[8] De ene 1 is de andere niet

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

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Dictaat College Programmeermethoden NA

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

17 Operaties op bits Bitoperatoren en bitexpressies

Stroomschema s maken op papier

Programmeermethoden. Recursie. Walter Kosters. week 11: november kosterswa/pm/

Opdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is

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

Toetsvoorbereiding Informatica HAVO/VWO 5 (T51) Programmeren met Python II. Duur: 70 minuten Datum: sept 2018

Inleiding Programmeren 2

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

Logica voor Informatica

Inleiding Programmeren 2

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

Dictaat College Programmeermethoden NA

Small Basic Console Uitwerking opdrachten

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

Programmeermethoden. Pointers. Walter Kosters. week 10: november kosterswa/pm/

II. ZELFGEDEFINIEERDE FUNCTIES

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

Afhankelijk van wanneer je het programma uitvoert, zie je een van de volgende resultaten:

VBA voor Doe het Zelvers Deel 7

Vaak wil je een code schrijven, waar je verschillende acties uitvoeren voor verschillende beslissingen. Je kan daarbij keuzestructuren gebruiken.

Introductie in R.

Programmeermethoden NA. Week 1: Introductie

Inleiding Programmeren 2

Leren Programmeren met Visual Basic 6.0 Les 3+4. Hoofdstuk 4 : De Selectie

CTB1002 deel 1 - Lineaire algebra 1

1 Kettingbreuken van rationale getallen

{ auteur, toelichting }

Rekenoefening groep 4 Doel

Rekenoefening groep 8 Doel

Lab Webdesign: Javascript 3 maart 2008

Inleiding Programmeren 2

Niet-numerieke data-types

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

Een eenvoudig algoritme om permutaties te genereren

RCL Arduino Workshop 1

Verzamelingen, Lijsten, Functioneel Programmeren

Seven segments of Pi

DomJudge-Practicum. Open Dag UU

Datastructuren: stapels, rijen en binaire bomen

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

Algoritmen en programmeren: deel 2 - basis

SEQUENTIE-STRUCTUUR. Oefening: Dichtheid

Functies. Huub de Beer. Eindhoven, 4 juni 2011

Algoritmen en programmeren: deel 1 - overzicht

extra oefening algoritmiek - antwoorden

OEFENINGEN PYTHON REEKS 1

11. Eenvoudige programma s schrijven in Maxima

van PSD naar JavaScript

Oefententamen 2. Tijd: 2 uur. Maximaal aantal punten: 30. Naam: Studentnummer:

Datastructuren: stapels, rijen en binaire bomen

oefening JavaScript - antwoorden

Informatica: C# WPO 7

Programmeren met Python

VBA voor Doe het Zelvers deel 20

Verzamelingen, Lijsten, Functioneel Programmeren

Transcriptie:

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 en sxxxxxxx-syyyyyyy-opdr1.pdf in via Blackboard. Vermeld ook studentnummers en namen bij het inleveren. Een print van het verslag geschreven in LaTeX, zie de uitgebreide uitleg bij het derde werkcollege. mooi.tex sxxxxxx-syyyyyy-opdr1.py mooi.pdf 2

Controlestructuren Met behulp van controlestructuren kunnen we het verloop van een programma beïnvloeden. De belangrijkste controlestructuren in Python zijn: if voor het maken van keuzes. for voor een vast aantal herhalingen. while voor een onbekend aantal herhalingen. Iets als goto's of labels bestaat in Python niet! 3

if-statement Een if-statement gaat informeel als volgt: als een of andere test: de test is waar: doe zus en zo anders: de test is niet waar: dit en dat 4

if-statement (2) de test if getal > 7: a = 13 als test True als test True iets = "test is waar" else: a = 4 als test False iets = "getal is dus kleiner/gelijk 7" Let op het inspringen! In de tests gebruiken we predicaten als == (gelijk),!= (ongelijk), < (kleiner dan), > (groter dan), <= (kleiner dan of gelijk aan) en >= (groter dan of gelijk aan). Uitgebreidere tests kunnen worden gemaakt met Boolese expressies, zie vorige week. 5

if-statement (3) Als je meerdere 'gevallen' in 1 if-statement wilt testen, maak je gebruik van elif (kort voor else if ). if test > 7: a = 13 iets = "test is waar" elif test < 7: a = 10 iets = "we kwamen langs else if" else: a = 4 iets = "test is dus 7" 6

if-statement (4) Waar hoort het laatste else-blok bij? if x > 0: if y > 0: print "Beide groter dan nul." else: print "??? " Dit wordt altijd bepaald door hoe ver er is ingesprongen. De layout geeft altijd uitsluitsel. Dus in dit geval hoort het else-blok bij if y > 0. 7

for loops Een for loop gaat informeel als volgt: voor elk element in een rijtje: doe iets met element De Python-notatie scheelt niet eens zo heel veel: for variabele in rij: statementblok In feite wordt een iteratie van een rijtje elementen (getallen, variabelen,...) uitgedrukt. De iteratievariabele ( element ) neemt opeenvolgend de verschillende waarden van het rijtje aan. 8

for loops (2) Het volgende voorbeeld drukt de eerste 10 getallen af met hun kwadraat: for i in range(10): print i, "--", i * i De loop wordt uitgevoerd voor i met waarden 0 tot en met 9. 9

Rijtjes van getallen maken We gebruiken de functie range() om rijtjes van getallen te maken. range(stop) range(start, stop) range(start, stop, step) De gegeven stop-waarde doet niet mee! 10

Rijtjes van getallen maken >>> range(6) [0, 1, 2, 3, 4, 5] >>> range(3,6) [3, 4, 5] >>> range(0, 50, 5) [0, 5, 10, 15, 20, 25, 30, 35, 40, 45] >>> range(20, 50, 5) [20, 25, 30, 35, 40, 45] >>> for i in range(10):... print i,... 0 1 2 3 4 5 6 7 8 9 11

Geneste loops Je mag ook loops binnen loops gebruiken. We spreken dan over geneste loops. Hier een voorbeeld van een dubbele for loop: for i in range(1, 6): print "{0}:".format(i), for j in range(1, i+1): print i * j, print Uitvoer: 1: 1 2: 2 4 3: 3 6 9 4: 4 8 12 16 5: 5 10 15 20 25 12

while loops Informeel ziet een while-statement er als volgt uit: zolang een of andere test waar is: doe iets Een while-statement bestaat dus uit een testexpressie en een loop body. Er is standaard geen rijtje en geen iteratievariabele. (Python kent geen do-while.) 13

while loops (2) Stel je wilt de eerste n positieve gehele getallen en hun kwadraten afdrukken: i = 1 n = 10 while i <= n: print i, "--", i * i i += 1 i heeft hier de functie van teller en kun je de iteratievariabele noemen. 14

while loops (3) Nog wat voorbeelden van while-loops. while n!= 0: # zolang n niet 0 is n -= 1 # verlaag n met 1 Let er op dat je beter n > 0 als test kunt gebruiken: x = 1 while x < 100: print x x += 2 Deze loop drukt de oneven getallen < 100 af, maar niet als de test x!= 100 zou zijn, want dan stopt het programma niet! Mocht je zo'n fout maken, denk aan de CTRL-C om een proces te stoppen. 15

while loops (4) Bij de iteratie van een rijtje, zoals in for loops, staat het aantal "doorgangen" in principe vast. Bij een while loop is dit aantal doorgangen van te voren niet bekend of lastig te bepalen. x = 1 while x < 1000: x = 2 * x # Nu is x gelijk aan 1024 Het Collatz-probleem (3x+1 vermoeden) zegt dat het volgende programma voor iedere positieve gehele x stopt: # 13->40->20->10->5->16->8->4->2->1 while x!= 1: if x % 2 == 0: # is x even? x = x / 2 else: x = 3 * x + 1 Als dit programma stopt, is x na afloop gelijk aan 1. 16

while loops (5) Na while x > 1: x = x / 2 geldt dat not (x > 1), dus x <= 1. En na while x % 2 == 0: x = x / 2 zijn alle factoren 2 uit de "oude" x gehaald; x is nu oneven. 17

while loops (6) while True: print "Goedendag" Oneindige loop / infinite loop. Of met een "empty statement" (computer lijkt te hangen): while True: pass 18

Welke loop? Alle for loops kunnen ook als while loop worden geschreven, sommige while loops ook als for loop. Welke loop kiezen we nu? Vuistregel: Is het aantal herhalingen van te voren bekend? Itereer je een rijtje van dingen? Kies voor de for loop. In alle andere gevallen is het aantal herhalingen niet bekend. Dan kies je de while loop. 19

Inspringregels Correct inspringen is een must, fout inspringen wordt bestraft met een IndentationError. Wanneer inspringen? Om blokken (groepjes) van statements te vormen. We hebben dit nodig bij: if-statements, loops en definiëren van functies. Vuistregel: na een dubbele punt wordt een ingesprongen blok verwacht! Er kan geen verwarring zijn: de layout (het inspringniveau) is altijd leidend. 20

Inspringregels (verv.) Binnen eenzelfde blok moet er op elke regel op dezelfde manier worden ingesprongen. De eerste regel die anders wordt ingesprongen maakt geen deel meer uit van dat blok. Advies: altijd 4 spaties, vermijd tabs. 21

Inspringregels (verv.) In het voorbeeld van de geneste loop vinden we 3 niveau's terug: for i in range(1, 6): print "{0}:".format(i), for j in range(1, i+1): print i * j, print 22

pass statement Om lege blokken van statements te maken, heeft Python een speciaal empty statement. Want zonder statement, is het moeilijk inspringen... pass-statement: x = 10 if x > 0: # niets print "test" if x > 0: pass print "test" 23

Afsluitend Rond de eerste programmeeropgave af! Deadline maandag 25 september 2017! Huiswerk: Lees het collegedictaat t/m hoofdstuk 5. Website: http://liacs.leidenuniv.nl/~rietveldkfd/courses/prna/ 24

Programmeermethoden NA Week 3 Bij ons leer je de wereld kennen 25