Topic 1: Computerwetenschappen?
“In silico” experiment = De computerwetenschappen beginnen steeds meer een deel van de
onderzoeksmethodologie binnen wetenschappelijke disciplines te worden. “In silico” experimenten zijn dan
experimenten die uitgevoerd worden met behulp van een computersimulatie. → De term "in silico" komt van
Silicium, één van de basisstoffen die gebruikt worden om de elektronische onderdelen van een computer te
bouwen.
Computationeel proces = De “actie” die leeft in een computer. Net als een natuurlijk proces is het iets dat zich
volstrekt in de tijd. Computationele processen ontstaan doordat een computer een programma uitvoert, dat
programma is een tekstuele representatie van het computationeel proces. Het programma moeten we zelf
schrijven a.d.h.v. een programmeertaal naar keuze.
Er bestaan meerdere programmeertalen en ze zijn allemaal even krachtig. Ze zijn Turing compleet: ieder
programma dat je in 1 taal hebt geschreven, kan je opnieuw schrijven in een andere taal. Sommige talen zij wel
beter geschikt voor bepaalde zaken dan anderen.
Topic 2: Basis Python
Read-eval-print-loop =
• Read = Python leest het programma en beslist of dat deze het programma begrijpt.
→ Als dit niet zo is kan het dat er een syntaxfout is opgetreden: jouw invoer is geen geldige Python.
• Eval = Python probeert de expressie te berekenen tot een bepaalde resultaatwaarde.
→ Hier kan een semantische fout of runtime fout optreden: gaat in tegen de betekenis van de taal
(bijvoorbeeld delen door 0).
• Print = De resultaatwaarde gaat effectief weergegeven worden op het scherm.
De eenvoudige types van Python en hun meest gebruikte bijhorende operatoren
• Integers = gehele getallen. → +, -, *, / en %
• (// = deling die naar beneden afrondt)
• Floats = deelverzameling van reële getallen. → + (=overloaded operator)
• Complexe getallen → +, *
• Strings → +, *
Voorrangsregels van de operatoren
** → *, /, % → +, - dus machtsverheffing → negatie (-)→ multiplicatieve indicatoren → additieve indicatoren
Statement = commando’s die we aan de computer geven, ze worden uitgevoerd en geven geen waarden. Met
het statement x=8+2 bevelen we Python als het ware om de variabele x in het geheugen vanaf nu te associëren
met de waarde 10.
Expressie = Een expressie wordt uitgerekend en geeft een waarde terug.’ Expressies hebben een waarde maar
statements niet.
Verschil tussen functies en procedures
In de computerwetenschappen worden functies zonder resultaat vaak procedures genoemd.
We kunnen dus zeggen dat een functie-aanroep een expressie is. De functie-aanroep heeft een waarde, namelijk
de waarde die door de functie wordt teruggegeven. Een procedure-aanroep is een statement aangezien hier
geen waarde uitkomt
Verschil tussen variabele links en rechts van het teken
Een variabele rechts maakt deel uit van de expressie. Eerst wordt de expressie uitgerekend (gebruik makend van
de oude waarde van de variabele dus) en pas nadien wordt de variabele geassocieerd met de nieuwe waarde.
Het statement x = x + 1 gaat de waarde van x dus vervangen door de oude waarde van x, verhoogd met 1.
Modules = werkschriften die door derden werden ingetikt en geïmporteerd kunnen worden.
1
, Topic 3: Functies
• De parameter is de naam van het argument in de definitie van de functie. In ons voorbeeld is t de
parameter en is 80 het argument.
• Soms spreekt men echter van de formele parameter(s) en de actuele parameter(s). Dit is gewoon andere
terminologie om hetzelfde aan te duiden. Indien we deze terminologie gebruiken, is t dus de formele
parameter en is 80 de actuele parameter.
Hoe werkt de oproep van een zelfgemaakte functie?
Een zélfgebouwde functie wordt dus syntactisch helemaal op dezelfde manier opgeroepen als de ingebouwde
functies uit het vorige topic. Maar hier is wat er gebeurt bij de uitvoering: Python "springt" bij de oproep van de
functie naar de body. Hierbij worden de parameters van de functie tijdelijk geassocieerd met de argumenten van
de oproep. Dan wordt de body geëvalueerd. In ons geval staat daar een return statement. Dat doet Python de
expressie evalueren en met de waarde "terugspringen" naar de oproeper. In ons geval is dat de REPL. Deze zal
de resulterende waarde zoals gewoonlijk op het scherm printen.
Parameter en lokale variabelen zijn lokaal aan de definitie van een functie. → De namen van de parameters
mogen enkel gebruikt worden binnenin de body van de functie en niet daarbuiten.
Procedurele abstractie = We stoppen dus zoveel mogelijk "logisch samenhorende berekeningen" in één functie
die we vervolgens een goed gekozen naam geven en nadien kunnen (her)gebruiken.
• Door een expressie als functievoorschrift in een functie met een goede naam te stoppen, abstraheren
we de complexiteit van die expressie "weg" omdat we er van af dan abstract over kunnen nadenken.
• De code wordt op die manier veel leesbaarder en een expressie die we meerdere keren nodig hebben
moeten we maar 1 keer schrijven.
Waarheidstabellen van de Booleaanse operatoren
• + AND – → False
• + AND + → True
• - AND – → False
• + OR – → True
• + OR + → True
• - OR – → False
• Not + → False
• Not – → True
Belangrijkste relationele operatoren:
Relationele operatoren = operatoren die een relatie tussen de twee waarden aftoetsen en vervolgens True of
False opleveren.
• > (groter dan), < (kleiner dan), == (gelijk aan), <= (kleiner of gelijk aan), >= (groter of gelijk aan),
!= (verschillend van).
Predicaat = een functie die een bepaalde waarde van een eigenschap berekent. Het zijn functies die een
booleaanse waarde weergeven.
Waarom zijn and en or lui?
Or is lui omdat het zijn rechter operand niet meer zal uitvoeren (nalezen) als de linker operand True is (want dat
is 1 van de 2 sowieso True). And is lui omdat het zijn rechter operand niet meer zal uitvoeren als de linker operand
False is.
Nesten van if-testen = Zowel de then-tak als de else-tak van dat if statement bestaan opnieuw uit een if
statement dat de beslissing maakt of we in de onderste dan wel de bovenste rij van de tabel zitten.
→ We gebruiken dit om meerdimensionale testen te schrijven.
Wanneer gebruiken we ‘elif’?
Het veelvuldig nesten van if statements geeft moeilijk te lezen code die bovendien bijzonder makkelijk fout te
interpreteren is. Om zulke gevallen op te vangen laat Python een onbeperkt aantal elif takken toe tussen de then-
tak en de else-tak. elif is een afkorting voor "else if".
Wat als er geen ‘return’ statement in de body van een functie staat?
We noemen deze functie dan een procedure aangezien ze geen resultaatwaarde oplevert.
2
, Block = bijvoorbeeld een block code onder een then-tak of een else-tak. → Een block bestaat uit verschillende
statements die door Python één na één worden uitgevoerd. We kunnen een block herkennen aan het feit dat
alle statements van het block op hetzelfde niveau worden ingesprongen.
Topic 4: Recursieve functies
Recursieve functie = Een functie die zichzelf opnieuw zal oproepen in de body, waardoor er een computationeel
proces ontstaat. Belangrijk bij dit soort functies is om te denken aan een stopconditie (een eindvoorwaarde om
de circulariteit te stoppen).
Trace = Een procesvisualisatietechniek. We krijgen een trace van een programma wanneer het programma een
spoort van zijn activiteiten achterlaat op het scherm. Bedoeling is dat het programma nu en dan iets op het
scherm zet om te vertellen wat het aan het doen is.
Profile = Een procesvisualisatietechniek. Deze techniek bestaat er in om de echte tijd te meten die de recursieve
functie heeft gespendeerd tijdens een laatste oproep. Het profilen van een functie is dus het meten van de
rekentijd van een functie voor verschillende soorten invoer. Deze informatie kunnen we weergeven in een plot.
→ Probleem met profiling: Het is niet altijd de beste methode om op een wetenschappelijke manier over de
uitvoeringssnelheid van een algoritme te spreken. Een ongelukkig profile kan ons immers een totaal verkeerd
beeld geven van de uitvoeringssnelheid van het algoritme in het algemeen. De gemeten tijden kunnen immers
afhangen van een hele reeks technische factoren die dikwijls afhangen van andere programma's die op je
computer draaien. Zelfs indien de profile technisch redelijk goed is opgesteld kan het toch nog steeds zijn dat er
bepaalde uitzonderlijke soorten invoer bestaan waarop het algoritme heel goed of heel slecht scoort.
Soorten computationele processen
• Lineair proces = Recursieve functie waarbij het aantal functieoproepen van de vorm a.n + b is. Wanneer
we van dit proces een profile maken, laat de grafiek min of meer een rechte zien.
• Logaritmisch proces = Processen die steeds minder extra recursieve aanroepen genereren naarmate de
invoer groter en groter wordt.
• Exponentieel proces = Processen die steeds meer extra recursieve aanroepen genereren naarmate de
invoer groter en groter wordt.
Groene grafiek toont lineair
proces, rode grafiek toont
logaritmisch proces. → Merk
op dat de rode grafiek minder
snel stijgt door toevoeging
van een 3e optie waardoor er
een onderverdeling gemaakt
wordt tussen even en oneven
Vb. Lineair proces getallen
Pagina 56 tot 58 voor meer info. → Boomrecursie, wanneer een
oproep van een functie resulteert in 2 of meer recursieve
oproepen. Het aantal oproepen dat nodig is groeit exponentieel.
3
Les avantages d'acheter des résumés chez Stuvia:
Qualité garantie par les avis des clients
Les clients de Stuvia ont évalués plus de 700 000 résumés. C'est comme ça que vous savez que vous achetez les meilleurs documents.
L’achat facile et rapide
Vous pouvez payer rapidement avec iDeal, carte de crédit ou Stuvia-crédit pour les résumés. Il n'y a pas d'adhésion nécessaire.
Focus sur l’essentiel
Vos camarades écrivent eux-mêmes les notes d’étude, c’est pourquoi les documents sont toujours fiables et à jour. Cela garantit que vous arrivez rapidement au coeur du matériel.
Foire aux questions
Qu'est-ce que j'obtiens en achetant ce document ?
Vous obtenez un PDF, disponible immédiatement après votre achat. Le document acheté est accessible à tout moment, n'importe où et indéfiniment via votre profil.
Garantie de remboursement : comment ça marche ?
Notre garantie de satisfaction garantit que vous trouverez toujours un document d'étude qui vous convient. Vous remplissez un formulaire et notre équipe du service client s'occupe du reste.
Auprès de qui est-ce que j'achète ce résumé ?
Stuvia est une place de marché. Alors, vous n'achetez donc pas ce document chez nous, mais auprès du vendeur mara10. Stuvia facilite les paiements au vendeur.
Est-ce que j'aurai un abonnement?
Non, vous n'achetez ce résumé que pour €0,00. Vous n'êtes lié à rien après votre achat.