Lektion 03 - Algo Vergleiche
Kleiner, groesser, gleich und Bereiche pruefen
Viele Algorithmen bestehen aus Vergleichen. Du pruefst, ob ein Wert kleiner, groesser, gleich oder in einem bestimmten Bereich ist. Diese Lektion trainiert genau diese Denkweise mit kleinen Aufgaben.
1. Vergleichsoperatoren
Vergleichsoperatoren liefern immer einen Wahrheitswert: true oder
false. Damit kannst du Entscheidungen bauen.
<kleiner als>groesser als<=kleiner oder gleich>=groesser oder gleich==gleich!=nicht gleichvoid main() {
final points = 7;
print(points < 10); // true
print(points > 10); // false
print(points == 7); // true
print(points != 0); // true
}
2. Aufgabe: Zahl kleiner oder groesser
Schreibe zuerst Pseudocode, danach Dart-Code. Eine Zahl soll mit 10 verglichen werden.
- Wenn die Zahl kleiner als 10 ist, gib
kleineraus. - Wenn die Zahl groesser als 10 ist, gib
groesseraus. - Wenn die Zahl genau 10 ist, gib
gleichaus.
Pseudocode:
Setze zahl auf 10
Wenn zahl kleiner als 10 ist:
Gib 'kleiner' aus
Sonst wenn zahl groesser als 10 ist:
Gib 'groesser' aus
Sonst:
Gib 'gleich' aus
void main() {
final number = 10;
if (number < 10) {
print('kleiner');
} else if (number > 10) {
print('groesser');
} else {
print('gleich');
}
}
3. Aufgabe: Mindestpunkte pruefen
Eine Aufgabe ist bestanden, wenn mindestens 50 Punkte erreicht wurden.
- Lege
pointsan. - Pruefe mit
>=, ob bestanden wurde. - Gib einen passenden Text aus.
- Schreibe danach eine Version mit ternaerem Operator.
void main() {
final points = 52;
if (points >= 50) {
print('bestanden');
} else {
print('nicht bestanden');
}
final label = points >= 50 ? 'bestanden' : 'nicht bestanden';
print(label);
}
4. Aufgabe: Altersgruppen
Ein Alter soll in Gruppen eingeteilt werden. Achte auf die Reihenfolge der Bedingungen.
- Unter 0 ist ungueltig.
- Unter 13 ist Kind.
- Unter 18 ist Teenager.
- Ab 18 ist erwachsen.
String ageGroup(int age) {
if (age < 0) {
return 'ungueltig';
}
if (age < 13) {
return 'Kind';
}
if (age < 18) {
return 'Teenager';
}
return 'Erwachsen';
}
5. Aufgabe: Bereich pruefen
Ein Wert liegt im erlaubten Bereich, wenn er mindestens 1 und hoechstens 100 ist.
- Nutze
&&fuer "und". - Gib
gueltigoderungueltigaus. - Teste die Werte
0,1,50,100,101.
bool isInRange(int value) {
return value >= 1 && value <= 100;
}
void main() {
final value = 50;
final result = isInRange(value) ? 'gueltig' : 'ungueltig';
print(result);
}
6. Aufgabe: Groesste von zwei Zahlen
Schreibe eine Funktion, die die groessere von zwei Zahlen zurueckgibt.
- Funktion:
largerNumber(int first, int second). - Wenn
firstgroesser ist, gibfirstzurueck. - Sonst gib
secondzurueck. - Teste auch gleiche Zahlen.
int largerNumber(int first, int second) {
if (first > second) {
return first;
}
return second;
}
7. Aufgabe: Kleinste von drei Zahlen
Jetzt wird es etwas algorithmischer: Finde die kleinste von drei Zahlen.
Pseudocode:
Setze smallest auf first
Wenn second kleiner als smallest ist:
Setze smallest auf second
Wenn third kleiner als smallest ist:
Setze smallest auf third
Gib smallest zurueck
int smallestOfThree(int first, int second, int third) {
var smallest = first;
if (second < smallest) {
smallest = second;
}
if (third < smallest) {
smallest = third;
}
return smallest;
}
8. Aufgabe: Gerade oder ungerade
Nutze den Modulo-Operator %. Er gibt den Rest einer Division zurueck.
- Wenn
number % 2 == 0, ist die Zahl gerade. - Sonst ist sie ungerade.
- Schreibe eine Funktion
isEven.
bool isEven(int number) {
return number % 2 == 0;
}
void main() {
final number = 8;
print(isEven(number) ? 'gerade' : 'ungerade');
}
9. Aufgabe: Ampel-Logik
Eine Ampel gibt je nach Farbe eine Aktion zurueck.
rot: stehen bleiben.gelb: bereit machen.gruen: gehen.- Alles andere: ungueltige Farbe.
String trafficAction(String color) {
if (color == 'rot') {
return 'stehen bleiben';
}
if (color == 'gelb') {
return 'bereit machen';
}
if (color == 'gruen') {
return 'gehen';
}
return 'ungueltige Farbe';
}
10. Mini-Challenge: Bewertungsfunktion
Kombiniere mehrere Vergleiche in einer Funktion.
- 0 bis 49:
nicht bestanden. - 50 bis 69:
bestanden. - 70 bis 89:
gut. - 90 bis 100:
sehr gut. - Alles unter 0 oder ueber 100:
ungueltig.
String gradeFor(int points) {
if (points < 0 || points > 100) {
return 'ungueltig';
}
if (points >= 90) {
return 'sehr gut';
}
if (points >= 70) {
return 'gut';
}
if (points >= 50) {
return 'bestanden';
}
return 'nicht bestanden';
}
Weiter zur Eingabepruefung