27.05.2013 Aufrufe

Funktionale Modellierung - Schulen in Regensburg

Funktionale Modellierung - Schulen in Regensburg

Funktionale Modellierung - Schulen in Regensburg

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Funktionale</strong> <strong>Modellierung</strong> im<br />

Informatikunterricht der Jahrgangstufe 9<br />

Markus Ste<strong>in</strong>ert<br />

Institut für Informatik<br />

Technische Universität München<br />

markus.schneider@<strong>in</strong>.tum.de<br />

http://ddi.<strong>in</strong>.tum.de


Objektorientiertes Analysieren:<br />

• Objektmodellierung<br />

• Klassenmodellierung<br />

• Beziehungen zwischen Objekten<br />

• Baumstrukturen<br />

• Informationsnetze<br />

Grundzüge der Ablaufmodellierung<br />

• Sequenzen<br />

• Entscheidungen<br />

• Wiederholungen<br />

• „Verteilte Aufgaben“<br />

Was wurde bisher gemacht ?<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 2


Lehrplan: 9. Jahrgangstufe<br />

Zentrale Inhalte:<br />

Wie geht es weiter ?<br />

• Beschreibung Daten verarbeitender Prozesse mithilfe von Funktionen und<br />

Datenflüssen<br />

• Zentrale Hilfsmittel:<br />

- Funktion: Zentraler Begriff im Mathematikunterricht der Jahrgangstufe 8<br />

- Funktionskomposition: „Zusammenspiel“ mehrerer Funktionen<br />

- Datenflussdiagramme<br />

- Elementare Datentypen: Zahlen und Texte<br />

- Verallgeme<strong>in</strong>erung des aus der 8. Jahrgangsstufe bekannten Funktonsbegriffs<br />

- Logische Funktionen<br />

- Bed<strong>in</strong>gte Funktionen<br />

• Datenmodellierung: Datenbanken (ke<strong>in</strong> Gegenstand dieses Workshops)<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 3


Karosserielager<br />

Karosseriemontage<br />

Endteilelager<br />

Endmontage<br />

Fahrgestelllager<br />

Fahrgestell<br />

-montage<br />

Radmontage<br />

PKW-Montageband<br />

Just-<strong>in</strong>-time-<br />

Anlieferung der<br />

Räder<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 4


Vere<strong>in</strong>fachte Datenflussdiagramme:<br />

Syntaktische Elemente<br />

Datenspeicher Datenspeicher<br />

<strong>in</strong>formationsverarbeitender<br />

Prozess<br />

E<strong>in</strong>gabedaten<br />

Ausgabedaten<br />

Datenflüsse<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 5


Datenflussdiagramme und<br />

Funktionen<br />

Verarbeitungsprozesse <strong>in</strong> Datenflussdiagrammen können als Funktionen<br />

<strong>in</strong>terpretiert werden<br />

Er<strong>in</strong>nerung: E<strong>in</strong>e Funktion ist e<strong>in</strong>e Abbildung, die e<strong>in</strong>er Menge A e<strong>in</strong>deutig e<strong>in</strong>en<br />

Element e<strong>in</strong>er Menge B zuordnet (Beispiel: Quadrat e<strong>in</strong>er Zahl).<br />

Basis<br />

Zahl<br />

Quadrat<br />

Mehrstellige Funktionen: Funktionen können mehrere E<strong>in</strong>gabeparameter haben<br />

Die Parameter können Zahlen, Worte, oder andere Datentypen se<strong>in</strong>:<br />

text1<br />

text2<br />

Zeichenkette<br />

Verb<strong>in</strong>de<br />

Zeichenkette<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 6<br />

Zahl<br />

Zeichenkette


Realisierung der<br />

Datenflussdiagramme<br />

Zur effizienten Umsetzung von Datenflussdiagrammen auf dem Rechner<br />

benötigen wir Systeme, die uns e<strong>in</strong>e Vielzahl von Funktionen zur<br />

Verfügung stellen:<br />

Anforderungen:<br />

• Standardsoftware; Programmierung nur ausnahmsweise<br />

• Arithmetische Operationen auf ganzen Zahlen und Fließkommazahlen<br />

