Lektion 01 - Code-Struktur verstehen
Klammern, Funktionen, Zuweisungen und Aufbau lesen
Bevor du viele neue Themen lernst, musst du Code lesen koennen. Diese Lektion erklaert dir die wichtigsten Zeichen in Dart: runde Klammern, geschweifte Klammern, eckige Klammern, Semikolon, Zuweisung, Funktionsaufrufe und Code-Bloecke.
1. Code ist wie ein Bauplan
Ein Programm besteht nicht nur aus Woertern. Die Zeichen dazwischen sind genauso wichtig. Sie sagen Dart, wo etwas beginnt, wo etwas endet, was zusammengehoert und was ausgefuehrt werden soll.
void main() {
String name = 'Mina';
print('Hallo $name');
}
Dieser kleine Code hat schon fast alle Grundzeichen: (), {},
=, ;, Text in Anfuehrungszeichen und einen Funktionsaufruf.
2. Wichtige Dart-Woerter am Anfang
Viele Codezeilen sehen am Anfang fremd aus, weil sie aus festen Dart-Woertern bestehen. Diese Woerter sind wie kleine Ansagen an Dart: Was ist ein Text? Was ist eine Zahl? Gibt eine Funktion etwas zurueck? Wird ein Wert festgelegt?
voidKein Rueckgabewert. Die Funktion macht etwas, liefert aber kein Ergebnis zurueck.intGanze Zahl ohne Komma, zum Beispiel 18 oder -4.doubleKommazahl, zum Beispiel 3.14 oder 19.99.numZahl allgemein. Kann int oder double sein.StringText in Anfuehrungszeichen, zum Beispiel 'Hallo'.boolWahrheitswert. Nur true oder false.List<String>Liste, in der jeder Eintrag ein Text ist.varDart erkennt den Typ automatisch aus dem Wert.finalWert wird einmal gesetzt und danach nicht mehr geaendert.constFester Wert, der schon beim Programmstart bekannt ist.returnGibt ein Ergebnis aus einer Funktion zurueck.classBauplan fuer Objekte mit Attributen und Methoden.nullKein Wert vorhanden. In Dart wegen Null Safety besonders wichtig.void main() {
int age = 21;
double price = 19.99;
String name = 'Mina';
bool isStudent = true;
print(name);
}
Du liest das so: main gibt nichts zurueck, innen werden Werte mit bestimmten
Typen gespeichert und danach wird name ausgegeben.
3. Geschweifte Klammern { }: Code-Bloecke
Geschweifte Klammern markieren einen Bereich. Alles zwischen { und
} gehoert zusammen.
void main() {
print('Start');
print('Ende');
}
Hier gehoeren beide print-Zeilen zur Funktion main. Wenn die schliessende
Klammer fehlt, weiss Dart nicht, wo der Block endet.
if (age >= 18) {
print('Erwachsen');
}
Merksatz: Geschweifte Klammern sagen: "Dieser Code gehoert zu dieser Funktion, Entscheidung, Schleife oder Klasse."
4. Runde Klammern ( ): Eingaben und Aufrufe
Runde Klammern stehen oft bei Funktionen und Methoden. Sie koennen leer sein oder Werte enthalten.
main()
print('Hallo')
greet('Mina')
add(3, 4)
main()Funktion ohne Eingaben.print('Hallo')Funktion bekommt Text als Eingabe.add(3, 4)Funktion bekommt zwei Zahlen.Die Werte in den runden Klammern nennt man beim Aufruf Argumente. In der Funktionsdefinition nennt man sie Parameter.
5. Parameter vs. Argumente
Das ist am Anfang verwirrend, aber wichtig: Parameter sind Platzhalter in der Funktion. Argumente sind echte Werte beim Aufruf.
void greet(String name) {
print('Hallo $name');
}
void main() {
greet('Mina');
}
String nameParameter: Platzhalter in der Funktion.'Mina'Argument: echter Wert beim Aufruf.$nameDer Wert des Parameters wird in Text eingesetzt.6. Eckige Klammern [ ]: Listen und optionale Parameter
Eckige Klammern begegnen dir in Dart vor allem bei Listen.
List<String> topics = ['Dart', 'Flutter', 'OOP'];
print(topics[0]); // Dart
print(topics[1]); // Flutter
Eine Liste speichert mehrere Werte. Mit [0] greifst du auf das erste Element zu.
Programmierung zaehlt hier bei 0 los, nicht bei 1.
Eckige Klammern koennen in Dart auch optionale Positionsparameter markieren:
void greet(String name, [String greeting = 'Hallo']) {
print('$greeting $name');
}
7. Das Semikolon ;: Anweisung beenden
Das Semikolon sagt Dart: Diese Anweisung ist fertig.
String name = 'Mina';
int age = 21;
print(name);
Nicht nach jeder Zeile kommt ein Semikolon. Nach Block-Anfaengen wie
void main() { oder if (...) { kommt keins.
print('Hi');void main() {int age = 18;if (age >= 18) {8. Zuweisung mit =
Ein einzelnes = bedeutet in Dart nicht "ist gleich" wie in Mathe, sondern:
Speichere den rechten Wert links in der Variable.
String name = 'Mina';
int points = 10;
points = points + 5;
Die letzte Zeile liest du so: Nimm den alten Wert von points, addiere 5 und
speichere das Ergebnis wieder in points.
points = points + 5;
links rechts
Ziel Berechnung
9. Vergleich mit ==
Zwei Gleichheitszeichen pruefen, ob zwei Werte gleich sind.
int age = 18;
if (age == 18) {
print('Genau 18');
}
=Zuweisung: Wert speichern.==Vergleich: Sind beide Werte gleich?!=Vergleich: Sind beide Werte verschieden?10. Funktionen: Code mit Namen
Eine Funktion ist ein benannter Code-Block. Du kannst ihn mehrfach aufrufen.
void sayHello() {
print('Hallo!');
}
void main() {
sayHello();
sayHello();
}
void bedeutet: Diese Funktion gibt keinen Wert zurueck. Sie fuehrt nur etwas
aus.
11. Funktionen mit Rueckgabewert
Manche Funktionen liefern ein Ergebnis zurueck. Dann steht vor dem Namen der Typ des Ergebnisses.
int add(int first, int second) {
return first + second;
}
void main() {
int result = add(3, 4);
print(result);
}
return bedeutet: Gib diesen Wert an die Stelle zurueck, an der die Funktion
aufgerufen wurde.
12. Klassen-Struktur lesen
Spaeter bestehen Dart-Programme oft aus Klassen. Auch dort helfen dir Klammern und Struktur beim Lesen.
class User {
String name;
User(this.name);
void introduce() {
print('Ich bin $name');
}
}
class UserNeue Klasse mit Namen User.String name;Attribut, also gespeicherte Eigenschaft.User(this.name);Konstruktor, erstellt ein Objekt.introduce()Methode, also Funktion innerhalb der Klasse.13. Flutter-Struktur ganz grob
In Flutter wirst du viele verschachtelte Klammern sehen. Das ist normal, weil Widgets ineinander liegen.
return Column(
children: [
Text('Titel'),
ElevatedButton(
onPressed: () {
print('Klick');
},
child: Text('Start'),
),
],
);
Hier siehst du mehrere Ebenen: Column(...) bekommt eine Liste
children: [...]. In dieser Liste liegen Widgets. Der Button bekommt wiederum
Funktionen und ein Kind-Widget.
14. Einrueckung: nicht nur schoen, sondern lesbar
Dart versteht Code ueber Klammern, nicht ueber Einrueckung. Menschen verstehen Code aber viel besser, wenn die Einrueckung stimmt.
Gut lesbar:
if (isLoggedIn) {
print('Willkommen');
}
Schlecht lesbar:
if (isLoggedIn) {
print('Willkommen');
}
Wenn du nicht mehr weisst, welche Klammer wohin gehoert, stimmt meistens die Struktur oder Einrueckung nicht.
15. Aufgaben: Code-Struktur lesen
- Markiere in einem Dart-Beispiel alle runden Klammern und erklaere ihre Aufgabe.
- Markiere alle geschweiften Klammern und schreibe daneben, welcher Block gemeint ist.
- Erklaere den Unterschied zwischen
=und==mit eigenen Worten. - Schreibe eine Funktion
multiply, die zwei Zahlen bekommt und das Ergebnis zurueckgibt. - Beschreibe in Worten eine Funktion, die prueft, ob Punkte mindestens 50 sind.
Planung:
Funktion hasPassed bekommt points.
Wenn points mindestens 50 ist, gibt sie true zurueck.
Sonst gibt sie false zurueck.
Weiter zu Variablen & Typen