String
und Number
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
Aufgabe A23 - Puschel fängt Vögel
Number
- ZahlenDas 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.
String
- ZeichenkettenTexte 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"));
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));
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.
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));
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"));
// 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));
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!
>:)H4sIAAAAAAAACj1Qu2rEMBDsBfqH7dxcDs6XyuDi8 izShBxcL1tjWSDLRJJz4O/JN6RK5x/LEtmHBGJ2ZmdXI 0Wl0UnR1o8qSWHq1wB4On9OKkCKUH9A31BTP7gJNxgBX ZdSSFGZYLUUe/YJpuGHbzUgKSmu1lNNbH5KdE+HHV2Uo wOf9ym2PVwulFzolm9vUsZHxpflx8BJ4dUAtjiVR7rbu lbxTdNNvo0sGsYv0DXYBOINrO9GKc5tH2AbEG+iVaQwM vsCp6lY3Yrdxpmw/PqNzTMKmjz/bRU0TnECmc/Diz09W dCbSjOoQWe9RqJo257UQM+MSCPy4vPsEDlStH2K5NFwz hpDtvT/nhzbH0TKOcCRAQAA
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==