2. Die Datentypen String und Number

Inhalt

2.1 Number - Zahlen

2.2 String - Zeichenketten

2.4 Operationen mit Zahlen und Zeichenketten

2.5 Umwandlung von Zeichenketten in Zahlen

2.6 Formatierte Ausgabe von Zahlen

2.7 Undefinierte Operationen und nil

Aufgaben

  Aufgabe A21

  Aufgabe A22

  Aufgabe A23 - Puschel fängt Vögel

Zusatzaufgabe

  Aufgabe A24 - Addiere 1 dazu

2.1 Number - Zahlen

Das folgende Beispiel zeigt die Möglichkeiten, wie Zahlen verwendet werden können:

print(13);
print(2.78);
print(-12.3);  

Als Dezimaltrennzeichnen wird ein Punkt und kein Komma verwendet wird.

2.2 String - Zeichenketten

Texte werden als Zeichenketten oder Strings bezeichnet. Sie werden immer in Anführungszeichen (") eingeschlossen. Andernfalls werden sie als Anweisungen interpretiert, was in der Regel zu Fehlermeldungen führt.

print("Dies ist eine Zeichenkette");

Das folgende Programm erzeugt einen Fehler. (Korrigiere ihn!)

print(Hallo Klasse 10);

Mit der Funktion typeof kann man sich den Typ eines Ausdrucks zurückgeben lassen.

print(typeof(1.23));  
print(typeof("Puschel"));  

2.4 Operationen mit Zahlen und Zeichenketten

Zahlen können mit dem + Operator addiert werden

print(13 + 7);
print(1.23 + 2.5);

Auch Strings kann man mit dem + Operator aneinander fügen. Dabei werden die Strings zu einem einzigen zusammengefasst.

print("Puschel ist " +  "ein Kater");

Das Mischen von Strings und Zahlen beim Verknüpfen mit + ist ebenfalls möglich. Man beachte aber, dass dann Zahlen wie Zeichenketten behandelt werden. Soll eine Addition durchgeführt werden, muss man - wie in Zeile 3 des folgenden Beispiel - Klammern setzen.

print(2 + " Katzen");
print("Puschel fängt " + 2 + 1 + " Mäuse.");
print("Puschel fängt " + (2 + 1) + " Mäuse.");

Für Zahlen werden die anderen aus der Mathematik bekannten Rechenoperationen unterstützt.

Operation Zeichen Beispiel Ausgabe
Addition + print(8 + 5); 13
Subtraktion - print(8 - 5); 3
Multiplikation * print(8 * 5); 40
Division / print(8 / 5); 1.6
Modulo (Rest bei der Division) % print(8 % 5); 3

Auch hier gilt Punktrechnung vor Strichrechnung, und man muss Klammern setzen um eine abweichende Berechnungsreihenfolge zu erreichen.

print(2 * 3 + 4);
print(2 * (3 + 4));

2.5 Umwandlung von Zeichenketten in Zahlen

Mittels der Funktion parseNumber können Zeichenketten in Zahlen umgewandelt werden. Enthält die Zeichenkette keine Zahl, wird ein Laufzeitfehler erzeugt und das Programm abgebrochen.

print(parseNumber("13"));
print(parseNumber("13.4"));
print(parseNumber("Puschel"));    // Kann nicht umgewandelt werden!
print(parseNumber("1 Puschel"));  // Kann nicht umgewandelt werden!

Nur für die ersten beiden Zeilen enthält man eine gültige ganze Zahl. Alle anderen Aufrufe von parseNumber erzeugen einen Laufzeitfehler.

Soll aus einem Katzenpuzzle eine Zahl ausgelesen werden so gibt es dafür zwei Möglichkeiten: readNumber() für das direkte Einlesen und parseNumber(read()) über die Umwandlung des eingelesenen Strings in eine Zahl.

2.6 Formatierte Ausgabe von Zahlen

Mit der Funktion toFixed kannst du Zahlen in Strings so umwandeln, dass nur eine feste Anzahl von Nachkommastellen ausgegeben wird.

print(toFixed(988.655234,2));

2.7 Undefinierte Operationen und nil

Sollte eine undefinierte Operation auftreten wie im nachfolgenden Beispiel, so wird ein Laufzeitfehler ausgelöst.

print(2/0);

nil ist der Wert dafür, dass eine Rechenoperation ein undefiniertes Ergebnis geliefert hat.

Das folgende Beispiel zeigt, dass die Funktion print den Wert nil zurückliefert.

print(print("Puschel"));

Aufgaben

Aufgabe A21

// Alle folgenden Programmzeilen sind fehlerhaft
// Folge den Anweisungen und korrigiere 

print(19,4); // korrigiere, sodass die Zahl -19.4 ausgegeben wird
print(Hallo Klasse 10); // korrigiere

// Lösche zwei Zeichen, sodass die Ausgabe number ist
print(typeof("56"));

// Ergänze, was Puschel deiner Meinung nach frisst
// nichts löschen!
print("Puschel frisst " +  ); 

// Ersetze ? durch einen richtigen Ausdruck
print("Mein Infolehrer hat " ? " Katzen")

// Ergänze Klammern, sodass 25 ausgegeben wird.
print(2 + 3 * 5);

// Ergänze ein Operationszeichen, sodass 35 ausgegeben wird
print(7 5);

// Ergänze Klammern, sodass Merle 8 Vögel fängt
print("Merle fängt " + 3 + 5 + " Vögel");

// Ändere die Anweisung so, dass 3 Nachkommastellen ausgegeben werden
print(toFixed(1.23456789,1));

Aufgabe A22

Puschel fängt im Jahr 53 Vögel. Schreibe ein Programm, das einen Text ausgibt, der aussagt, wie viele Vögel Puschel im Mittel monatlich fängt. Runde den Wert mit der Funktion toFixed so, dass ein ganzzahliger Wert ausgegeben wird.

Berechne diesen Wert im Programm, nicht mit dem Taschenrechner!

Aufgabe A23 - Puschel fängt Vögel

>:)H4sIAAAAAAAACj1Qu2rEMBDsBfqH7dxcDs6XyuDi8
izShBxcL1tjWSDLRJJz4O/JN6RK5x/LEtmHBGJ2ZmdXI
0Wl0UnR1o8qSWHq1wB4On9OKkCKUH9A31BTP7gJNxgBX
ZdSSFGZYLUUe/YJpuGHbzUgKSmu1lNNbH5KdE+HHV2Uo
wOf9ym2PVwulFzolm9vUsZHxpflx8BJ4dUAtjiVR7rbu
lbxTdNNvo0sGsYv0DXYBOINrO9GKc5tH2AbEG+iVaQwM
vsCp6lY3Yrdxpmw/PqNzTMKmjz/bRU0TnECmc/Diz09W
dCbSjOoQWe9RqJo257UQM+MSCPy4vPsEDlStH2K5NFwz
hpDtvT/nhzbH0TKOcCRAQAA

Zusatzaufgabe

Aufgabe A24 - Addiere 1 dazu

Das Puzzle hat zwei Tests. Dein Programm muss beide Tests bestehen!

Zur Lösung musst du Funktionsaufrufe ineinander verschachteln

>:)H4sIAAAAAAAACo2QwUrFQAxF94H8w/2Ap9iHGwtdP
ETduBMU3M1r0mmgjTjtUPDb3Pljpu50JRMGchPO5YapF
R2Y+u42rUy5eyiqjqf3moqiYWpzMWG6jJUcX1Q765qYN
nN0eE4TmnhHJk+zhnI6XuMCJxHTnQBJH5VpqN4vMS2aB
FuxVREk8+GN6dF0gYTri5YVNiOXr0+P/l4ngZofsCWXS
WGjI2xDUrymcUKdD8FJv8xQXbD0Y1E7aygL7krWs9uCz
VS07Ihd3vF7np8D/El+8+/kzRUT0zf/jhwWSAEAAA==