• Statistische Operationen<br />

• Datentypen des Alltags (Währungen, Datumswerte, Zeiten etc.)<br />

• Verarbeitung von Texten<br />

• Möglichkeiten, den Datenfluss an Bed<strong>in</strong>gungen zu knüpfen<br />

→ Tabellenkalkulationsprogramme<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 7


VisiCalc Screen, early Alpha 1/4/79<br />

Tabellenkalkulation<br />

Spezielle Standardsoftware<br />

für<br />

mathematisch/kaufmännische<br />

Berechnungen<br />

Erf<strong>in</strong>dung von D. Brickl<strong>in</strong>, B.<br />

Franston: VisiCalc (Apple II),<br />

1979<br />

später: Lotus 1-2-3, Excel,<br />

StarCalc, etc.<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 8


Aufbau e<strong>in</strong>es Rechenblattes<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 9


Aufbau e<strong>in</strong>es Rechenblattes<br />

Dokumente e<strong>in</strong>er Tabellenkalkulation heißen Rechenblätter<br />

Rechenblätter bestehen aus Zellen, die <strong>in</strong> (endlich) vielen<br />

Zeilen und Spalten (z.B. Excel XP: 65.536 Zeilen mal 256<br />

Spalten)<br />

Zellen enthalten:<br />

• Daten verschiedener Sorten (Zahl, Währung, Datum, Text,<br />

..) oder<br />

• Formeln, die aus vordef<strong>in</strong>ierten Funktionen<br />

zusammengesetzt werden (Summe, Mittelwert, Wochentag,<br />

etc.)<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 10


Funktionsterm<br />

Datenflussdiagramme und<br />

Rechenblätter<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 11


Übersetzung von<br />

Datenflussdiagrammen<br />

In e<strong>in</strong>em ersten Schritt kann die geometrische Struktur des<br />

Datenflussdiagramms direkt auf die Tabellenkalkulation übertragen<br />

werden<br />

Daten und Funktionen werden dabei mit Zellen des Rechenblattes<br />

identifiziert<br />

Daten werden direkt e<strong>in</strong>getragen (E<strong>in</strong>stellung des Formats!)<br />

Funktionen werden durch e<strong>in</strong> „=„-Zeichen e<strong>in</strong>geleitet; anschließend<br />

folgt der Funktionsterm (Formate<strong>in</strong>stellung)<br />

Die Parameter der Funktionen werden <strong>in</strong> Zellbezüge übersetzt<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 12


Beispiel: Z<strong>in</strong>sen für Guthaben<br />

Anfangsdatum Enddatum Z<strong>in</strong>ssatz<br />

100 Kapital<br />

Datum<br />

Bruchteil<br />

von Jahren<br />

Zahl<br />

Datum<br />

Zahl<br />

Multiplikation<br />

Runden<br />

(2 Stellen)<br />

Division<br />

Zahl<br />

Währung<br />

Zahl<br />

Multiplikation<br />

Währung<br />

Währung<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 13<br />

Währung


Beispiel: Z<strong>in</strong>sen für Guthaben<br />

(Implementierung)<br />

Terme werden sofort ausgewertet !<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 14


Übung: Durchschnittsnote<br />

Erstellen Sie e<strong>in</strong> funktionales Modell (Datenflussdiagramm) und<br />

setzen Sie dieses anschließend mit e<strong>in</strong>em Tabellenkalkulationssystem<br />

um.<br />

Zeugnisnote <strong>in</strong> Mathematik <strong>in</strong> der 10. Jahrgangsstufe: Die<br />

Durchschnittsnote ergibt sich aus dem schriftlichen und dem<br />

mündlichen Durchschnitt im Verhältnis 2:1. Der schriftliche<br />

Durchschnitt ergibt sich aus 4 Schulaufgaben, der mündliche aus 2<br />

mündlichen Noten und 2 Stegreifaufgaben zu gleichen Teilen. Die<br />

Zeugnisnote soll ab n,50 auf die nächst größere natürliche Zahl<br />

aufgerundet werden.<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 15


arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 16


a b<br />

Funktion1<br />

Funktion2<br />

Datenflussdiagramm<br />

r<br />

c<br />

