Dart für Anfänger 1.5 integer Variable
Die Programmiersprache Dart |
Im letzten Post haben Sie ein kleines Programm geschrieben, das im Terminal eine Eingabe entgegen nimmt. Beim lernen einer Programmiersprache ist Interaktivität immer spannender, als nur reine Theorie. Hier noch einmal der Code:
import 'dart:io'; void main(List<String> arguments) { String? zahl; var zahl2; int ergebnis; zahl = stdin.readLineSync(); zahl2 = int.tryParse(zahl!); ergebnis = zahl2 * 10; print(ergebnis); }
import 'dart:io'; void main(List<String> arguments) { String? zahl; var zahl2; int ergebnis; print('Bitte geben Sie eine ganze Zahl ein:'); zahl = stdin.readLineSync(); zahl2 = int.tryParse(zahl!); ergebnis = zahl2 * 10; print(ergebnis); print('Programmende!'); } }
Die Integer Variable
Wie in diesem Post schon erwähnt nutzen Sie Integer Variablen um ganze Zahlen zu speichern bzw. im Programm zu verwenden. Wie schon öfters erwähnt ist Dart eine objektorientierte Programmiersprache.
Wenn Sie also eine Integer Variable deklarieren erschaffen Sie gleichzeitig ein Integer Objekt. Dieses Objekt leitet sich von der Integer Klasse ab. Eine Klasse stellt Eigenschaften und Methoden zur Verfügung. Eigenschaften sind Werte die man auslesen kann, Methoden darf man sich als "eingebaute" Funktionen vorstellen.
Wenn Sie also eine Integer Variable deklarieren erschaffen Sie gleichzeitig ein Integer Objekt. Dieses Objekt leitet sich von der Integer Klasse ab. Eine Klasse stellt Eigenschaften und Methoden zur Verfügung. Eigenschaften sind Werte die man auslesen kann, Methoden darf man sich als "eingebaute" Funktionen vorstellen.
Wenn Sie also eine Integer Variable deklarieren, erbt diese alle Eigenschaften und Methoden der Integer Klasse. Diese können Sie dann auf Ihre Variable bezogen benutzen. Beispiel:
import 'dart:io'; void main(List<String> arguments) { String? zahl = ''; int? zahl2 = 0; int ergebnis; print('Bitte geben Sie eine ganze Zahl ein:'); zahl = stdin.readLineSync(); zahl2 = int.tryParse(zahl!); ergebnis = zahl2!.abs(); print(ergebnis); print('Programmende!'); } }
int ist das geschützte Schlüsselwort für die Deklaration einer Integer Variable. Mit dem Punkt nach int trennen wir das Schlüsselwort von der Methode / Funktion die wir benutzen wollen. Dementsprechend ist tryParse(...) die Funktion die wir verwenden.
Oben aber haben Sie gelesen, das wenn Sie eine int Variable deklarieren, diese die Eigenschaften und Methoden der int Klasse erbt. Also wieso können Sie nicht einfach zahl.tryParse(zahl!); verwenden ? Klassen können statische Methoden besitzen. Diese können nur über die Klasse, in diesem Fall int, aufgerufen werden ! Die Methoden, statische und vererbbare, ersehen Sie am schnellsten aus der Dart Dokumentation der Entwickler.
abs(...)
abs(...) ist eine Methode der int Klasse und liefert den "absolute Value" der Variable. Dabei berechnet die Funktion, den Abstand zu 0. Der negative Wert -61 hat einen Abstand von 61 zu 0. Der positive Wert +44 hat den Abstand 44 zu 0. Man sieht das abs(...) immer eine positive Zahl als Ergebnis liefert. Die Anwendungsbeispiele für diese Funktionsweise sind nicht offensichtlich. Ein Beispiel wäre eine Navigationsberechnung, wobei der Startpunkt 0 ist. Je nach dem in welche Richtung man sich bewegt, entsteht ein relativer positiver oder negativer Abstand zu 0. Mit abs(...) können Sie diese Werte in absolute Zahlen umwandeln und weitere Berechnungen durchführen. Mehr dazu hier (englisch). Beispiel:
void main() { int a = 500; int b = 250; int resultat = -999; resultat = resultat.abs(); print(resultat); }
gcd(...)
Diese berechnet den größten gemeinsamen Teiler von zwei Integer Variablen, ohne das dabei ein Rest entsteht. Beispiel:
import 'dart:io'; void main(List<String> arguments) { String? zahl = ''; int? zahl2 = 0; int ergebnis; print('Bitte geben Sie eine ganze Zahl ein:'); zahl = stdin.readLineSync(); zahl2 = int.tryParse(zahl!); ergebnis = zahl2!.gcd(40); print(ergebnis); print('Programmende!'); }
gcd(...) erwartet als Argument eine integer Variable oder eine ganze Zahl.
toString(...)
Es kann vorkommen, das man einen integer Wert in einen String umwandeln möchte. Hier der Beispiel Code:
import 'dart:io'; void main(List<String> arguments) { String? zahl = ''; int? zahl2 = 0; String ergebnis; String ergebnis2; String text1; print('Bitte geben Sie Ihr Alter ein:'); zahl = stdin.readLineSync(); zahl2 = int.tryParse(zahl!); ergebnis = zahl2.toString(); text1 = 'Ihr Alter ist:'; ergebnis2 = text1 + ergebnis; print(ergebnis2); print('Programmende!'); }
Mit int.tryParse(zahl!); wandeln Sie den String in eine integer Zahl um. Anschliessend gehen Sie den umgekehrten Weg und wandeln eine integer Zahl mit zahl2.to String(); wieder in einen String um. Mit text1 + ergebnis verknüpfen Sie die zwei Strings und drucken sie mit print(ergebnis2); in das Terminal Fenster.
Sonderfall
Schauen Sie sich mal den Code unten an:
void main() { int a = 500; int b = 250; int resultat = a/b; print(resultat); }
Was ist damit gemeint ? Sowohl die integer Klasse / Variable, als auch die double Klasse / Variable leiten sich von der num Klasse ab. Das ist aber an sich noch keine Erklärung. Diese liegt darin, das in Dart eine Division immer einen double Wert als Ergebnis zurückgibt. Was tun ? Beispiel:
void main() { int a = 500; int b = 250; int resultat = (a/b).truncate(); print(resultat); }
int resultat = a ~/ b; . Hier repräsentiert das ~ Zeichen, dass das Ergebnis um die Nachkommastellen gekürzt zurückgegeben wird.
Fazit
In diesem Post haben Sie jetzt schon einiges gelernt im Zusammenhang mit der integer Variable. Vor allem das sie mehr Möglichkeiten bietet, als die simple Speicherung von ganzen Zahlen. integer bezeichnet dabei nicht nur eine Variablen Variante sondern auch eine Klasse. integer und double übergeordnet ist die num Klasse.
Für das Verständnis wichtig ist die Tatsache, das gewisse Methoden / Funktionen in beiden Klassen vorhanden sind, aber zum Teil unterschiedliche Variablen Typen zurückgeben. Bevor man sich in der Handhabung nicht sicher ist, sollte man immer die Dokumentation zu Rate ziehen. Sie ist gut und oft ausführlich. Im nächsten Post geht es weiter mit dem Thema. Bis bald !
Kommentare
Kommentar veröffentlichen