Een voorschrift dat je van je probleem (bijvoorbeeld “hoe stel ik mijn video in”) bij de oplossing van het probleem brengt wordt algemeen een algoritme genoemd.
Een algoritme is een voorschrift met al de handelingen die men moet verrichten om vanuit een gegeven beginsituatie een bepaald resultaat te bereiken.
De bedoeling van het eerste deel van de cursus is dat je de algemene principes leert voor het opstellen van algoritmen. Dit is een heel belangrijke fase in het maken van een progama. Later zetten we dan de stap naar het leren van een volledige programmeertaal. Het echte programmeerwerk wordt hier tot de basis beperkt.
Een algoritme is meestal te ingewikkeld om in één geheel te beschrijven. Daarom gaan we een probleem opsplitsen in deelproblemen. Om een algoritme op te bouwen maken we daarom gebruik van deelalgoritmen. Een deelalgoritme is eigenlijk niets anders dan een gewoon algoritme dat gebruikt wordt in een ander algoritme.
De uitvoerder van het algoritme wordt de processor genoemd.
Het hangt er nu van af wie de processor is, of die een opdracht al dan niet begrijpt. Je kan je broer vragen om voor jou eens de CD, die je zonet van een vriendin bruikleen kreeg, over te zetten naar mp3. Voor je broer geeft dit waarschijnlijk weinig problemen. Voor hem is ZetCDover een concreet deelalgoritme. Vraag je hetzelfde aan je oma dan kan het gerust zijn dat je haar eerst goed zal moeten uitleggen hoe ze het juist moet doen. Voor haar is ZetCDover een abstract deelalgoritme.
Een deelalgoritme is een concreet deelalgoritme voor een processor als deze het zonder bijkomende uitleg kan uitvoeren. Het is een abstract deelalgoritme voor de processor als er nog bijkomende uitleg nodig is.
Als je een algoritme opstelt kan je gerust gebruik maken van abstracte deelalgoritmen. Het is zelfs aangewezen om dat te doen. Zo kan je een probleem opsplitsen in deelproblemen. Deze deelproblemen moeten dan wel verder uitgewerkt worden. We zeggen dat het deelalgoritme nog verder verfijnd moet worden. Die uitwerking wordt een verfijning genoemd.
Voorbeeld
Als we algoritmen zullen maken en we willen aan de gebruiker een getal vragen, dan zullen we gebruik maken van de opdracht
LEES(“Geef een getal”)
Probeer je dit in een andere bestand dan het sjabloon, dan zal de computer/browser niets doet of een foutmelding geven. Voor de google omgeving is de opdracht LEES standaard een abstracte opdracht.
Omdat dit toch een redelijk logische naam is voor die opdracht zullen wij toch de opdracht LEES gebruiken. Daarom werd in de oefeningen ervoor gezorgd dat de opdracht LEES verfijnd is.
function LEES(tekst_in_het_venster){
var OpgevraagdGegeven = browser.Inputbox(tekst_in_het_venster)
If (OpgevraagdGegeven <> "") {
SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getActiveCell() = OpgevraagdGegeven
}
}
Voor de google omgeving is dit nu volledig duidelijk. Het is met andere woorden een concrete opdracht geworden. Voor jou is dit misschien alles behalve duidelijk, maar er is geen enkel probleem. Als jij de opdracht LEES geeft, wordt dit door Google omgeving toch begrepen, want er werd bijkomende uitleg gegeven.
Het is dan ook zo dat, als je thuis wil oefenen, je van alle basisbevelen die we zullen gebruiken, de verfijningen zal moeten hebben. Die kan je terugvinden op classroom. Alle basisbevelen zijn ondergebracht in een sjabloon. Als je je oefeningen op dit sjabloon baseert worden de concrete deelalgoritmen uit deze cursus begrepen.
In het verdere verloop van deze cursus zal de klemtoon vooral liggen op het maken en het gebruiken van zo’n verfijningen.
Oplossen van ax² + bx + c = 0
Lees de coëfficiënten a, b en c
Bereken de discriminant D = b² - 4ac
- Als D > 0 bereken de twee oplossingen (zie afbeelding 1)
- Als D = 0 bereken de ene oplossing (zie afbeelding 2)
- Als D < 0 zijn er geen oplossingen
Noteer de oplossingsverzameling van de vergelijking.
Afbeelding 1
Afbeelding 2
De verschillende stappen in een algoritme worden normaal niet met cijfertjes aangeduid, zoals in het vorig voorbeeld.
Normaal wordt een algoritme in een of ander schema voorgesteld. We zullen dit jaar vooral gebruik maken van Nassi-Schneidermann-diagrammen, kortweg NS-diagrammen.
Hieronder vind je een algoritme dat beschrijft hoe je een fietsband herstelt. Dit algoritme is in zo’n NS-diagram voorgesteld.