Funktionale Modellierung - Schulen in Regensburg
Funktionale Modellierung - Schulen in Regensburg
Funktionale Modellierung - Schulen in Regensburg
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