Aus Das deutschsprachige Scratch-Wiki

Mit Case Sensing ist die Unterscheidung von Groß- und Kleinschreibung gemeint.

In Scratch existiert diese jedoch nicht direkt. So würde ein Gleich-Operator, bei dem ein "a" mit einem "A" verglichen wird immer "wahr/true" zurückgeben:

sage < [a] = [A] > // true

Case Sensing einbauen

Man kann, obwohl Scratch nicht unter Groß- und Kleinbuchstaben unterscheidet, mit Kostümen arbeiten und sich so selber einen "Case Sensor" bauen. Das funktioniert, denn beim Wechsel zu Kostümen wird zwischen Groß- und Kleinschreibung unterschieden!

Wechsel von Kostümen

Doch zunächst sollten wir uns das Verhalten, welches beim Wechsel von Kostümen verwendet wird, etwas genauer anschauen.

wechsle zu Kostüm (x)

In diesem Fall wird zu dem Kostüm gewechselt, welches den selben Namen wie die Variable "x" trägt. Ist x jedoch eine Zahl, wird zu der entsprechenden Kostümnummer gewechselt. Dies lässt sich wie folgt verhindern:

wechsle zu Kostüm (verbinde (x) und [])

Der Verbinde-Block gibt immer Daten vom Datentyp "String" (Zeichenkette) zurück. Strings werden immer als Texte betrachtet. So kann man, indem man das erste Feld mit einer Variable/Zahl füllt und das zweite Feld leer lässt, Zahlen in Texte umwandeln. Nun wird nicht mehr zum xten Kostüm gewechselt, sondern zum Kostüm mit dem Namen, der in der Variable x gespeichert ist.

Kostümnamen

Nun kommen wir zu den Kostümnamen. Es ist nicht möglich, zwei Kostümen den selben Namen zu geben. Allerdings wird bei den Kostümnamen zwischen Groß- und Kleinschreibung unterschieden. Es ist also möglich, das erste Kostüm "A" und das zweite Kostüm "a" zu nennen.

Da beim Wechsel zum Kostüm zwischen Groß- und Kleinschreibung unterschieden wird, lässt sich so ein Case-Sensor bauen. Ein weiterer wichtiger Aspekt ist, dass nur gewechselt wird, wenn es auch tatsächlich ein Kostüm mit dem gesuchten Namen gibt. Gibt es kein Kostüm mit dem gesuchten Namen, wird dieser Block einfach ignoriert.

Um herauszufinden, ob ein Buchstabe großgeschrieben wird, brauchen wir zwei Kostüme: Eines heißt "leer" (der Name ist frei wählbar) und eines, das alle Großbuchstaben im Namen enthält: "ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ".

Definiere Ist groß (buchstabe)
wechsle zu Kostüm (ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ v)
setze [name v] auf ()
setze [i v] auf (1)
wiederhole (Länge von (Kostüm [Name v])) mal
falls <(buchstabe) = (Zeichen (i) von (Kostüm [Name v]))>, dann
setze [name v] auf (verbinde (name) und (buchstabe))
sonst
setze [name v] auf (verbinde (name) und (Zeichen (i) von (Kostüm [Name v]))
end
ändere [i v] um (1)
end
wechsle zu Kostüm (leer v)
wechsle zu Kostüm (name)
setze [groß v] auf <nicht <(Kostüm [Name v]) = [leer]>>

Ist buchstabe z.B. "e", ist name = ABCDeFGHIJKLMNOPQRSTUVWXYZÄÖÜ. Da dieser Kostümname nicht vorhanden ist, bleibt das Kostüm auf "leer" und groß ist true.

Beispiel

Ein Programm, welches eine ähnliche Methode verwendet, um Texte zu schreiben, findest du hier: Case-Sensitive-Letterstamping.


Case-Sensitives Schreiben


Schau' dir dieses Projekt auf der Scratch-Webseite an...


Code zum Einbinden ins Forum:
[wiki=de:Case Sensing]Case Sensing[/wiki]
Cookies helfen uns bei der Bereitstellung von Das deutschsprachige Scratch-Wiki. Durch die Nutzung von Das deutschsprachige Scratch-Wiki erklärst du dich damit einverstanden, dass wir Cookies speichern.