Grondslagen van de beleidsinformatica
1. Basis programmeren
H2: Algoritmen en Programmeren
2.1 Algoritmen
DEF: Een Algoritme is een eindige reeks instructies die vanuit een gegeven begintoestand
naar een beoogd doel leidt.
Eindige reeks Instructies (welbepaalde elementaire handelingen)
(eindig instructies en tijd, maar bv thermostaat= zichzelf herhalend algoritme)
Voorbeelden
-Torens van Hanoi
Begintoestand: schijven op paal A
Beoogd doel: schijven naar C
E.R. instructies: ?
-TSP
Begintoestand: klant B, F pakje besteld
Beoogd doel: kortste route
E.R. instructies: ?
2.2 Computeralgoritmen
DEF: Een computeralgoritme is een duidelijk
gedefinieerde computationele procedure
die een waarde of verzameling van
waarden als invoer neemt en een waarde
of verzameling van waarden als uitvoer
produceert
Begintoestand: waarde of
verzameling van waarden als invoer
Doel: waarde of verzameling van waarden als uitvoer
Instructies: computationele procedure
• Waarde of verzameling van waarde: DATA =>INFORMATIE (input->output)
DATA= alles wat we kunnen opslagen/capteren als bits (0/1)
INFORMATIE= data met utiliteit, nut voor eindgebruik, verwerkte data
DATA => INFORMATIE => KENNIS => WIJSHEID
, • Een computationele procedure = een geordende reeks ondubbelzinnige, computer-
uitvoerbare instructies die een eindig proces beschrijven
Volgende pas uitvoeren wanneer vorige afgerond is
• Een proces = herhaalbare reeks afhankelijke activiteiten met een welbepaald
eindresultaat en startende vanaf een welbepaald beginpunt
• Geordende reeks= duidelijke sequentie, structuur, volgorde ( niet alle instructies
zelfde volgorde voor zelfde resultaat, bv. Recept )
Parallel computing: meerdere sets van berekeningen die naast elkaar een
oplossing zoeken (bv TSP, eerst klant 1 / eerst klant 2 / …)
• Ondubbelzinnig = computer kan niet interpreteren, uitvoerbare instructies
In ontwikkeling (ChatGPT, …)
• Computer-uitvoerbaar = doenbaar voor computer, instructies op verschillende
niveaus ( Laagste N= Bits 0/1 )
-> computer-uitvoerbaar omvat ondubbelzinnig ( dus mag uit definitie
geschrapt worden)
Parrallel :Je kan een basisinstructie door een algoritme dat op zijn
beurt weer in een ander algoritme terecht komt -> Hiërarchie
DEF: Een programma is een uitvoerbare representatie of implementatie van een algoritme
2.3 Eerste programma’s in Python
Programmeeromgeving: Codeboard – Jupyter
Instructies: for = opening van instructie
print = instructie printen op dialoogvenster
2.4 Programmeren
o Algoritme ≠ Representatie
Verhaal versus boek kan veranderen
Niet tastbaar, veranderd niet
o Representatie van algoritmen vereist exact gedefinieerde primitieven
Primitieven= bouwstenen, met specifieke betekenis
Bestaat uit 2 delen: symbolische representatie
Semantiek: betekenis
Syntax: verzameling regels voor de manier waarop deze primitieven kunnen
gecombineerd worden tot correcte uitdrukkingen ofte instructies
Syntax en primitieven vormen samen een programmeertaal
DEF: Het implementeren van een algoritme in termen van een reeks
computeruitvoerbare instructies met behulp van een programmeertaal
,2.5 Programmeertalen
-> Machinetaal ( 01100010010011... )
Verschillende generaties
1GL: machinetaal
• ontworpen voor één welbepaalde computerarchitectuur
• Programmeur moet in machinetaal denken zoals computer uitvoert
• Vanaf 1940: Hexadecimale code, Mnemonische code (taal)
* Moeilijkn onhandig, traag, laag niveau van complexiteit
2GL: Assemblertalen
• Programma’s kunnen geschreven worden met woorden begrijpbaar voor
mensen, maar niet machines -> vertaling
• Mnemonische code: dient omgezet te worden in machine-instructies
• Bemerk: computerafhankelijke taal
-> nood aan instructies van hoger niveau (hoger N primitieven)
• Primitieven van hoger N worden geautomatiseerd vertaald naar instructies
van lager niveau
3GL: General purpose programming languages (GPL)
• Procedurele en objectgeorienteerde programmeertalen
• Voordeel: machine-onafhankelijke primitieven
• Programmeer- of software ontwikkelomgeving
-Zelf een programma, dat het schrijven van een programma ondersteunt
-detecteert programmeerfouten
4GL: Domain specific programming languages (DSL)
• Talen met nog hoger abstractieniveau
• Voor een specifiek toepassingsdomein ontwikkeld
bv. HTML, SQL, Matlab
5GL: Probleemoplossende talen
Hierbij specifieert de programmeur geen algoritme maar het probleem zelf
( declaratief programmeren vs imperatief )
vooral gebruikt bij AI
Algemeen: trend naar natuurlijke interactie tussen mens en machine
-programmeertaal is de enige directe manier waarop de mens met machines
interageert
Visie:
-gebruiker laten interageren met machine zoals met mens
, - Specifiëren wat machine moet doen eerder dan hoe de machine het moet
doen.
2.6 Efficiëntie van algoritmen
Efficiëntie = de snelheid waarmee een algoritme tot een oplossing komt
Snelheid hangt af van: -Kloksnelheid (hoe snel is de processor)
-Grootte van de invoer
-Aantal instructies
De tijd-complexiteit van een algoritme geeft aan hoe de uitvoeringstijd schaalt in
functie van de grootte van de invoer
-grootte invoer = n
-complexiteit = O
De ruimte-complexiteit van een algoritme geeft aan hoe het geheugengebruik
schaalt in functie van de grootte van de invoer
H3: Variabelen
1. Inleiding
Variabele – geheugenplaats(en) waar tijdelijke informatie wordt opgeslagen
Variabele in Python heeft 3 attributen