Algoritmiek

advertisement
Algoritmiek
Van probleem tot code
Hoorcollege 1 - Ma. 4 sept. 2006
L.M. Bosveld-de Smet
Het probleem

Correcte spelling van samenstellingen







rode(n)kool
linze(n)moes
druive(n)tros
asperge(n)soep
pere(n)sap
studente(n)taal
knarse(n)tanden
geruchte(n)circuit
gerste(n)nat
spinne(n)wiel
page(n)kapsel
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
NEE
Is linkerdeel samenstelling een znw.?
JA
Heeft linkerdeel een mv. op -es?
JA
NEE
Schrijf -en
Schrijf -e
linze + moes
NEE
Is linkerdeel samenstelling een znw.?
JA
Heeft linkerdeel een mv. op -es?
JA
NEE
Schrijf -en
Schrijf -e
linzenmoes
page + kapsel
NEE
Is linkerdeel samenstelling een znw.?
JA
Heeft linkerdeel een mv. op -es?
JA
NEE
Schrijf -en
Schrijf -e
pagekapsel
spin + wiel
NEE
Is linkerdeel samenstelling een znw.?
JA
Heeft linkerdeel een mv. op -es?
JA
NEE
Schrijf -en
Schrijf -e
?spinnewiel ?spinnenwiel
Data flow
linkerdeel
correct gespelde
samenstelling
rechterdeel
Geef correct gespelde samenstelling
linkerdeel
j/n
Controleer op znw.
linkerdeel
j/n
Controleer op mv.=-es
Data flow
gerst
gerstenat
nat
Geef correct gespelde samenstelling
gerst
j
Controleer op znw.
gerst
n
Controleer op mv.=-es
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 automobiel
klasse 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 automobiel
Acties geassocieerd aan een
automobiel
motor starten
naar voren rijden
naar achteren rijden
stoppen
versnellen
Compound: java klasse
public class Compound {
// data fields
private String compound;
// methods
// constructor
public Compound () {
compound = null;
}
// instance method
public 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
JDK: java
development kit
www.sun.com
Java compiler
Byte code
Macintosh interpreter
java files
IBM-PC interpreter
class files
Sun interpreter
JVM
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
Download