college/ss2012/AlgoAnim/test/testAlgo.asu
2012-04-19 15:10:06 +02:00

316 lines
12 KiB
Plaintext

%Animal 2 640*480
title "Rekursive Lineare Suche (int)"
author "Dr. Guido Rößling (roessling@acm.org>"
{
text "title" "Rekursive Lineare Suche" (20, 35) color (0, 0, 0) depth 1 font SansSerif size 20 bold
rectangle "headerRect" offset (-5, -5) from "title" NW offset (5, 5) from "title" SE color (0, 0, 0) depth 3 filled fillColor (192, 192, 192)
text "descrHd" "Beschreibung des Algorithmus" (20, 80) color (0, 0, 0) depth 1 font SansSerif size 12
codegroup "descr" at offset (0, 30) from "descrHd" SW color (0, 0, 0) highlightColor (255, 0, 0) contextColor (0, 0, 0) font SansSerif size 16 bold depth 3
addCodeLine "Die Lineare Suche ist vermutlich das naheliegendeste Suchverfahren." to "descr"
addCodeLine "" to "descr"
addCodeLine "Die rekursive Implementierung testet zuerst, ob das Feld leer ist" to "descr"
addCodeLine "oder schon das Ende erreicht wurde. In beiden Fällen ist das Ergebnis -1." to "descr"
addCodeLine "Ansonsten wird das aktuelle Feldelement mit dem gesuchten Wert" to "descr"
addCodeLine "vergleichen. Stimmen sie überein, so wird die aktuelle Position als" to "descr"
addCodeLine "Ergebnis zurückgegeben; andernfalls wird die Methode rekursive" to "descr"
addCodeLine "für die nächste Startposition aufgerufen." to "descr"
}
{
array "array" (30, 150) color (0, 0, 0) fillColor (192, 192, 192) elementColor (0, 0, 0) elemHighlight (0, 255, 0) cellHighlight (255, 200, 0) horizontal length 8 "1" "3" "7" "5" "2" "6" "8" "4" depth 1 font SansSerif size 12
codegroup "code" at offset (0, 20) from "array" SW color (0, 0, 0) highlightColor (255, 0, 255) contextColor (0, 0, 0) font Monospaced size 16 bold depth 3
addCodeLine "public int search(int[] array, int value, int pos) {" to "code"
addCodeLine "if (array == null)" to "code" indentation 1
addCodeLine "return -1;" to "code" indentation 2
addCodeLine "if (pos >= array.length)" to "code" indentation 1
addCodeLine "return -1;" to "code" indentation 2
addCodeLine "if (array[pos] == value)" to "code" indentation 1
addCodeLine "return pos;" to "code" indentation 2
addCodeLine "return search(array, value, pos + 1);" to "code" indentation 1
addCodeLine "}" to "code"
text "#A" "Zuweisungen" offset (80, -80) from "array" SE color (0, 0, 0) depth 1 font SansSerif size 12
rectangle "Zuweisungen" offset (10, 0) from "#A" NE offset (11, 0) from "#A" SE color (0, 0, 255) depth 2 filled fillColor (0, 0, 255)
text "#C" "Vergleiche" offset (0, 35) from "#A" NW color (0, 0, 0) depth 1 font SansSerif size 12
rectangle "Vergleiche" offset (0, 35) from "Zuweisungen" NW offset (1, 35) from "Zuweisungen" SW color (0, 0, 255) depth 2 filled fillColor (0, 0, 255)
text "value" "value: 10" offset (30, 0) from "array" SE color (0, 0, 0) depth 1 font SansSerif size 20 bold
text "Text3" "pos: 0" offset (20, 0) from "value" baseline end color (0, 0, 0) depth 1 font SansSerif size 20 bold
arrayMarker "iMarker" on "array" atIndex 0 label "i" short color (0, 0, 255) depth 1
highlightCode on "code" line 0 row 0
hide "descrHd" "descr"
}
{
unhighlightCode on "code" line 0 row 0
highlightCode on "code" line 1 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 1 row 0
highlightCode on "code" line 3 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 3 row 0
highlightCode on "code" line 5 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
highlightArrayElem on "array" position 0
}
{
unhighlightCode on "code" line 5 row 0
highlightCode on "code" line 7 row 0
}
{
unhighlightCode on "code" line 7 row 0
setText of "Text3" to "pos: 1" within 10 ticks
moveArrayMarker "iMarker" to position 1 within 10 ticks
highlightCode on "code" line 0 row 0
}
{
unhighlightCode on "code" line 0 row 0
highlightCode on "code" line 1 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 1 row 0
highlightCode on "code" line 3 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 3 row 0
highlightCode on "code" line 5 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
highlightArrayElem on "array" position 1
}
{
unhighlightCode on "code" line 5 row 0
highlightCode on "code" line 7 row 0
}
{
unhighlightCode on "code" line 7 row 0
setText of "Text3" to "pos: 2" within 10 ticks
moveArrayMarker "iMarker" to position 2 within 10 ticks
highlightCode on "code" line 0 row 0
}
{
unhighlightCode on "code" line 0 row 0
highlightCode on "code" line 1 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 1 row 0
highlightCode on "code" line 3 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 3 row 0
highlightCode on "code" line 5 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
highlightArrayElem on "array" position 2
}
{
unhighlightCode on "code" line 5 row 0
highlightCode on "code" line 7 row 0
}
{
unhighlightCode on "code" line 7 row 0
setText of "Text3" to "pos: 3" within 10 ticks
moveArrayMarker "iMarker" to position 3 within 10 ticks
highlightCode on "code" line 0 row 0
}
{
unhighlightCode on "code" line 0 row 0
highlightCode on "code" line 1 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 1 row 0
highlightCode on "code" line 3 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 3 row 0
highlightCode on "code" line 5 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
highlightArrayElem on "array" position 3
}
{
unhighlightCode on "code" line 5 row 0
highlightCode on "code" line 7 row 0
}
{
unhighlightCode on "code" line 7 row 0
setText of "Text3" to "pos: 4" within 10 ticks
moveArrayMarker "iMarker" to position 4 within 10 ticks
highlightCode on "code" line 0 row 0
}
{
unhighlightCode on "code" line 0 row 0
highlightCode on "code" line 1 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 1 row 0
highlightCode on "code" line 3 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 3 row 0
highlightCode on "code" line 5 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
highlightArrayElem on "array" position 4
}
{
unhighlightCode on "code" line 5 row 0
highlightCode on "code" line 7 row 0
}
{
unhighlightCode on "code" line 7 row 0
setText of "Text3" to "pos: 5" within 10 ticks
moveArrayMarker "iMarker" to position 5 within 10 ticks
highlightCode on "code" line 0 row 0
}
{
unhighlightCode on "code" line 0 row 0
highlightCode on "code" line 1 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 1 row 0
highlightCode on "code" line 3 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 3 row 0
highlightCode on "code" line 5 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
highlightArrayElem on "array" position 5
}
{
unhighlightCode on "code" line 5 row 0
highlightCode on "code" line 7 row 0
}
{
unhighlightCode on "code" line 7 row 0
setText of "Text3" to "pos: 6" within 10 ticks
moveArrayMarker "iMarker" to position 6 within 10 ticks
highlightCode on "code" line 0 row 0
}
{
unhighlightCode on "code" line 0 row 0
highlightCode on "code" line 1 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 1 row 0
highlightCode on "code" line 3 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 3 row 0
highlightCode on "code" line 5 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
highlightArrayElem on "array" position 6
}
{
unhighlightCode on "code" line 5 row 0
highlightCode on "code" line 7 row 0
}
{
unhighlightCode on "code" line 7 row 0
setText of "Text3" to "pos: 7" within 10 ticks
moveArrayMarker "iMarker" to position 7 within 10 ticks
highlightCode on "code" line 0 row 0
}
{
unhighlightCode on "code" line 0 row 0
highlightCode on "code" line 1 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 1 row 0
highlightCode on "code" line 3 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 3 row 0
highlightCode on "code" line 5 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
highlightArrayElem on "array" position 7
}
{
unhighlightCode on "code" line 5 row 0
highlightCode on "code" line 7 row 0
}
{
unhighlightCode on "code" line 7 row 0
setText of "Text3" to "pos: 8" within 10 ticks
moveArrayMarker "iMarker" to position 8 within 10 ticks
highlightCode on "code" line 0 row 0
}
{
unhighlightCode on "code" line 0 row 0
highlightCode on "code" line 1 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 1 row 0
highlightCode on "code" line 3 row 0
move "Vergleiche" type "translate #2" along line (0, 0) (2, 0)
}
{
unhighlightCode on "code" line 3 row 0
highlightCode on "code" line 4 row 0
text "Text4" "Ergebnis: -1" offset (20, 0) from "Text3" baseline end color (0, 0, 0) depth 1 font SansSerif size 20 bold
}
{
unhighlightCode on "code" line 4 row 0
moveArrayMarker "iMarker" to position 7 within 10 ticks
unhighlightArrayElem on "array" position 7
}
{
moveArrayMarker "iMarker" to position 6 within 10 ticks
unhighlightArrayElem on "array" position 6
}
{
moveArrayMarker "iMarker" to position 5 within 10 ticks
unhighlightArrayElem on "array" position 5
}
{
moveArrayMarker "iMarker" to position 4 within 10 ticks
unhighlightArrayElem on "array" position 4
}
{
moveArrayMarker "iMarker" to position 3 within 10 ticks
unhighlightArrayElem on "array" position 3
}
{
moveArrayMarker "iMarker" to position 2 within 10 ticks
unhighlightArrayElem on "array" position 2
}
{
moveArrayMarker "iMarker" to position 1 within 10 ticks
unhighlightArrayElem on "array" position 1
}
{
moveArrayMarker "iMarker" to position 0 within 10 ticks
unhighlightArrayElem on "array" position 0
}
{
text "nrSteps" "Insgesamt verwendete der Algorithmus 0 Zuweisungen und 26 Vergleiche." offset (0, 30) from "code" SW color (0, 0, 0) depth 1 font SansSerif size 12
}
{
codegroup "complexity" at offset (0, 30) from "title" SW color (0, 0, 0) highlightColor (255, 0, 0) contextColor (0, 0, 0) font SansSerif size 16 bold depth 3
addCodeLine "Anmerkungen zur Komplexität" to "complexity"
addCodeLine "" to "complexity"
addCodeLine "Die Lineare Suche ist - wie der name schon sagt - immer linear." to "complexity"
addCodeLine "Bei bereits sortierten Daten gibt es (deutlich) bessere Suchverfahren." to "complexity"
addCodeLine "" to "complexity"
addCodeLine "Bei unsortierten Daten kann, je nach Art und Herkunft der Daten," to "complexity"
addCodeLine "kein besseres Suchverfahren implementiert werden - etwa wenn die" to "complexity"
addCodeLine "Daten aus einem Socket gelesen werden und daher von vorne nach" to "complexity"
addCodeLine "hinten verarbeitet werden müssen." to "complexity"
hide "nrSteps" "code" "Zuweisungen" "#A" "Vergleiche" "#C" "Text4" "value" "array" "Text3"
}
{
text "adForURL" "Weitere Animationen finden Sie unter http://www.animal.ahrgr.de im Online-Repository" offset (0, 50) from "title" SW color (0, 0, 0) depth 1 font SansSerif size 20 bold
hide "complexity"
}