Hands-on Computer Science
Mein Lernen EN

Quiz15 Min.

Quiz: Algorithmen und Programme

Vierzehn Fragen dazu, was einen Algorithmus ausmacht, was ein Programm hinzufügt, zur Reihenfolge von Anweisungen, zu Schleifen, die enden oder nicht, und zum Aufwand eines Verfahrens. Jede Antwort kommt mit ihrer Begründung.

Themen:Probleme lösenInformation verarbeiten

Teil der Lektion Algorithmen und Programme

Mehrere Fragen zeigen kurze Programme, die eine farbige Lampe schalten: lamp.set_color(r, g, b) gibt der Lampe eine Farbe, gemischt aus Rot, Grün und Blau mit Anteilen zwischen 0 und 255, und time.sleep(1) wartet eine Sekunde, bevor die nächste Zeile läuft.

Jemand hält farbige Karten hoch, und du befolgst vier Schritte: auf die Karte schauen, entscheiden, welche Farbe sie hat, ihr Zeichen notieren, auf die nächste Karte warten. Was macht diese Anleitung zu einem Algorithmus?

  • Dass sie sich auf einen Computer übertragen ließe, denn nur was ein Rechner ausführen könnte, zählt als Algorithmus.
  • Dass die Schritte so genau beschrieben sind, dass man sie ausführen kann, ohne zu verstehen, wozu sie dienen.
  • Dass sie aus wenigen, überschaubaren Schritten besteht, die man sich ohne Aufschreiben merken kann.
  • Dass sie in einer Programmiersprache aufgeschrieben ist, denn erst eine feste Syntax macht aus einer Anleitung einen Algorithmus.

Worin liegt der Unterschied zwischen einem Algorithmus und einem Programm?

  • Ein Programm ist die fortgeschrittene Stufe eines Algorithmus, die erst nötig wird, wenn ein Problem für die Bearbeitung von Hand zu groß ist.
  • Ein Algorithmus beschreibt, wie gerechnet wird; ein Programm legt fest, wie die Daten dafür gespeichert und verwaltet werden.
  • Ein Programm ist derselbe Ablauf, aber so vollständig aufgeschrieben, dass eine Maschine ihn ausführen kann.
  • Es gibt keinen wesentlichen: Beide sind eindeutige Schrittfolgen, und welches Wort man benutzt, hängt vom Fachgebiet ab.

Was siehst du an der Lampe, wenn dieses Programm läuft?

lamp.set_color(255, 0, 0)
time.sleep(1)
lamp.set_color(0, 0, 255)
  • Eine Sekunde Rot, danach Blau.
  • Rot und Blau gleichzeitig, also Violett.
  • Nur Blau, weil die erste Zeile übersprungen wird.
  • Nur Rot: Die Lampe behält die erste Farbe, die sie bekommt, bis das Programm endet.

Jemand wundert sich: „Die Lampe wird nie rot, dabei steht es doch da!“ Was ist los?

lamp.set_color(255, 0, 0)
lamp.set_color(0, 0, 255)
  • Die erste Zeile enthält einen Fehler, den die Maschine stillschweigend überspringt; sonst müsste Rot zu sehen sein.
  • Die zweite Zeile ersetzt die erste, bevor diese läuft: Bei zwei gleichartigen Befehlen gilt nur der letzte.
  • Rot leuchtet, aber nur für einen winzigen Bruchteil einer Sekunde; ohne Pause ist das für das Auge unsichtbar.
  • Die Lampe reagiert träge: Bei zwei so schnell folgenden Befehlen kommt nur der letzte an, der erste geht in der Hardware verloren.

Welche Rolle spielt der Teil (255, 0, 0) in dieser Zeile?

lamp.set_color(255, 0, 0)
  • Er sagt, welche Lampe angesprochen wird: Die drei Zahlen kennzeichnen, welche von mehreren Lampen gemeint ist.
  • Er sagt, mit welchen Werten die Anweisung ausgeführt wird: voller Rotanteil, kein Grün, kein Blau.
  • Er ist eine Notiz für Lesende, die den gewünschten Rotanteil erklärt; ausgeführt wird nur der Teil vor der Klammer.
  • Er sagt, wie lange die Anweisung läuft: 255 Millisekunden lang, danach ist die Lampe wieder aus.

Welchen Vorteil bringt die erste Zeile, bright = 255?

bright = 255
lamp.set_color(bright, 0, 0)
time.sleep(1)
lamp.set_color(bright, bright, 0)
  • Das Programm läuft schneller, weil die Maschine den Wert nur einmal lesen muss statt bei jedem Aufruf neu.
  • Ohne sie bliebe die Lampe dunkel, denn erst diese Zeile schaltet die Helligkeit auf den Höchstwert.
  • Die Helligkeit lässt sich an genau einer Stelle ändern statt an jeder Verwendung.
  • Namen sind Pflicht: Eine Anweisung wie set_color nimmt nur benannte Werte an, keine nackten Zahlen in der Klammer.

Wie lange läuft dieses Programm ungefähr, und was zeigt die Lampe?

colors = [(255, 0, 0), (0, 255, 0),
          (0, 0, 255), (255, 255, 0)]
