Beleidsinformatica omvat het ontwerpen, ontwikkelen en toepassen van informatie- en communicatiesystemen in
onderneming
Waarom programmeren? Problemen oplossen via berekeningen + inzicht in werking programmatuur
Op gestructureerde manier leren analyseren en opdelen in deelproblemen
Algoritmische oplossingen stapsgewijs ontwikkelen, implementeren en testen
Python eenvoudig, open source + groot toepassingsbeleid
Hoofdstuk 2: Algoritme en programmeren
Doelstellingen:
Definiëren en in eigen woorden basisconcepten kunnen uitleggen zoals algoritme, computeralgoritme,
proces, programma…
De relatie en het belang van de ontwikkeling van algoritmen voor het gebruik van computers kunnen
uitleggen
Kunnen uitleggen wat programmeren is en wat een programmeertaal is, en het verband met de ontwikkeling
van algoritmen
Het verschil tussen de verschillende generaties programmeertalen kunnen uitleggen en Python situeren in
deze evolutie
Kunnen uitleggen wat bedoeld wordt met de efficiëntie en complexiteit van een programma, en welke
factoren invloed hebben op de efficiëntie en complexiteit
Algoritme = eindige (in tijd en #) reeks instructies die vanuit gegeven begintoestand naar een beoogd doel leidt
Instructies = welbepaalde elementaire handelingen
Instantie van een probleem betreft een specifieke begintoestand en doel
Correct algoritme bereikt voor iedere instantie het beoogde doel
Incorrect algoritme bereikt iet voor iedere instantie het beoogde doel
Computeralgoritme = duidelijk gedefinieerde computationele procedure die een waarde(n) als invoer neemt en een
waarde(n) als uitvoer produceert data informatie
Uitdaging = enkel gebruik maken van beperkte set computer uitvoerbare instructies
Computationele procedure = geordende reeks ondubbelzinnige computer uitvoerbare instructies die een eindig
proces beschrijven
Proces = herhaalbare reeks afhankelijke activiteiten met welbepaald eindresultaat en startend vanaf welbepaald
beginpunt
Geordend = opgebouwde structuur met volgorde soms 2 omwisselen en nog steeds hetzelfde resultaat bekomen
Parallel computing = computer met meerdere processoren bevat meerde reeksen instructies expliciet bepaald
in algoritme; instructies kunnen afzonderlijk uitgevoerd worden; Krachtiger + oplossen grotere problemen
Ondubbelzinnig = computer kan NIET interpreteren exact zeggen wat te doen
1
, Computer uitvoerbaar ≠ eindigheid van instructie
Instructies op verschillende niveaus; laagste niet dubbelzinnig, basisinstructies
Hoger niveau bestaande algoritmes kunnen herbruikt worden als hogere-orde instructies
Eindig soms blijft algoritme continu draaien, zonder vooraf bepaald eindpunt = zichzelf herhalende algoritmes
Proces = activiteit waarbij een programma wordt uitgevoerd dat een bepaald algoritme implementeert
Programma = uitvoerbare representatie/implementatie van een algoritme
Representatie van algoritme vereist exact gedefinieerde primitieven (bouwstenen)
Symbolische representatie (hoe weergeven?)
Semantiek (betekenis/functie)
Syntax = regels die bepalen hoe je een code correct moet schrijven = grammatica
Programmeertaal = primitieven (als computer uitvoerbaar is) + syntax
Programmeren = implementeren + ontwikkelen van een algoritme in termen van een reeks computer uitvoerbare
instructies m.b.v. programmeertaal
Algoritme vangt intelligentie op; intelligentie beperkt tot instructies (geen algoritme = geen oplossing)
Beperkte intelligentie machines: gevolg van beperkte set computer-uitvoerbare instructies + machine kan maar
beperkt # uitvoerbare basisstappen doen + intelligentie mens ontwikkeld organismes geen algoritme betekent
niet dat er geen algoritmische oplossing mogelijk is
Programmeertalen:
1GL: Machinetaal voor 1 bepaalde computerarchitectuur moeilijk + bugs + traag + lage complexiteit
(denken zoals computer uitvoert)
Machinetaal = uit binaire instructies (0/1), enige taal die computer verstaat taal die computer vertaalt
Vanaf 1940 °notatiesystemen vereenvoudigen van programmeerproces sneller, beter, complexer
bv. Hexadecimale code ieder symbool is een sequentie van 4 bits
Mnemonische code = basisinstructies zoals “load”, “add”, … meer begrijpelijk
2GL: Assemblertalen programma’s schrijven in woorden vertalen! Computer afhankelijk + geen extra
functionaliteit Mnemonische code door assemblers machine-instructies
(denken zoals computer uitvoert)
Complexere, geavanceerde programma’s instructies van hoger niveau 1 instructie bevat reeks essentiële
handelingen (niet expliciet vermeld) handig + efficiënt
Primitieven van hoger niveau worden geautomatiseerd vertaald naar instructies van lager niveau
translator, compiler, interpreter werken zoals assembler
3GL: General purpose programming languages (GPL) Machine onafhankelijke primitieven (python)
4GL: Domain specific programming languages (DSL) Hoger abstractieniveau (gebruiksvriendelijker) bv. SQL, HTML
3GL 4 GL ° voor specifieke toepassingsdomeinen (context)
5GL probleemoplossende talen probleem geven; geen algoritme declaratief programmeren (opschrijven wat
er aan de hand is imperatief programmeren (opschrijven hoe iets moet gebeuren)
2