Hoofdstuk 1: inleiding
Gartner Hypecycle for Emerging Technologies:
Informatiesystemen:
- DATA capteren, opslaan, bewerken, transformeren, extraheren, rapporteren, …
- Hardware, software, database- en netwerktechnologie, gebruikers
Programmeren
Impact IT op macro-economisch niveau
- Digitalisatie
o Omschakeling naar services industry
- Innovatie
o Creative destruction
- Globalisatie
o Outsourcing
o Offshoring
Informatie technologie biedt bijzondere opportuniteiten aan bedrijven:
- Toename in productiviteit
- Competitief voordeel
- Positieve impact op de bedrijfsvoering
Nood aan goed beleid!
Basiskennis IT daarvoor belangrijk
Waarom programmeren?
- Inzicht krijgen in de werking van programmatuur en begrijpen wat de uitdagingen zijn
bij ontwikkeling van software (apps)
- Is een polyvalent en krachtig instrument om problemen op te lossen bv:
o Statistiek
o Marketing
o Analyseren
o …
Programmeren = training in logisch, systematisch en abstract denken.
Python is handig omdat het eenvoudig is, groot toepassingsgebied (in bedrijfswereld)
,Hoofdstuk 2: Algoritmen en programmeren
Een algoritme = een eindige reeks instructies die vanuit een gegeven begintoestand naar een
beoogd doel leidt.
m.a.w. een algoritme bepaalt hoe een welbepaald probleem kan worden opgelost:
1) de stappen die nodig zijn
2) om vanaf een welbepaalde beginsituatie
3) een vooropgestelde uitkomst te bereiken.
Instructies: welbepaalde elementaire handelingen
Eindige reeks:
- Zoniet -> beoogd doel niet bereikt
- Eindig in aantal en tijd (laatste impliceert eerste)
Een instantie van een probleem betreft een specifieke begintoestand en doel
Bv. Een instantie van het TSP probleem vereist het specifieren van het wegennetwerk,
beschikbare vloot, …
Een correct algoritme bereikt voor iedere instantie het beoogde doel, maw het agoritme lost
het betreffende probleem op.
Een incorrect algoritme bereikt niet voor iedere instantie het beoogde doel, voor sommige
mogelijks wel, voor anderen blijft het mss eeuwig lopen.
Een algoritme = 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.
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 = invoer
Doel = uitvoer
Instructies = procedure
Hoe algoritme noteren?
- Tekstueel
- Visueel
- Pseudocode (bv. Debitren zichtrekening)
- Combinatie
- …
Een computationele procedure is een geordende reeks ondubbelzinnige, computer-
uitvoerbare stappen die een eindig proces beschrijven.
Begintoestand, beoogd doel en instructies niet vermeld
Zitten vervat in betekenis term ‘eindig proces’
,Een proces: herhaalbare reeks afhankelijke activiteiten met een welbepaald eindresultaat en
startende vanaf een welbepaald beginpunt.
Geordend: de stappen in een algoritme moeten een zorgvuldig opgebouwde structuur
hebben als het gaat om de volgorde waarin stappen moeten uitgevoerd worden.
(volgorde meestal, niet altijd)
Uitvoeren instructies in willekeurige volgorde leidt niet (noodzakelijk) tot
beoogde uitkomst => afhankelijke activiteiten
Betekent niet dat ALLE stappen in een vooraf vastgestelde volgorde uitgevoerd
moeten worden om tot dezelfde resultaten te komen.
Parallel computing:
• Omvatten meerdere reeksen stappen, die expliciet bepaald zijn in het algoritme, en die
afzonderlijk kunnen uitgevoerd worden
• Die ontworpen zijn precies om door verschillende processoren (cfr. deel 1) in een multi-
processormachine uitgevoerd te worden
• Niet alle algoritmen kunen (her-)ontworpen worden in een parallele structuur, bv.
oorzaak-gevolg ketens, verkeerssimulatie, …
In woorden: probleem wordt opgesplitst in deelproblemen en apart opgelost.
Vbn: VSC & Seti@home
Ondubbelzinning: vereist omdat computer niet kan interpreteren. Je moet exact gezegd
worden wat te doen in termen van de basisstappen of instructies die de machine kan
uitvoeren (uitvoerbare stappen).
Tegenwoordig computer expres laten interpreteren, bv chatGPT
Computer-uitvoerbaar betreft:
- De uitvoerbaarheid van de stap door een computer
- Maar NIET de eindigheid van de stap
Vbn:
- Willekerig getal tss 0 & 1 -> algoritme voor nodig
- Muziek componeren -> algoritme voor nodig
- Lijst maken natuurlijke getallen -> kan computer MAAR blijft oneindig doorgaan
Instructies: verschillende niveaus
- Laagste niveau: geen instructies die dubbelzinnig zijn, beperkte set basisinstructies
o Instructies = bitsequenties die gevoed worden aan processor
o Essentiële uitdaging bij het ontwikkelen van computer algoritmes: enkel
gebruik te maken van beperkte set computer-uitvoerbare instructies
- Maar: bestaande algoritmes kunnen als hoger-niveau of hogere-orde instructies
herbruikt worden
- Computer-uitvoerbaar omvat term ‘ondubbelzinnig’ (die kan dus eigenlijk geschrapt
worden uit de definitie)
Eindig: er zijn zinnige toepassingen voor algoritmen die continu doorlopende processen
ondersteunen zonder a-priori bepaald eindpunt te hebben, bv thermostaat, machines
ziekenhuis.
, Computeralgoritme vs Computerproces vs Computerprogramma
- Een proces is de activiteit waarbij een algoritme wordt uitgevoerd, dat op zijn beurt
geïmplementeerd is als een programma
- Een proces is de activiteit waarbij een programma wordt uitgevoerd dat een bepaald
algoritme implementeert
- Een programma is een uitvoerbare representatie of implementatie van een algoritme
Eerste en tweede equivalent
Hoe een computeralgoritme implementeren als een computerprogramma? Programmeren!
Instructies:
Print(“Hallo, hier ben ik …”)
For i in range (11):
Print (i**2,” “, end=””)
Print ()
Hetzelfde maar complexer:
A = [0 for i in range (11)]
For i in range (11):
A [i] = i**2
For i in range (11):
Print (a[i],” “, end=””)
Print ()
Voorbeeld 3: zonder commentaar:
Uitvoer