algoritmiek van probleem tot code hoorcollege 1 - ma. 4 sept. 2006 l.m. bosveld-de smet
TRANSCRIPT
Algoritmiek
Van probleem tot codeHoorcollege 1 - Ma. 4 sept.
2006L.M. Bosveld-de Smet
Het probleem
Correcte spelling van samenstellingen rode(n)kool knarse(n)tanden linze(n)moes geruchte(n)circuit druive(n)tros gerste(n)nat asperge(n)soep spinne(n)wiel pere(n)sap page(n)kapsel studente(n)taal weide(n)vogel
Moeten we –e of –en aan het linkerdeel van de samenstelling toevoegen?
G. Polya: “how to solve it”4 fasen
‘Understanding the problem’ ‘Devising a plan’ ‘Carrying out the plan’ ‘Looking back’
De regel
Nederlandse Taalunie: “We schrijven de tussenklank als –en als het linkerdeel van de samenstelling een zelfstandig naamwoord is dat een meervoud heeft op –en, maar geen meervoud op –es. In andere gevallen schrijven we –e.”
Algoritme: definitie
Een algoritme is een stapsgewijze beschrijving om van een probleem (bijv. hoe bak ik een cake?) tot een oplossing (goed resultaat) te komen.
Brookshear: “An algorithm is an ordered set of unambiguous, executable steps.”
Algoritme: huis-tuin-en-keuken-
voorbeeld
Amandelen pellen Doe water in een pan Stop er de ongepelde amandelen in Breng het water met de amandelen aan de
kook Giet kokend water af en laat de amandelen
schrikken Zolang er amandelen in de pan zitten
Pak er een Ontvel deze Doe deze in een schaal
Algoritme:een getalprobleempje
Het bepalen van het kleinste getal uit een rij van 10 getallen Bewaar het eerste getal van de rij Lees het volgende getal uit de rij Vergelijk deze met het eerste getal Als het kleiner is, bewaar dan dit
getal en vergeet het eerste getal Herhaal dit tot alle getallen uit de rij
aan bod zijn gekomen
Algoritme:Spelling samenstellingen
Kijk naar het linkerdeel van de samenstelling
Is het linkerdeel een zelfstandig naamwoord? NEE: schrijf –e JA: Heeft het linkerdeel een meervoud
op -es? NEE: schrijf –en JA: schrijf -e
Control flow
Is linkerdeel samenstelling een znw.?
Heeft linkerdeel een mv. op -es?
Schrijf -en Schrijf -e
NEE
JA
JA
NEE
linze + moes
Is linkerdeel samenstelling een znw.?
Heeft linkerdeel een mv. op -es?
Schrijf -en Schrijf -e
NEE
JA
JA
NEE
linzenmoes
page + kapsel
Is linkerdeel samenstelling een znw.?
Heeft linkerdeel een mv. op -es?
Schrijf -en Schrijf -e
NEE
JA
JA
NEE
pagekapsel
spin + wiel
Is linkerdeel samenstelling een znw.?
Heeft linkerdeel een mv. op -es?
Schrijf -en Schrijf -e
NEE
JA
JA
NEE
?spinnewiel ?spinnenwiel
Data flow
Geef correct gespelde samenstelling
Controleer op znw. Controleer op mv.=-es
linkerdeel
rechterdeelcorrect gespelde
samenstelling
linkerdeel linkerdeelj/n j/n
Data flow
Geef correct gespelde samenstelling
Controleer op znw. Controleer op mv.=-es
gerst
natgerstenat
gerst gerstj n
pseudocode
vraagInvoer (linker- en rechterdeel van samenstelling) if (isZnw (linkerdeel))
then if (eindigtMVopES (linkerdeel))
then schrijf samenstelling met –e else schrijf samenstelling met -en
then schrijf samenstelling met -e
Java Programmeertaal Application software Object-oriented programming
(OOP) Specifiek object: toestand (state) +
gedrag (behavior) Data en Methoden Klasse: een type object; een model
van een object in haar algemeenheid
Voorbeeld automobielklasse automobiel object mijnAuto object jouwAuto
kleur rood wit
fabrikaat Toyota Buick
model Celica LeSabre
jaar 1995 2001
motor 4-cylinder 6-cylinder
benzineverbruik 1 op 14 1 op 4
aantal passagiers 2 5
heeft kofferbak waar waar
heeft airco onwaar waar
Voorbeeld automobielActies geassocieerd aan een
automobiel
motor starten
naar voren rijden
naar achteren rijden
stoppen
versnellen
Compound: java klassepublic class Compound {
// data fieldsprivate String compound;
// methods// constructorpublic Compound () {compound = null;}
// instance methodpublic void formCompound (String lPart, String rPart) {if (isSubstantive (lPart)) {if (esEndingPlural (lPart)) {compound = lPart + "e" + rPart;} else {compound = lPart + "en" + rPart;}}else {compound = lPart + "e" + rPart;
}
public String getCompound () {return compound;}
Java Virtual Machine model
Source code
Byte code
Java compiler
Macintosh interpreter IBM-PC interpreter Sun interpreter JVM
java files
class files
JDK: java development
kit
www.sun.com
Het vak Ba Informatiekunde jaar 1 (propedeuse),
semester I Basis- en drempelvak!! Inleiding programmeren
Algemene programmeerbegrippen en technieken Specifieke programmeertaal: Java onder Unix
Geen voorkennis vereist Datastructuren (vak in Ba jaar 1, semester II)
bouwt voort op Algoritmiek N.B. “Programs = Datastructures +
Algorithms” (Niklaus Wirth)
Website Algoritmiek
Literatuur Brookshear: “Computer Science: an
Overview ” King: “Java Programming from the
Beginning “ Wekelijkse
(programmeer)opdrachten http://www.let.rug.nl/~bosveld/hp0607/
Studiehandleiding en Nestor
Studiehandleiding Algoritmiek, beschikbaar op website en in Nestor
Inleveren van opdrachten op papier in postvak Harmonie 4de
verdieping Bosveld electronisch in digital dropbox
Nestorcursus Algoritmiek