Die junge Pro­gram­mier­spra­che DART hat bereits Fuß gefasst, vor allem in der Pro­gram­mie­rung von Apps für mobile An­wen­dun­gen. Das Un­ter­neh­men Google hat mit Flutter ein Software De­ve­lo­p­ment Kit (SDK) auf­ge­setzt, das DART nutzt, und so die Anwendung und Ver­brei­tung dieser Pro­gram­mier­spra­che befördert. Ein we­sent­li­cher Pluspunkt ist, dass sich damit Apps für alle mobilen Be­triebs­sys­te­me – also Apple iOS, Google Android oder Microsoft Windows Phone – pro­gram­mie­ren lassen.

Lernen Sie Pro­gram­mie­ren mit DART – unser DART-Tutorial führt Sie mit ersten Schritten in die Welt von Googles Pro­gram­mier­spra­che ein. Das ist gar nicht so schwer. Mehr über die Sprache an sich bietet unser Ratgeber-Artikel „Was ist DART?“. Wei­ter­füh­ren­de In­for­ma­tio­nen erhalten Sie im Artikel über Googles Software De­ve­lo­p­ment Kit Flutter.

Der Ursprung von DART

An­ge­tre­ten war DART ur­sprüng­lich, um Schwach­stel­len von Ja­va­Script zu über­win­den, die sich aus Sicht der Ent­wick­ler nicht mehr innerhalb dieser eta­blier­ten Pro­gram­mier­spra­che be­ar­bei­ten ließen.

So begann die Suche nach Wegen, bestimmte innere Logiken zu ver­ein­fa­chen oder zu­sam­men­zu­fas­sen, ohne dabei die Vielfalt der Mög­lich­kei­ten aus dem Auge zu verlieren. Um ein Beispiel auf­zu­füh­ren: Ja­va­Script hat

getElementsById()
getElementsByTagName()
getElementsByName()
getElementsByClassName()
querySelector()
querySelectorAll()
document.links
document.images
document.forms
document.scripts
formElement.elements
selectElement.options

In DART bleibt davon übrig:

elem.query('#foo');
elem.queryAll('.foo');

Die ersten Schritte mit DART

Eine Pro­gram­mier­spra­che besteht aus einer Welt von „Vokabeln“, mit denen Daten struk­tu­riert und Abläufe (Al­go­rith­men) gestaltet werden. Dazu bedient sich die Sprache einer fest­ge­leg­ten Anzahl von Begriffen – den Variablen, die nicht zu anderen Zwecken verwendet werden dürfen. Einige Beispiele dafür sind in DART „var“, „int“ „if“, „else“ oder „while“. Mehr Details zur Ar­chi­tek­tur von Pro­gram­mier­spra­chen lesen Sie in unserem Ratgeber zu Internet-Pro­gram­mier­spra­chen. Aus der Kom­bi­na­ti­on von Variablen, Ope­ra­to­ren, Be­din­gun­gen, Funk­tio­nen und vielem mehr entsteht der Pro­gramm­ab­lauf, an dessen Ende ein Ergebnis aus­ge­ge­ben wird.

DART ganz praktisch

Wir stellen Ihnen erste und einfache, nach­voll­zieh­ba­re Beispiele zum Lernen von DART-Pro­gram­mie­ren vor, die Sie dann nach Belieben erweitern und mit denen Sie selbst ex­pe­ri­men­tie­ren können. Jede Pro­gramm­rou­ti­ne beginnt mit dem Aufruf der Haupt­funk­ti­on – hier am Beispiel des Klas­si­kers in der Code-Welt:

void main () {
print("Hallo Welt!"); // Druckbefehl mit Ausgabe: Hallo Welt
}

Vor der Funktion „main“ steht der Rück­ga­be­typ „void“, der nichts zu­rück­gibt. Die runden Klammern „()“ deuten auf eine Funktion hin, und innerhalb der ge­schweif­ten Klammern „{ … }“ wird der DART-Code aus­ge­führt – hier der Befehl, etwas auf dem Bild­schirm aus­zu­ge­ben. Was hinter den beiden Schräg­stri­chen „//“ steht, ist ein Kommentar, der un­sicht­bar bleibt; das geht ebenso mit „/* das ist ein mehr­zei­li­ger Kommentar …*/“ – bekannt zum Beispiel aus PHP. Damit kann man den eigenen Code für sich oder andere Ent­wick­ler struk­tu­riert kom­men­tie­ren, was die Team-Arbeit an be­stehen­den Projekten we­sent­lich er­leich­tert.

Hinweis

Wie in Java, C oder PHP müssen alle DART-State­ments mit einem Semikolon ab­ge­schlos­sen werden.