<strong>Funktionale</strong> Strukturen <strong>in</strong><br />

Rechenblättern<br />

Term<br />

r := Funktion2(Funktion1(a,b),c)<br />

Rechenblatt<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 17


<strong>Funktionale</strong> Strukturen <strong>in</strong><br />

Rechenblättern<br />

Für komplexe Aufgabenstellungen ist die direkte geometrische<br />

Übertragung vom Datenflussdiagramm zum Rechenblatt zu aufwendig<br />

Zusammenfassung von Teilen des Diagramms zu e<strong>in</strong>em Term<br />

Gesucht: Verfahren zur Komprimierung e<strong>in</strong>es Datenflussdiagramms zu<br />

e<strong>in</strong>em Term<br />

Anforderung: Der Term soll zunächst unabhängig von der späteren<br />

Implementierung se<strong>in</strong>; es wird somit noch nicht berücksichtigt, wie die<br />

Funktionen beispielsweise <strong>in</strong> Excel genannt werden.<br />

In e<strong>in</strong>em letzten Schritt wird der Term an die jeweilige Implementierung<br />

angepasst.<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 18


5<br />

7<br />

Addition von Brüchen:<br />

Vorüberlegungen<br />

Aufgabe: Addiere zwei Brüche<br />

• b1= z1/n1,<br />

• b2 = z2/n2<br />

Vorgehen:<br />

• Suche den Hauptnenner: HN = kgV(n1,n2)<br />

• Erweitere b1 mit HN/n1, b2 mit HN/n2 (Erw.Faktor1, 2)<br />

• Addiere die neuen, erweiterten Zähler zum neuen Zähler z3<br />

• Ergebnis: z3/HN<br />

Beispiel:<br />

+<br />

2<br />

3<br />

=<br />

5<br />

21<br />

⋅<br />

7<br />

21<br />

+<br />

2<br />

21<br />

⋅<br />

3<br />

21<br />

=<br />

5 ⋅ 3<br />

21<br />

2 ⋅ 7<br />

21<br />

+ 14<br />

21<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 19<br />

+<br />

=<br />

15<br />

=<br />

29<br />

21


Verteiler<br />

Addieren von Brüchen: Informelles<br />

Datenflussdiagramm<br />

Zähler 1 Nenner 1 Nenner 2 Zähler 2<br />

Hauptnenner<br />

Erweiterungsfaktor<br />

Erweiterungsfaktor<br />

Erweitern Erweitern<br />

Addieren<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 20


Addieren von Brüchen: Formales<br />

Datenflussdiagramm<br />

Zähler 1 Nenner 1 Nenner 2 Zähler 2<br />

div<br />

kgV<br />

mult mult<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 21<br />

add<br />

div


Addieren von Brüchen:<br />

Termdarstellung<br />

Strategie: „Bottom –Up“<br />

Unterste Zeile: add( ?, ?)<br />

E<strong>in</strong>setzen der Argumente (d.h. der zweitletzten Zeile):<br />

add( mult(?,?), mult(?,?))<br />

E<strong>in</strong>setzen der drittletzten Zeile:<br />

add( mult(zaehler1,div(?,?)),<br />

mult(div(?,?),zaehler2)).<br />

Schließlich:<br />

add( mult(zaehler1,<br />

div(kgV(nenner1,nenner2),<br />

nenner1)),<br />

mult(div(kgV(nenner1,nenner2),<br />

nenner2)),<br />

zaehler2)).<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 22


Addieren von Brüchen: Von der<br />

Termdarstellung zur<br />

Implementierung<br />

Tabellenkalulationsprogramme enthalten im Allgeme<strong>in</strong>en die<br />

arithmetischen Standardoperationen <strong>in</strong> der üblichen Form<br />

(sogenannte Infix – Schreibweise)<br />

Ersetzen der Funktionen div, add und mult durch die<br />

Operatoren „/“, „+“ und „*“<br />

Ersetzen von div:<br />

add( mult(zaehler1,<br />

(kgV(nenner1,nenner2)/nenner1)),<br />

mult((kgV(nenner1,nenner2)/nenner2)),<br />

zaehler2)).<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 23


Ersetzen von mult:<br />

