Bo Dedeurwaerder
Lesnotities Programmeren – Len
Lemeire
HW Master management & IT
Inleiding
Leren programmeren algoritmes oplossen en bedenken
Een syntax is maar een tool, wij gaan dus de algoritmes leren
Practicum Dodona: je krijgt onmiddellijk feedback
Wekelijks onderhouden, ondanks alle taken doorheen semester voor andere vakken!
Parameter ontbreekt bij mopje
Filmpjes worden opgenomen, duren elk een uur. Zijn bedoeld om essentie van hoofdstuk te
herhalen. De verbanden mondeling in de les staan niet in deze filmpjes.
HB aankopen voor python: Handboek : The Practice of Computing Using Python
EXAMEN
Theorie : mondeling 25% eindcijfer
Praktijk : oefeningen in Dodona (in PC lokaal)
(open boek / open internet)
oefeningen recursie 25%
overige oefeningen 50%
Bonus-punten worden toegevoegd aan het totaal na samenvoegen van praktijk en theorie.
Bijvoorbeeld elk examen is er een vraag over recursie, theorie
Voorbereiding van 10 min open boek voor mondeling.
Het praktijkexamen is 4 uur, 2 oef recursie + overige oef
1/3 buist elk jaar. Er is een proefexamen dat vrijblijvend is op 17/12/19!
1
,Bo Dedeurwaerder
H1: Pseudocode
We gaan een eigen programmeertaal maken.
Het geheugen
Interne geheugen van een computer ziet eruit als
Overgang van 16 bit 32 bit windows
Digits = 0 of 1 en een bit is 0 of 1 zelf
Bits = aantal bits om een geheugen rechtstreeks aan te spreken
Elk geheugencel heeft een eigen uniek nummertje
Bit operating system
Adres is los van wat je erin kan schrijven dus 001 los van waarde 1
Adres en iets wat je erin kan wegschrijven.
(Bijvoorbeeld huis=adres en daarin zitten dingen. Producten in warenhuis.)
Memory is volatiel, als electriciteit weg is, verdwijnt deze ook.
RAM random access memory ,volatiel
ROM read only memory, is permanent bv usb key
Je kan er 1 en 0llen in wegschrijven.
We kunnen afspreken hoe we deze 1en en 0llen moeten interpreteren. Adresseren is op
geheugen adres 001 zit iets met een bepaalde waarde. Dit is het geheugenadres.
Wat moet een progtaal minimaal kennen?
1. Je moet geg kunnen inlezen
2. Bewerken
3. Wegschrijven (eindres of tussenres)
4. Tijdje bijhouden in geheugencel
Programma op juiste manier met geheugencel omgaan
Alsvoor een eigen programmeertaal op te stellen, dienen we stil te staan bij manier geheugen
gebruikt wordt.
Wat is een computergeheugen eigenlijk? Het computergeheugen bestaat uit indexering. Elke
geheugencel heeft een eigen adres en je kan er een waarde in opslaan. Vb. Elk geheugencel
addreseerbaar is door aantal bits, en de waarde, aantal bits die ernaast staat, 1 en 0
interpreteert, zodanig hij de waarde snapt die er staat.
10 digits = 10 cijfers gebruiken om een code weer te geven. Elk woord is 10 digits.
En je kan 2000 woorden gebruiken om een programma te maken. Ieder woord is 10 digits.
1000 voor tussenstappen en 1000 waar we programmacode in opslaan
Dus 10 digits, en 2000 woorden: op welke manier gaan we een instructive proberen maken?
3 digits was 1 geheugenadres (vorige slide),
Elke instructie bestaat uit 10 digits, geen 0len en 1tje maar digits
Max 2000 woorden bijhouden in ons geheugen en elk woord is 10 digits
We hebben 10 digits ter beschikking. Stel een geheugencel 2000 is 0 en 999, dan kan je 2
keer 1000 bijhouden. Elk geheugen adress is aanspreekbaar in 3 cijfers 000 999 en …
1 geheugencel bestaat uit 3 cijfers dan kunnen we per instructie 9 digits invullen.
Als we er 4 bijhouden 4 maal 3 is 12 is te weinig … we gaan 3 in elk steken
2000 woorden als in “Do this, Calculate that” ~ functies voorstellen
2
,Bo Dedeurwaerder
Bij het opstellen van een pseudocode, is het de bedoeling dat er begrenzing is. Elke regel van
pseudocode kan max bestaan uit 10 digits en we maken gebruik van 2000 woorden. Het
aantal bits of digits per adres zouden moeten weergegeven worden door opsplisten van het
geheugen. We gaan het geheugen opsplitsen in twee blokken van 1000 woorden. Het ene
blok van 1000 woorden wordt gebruikt voor programmacode en het andere blok van 1000
woorden wordt gebruikt om waarde in op te slaan.
Het aantal digits per adres is dus de manier waarop we die waarde kunnen adresseren.
Wanneer we 2 digits zouden bij houden dan kunnen we maar maximaal 100 verschillende
adressen aanspreken: je zou van 00 tot 99 kunnen gaan. Wanneer we gebruik zouden maken
van 3 digits dan zouden we 1000 woorden opslaan, van 000 tot 999. wanneer we gebruik
zouden maken van 4 digits dan zouden we 10 000 woorden kunnen opslaan. Van 0000 tot
9999. aangezien onze begrenzing bestaat uit 2000 woorden die opgesplitst worden in blokken
van 1000, zijn 3 digits voldoende.
stel maar 2 adressen in instructie: eindres van X+y schrijven we weg in X
stel in z dan hebben we alles nog
stel w dan regelmatig 0 moeten invullen
Aantal instructies die we toelaten in een programmacode.
3 keer 3 is 9 en een woord is 10 lang, en de ene die over is gebruiken we als operant
Filmpje:
Het aantal adressen per intstructies wordt bepaald door het aantal digits die we in de
instructies gebruiken om geheugenadrees in op te slaan.
Zo zou je de bewerking van X+Y kunnen wegschrijven naar X maar daar loop je het nadeel
dat de originele waarde van X overschreven wordt.
X+Y overschrijven naar Z, dan heb je de 3 waarden nog.
We kunnen er ook vanuit gaan dat we 3 verschillende adresseringen in een
Instructie gaat schrijven, zoals X + Y + Z, en deze weg te schrijven naar W. aangezien we
gebruik maken van 3 digits en maximaal 10 digits in een instructie gingen steken, is 4 digits
te groot want dan komen we uit op 12 (3x4). 3 digits laat ons toe om 9 digits te gebruiken
voor een adressering!
Je zou kunnen gebruik maken van 3 adressen per instructie en een instructie ziet er als volgt
uit: 1 010 150 200:
• 1 is de instructie
• 010 is het adres voor waarde 1
• 150 is het adres voor waarde 2
• 200 is het adres van de bestemming of het eindresultaat van de instructie zullen
wegschrijven.
Operant: instructie die we willen uitvoeren, functie
adres 1 = x
adres 2 = y
bestemming (adres 3) = resultaat
opsplitsen in 2 blokken
je moet ook geheugen nodig hebben om code in te steken
dus 2 blokken: eerste code en de waar zit in een ander blok
volgorde instructies is bepalend van hoe programma werkt
2 keer 001 dus kans tot verwarring, we gaan dit eruit krijgen.
3
, Bo Dedeurwaerder
Zoals je kan deze gewoon een letter geven bv a.
Nu de waarde als we de blok in 2 splitsen
6 Wiskundige operatoren: +, -, x , ^2 en wortel
2000 woorden gaan we opsplitsen in 2: instructies en waardes
Het programmageheugen wordt dus opgesplitst in twee delen, langs de ene kant heb je het
programmageheugen hierin gaat de geheugencel gebruikt worden om de instructies in op te
slaan.
Anderzijds spreek je over het geheugen waar de waarde in voorkomt, die we nodig hebben
om het programma uit te voeren.
De tekenbit
Operatoren zijn elkaars tegengestelde
We hebben 10 digits, hier teken positief (plus of min)
Handig want minder code vanbuiten leren
Als je de 6 wil vatten met tekenbit dan maar 3 vanbuiten kennen ipv 6
Tekenbit vooraan de operant (1e getal, dit is de instructie/functie) en dan 3 adressen
Operant = waarop instructie wordt toegepast
+ tegenovergestelde van -
* tegenovergestelde van /
Kwadraat tegenovergestelde van vierkantswortel
+1 is plus -1 is min +2 is maal -2 delen +3 kwadraat -3 wortel
10+15 = 25 +1 001 002 003
Deze instructie gaat dus het volgende doen, de waarde die is weggeschreven in het
geheugenadres 001, wordt opgeteld bij de waarde die weggeschreven staat in het
geheugenadres 002. en het eindresultaat wordt weggeschreven in het geheugenaderes 003.
+1 is plus en inlezen wat in geheugencel 10 staat en wat in 150 staat en we gaan die
wegschrijven in 200 : +1 010 150 200
Filmpje:
Tekenbit, plus kan je aanzien als het tegenovergestelde van -, * kan je aanzien als het
tegenovergetelde van / en kwadraat als het tegenovergestelde van vierkantswortel. Wanneer
we gebruik maken van een tekenbit, door teken toe te voegen, kunnen we op 1 instructie
eigenlijk 2 instructies aan spreken! We gaan dus onze operant uitbreiden met een tekenbit.
Naast de wiskundige operatoren hebben we ook logische operatoren nodig. Deze dienen om
op bepaalde momenten bij het uitvoeren van programmacode, beslissingen te nemen aan de
hand van logische operatoren. Zo zou je kunnen meten of a kleiner is dan b of…
logica: als dit gebeurt dan dit doen, iets anders dan dat.
Logische operatoren: <, > = => =< en !=
!= is verschillend van
Opnieuw kunnen we gebruik maken van tekenbit. Zo zou je kunnen stellen dat kleiner dan
het tegenovergestelde is van groter dan of gelijk aan. En groter dan is het tegenovergestelde
4