This commit is contained in:
M.Scholz 2012-05-06 13:35:59 +02:00
parent 6ea59d63db
commit 09533cfe30

View File

@ -0,0 +1,239 @@
%Animal 2.3
title "Russische Bauernmultiplikation"
author "Michael Scholz, Ulf Gebhardt"
{
text "header" "Russische Bauernmultiplikation" at (20, 30) font SansSerif size 24 bold
text "straight" "Die Funktionsweise lässt sich in die folgenden fünf Schritte gliedern:" at (20, 85) font SansSerif size 18
text "straight" "1. Schreibe die beiden zu multiplizierenden Zahlen nebeneinander." at (20, 115) font SansSerif size 18
text "straight" "2. Die linke Zahl wird halbiert (Reste werden abgerundet), die rechte Zahl wird verdoppelt." at (20, 140) font SansSerif size 18
text "straight" "Die beiden berechneten Zahlen werden in die darauffolgende Zeile geschrieben." at (43, 165) font SansSerif size 18
text "straight" "3. Schritt 2 wird solange wiederholt, bis in der linken Spalte eine 1 steht." at (20, 190) font SansSerif size 18
text "straight" "4. Nun streicht man alle Zeilen, in denen die linke Zahl gerade ist." at (20, 215) font SansSerif size 18
text "straight" "5. Schlussendlich werden alle übrigen Zahlen der rechten Spalte addiert." at (20, 240) font SansSerif size 18
}
{
hideAll
text "header" "Russische Bauernmultiplikation" at (20, 30) font SansSerif size 24 bold
codeGroup "code" at (10, 147) color black highlightColor red
addCodeLine "public int russe(int a, int b){" to "code"
addCodeLine "\t if(a == 1){" to "code"
addCodeLine "\t \t return b; " to "code"
addCodeLine "\t }" to "code"
addCodeLine "\tif(a % 2 == 1){" to "code"
addCodeLine "\t \t return b + russe(a/2, b*2);" to "code"
addCodeLine "\t }else{" to "code"
addCodeLine "\t \t return russe(a/2, b*2);" to "code"
addCodeLine "\t }" to "code"
addCodeLine "}" to "code"
}
{
grid "tb1" (270, 160 ) lines 7 columns 4 style table cellWidth 100
setGridValue "tb1 [ 0 ] [ 0 ]" "A-Seite"
setGridValue "tb1 [ 0 ] [ 1 ]" "B-Seite"
setGridValue "tb1 [ 0 ] [ 2 ]" "addieren"
setGridValue "tb1 [ 0 ] [ 3 ]" "Summe"
setGridValue "tb1 [ 1 ] [ 0 ]" "27"
setGridValue "tb1 [ 1 ] [ 1 ]" "82"
setGridColor "tb1 [] []" fillColor white highlightBackColor red
}
{
highlightCode on "code" line 0
}
{
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 4
}
{
unhighlightCode on "code" line 4
highlightCode on "code" line 5
highlightGridCell "tb1 [ 1 ] [ 2 ]" within 100ms
highlightGridCell "tb1 [ 1 ] [ 3 ]" within 100ms
setGridValue "tb1 [ 1 ] [ 2 ]" "Ja"
setGridValue "tb1 [ 1 ] [ 3 ]" "82"
}
{
unhighlightCode on "code" line 5
highlightCode on "code" line 0
unhighlightGridCell "tb1 [ 1 ] [ 2 ]"
unhighlightGridCell "tb1 [ 1 ] [ 3 ]"
highlightGridCell "tb1 [ 2 ] [ 0 ]" within 100ms
highlightGridCell "tb1 [ 2 ] [ 1 ]" within 100ms
setGridValue "tb1 [ 2 ] [ 0 ]" "13"
setGridValue "tb1 [ 2 ] [ 1 ]" "164"
}
{
unhighlightGridCell "tb1 [ 2 ] [ 0 ]"
unhighlightGridCell "tb1 [ 2 ] [ 1 ]"
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 4
}
{
unhighlightCode on "code" line 4
highlightCode on "code" line 5
highlightGridCell "tb1 [ 2 ] [ 2 ]" within 100ms
highlightGridCell "tb1 [ 2 ] [ 3 ]" within 100ms
setGridValue "tb1 [ 2 ] [ 2 ]" "Ja"
setGridValue "tb1 [ 2 ] [ 3 ]" "82+164"
}
{
unhighlightCode on "code" line 5
highlightCode on "code" line 0
unhighlightGridCell "tb1 [ 2 ] [ 2 ]"
unhighlightGridCell "tb1 [ 2 ] [ 3 ]"
highlightGridCell "tb1 [ 3 ] [ 0 ]" within 100ms
highlightGridCell "tb1 [ 3 ] [ 1 ]" within 100ms
setGridValue "tb1 [ 3 ] [ 0 ]" "6"
setGridValue "tb1 [ 3 ] [ 1 ]" "328"
}
{
unhighlightGridCell "tb1 [ 3 ] [ 0 ]"
unhighlightGridCell "tb1 [ 3 ] [ 1 ]"
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 4
}
{
unhighlightCode on "code" line 4
highlightCode on "code" line 7
highlightGridCell "tb1 [ 3 ] [ 2 ]" within 100ms
highlightGridCell "tb1 [ 3 ] [ 3 ]" within 100ms
setGridValue "tb1 [ 3 ] [ 2 ]" "Nein"
setGridValue "tb1 [ 3 ] [ 3 ]" "82+164"
}
{
unhighlightCode on "code" line 7
highlightCode on "code" line 0
unhighlightGridCell "tb1 [ 3 ] [ 2 ]"
unhighlightGridCell "tb1 [ 3 ] [ 3 ]"
highlightGridCell "tb1 [ 4 ] [ 0 ]" within 100ms
highlightGridCell "tb1 [ 4 ] [ 1 ]" within 100ms
setGridValue "tb1 [ 4 ] [ 0 ]" "3"
setGridValue "tb1 [ 4 ] [ 1 ]" "656"
}
{
unhighlightGridCell "tb1 [ 4 ] [ 0 ]"
unhighlightGridCell "tb1 [ 4 ] [ 1 ]"
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 4
}
{
unhighlightCode on "code" line 4
highlightCode on "code" line 5
highlightGridCell "tb1 [ 4 ] [ 2 ]" within 100ms
highlightGridCell "tb1 [ 4 ] [ 3 ]" within 100ms
setGridValue "tb1 [ 4 ] [ 2 ]" "Ja"
setGridValue "tb1 [ 4 ] [ 3 ]" "82+164+656"
}
{
unhighlightCode on "code" line 5
highlightCode on "code" line 0
unhighlightGridCell "tb1 [ 4 ] [ 2 ]"
unhighlightGridCell "tb1 [ 4 ] [ 3 ]"
highlightGridCell "tb1 [ 5 ] [ 0 ]" within 100ms
highlightGridCell "tb1 [ 5 ] [ 1 ]" within 100ms
setGridValue "tb1 [ 5 ] [ 0 ]" "1"
setGridValue "tb1 [ 5 ] [ 1 ]" "1312"
}
{
unhighlightGridCell "tb1 [ 5 ] [ 0 ]"
unhighlightGridCell "tb1 [ 5 ] [ 1 ]"
unhighlightCode on "code" line 0
highlightCode on "code" line 1
}
{
unhighlightCode on "code" line 1
highlightCode on "code" line 2
}
{
highlightCode on "code" line 2
highlightGridCell "tb1 [ 5 ] [ 2 ]" within 100ms
highlightGridCell "tb1 [ 5 ] [ 3 ]" within 100ms
setGridValue "tb1 [ 5 ] [ 2 ]" "Ja"
setGridValue "tb1 [ 5 ] [ 3 ]" "82+164+656+1312"
}
{
unhighlightGridCell "tb1 [ 5 ] [ 2 ]"
unhighlightGridCell "tb1 [ 5 ] [ 3 ]"
highlightGridCell "tb1 [ 6 ] [ 3 ]" within 100ms
setGridValue "tb1 [ 6 ] [ 3 ]" "82+164+656+1312"
}
{
unhighlightCode on "code" line 2
highlightCode on "code" line 5
unhighlightGridCell "tb1 [ 6 ] [ 3 ]"
highlightGridCell "tb1 [ 6 ] [ 3 ]" within 100ms
setGridValue "tb1 [ 6 ] [ 3 ]" "82+164+1968"
}
{
unhighlightGridCell "tb1 [ 6 ] [ 3 ]"
highlightGridCell "tb1 [ 6 ] [ 3 ]" within 100ms
unhighlightCode on "code" line 5
highlightCode on "code" line 7
}
{
unhighlightCode on "code" line 7
highlightCode on "code" line 5
unhighlightGridCell "tb1 [ 6 ] [ 3 ]"
highlightGridCell "tb1 [ 6 ] [ 3 ]" within 100ms
setGridValue "tb1 [ 6 ] [ 3 ]" "82+2132"
}
{
unhighlightGridCell "tb1 [ 6 ] [ 3 ]"
highlightGridCell "tb1 [ 6 ] [ 3 ]" within 100ms
setGridValue "tb1 [ 6 ] [ 2 ]" "Ergebnis"
setGridValue "tb1 [ 6 ] [ 3 ]" "2214"
}
{
hideAll
hide "tb1"
text "header" "Russische Bauernmultiplikation" at (20, 30) font SansSerif size 24 bold
text "straight" "Erklärung:" at (20, 85) font SansSerif size 18 bold \br
text "straight" "Die Idee des Verfahrens kann man mit Hilfe des Dualsystems verdeutlichen." at (20, 115) font SansSerif size 18
text "straight" "Hierbei wird eine Zahl in ihre Zweierpotenzen zerlegt." at (20, 140) font SansSerif size 18
text "straight" "82 * 27 \t = 82 * (2^0 + 2^1 + 0 * 2^2 + 2^3 + 2^4)" at (43, 168) font SansSerif size 18
text "straight" "\t \t \t \t \t \t \t \t \t = 82 * 2^0 + 82 * 2^1 + 82 * 0 + 82 * 2^3 + 82 * 2^4" at (20, 193) font SansSerif size 18
text "straight" "\t \t \t \t \t \t \t \t \t = 82 + 164 + 0 + 656 + 1312" at (20, 218) font SansSerif size 18
text "straight" "\t \t \t \t \t \t \t \t \t = 2214" at (20, 243) font SansSerif size 18 bold
}