Hoorcollege 1 – Introductiecollege
Computationeel denken = problemen zo formuleren dat ze door een computer kunnen
worden opgelost.
- Decomposition
- Abstraction
- Pattern recognition
- Algorithms
- Evaluation – checken of oplossing klopt
Het begrip gaat terug op werk Seymour Papert (1980)
Jeanete Wing (2006) computationeel denken in Amerikaans onderwijs (K12).
- Problem solving skills staan centraal en wordt toegepast in programmeren.
Computational thinking is the mental skills and practices for
- Designing computations that get computers to do jobs for us and,
- Explaining and interpreting the world as a complex of information processes.
(Denning & Tedre 2019)
Computationeel denken wordt gevormd door de context.
Computationeel denken is hier ontwerpen en begrijpen van ICT in relatie tot mens,
organisaties en maatschappij.
Thema: information retrieval = ontwerpen van zoektechnologie.
Deel 2 – Achtergrond Python
Vanaf 1980: de programmeertaal ABC
- Ontwikkeld op CWI in A’dam
Bedoeld als educatieve programmeertaal
- Simpel
- Interactief
- Compact
- High-level
Beperkingen van ABC
- Onmogelijk om met randapparatuur te communiceren.
- Geen grafische output
- Beperkte functionaliteit
Ontwikkelaar van ABC = Guido van Rossum
Python – verbeterde versie ABC – 1991.
- Gebaseerd op ABC, Pascal en C.
o ABC is ontwikkeld als verbetering van BASIC en Pascal.
Van Rossum doorontwikkeld tot 2018.
Ontwikkeling
- Veel nieuwe functionaliteit sinds 1991
- Fundamentele design-keuzes
, - Verschillen tussen Python 2 en Python 3
Design-keuzes
- Leesbaarheid
o Engels i.p.v. leestekens
Scripting-taal
- Meteen beginnen met taken
- Niet compileren
- Python is wel gecompileerd, maar dit is niet zichtbaar voor de gebruiker
- Design-filosofie: leesbare code en eenvoudig te gebruiken
Benadering van programmeertalen
- Declaratief – voer kennis in over het domein en laat de computer met een algemene
oplossingsstrategie de taak uitvoeren.
o Logisch – beschouwt een programma als een verzameling feiten en regels.
Je kunt de computer vragen stellen.
Focus op wat, niet op hoe.
Niet altijd handig om te programmeren.
o Functioneel - programma is verzameling wiskundige functies die gegeven een
bepaalde input altijd dezelfde output geven.
Handig voor automatische programma-analyse.
Niet altijd handig om te programmeren.
- Imperatief/Procedureel - vertel de computer stap voor stap wat het programma
moet doen. Veel code schrijven. Vaak eenvoudiger te bedenken dan bij declaratief
programmeren. Minder restrictief paradigma. Bijna alle belangrijke
programmeertalen zijn imperatief.
o Python (heeft ook elementen uit functioneel programmeren)
Python is een high-level programmeertaal.
- Ontworpen om leesbaar te zijn voor mensen.
- De code moet vertaald worden naar low-level code (assembly).
- Low-level code wordt omgezet in stroom voor de processor.
o 0 is laag voltage, 1 is hoog voltage.
- Het resultaat van de verwerking in de elektronica is een voltage.
- Dit wordt terugvertaal naar 0 en 1.
- 0 en 1 wordt terugvertaald naar het resultaat voor de gebruiker.
Grammatica – wat hoort wel/niet bij de taal. Wordt gebruikt om te vertalen naar low-level
code. Grammatica analyseert elke regel programmacode.
Python bevat regels voor het omzetten.
Elektronica
- Processor bestaat uit transistoren.
o Gemaakt van halfgeleiders zoals silicium
o Een halfgeleider wordt op 3 punten aangesloten.
o De geleiding tussen 2 punten hangt af van de stroom op het derde punt.
- Hiermee kunnen logische poorten (AND/OR) gemaakt worden.
,Hoorcollege 2 – Basis Python-syntax
Variabelen = een van belangrijkste programmeerconcepten.
naam voor bepaalde data in de code.
Computationeel denken = code is een abstractie van een probleem. Variabelen zijn daar
cruciaal voor. Als je een abstractie maakt ben je vaak bezig met een algoritme opstellen:
Algoritme = stappen om een taak uit te voeren.
- Dezelfde taak in verschillende situaties
- Abstracte taak
- Hiervoor zijn variabelen nodig
Variabelen in Python
naam – waarde
Bijv. a = 3
Beter: naam met duidelijke betekenis aantal = 3. (a heeft geen betekenis).
Geen declaraties, geen datatype. Python reserveert/verwijst naar een geheugenadres.
Niet elke naam voor een variabele is toegestaan. Variabelen bestaan uit letter, cijfers en _
Het eerste karakter moet een letter of _ zijn. Variabelen zijn hoofdlettergevoelig.
Keywords uit de taal zijn niet toegestaan als variabele naam (if, import, or etc.).
wel toegestaan maar niet handig: print, input, exit.
accenten, speciale tekens en ander alfabet mag ook (Arabisch), niet handig.
Python = imperatieve programmeertaal.
- Volgorde is essentieel voor het uitvoeren van het programma.
- Soms maakt volgorde niet uit
- Functies moeten worden uitgevoerd voordat het resultaat gebruikt kan worden.
Datatypes
- Variabelen in Python hebben een type.
- Hoef je er zelf niet bij te zetten, maar het bestaat wel.
- Type = afhankelijk van waarde van de variabele.
o String = “dit is tekst”
o Int: hele getallen
o Float: kommagetallen (2.34)
o Bool: true/false
o Etc.
Gebruik van types
- Soms zijn types belangrijk voor de gebruiker.
o Delen kan bij int en float, niet bij string en bool.
o Lengte berekenen: alleen string
o Waarheidswaarde: alleen bool.
- Andere operaties zijn verschillend gedefinieerd
o Optellen voor ints: wiskundig.
o Optellen string: achter elkaar zetten.
- Gebruiker doet dit meestal vanzelf goed.
, - Code die de lengte van een bool opvraagt komt weinig voor.
Type-conversie
- Soms handmatige conversie nodig
o Combineren van strings en ints in een variabele.
o Locatie = “lokaal” + 23 dit mag niet.
- Conversie-functies: int( ), str ( ), float ( ), bool ( ).
o Int(drieentwintig) wordt 23.
- Type opvragen met type ( )
o Print (type (1))
- Let op dat conversie niet altijd mogelijk is.
Rekenoperatoren
- Standaard operatoren (optrekken, aftrekken, vermenigvuldigen, delen).
o Modulus (%)
Wat blijft over als na delen.
o Exponent (**)
Macht.
o Floor division (//)
Delen zonder rest (rest wordt weggelaten).
- Je gebruikt operatoren in situaties waar je een getal kan gebruiken.
Getalrepresentatie
- Kommagetallen: twee mogelijkheden
o 1) Fixed point notation: vast aantal bits voor integer-deel en decimaal deel.
Eigenlijk twee losse getallen
Nadeel: geheugen voor integer-deel is beperkt terwijl decimaal deel
niet gebruikt wordt.
Het totaal aantal bits voor een getal kan tussendoor niet worden
aangepast.
o 2) Floating point: verschuivende grens tussen integer-deel en decimaal deel.
Meer bits nodig voor integer-deel: punt schuift op.
Totaal aantal bits blijft gelijk.
Ints en floats combineren wordt altijd float.
Delen wordt altijd float, ook bij twee ints.
Exponent, modulus wordt float als een van beide getallen float is, anders int.
Integer delen wordt float als een van beide getallen float is.
Precisie van floats:
- Intern: decimalen opgeslagen als breuken in veelvouden van 2.
Voordelen van het kopen van samenvattingen bij Stuvia op een rij:
Verzekerd van kwaliteit door reviews
Stuvia-klanten hebben meer dan 700.000 samenvattingen beoordeeld. Zo weet je zeker dat je de beste documenten koopt!
Snel en makkelijk kopen
Je betaalt supersnel en eenmalig met iDeal, creditcard of Stuvia-tegoed voor de samenvatting. Zonder lidmaatschap.
Focus op de essentie
Samenvattingen worden geschreven voor en door anderen. Daarom zijn de samenvattingen altijd betrouwbaar en actueel. Zo kom je snel tot de kern!
Veelgestelde vragen
Wat krijg ik als ik dit document koop?
Je krijgt een PDF, die direct beschikbaar is na je aankoop. Het gekochte document is altijd, overal en oneindig toegankelijk via je profiel.
Tevredenheidsgarantie: hoe werkt dat?
Onze tevredenheidsgarantie zorgt ervoor dat je altijd een studiedocument vindt dat goed bij je past. Je vult een formulier in en onze klantenservice regelt de rest.
Van wie koop ik deze samenvatting?
Stuvia is een marktplaats, je koop dit document dus niet van ons, maar van verkoper roosvanvilsteren. Stuvia faciliteert de betaling aan de verkoper.
Zit ik meteen vast aan een abonnement?
Nee, je koopt alleen deze samenvatting voor €3,49. Je zit daarna nergens aan vast.