Addieren von Brüchen: Von der<br />

Termdarstellung zur<br />

Implementierung<br />

add((zaehler1*(kgV(nenner1,nenner2)/nenner1)),<br />

((kgV(nenner1,nenner2)/nenner2))*zaehler2))<br />

Ersetzen von add:<br />

(zaehler1*(kgV(nenner1,nenner2)/nenner1)) +<br />

((kgV(nenner1,nenner2)/nenner2)*zaehler2)<br />

Implementierung:<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 24


Übung: Arbeiten mit Verteilern<br />

Für die <strong>in</strong>terne Darstellung von Zeitangaben verwenden Rechenblätter Zahlen <strong>in</strong><br />

Dezimaldarstellung. Der ganzzahlige Anteil repräsentiert das Datum, der<br />

Dezimalanteil die Zeit. Rechenblätter stellen die Funktion „Jetzt()“ zur<br />

Verfügung, die die momentane Zeit als Dezimalzahl zurückgibt;<br />

a) Durch Änderung der Formatierung kann die Zeit <strong>in</strong> gewohnter Form<br />

„Stunde:M<strong>in</strong>ute:Sekunde“ dargestellt werden. Geben Sie das<br />

Datenflussdiagramm an, das diese Formatierungsfunktion beschreibt.<br />

Beachten Sie dabei, dass 1 Stunde durch 1/24, 1 M<strong>in</strong>ute durch 1/ (24·60)<br />

und 1 Sekunde durch 1/(24·60·60) repräsentiert wird.<br />

b) Übertragen Sie das Datenflussdiagramm auf e<strong>in</strong> Rechenblatt und testen<br />

Sie Ihr „Formatierungsverfahren“.<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 25


:<br />

Verb<strong>in</strong>de<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 26<br />

Sub<br />

Sub<br />

Sub<br />

Mult<br />

Mult<br />

Jetzt<br />

Ganzzahl<br />

24<br />

Ganzzahl<br />

60<br />

Ganzzahl


Wahrheitswerte und Funktionen über<br />

Wahrheitswerten<br />

Wahrheitswerte werden auch als Boolesche Werte bezeichnet (Boolesche<br />

Funktionen)<br />

Wahrheitswerte s<strong>in</strong>d „Resultate“ von Aussagen:<br />

„Heute ist Dienstag“ → Aussage entweder wahr oder falsch<br />

„17 ist der ggT von 34 und 49“ (wahr oder falsch ?)<br />

Aussagen s<strong>in</strong>d somit Funktionen mit e<strong>in</strong>er beliebigen Anzahl von Argumenten;<br />

das „Resultat“ e<strong>in</strong>er Aussage ist e<strong>in</strong> Wahrheitswert (wahr oder falsch,<br />

true oder false, 0 oder 1, ...)<br />

date 1<br />

date n<br />

typ1<br />

typn<br />

Aussage<br />

Wahrheitswert<br />

Anwendungsfeld: An den Kontrollfluss e<strong>in</strong>es Programms werden Bed<strong>in</strong>gungen<br />

gestellt; Operatoren wie „“ „=„ usw<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 27


Funktionen über Wahrheitswerten<br />

(E<strong>in</strong>fache Beispiele)<br />

Lexikographische Ordnung („Telefonbuchordnung“):<br />

In e<strong>in</strong>em Telefonbuch steht der Name „Radlbacher“ vor dem Namen „Wastlhofer“<br />

S<strong>in</strong>d zwei Namen identisch ?<br />

Datenflussdiagramme:<br />

Radlbacher Wastlhofer<br />

Text Text<br />

steht vor<br />

boolean<br />

„Häberle“<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 28<br />

Text<br />

ist identisch<br />

Text<br />

boolean<br />

„Häfele“


Termdarstellung:<br />

stehtVor(„Radlbacher“, „Wastlhofer“)<br />

istIdentisch(„Häberle“, „Häfele“)<br />

Implementierung (Excel):<br />

Funktionen über Wahrheitswerten<br />

(E<strong>in</strong>fache Beispiele)<br />

Bemerkung: Auch die Vergleichsoperatoren ; = s<strong>in</strong>d polymorph, sie lassen sich auf<br />