for r, g, b in colors:
    lamp.set_color(r, g, b)
    time.sleep(1)
  • Eine Sekunde: Die Schleife zeigt alle vier Farben gleichzeitig.
  • Etwa vier Sekunden: vier Durchläufe, in denen je eine Farbe eine Sekunde lang leuchtet.
  • Unendlich: Eine for-Schleife läuft, bis man sie abbricht.
  • Vier Sekunden, aber nur die letzte Farbe, Gelb, ist je zu sehen.

Wie lange läuft dieses Programm insgesamt, ungefähr?

colors = [(255, 0, 0), (255, 255, 0), (0, 0, 255)]
for r, g, b in colors:
    lamp.set_color(r, g, b)
    if (r, g, b) == (255, 255, 0):
        time.sleep(3)
    else:
        time.sleep(1)
  • 3 Sekunden
  • 9 Sekunden
  • 5 Sekunden
  • 4 Sekunden

Aus welchen Bausteinen ist jedes Programm gebaut? Kreuz alle an, die dazugehören. (Mehrere richtige Antworten möglich.)

  • Anweisungen, die nacheinander laufen.
  • Werte, die einen Namen bekommen.
  • Wiederholung.
  • Bedingungen: Etwas geschieht nur, wenn etwas zutrifft.

Dein Programm bricht mit dieser Meldung ab. Was fängst du damit an?

Traceback (most recent call last):
  File "blink.py", line 7, in <module>
    lamp.set_colour(255, 0, 0)
AttributeError: 'Lamp' object has no attribute 'set_colour'. Did you mean: 'set_color'?
  • Der Rechner ist abgestürzt; nach einem Neustart läuft das Programm meist wieder, denn solche Meldungen kommen und gehen.
  • Die Meldung nennt Datei, Zeile und Ursache: In Zeile 7 steht set_colour, das es nicht gibt; gemeint war set_color.
  • Das Programm überfordert den Rechner; die Meldung zeigt, dass er beim Ausführen von Zeile 7 nicht mehr mitgekommen ist.
  • Die Meldung ist eine Warnung, die du überlesen kannst: Das Programm läuft nach Zeile 7 weiter, und die Lampe leuchtet trotzdem.

Wann endet dieses Programm?

while True:
    lamp.set_color(255, 0, 0)
    time.sleep(1)
    lamp.set_color(0, 0, 255)
    time.sleep(1)
  • Wenn beide Farben einmal gezeigt wurden, denn dann ist der Körper der Schleife vollständig abgearbeitet.
  • Nach einer Weile von selbst, wenn die Maschine merkt, dass nichts Neues passiert.
  • Nie: Die Bedingung ist immer wahr, und der Körper der Schleife hat keinen Ausweg.
  • Nach einer festen Zahl von Wiederholungen, denn jede Schleife hat eine eingebaute Obergrenze, damit die Maschine nicht hängen bleibt.

Beim Zahlenraten zwischen 1 und 100 führen zwei Verfahren sicher zum Ziel: alle Zahlen einzeln abfragen (bis zu 99 Fragen) oder den Bereich halbieren (höchstens 7 Fragen). Was folgt daraus?

  • Nur das Halbieren verdient den Namen Algorithmus; das einzelne Abfragen ist bloßes Ausprobieren ohne Verfahren.
  • Eine Lösung kann richtig und trotzdem unbrauchbar sein; Verfahren vergleicht man nach ihrem Aufwand.
  • Bei modernen Computern spielt der Unterschied keine Rolle mehr, weil beide Verfahren ohnehin in Sekundenbruchteilen fertig sind.
  • Das langsame Verfahren ist sicherer, weil es jede Zahl ausdrücklich prüft, und deshalb vorzuziehen.

Sechs Personen sortieren sich nach diesen Regeln der Größe nach: auf den rechten Nachbarn schauen, tauschen, wenn man größer ist, am Ende der Reihe wieder links anfangen. Woran erkennt dieser Ablauf, dass er fertig ist?

  • Nach genau einem Durchgang durch die Reihe, denn dann hat jede Person ihren Nachbarn einmal geprüft.
  • Wenn die Personen sehen, dass die Reihe sortiert aussieht.
  • An einem vollständigen Durchgang, in dem niemand mehr getauscht hat.
  • Gar nicht von selbst: Wie bei jeder Wiederholung von vorn muss jemand von außen abbrechen, sobald die Reihe stimmt.

Was zeigt die Lampe, wenn dieses Programm läuft?

lamp.set_color(255, 0, 0)
lamp.set_color(0, 0, 255)
time.sleep(1)
  • Eine Sekunde Rot, dann Blau: Das time.sleep(1) gehört erkennbar zur roten Phase.
  • Eine Sekunde Blau, dann Rot: Die Pause hält die zuletzt gesetzte Farbe fest, und die erste Zeile wird danach nachgeholt.
  • Rot nur für einen Sekundenbruchteil, dann eine Sekunde Blau.
  • Das Programm ist fehlerhaft und startet nicht, weil time.sleep(1) als letzte Zeile nicht erlaubt ist.

Mit Lösungen herunterladen: CSV Anki

Zurück
Mehr dazu
Details
Niveau
Einstieg
Module
Digitalisierung und Programmierung
Code
2368
Stand
4. November 2026
Status
veröffentlicht

    Ein vierstelliger Code führt direkt zum Inhalt.