Die nach­fol­gen­den Beispiele können Sie einfach selbst aus­pro­bie­ren. Dazu nutzen Sie die kos­ten­lo­se Open-Source-Plattform DartPad. Dieses Pad hat u. a. den Vorteil, dass es die Zeilen des Programms num­me­riert und ggf. Feh­ler­mel­dun­gen ausgibt. Zudem sind einige Pro­gram­mier­bei­spie­le in einem Drop-down-Menü verfügbar.

In den weiteren Code-Bei­spie­len im Text wird „void main() {…}“ nicht mehr mit­auf­ge­führt.

Variablen de­fi­nie­ren und nutzen

Mit Variablen werden feste Größen für das Programm definiert. Wir beginnen mit Zahlen.

var meineGroesse = 174;

Damit ist eine neue Variable „mei­n­eGroes­se“ fest­ge­legt worden. Ihr wurde der Wert „174“ zu­ge­wie­sen. Diese Variable bleibt im Pro­gramm­ab­lauf mit Ihrem Wert erhalten, bis sie aktiv durch Ope­ra­to­ren oder Funk­tio­nen verändert wird. Um den Wert der Variablen aus­zu­ge­ben, kommt der Befehl „print“ ins Spiel.

var meineGroesse = 174;
print(meineGroesse);
int deineGroesse = 174;
print(deineGroesse);
double dieseGroesse = 1.74;
print(dieseGroesse);
dynamic eineGroesse = 'Hundertvierundsiebzig' + ': ' + '174';
print(eineGroesse);

Das ergibt im DartPad per Befehl „print“ die folgenden Ausgaben aus den Zeilen 3, 6, 9 und 12 in der Konsole:

Die Variablen in DART nehmen bestimmte Typen an. Das können Ganz­zah­len („int“) oder Gleit­kom­ma­zah­len („double“) sein. Der Va­ria­blen­typ „dynamic“ kann im Pro­gramm­ab­lauf ver­schie­de­ne Werte und Ausdrücke annehmen. Dagegen werden Leer­zei­len, Ta­bu­la­to­ren oder Absätze beim Ab­ar­bei­ten der Routine nicht be­rück­sich­tigt. Deshalb stehen die Werte rechts in der Konsole auch direkt un­ter­ein­an­der.

Der Versuch, einem be­stimm­ten Va­ria­blen­typ einen falschen Wert zu­zu­wei­sen, erzeugt eine Feh­ler­mel­dung mit Feh­ler­be­schrei­bung im DartPad:

int deineGroesse = 1.74; // Ganzzahl wird erwartet, Gleitkommazahl wird eingegeben
print(deineGroesse);
Hinweis

Die Be­zeich­nun­gen (Iden­ti­fier) für die ver­wen­de­ten Variablen dürfen keine Schlüs­sel­wör­ter enthalten. Auch Zahlen am Anfang sowie Leer- und Son­der­zei­chen sind nicht zu­ge­las­sen – Ausnahmen sind Un­ter­strich „_“ und Dol­lar­zei­chen „$“. Die Be­zeich­ner be­rück­sich­ti­gen Groß- und Klein­schrei­bung und müssen ein­zig­ar­tig sein.

Zei­chen­fol­gen im DART-Tutorial

Mit Zei­chen­fol­gen, dem Datentyp „String“ (Achtung: mit großem S am Anfang), lassen sich beliebige Zeichen in der DART-Pro­gram­mie­rung ver­ar­bei­ten. In diesem Zu­sam­men­hang lernen Sie hier auch gleich, mehr­zei­lig for­ma­tier­te Zeilen in DART zu pro­gram­mie­ren.

String text1 = 'Das ist einzeiliger Text';
String text2 = '''Das ist ein mehr-
zeiliger Text mit Umbruch''';
print(text1);
print(text2);