Texte anwenden<br />

Wahrheitswerte s<strong>in</strong>d <strong>in</strong> Tabellenkalkulationen Datentypen, wie Zahlen;<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 29


Gesucht:<br />

Funktionen über Wahrheitswerten:<br />

Verknüpfungen boolescher<br />

Funktionen<br />

Datenflussdiagramm e<strong>in</strong>er Funktion, die ermittelt, ob zwei Namen unterschiedlich s<strong>in</strong>d<br />

Datenflussdiagramm e<strong>in</strong>er Funktion, die ermittelt, ob im Telefonbuch e<strong>in</strong> Name „zwischen“<br />

zwei weiteren Namen steht<br />

Datenflussdiagramme<br />

name 1 name 2<br />

str<strong>in</strong>g<br />

is equal<br />

not<br />

boolean<br />

boolean<br />

str<strong>in</strong>g<br />

„Dimpflmoser“ name „Schlotterbeck“<br />

str<strong>in</strong>g str<strong>in</strong>g str<strong>in</strong>g<br />

boolean<br />

less greater<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 30<br />

and<br />

boolean<br />

boolean


Funktionen über Wahrheitswerten:<br />

Verknüpfungen boolescher<br />

Funktionen<br />

Termdarstellung:<br />

not(isEqual(name1, name2))<br />

and(isLess(„Dimpflmoser“, name),<br />

isGreater(„Schlotterbeck“, name))<br />

Implementierung:<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 31


a<br />

True<br />

True<br />

False<br />

False<br />

And<br />

Boolesche Ausdrücke:<br />

Wahrheitstabellen zentraler<br />

boolescher Funktionen<br />

Or Not<br />

And Or<br />

Not<br />

b<br />

True<br />

False<br />

True<br />

False<br />

And(a, b)<br />

True<br />

False<br />

False<br />

False<br />

a<br />

True<br />

True<br />

False<br />

False<br />

False<br />

False<br />

False<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 32<br />

b<br />

True<br />

True<br />

Or(a, b)<br />

True<br />

True<br />

True<br />

a<br />

True<br />

False<br />

Not(a)<br />

False<br />

True


Übung: Boolesche Ausdrücke <strong>in</strong><br />

Beispielen (Wirtschaftsverbände)<br />

Bei der Bildung e<strong>in</strong>er Wirtschaftsgeme<strong>in</strong>schaft zwischen den<br />

Softwareherstellern A, B und C müssen folgende Bed<strong>in</strong>gungen beachtet<br />

werden:<br />

1. Es ist nicht möglich, Firma A, nicht jedoch B zu beteiligen<br />

2. A kann beteiligt werden, aber nicht C, oder C kann beteiligt werden, aber nicht A (d.h.<br />

entweder A, oder C)<br />

3. C kann beteiligt werden, aber nicht B, oder B kann beteiligt werden, aber nicht C (d.h.<br />

entweder C, oder B)<br />

Gibt es unter diesen Bed<strong>in</strong>gungen e<strong>in</strong>e Möglichkeit zur Bildung der<br />

Wirtschaftsgeme<strong>in</strong>schaft ?<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 33


A B<br />

And<br />

Not<br />

Not<br />

Boolesche Ausdrücke <strong>in</strong> Beispielen:<br />

Wirtschaftsverbände (1. Bed<strong>in</strong>gung)<br />

1. Bed<strong>in</strong>gung:<br />

Termstruktur:<br />

Not(And(A, Not(B)))<br />

Implementierung (Excel):<br />

Nicht(Und(A; Nicht(B)))<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 34


A<br />

2. Bed<strong>in</strong>gung:<br />

Termstruktur:<br />

Boolesche Ausdrücke <strong>in</strong> Beispielen:<br />

Wirtschaftsverbände (2. Bed<strong>in</strong>gung)<br />

Or(And(A, Not(C)),And(C, Not(A)))<br />

Implementierung (Excel):<br />

Oder(Und(A; Nicht(C) ); Und(C, Nicht(A)))<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 35<br />

And<br />

C<br />

Not<br />

Or<br />

And<br />

Not


3. Bed<strong>in</strong>gung:<br />

