diff --git a/ss2012/AlgoAnim/Teil 2/aufgabe2_2.asu b/ss2012/AlgoAnim/Teil 2/aufgabe2_2.asu new file mode 100644 index 00000000..b1444561 --- /dev/null +++ b/ss2012/AlgoAnim/Teil 2/aufgabe2_2.asu @@ -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 +} + + + + + + + + + + + + + + + + + + + + + + + + +