Algoritmiek Van probleem tot code Hoorcollege 1 - Ma. 4 sept. 2006 L.M. Bosveld-de Smet.

Post on 04-Aug-2015

215 views 2 download

Transcript of Algoritmiek Van probleem tot code Hoorcollege 1 - Ma. 4 sept. 2006 L.M. Bosveld-de Smet.

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