Termstruktur:<br />

Or(And(C, Not(B)),And(B, Not(C)))<br />

Implementierung (Excel):<br />

Boolesche Ausdrücke <strong>in</strong> Beispielen:<br />

Wirtschaftsverbände (3. Bed<strong>in</strong>gung)<br />

Oder(Und(C; Nicht(B)); Und(B, Nicht(C)))<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 36<br />

And<br />

B<br />

Not<br />

Or<br />

And<br />

Not<br />

C


Gesamte Bed<strong>in</strong>gung:<br />

Termstruktur:<br />

And(Not(And(A, Not(B))), Or(And(A, Not(C)),And(C, Not(A))),<br />

Or(And(C, Not(B)),And(B, Not(C)))))<br />

Implementierung (Excel):<br />

Boolesche Ausdrücke <strong>in</strong> Beispielen:<br />

Wirtschaftsverbände<br />

A B<br />

1. Bed<strong>in</strong>gung 2. Bed<strong>in</strong>gung 3. Bed<strong>in</strong>gung<br />

Und(Nicht(Und(A; Nicht(B))); Oder(Und(A; Nicht(C));Und(C; Nicht(A)));<br />

Oder(Und(C; Nicht(B));Und(B; Nicht(C))))<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 37<br />

And<br />

C


Ergebnis:<br />

Boolesche Ausdrücke <strong>in</strong> Beispielen:<br />

Wirtschaftsverbände<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 38


Bed<strong>in</strong>gter Ausdruck<br />

Die Semantik bed<strong>in</strong>gter Ausdrücke ist von Konditionalsätzen vertraut:<br />

„Wenn es schneit, fahre ich mit dem Bus sonst ich bleibe zu Hause“<br />

Struktur:<br />

Bed<strong>in</strong>gung: diese Bed<strong>in</strong>gung ist entweder wahr oder falsch (hier: es schneit)<br />

Zwei Alternativen (Funktionen desselben Typs)<br />

Datenflussdiagramm:<br />

Bed<strong>in</strong>gter Ausdruck<br />

Typ<br />

Funktion mit drei Argumenten<br />

Wahrheitswert<br />

Typ<br />

Wenn<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 39<br />

Typ


Bed<strong>in</strong>gter Ausdrücke <strong>in</strong> Beispielen<br />

Julianischer Kalender: Wenn die Jahreszahl durch vier teilbar ist, ist das Jahr<br />

e<strong>in</strong> Schaltjahr:<br />

Jahreszahl<br />

Durch 4 teilbar<br />

Wenn<br />

„Schaltjahr“ „Ke<strong>in</strong> Schaltjahr“<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 40


Bed<strong>in</strong>gte Ausdrücke <strong>in</strong> Beispielen<br />

Julianischer Kalender: Wenn die Jahreszahl durch vier teilbar ist, ist das Jahr<br />

e<strong>in</strong> Schaltjahr:<br />

Jahreszahl „Schaltjahr“ „Ke<strong>in</strong> Schaltjahr“<br />

istTeilbar<br />

4<br />

Wenn<br />

istTeilbar<br />

Rest<br />

equal<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 41<br />

0


Bed<strong>in</strong>gte Ausdrücke <strong>in</strong> Beispielen<br />

Termstruktur der Funktion „durch 4 teilbar“:<br />

• Equal(Rest(Jahreszahl, 4), 0)<br />

Termstruktur des bed<strong>in</strong>gten Ausdrucks:<br />

• Wenn(durch4teilbar(Jahreszahl), „Schaltjahr“, „ke<strong>in</strong> Schaltjahr“)<br />

• Wenn(Equal(Rest(Jahreszahl, 4), 0)), „Schaltjahr“, „ke<strong>in</strong> Schaltjahr“)<br />

Implementierung:<br />

Wenn((Rest(Jahreszahl; 4)= 0); “Schaltjahr“; “ke<strong>in</strong> Schaltjahr“)<br />

Bemerkung: In Excel können über “E<strong>in</strong>fügen -> Name -> Def<strong>in</strong>ieren ...“ e<strong>in</strong>zelne<br />

Zellbereiche mit Namen versehen werden!<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 42


