Algo Kurs Struktogramme wiederholen

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.

OperatorBedeutung
<kleiner als
>groesser als
<=kleiner oder gleich
>=groesser oder gleich
==gleich
!=nicht gleich
void 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.

  1. Wenn die Zahl kleiner als 10 ist, gib kleiner aus.
  2. Wenn die Zahl groesser als 10 ist, gib groesser aus.
  3. Wenn die Zahl genau 10 ist, gib gleich aus.
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.

  1. Lege points an.
  2. Pruefe mit >=, ob bestanden wurde.
  3. Gib einen passenden Text aus.
  4. 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.

  1. Unter 0 ist ungueltig.
  2. Unter 13 ist Kind.
  3. Unter 18 ist Teenager.
  4. 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.

  1. Nutze && fuer "und".
  2. Gib gueltig oder ungueltig aus.
  3. 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.

  1. Funktion: largerNumber(int first, int second).
  2. Wenn first groesser ist, gib first zurueck.
  3. Sonst gib second zurueck.
  4. 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.

  1. Wenn number % 2 == 0, ist die Zahl gerade.
  2. Sonst ist sie ungerade.
  3. 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.

  1. rot: stehen bleiben.
  2. gelb: bereit machen.
  3. gruen: gehen.
  4. 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.

  1. 0 bis 49: nicht bestanden.
  2. 50 bis 69: bestanden.
  3. 70 bis 89: gut.
  4. 90 bis 100: sehr gut.
  5. 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