Die Wie­der­ga­be von Text per String erfolgt durch Um­schlie­ßen des ge­wünsch­ten Inhalts mit einfachen oder normalen An­füh­rungs­zei­chen: ' oder ". Wird der Text jedoch mit dreifach hin­ter­ein­an­der an­ge­ord­ne­ten An­füh­rungs­zei­chen (''' oder """) begonnen und beendet, gibt DART den Text an der um­bro­che­nen Stelle auch als Umbruch aus. Damit steht eine Mög­lich­keit zum For­ma­tie­ren der Ausgabe zur Verfügung.

Tipp

Ty­po­gra­fi­sche An­füh­rungs­zei­chen (meist in der korrekten eng­li­schen Version) lassen sich ganz einfach in Windows mit den Tas­ten­kom­bi­na­tio­nen [Alt] + 0147 (Anführung) und [Alt] + 0148 (Abführung) im Text plat­zie­ren. Diese werden in einem String von DART auch als solche aus­ge­ge­ben. In macOS erreichen Sie diese An­füh­rungs­zei­chen mit [Alt] +[Shift] + [W] und [Alt] + [2].

Zah­len­akro­ba­tik mit DART

Von der Fest­le­gung von Variablen ist der Weg nicht weit zu Be­rech­nun­gen mit Variablen. Dabei können Zahlen oder auch Ausdrücke zu­sam­men­ge­rech­net werden. Um Er­geb­nis­se zu berechnen, nutzt DART arith­me­ti­sche Ope­ra­to­ren. Eine Aufgabe könnte bei­spiels­wei­se darin bestehen, dass ein Artikel im On­line­shop aus­ge­wählt wurde, der Kunde jedoch drei Stück davon kaufen möchte. Also muss in der Warenkorb-Funktion der Ein­zel­preis mit „3“ mul­ti­pli­ziert werden und am Ende der Be­rech­nung der Ge­samt­preis dar­ge­stellt sein. Am nach­fol­gen­den Code kann man die Ver­wen­dung ver­schie­de­ner Methoden zur Zu­sam­men­füh­rung von Daten sehen – und dazu die Kom­men­ta­re in den re­le­van­ten Zeilen:

String produkt = 'Kalender';
String waehrung = 'EUR';
String fuer = 'für'; // drei Strings für spätere Verwendung in der Ausgabe
double einzelPreis = 7.96; // Gleitkommazahl Einzelpreis für einen Kalender
int anzahl = 3; // Ganzzahl für die Anzahl der bestellten Kalender
var gesamtPreis = (anzahl*einzelPreis); //Berechnung des Gesamtpreises mit Multiplikator *
var rgBetrag = '$gesamtPreis $waehrung'; /* Zusammenführung zweier Werte in neue Variable. */
var ergebnis = '$anzahl $produkt'; //ebenso
print (rgBetrag); // Erzeugung der Bildschirmausgaben
print (fuer);
print (ergebnis);

Es kommen Strings, Gleit­kom­ma- und Ganz­zah­len sowie die Zu­sam­men­füh­rung von Elementen der Pro­gram­mie­rung zu neuen Variablen vor. Eine Be­son­der­heit ist beim Zu­sam­men­füh­ren von zwei exis­tie­ren­den Variablen in einer neuen Variable zur Ausgabe auf dem Bild­schirm zu beachten: Den bereits de­fi­nier­ten Variablen wird in diesem Falle ein Dol­lar­zei­chen „$“ vor­an­ge­stellt (Zeilen 8 und 9 in der obigen Abbildung des DartPads).

Be­din­gun­gen stellen

Beim Pro­gram­mie­ren, spielen Be­din­gun­gen eine wichtige Rolle. Hier lernen Sie das Pro­gram­mie­ren einer Bedingung mit DART. Eine Bedingung führt immer zu einer Ent­schei­dung, im Sinn von: Wenn (if) Fall A eintritt, erscheint Anzeige X auf dem Bild­schirm; tritt Fall B ein (elseif), dann kommt die Anzeige Y; wenn beide nicht zutreffen (else), wird Anzeige Z aus­ge­ge­ben. Mit den in Klammern dar­ge­stell­ten DART-Befehlen entsteht daraus der folgende Code:

var werkzeug = 'Handschuh';
if (werkzeug == 'Zange' || werkzeug == 'Lineal')
    { print('Das ist Werkzeug.');
    } else if (werkzeug == 'Pinsel')
    { print('Das ist ein Malerwerkzeug.');
    } else { print('Das ist kein Werkzeug.');
    }

Im DartPad sieht das dann so aus:

Erweitern Sie Ihr eigenes Wissen im DART-Tutorial und wechseln Sie im DartPad das Wort „Handschuh“ einmal gegen „Zange“, „Lineal“ oder „Pinsel“ aus und be­ob­ach­ten Sie die Ver­än­de­run­gen der pro­gram­mier­ten Ausgabe auf der Konsole. Das lässt sich beliebig erweitern und auf diverse Fälle anwenden. Neu erscheint hier erstmals der Operator „||“. Diese doppelte Pipe steht für den logischen Begriff „oder“, der in DART nicht als Wort „OR“ verwendet werden darf.

Auf und Ab geht auch mit DART

Um den nach­fol­gen­den Abschnitt zu pro­gram­mie­ren, müssen wir die so­ge­nann­ten In­kre­men­te und De­kre­men­te in DART erlernen. Es handelt sich um das schritt­wei­se Ver­grö­ßern oder Ver­klei­nern eines Aus­gangs­werts. Im Beispiel wird die Zahl 50 mit den Ope­ra­to­ren „++“ und „--“ verändert.

var aufUndAb = 50;
print (aufUndAb);
print('----');
++aufUndAb;
print (aufUndAb);
print('----');
aufUndAb++;
print (aufUndAb);
print('----');
--aufUndAb;
print (aufUndAb);
print('----');
aufUndAb--;
print (aufUndAb);

Hier sehen Sie auch, dass man eine einfache Zei­chen­ket­te auch ohne vorherige De­fi­ni­ti­on ausgeben kann, indem sie in runden Klammern mit An­füh­rungs­zei­chen per „print“ in den Pro­gramm­code eingefügt wird. Das dient hier lediglich der optischen Struk­tu­rie­rung des Er­geb­nis­ses. Mit diesem Wissen sind Sie vor­be­rei­tet, Schleifen zu pro­gram­mie­ren.

Wir drehen uns im Kreis: Schleifen in DART

Schleifen sind ebenso wichtige Pro­gramm­rou­ti­nen, die immer wieder benötigt werden, um bei­spiels­wei­se Ver­glei­che mit vor­han­de­nen Größen an­zu­stel­len. Dazu bedient man sich folgender „For­mu­lie­rung“: Wir haben den Wert A; verändere diesen Wert solange, bis die Größe (der Zustand) B erreicht ist. Als DART-Code sieht das so aus:

String bezeichnung = ' Stück';
var stueck = 3;
while (stueck < 12) {
    var gesamt = '$stueck $bezeichnung';
    print(gesamt);
    stueck++;
    }

Was macht das DartPad damit?

In diesem Beispiel könnte man auch wieder Be­din­gun­gen einsetzen, wenn sich bei­spiels­wei­se Wörter in Einzahl und Mehrzahl un­ter­schei­den:

int menge = 1;
var artikelEinzahl = 'Bluse';
var artikelMehrzahl = 'Blusen';
if (menge == 1)
    { print(artikelEinzahl);
    } else { print(artikelMehrzahl);
    }
}

Um mit DART pro­gram­mie­ren zu lernen, kopieren Sie dieses Code-Beispiel in das DartPad und ändern die Ganzzahl-Variable „menge“, sodass der Artikel „Bluse“ in der Einzahl oder in der Mehrzahl aus­ge­ge­ben wird.

DART-Ope­ra­to­ren auf einen Blick

Sie haben nun schon einige Ope­ra­to­ren zum Pro­gram­mie­ren in DART erlernt. Mit der nach­fol­gen­den Tabelle geben wir Ihnen den Überblick über die wich­tigs­ten ver­füg­ba­ren Ope­ra­to­ren.

In der Tabelle ist die Variable „Muster“ auf den Wert 35 gesetzt.

var muster = 35;
Operator-Typ Be­zeich­nung Symbol Beispiel Ausgabe
Rechnen Addition + var muster + 2; 37
Subs­trak­ti­on - var muster - 2; 33
Mul­ti­pli­ka­ti­on * var muster * 3; 105
Division / var muster / 7; 5
Ganzzahl-Division ~/ var muster ~/ 7; 11
Erhöhung um += var muster += 6; 41
Ver­min­de­rung um -= var muster -= 7; 28
Mul­ti­pli­ka­ti­on mit *= var muster *= 2; 70
Division durch /= var muster /= 7; 5
Ver­glei­chen Identisch == var muster == 35; True
Nicht identisch != var muster != 44; True
Kleiner als < var muster < 44; true
Kleiner gleich als <= var muster <= 33; False
Größer als > 44 > var muster; True
Größer gleich als >= var muster>=23; false
Verändern Auf­stei­gend ++ ++var muster; 36
Auf­stei­gend ++ var muster++; 36
Ab­stei­gend -- --var muster; 34
Ab­stei­gend -- var muster--; 34
Restwert % %var muster%3; 2
Logik UND && muster1 && muster2 … und
ODER ll muster1 ll muster2 … oder
Negation ! muster1 ! muster2 … ist nicht
Be­din­gun­gen Wenn-Dann ? … : var y = muster < 34 ? 15 : 10; 10
Wenn-Dann ? … : var y = muster < 36 ? 15 : 10; 15
Prüfung auf Null ?? var y = muster ?? 9; 35
Prüfung auf Null ?? var z = 0 ?? muster; 35

Mit diesem Ba­sis­wis­sen können Sie nun weitere Schritte in DART gehen, und der Weg zum Vorhaben, die eigene App zu pro­gram­mie­ren, ist nicht mehr ganz so weit.

Zum Hauptmenü