Gregorianischer<br />

Kalender:<br />

• E<strong>in</strong> Jahr ist e<strong>in</strong><br />

Schaltjahr, wenn die<br />

Jahreszahl durch 4<br />

teilbar ist. Von<br />

dieser Regel s<strong>in</strong>d<br />

alle Jahreszahlen<br />

ausgenommen, die<br />

durch 100 teilbar<br />

s<strong>in</strong>d; diese s<strong>in</strong>d nur<br />

Schaltjahre, wenn<br />

sie auch durch 400<br />

teilbar s<strong>in</strong>d.<br />

Schachtelung bed<strong>in</strong>gter Ausdrücke<br />

Jahreszahl<br />

Jahreszahl<br />

4<br />

Ist Teilbar<br />

Wenn<br />

Ist Teilbar<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 43<br />

100<br />

Wenn<br />

Ist Teilbar<br />

Wenn<br />

400<br />

Schaltjahr<br />

Schaltjahr<br />

Ke<strong>in</strong><br />

Ke<strong>in</strong><br />

Schaltjahr Schaltjahr


Termdarstellung:<br />

Schachtelung bed<strong>in</strong>gter Ausdrücke<br />

äußerste Bed<strong>in</strong>gung:<br />

Wenn(Equal(Rest(Jahr, 4), 0), ?,“ke<strong>in</strong> Schaltjahr“)<br />

zweite Bed<strong>in</strong>gung:<br />

Wenn(Equal(Rest(Jahr, 4), 0),<br />

Wenn(Equal(Rest(Jahr, 100), 0), ?,“Schaltjahr“),<br />

“ke<strong>in</strong> Schaltjahr“)<br />

dritte Bed<strong>in</strong>gung:<br />

Wenn(Equal(Rest(Jahr, 4), 0),<br />

Wenn(Equal(Rest(Jahr, 100), 0),<br />

Wenn(Equal(Rest(Jahr, 400), 0), “Schaltjahr“, “ke<strong>in</strong> Schaltjahr“, ),<br />

“Schaltjahr“),<br />

“ke<strong>in</strong> Schaltjahr“)<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 44


Implementierung:<br />

Schachtelung bed<strong>in</strong>gter Ausdrücke<br />

Wenn((Rest(Jahreszahl; 4)= 0);<br />

Wenn((Rest(Jahreszahl; 100)= 0);<br />

Wenn((Rest(Jahreszahl; 400)= 0);“Schaltjahr“;“ke<strong>in</strong> Schaltjahr“);<br />

“Schaltjahr“);<br />

“ke<strong>in</strong> Schaltjahr“)<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 45


Gegeben seien drei Worte;<br />

welches dieser Worte ist<br />

gemäß der lexikographischen<br />

Ordnung das Größte?<br />

Übung: Bed<strong>in</strong>gter Ausdruck:<br />

„Maximum“ dreier Worte<br />

größer<br />

Wahrheitswert<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 46<br />

Text<br />

Text 1<br />

Text<br />

Wenn<br />

Text 2<br />

Text<br />

größer<br />

Wenn<br />

Text 3<br />

Text<br />

Text


Bed<strong>in</strong>gter Ausdruck: „Maximum“<br />

dreier Worte<br />

Termdarstellung (schrittweise „Bottom Up“)<br />

Wenn(größer(?,text3),?, text3).<br />

Wenn(größer(Wenn(greater(text1,text2),text1,text2),<br />

text3),<br />

Wenn(größer(text1,text2),text1,text2),<br />

text3).<br />

Implementierung:<br />

Wenn((Wenn(text1>text2); text1; text2)>text3;<br />

(Wenn(text1>text2); text1; text2);<br />

text3)<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 47


Iteration <strong>in</strong> Rechenblättern<br />

Iterationen s<strong>in</strong>d Berechnungsvorgänge, die sich <strong>in</strong> gleichartige<br />

Teilberechnungen aufspalten lassen, die sukzessive durchgeführt werden<br />

Beispiele:<br />

• Z<strong>in</strong>sesz<strong>in</strong>sen über mehrere Jahre<br />

• Verschlüsselung oder Entschlüsselung von Daten<br />

• Umwandlung von Dualzahlen <strong>in</strong> Dezimalzahlen<br />

Die e<strong>in</strong>zelnen Teilberechnungen unterscheiden sich nur <strong>in</strong> den<br />

E<strong>in</strong>gangsparametern<br />

Iterationen werden<br />

• durch sukzessive Anwendung e<strong>in</strong>er Formel <strong>in</strong> verschiedenen Zellen<br />

(Wiederholungszahl wird durch den Benutzer festgelegt) oder<br />

• durch Makroprogrammierung (und damit Verwendung von Schleifen)<br />

realisiert.<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 48


Kapital Z<strong>in</strong>ssatz<br />

Gew<strong>in</strong>n <strong>in</strong> 2000<br />

add<br />

div<br />

mult<br />

100<br />

Iterationen: Z<strong>in</strong>sesz<strong>in</strong>sen<br />

u Beg<strong>in</strong>n des Jahres 2000 werde e<strong>in</strong> Kapital von 10000 DM zu e<strong>in</strong>em Z<strong>in</strong>ssatz<br />

von 3,75 % angelegt. Wie groß ist das Kapital am Ende des Jahres 2005 ?<br />

Kapital Z<strong>in</strong>ssatz<br />

Gew<strong>in</strong>n <strong>in</strong> 2000<br />

Gew<strong>in</strong>n <strong>in</strong> 2001<br />

Gew<strong>in</strong>n <strong>in</strong> 2002<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 49


Iterationen: Strategie der<br />

Datenflussmodellierung<br />

Identifizieren des iterativen (strukturell stets wiederkehrenden) Teils der<br />

Berechnung<br />

Grobmodell: Erstellung e<strong>in</strong>es Datenflussdiagramms zur <strong>Modellierung</strong> der<br />

iterativen Struktur (rechtes Diagramm der vorhergehenden Folie)<br />

Detailmodell: Verfe<strong>in</strong>erung des Modells durch <strong>Modellierung</strong> e<strong>in</strong>es iterativen<br />

Schrittes (l<strong>in</strong>kes Diagramm der vorhergehenden Folie)<br />

Zusammenfassen des Detailmodells zu e<strong>in</strong>em e<strong>in</strong>zigen Term.<br />

• Obiges Beispiel: add(Kapital, mult(div(Z<strong>in</strong>ssatz,100), Kapital))<br />

= Kapital + Kapital * Z<strong>in</strong>ssatz/100<br />

= Kapital*(1+ Z<strong>in</strong>ssatz/100)<br />

Projektion des Grobmodells auf e<strong>in</strong>e Rechenblatt<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 50


Beispiel 1: Z<strong>in</strong>s und Z<strong>in</strong>sesz<strong>in</strong>s<br />

Trick beim Kopieren von Formeln: Automatische Anpassung<br />

der Zellbezüge kann durch Voranstellung e<strong>in</strong>es $-Zeichens<br />

unterdrückt werden<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 51


Der zeitliche Verlauf des Volkse<strong>in</strong>kommen ist<br />

nach Samuelson durch die Gleichung<br />

Yi = a ⋅Yi<br />

−1<br />

− b⋅Y<br />

i−2<br />

Übung: Volkswirtschaftliches<br />

Wachstum (nach Samuelson)<br />

+ c,<br />

wobei a, b, c reelle Zahlen s<strong>in</strong>d,<br />

beschrieben.<br />

Die Berechnung e<strong>in</strong>es Wertes Y(ti ) erfordert<br />

also die Kenntnis der vorhergehenden<br />

Werte Y(ti-1) und Y(ti-2) a b c<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 52<br />

Y 0<br />

Y 1<br />

Y 2<br />

Y 3<br />

Y 4


Literatur<br />

Ab Mai 2007: Informatik II: Tabellenkalkulation und Datenbanken;<br />

Hubwieser, Spohrer, Ste<strong>in</strong>ert, Voss, Klett Verlag<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 53


Implementierung:<br />

Beispiel 2: Volkswirtschaftliches<br />

Wachstum (Samuelson)<br />

arkus Ste<strong>in</strong>ert MNU-Tagung 2007, <strong>Regensburg</strong> 54

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!