Zurück zur StartseiteInformatik · Gymnasium 9 · Fach wechseln
Kostenlos starten
Gymnasium 9 · Informatik
Programmierung und Robotik · Textuelle Programmierung

Textuelle Programmierung

In Klasse 5/6 hast du Programme aus bunten Blöcken zusammengesetzt. Jetzt schreibst du dieselben Ideen als Text: Jede Zeile ist eine genaue Anweisung, und der Computer führt sie genau so aus, ohne zu raten, was du eigentlich meintest. Am Ende kannst du zum Beispiel einen Notenrechner oder einen Pfandautomaten programmieren und Fehler darin gezielt finden.

Variablen, Datentypen, Ein- und Ausgabe

Variable als beschriftete Kiste: Drei Codezeilen legen die Kiste punkte mit einer 0 an, addieren 1 und geben den Wert auf dem Bildschirm aus. Quelltext 1 punkte = 0 2 punkte = punkte + 1 3 print(punkte) Variable (Kiste) punkte 0 → 1 speichert 0 liest, addiert 1, speichert 1 Bildschirm

Das Gleichheitszeichen heißt in Python nicht „ist gleich“, sondern „speichere rechts berechneten Wert in der Variablen links“. Deshalb ist punkte = punkte + 1 kein Widerspruch: Erst wird rechts gerechnet, dann wird gespeichert.

Wähle den Datentyp passend zur Aufgabe: Eine Anzahl Brötchen ist ein int, ein Preis wie 0,65 € ein float, ein Name ein str, die Antwort auf „Ist Pfand enthalten?“ ein bool.

Üben★☆☆Nicht begonnen
Erkläre, was eine Variable ist, mit dem Vergleich einer beschrifteten Kiste, und beschreibe, was jede Zeile macht: puntos = 0, puntos = puntos + 1, print(puntos).…

Erkläre, was eine Variable ist, mit dem Vergleich einer beschrifteten Kiste, und beschreibe, was jede Zeile macht: puntos = 0, puntos = puntos + 1, print(puntos). Welcher Wert erscheint auf dem Bildschirm, und warum ist es kein Fehler, zu einer Variable etwas zu addieren, die „schon einen Wert hatte“?

Lösen
Üben★☆☆Nicht begonnen
Ordne diese Werte nach ihrem Datentyp (ganze Zahl, Dezimalzahl, Text oder Boolean) und gib für jeden Typ ein Anwendungsbeispiel in einem Programm für einen Laden an: 13,…

Ordne diese Werte nach ihrem Datentyp (ganze Zahl, Dezimalzahl, Text oder Boolean) und gib für jeden Typ ein Anwendungsbeispiel in einem Programm für einen Laden an: 13, 3,75, "Anna", True.

Lösen
Üben★☆☆Nicht begonnen
Erkläre, was die Befehle input() und print() in Python machen, welcher Unterschied zwischen ihnen besteht, und schreibe ein Programm aus zwei Zeilen, das nach deinem…

Erkläre, was die Befehle input() und print() in Python machen, welcher Unterschied zwischen ihnen besteht, und schreibe ein Programm aus zwei Zeilen, das nach deinem Namen fragt und dich damit begrüßt.

Lösen
Üben★★☆Nicht begonnen
Sage die Ausgabe dieses Programms voraus, ohne es auszuführen, indem du den Wert der Variablen Zeile für Zeile verfolgst: a = 4, b = 3, a = a + b, b = a - b, print(a),…

Sage die Ausgabe dieses Programms voraus, ohne es auszuführen, indem du den Wert der Variablen Zeile für Zeile verfolgst: a = 4, b = 3, a = a + b, b = a - b, print(a), print(b). Schreibe die vollständige Ablaufverfolgung auf (welchen Wert jede Variable nach jeder Zeile hat) und nicht nur das Ergebnis.

Lösen
Üben★★☆Nicht begonnen
Schreibe ein Programm aus drei Zeilen, das nach dem Namen und dem Alter einer Person fragt und mit beiden einen vollständigen Satz ausgibt (zum Beispiel „Mei ist 14…

Schreibe ein Programm aus drei Zeilen, das nach dem Namen und dem Alter einer Person fragt und mit beiden einen vollständigen Satz ausgibt (zum Beispiel „Mei ist 14 Jahre alt“). Erkläre, welchen Datentyp input() immer zurückgibt und wozu int() beim Abfragen des Alters dient.

Lösen

Verzweigungen: `if`, `elif`, `else`

Dasselbe Programm lässt sich auf drei Arten darstellen. Alltagsbeispiel: Wenn es regnet, nehme ich den Regenschirm, sonst die Sonnenbrille.

Python-Code mit if und else: Ist alter größer oder gleich 12, wird „Du darfst“ ausgegeben, sonst „Noch nicht“. Die Zeilen der Blöcke sind eingerückt. alter = int(input("Alter: ")) if alter >= 12: print("Du darfst") else: print("Noch nicht") ← Bedingung wenn wahr ← sonst wenn falsch Programmablaufplan: Start, Eingabe alter, Raute alter größer oder gleich 12, bei Ja Ausgabe „Du darfst“, bei Nein Ausgabe „Noch nicht“, dann Ende. Start Eingabe alter alter >= 12? Ja Nein Ausgabe „Du darfst“ Ausgabe „Noch nicht“ Ende

Als Pseudocode (Zuweisung mit ←):

lies alter ein

wenn alter >= 12:

    gib "Du darfst" aus

sonst:

    gib "Noch nicht" aus

Im Struktogramm steht die Bedingung oben in einem Dreieck, darunter nebeneinander der Ja- und der Nein-Block. PAP, Struktogramm, Pseudocode und Python beschreiben denselben Algorithmus: Du solltest zwischen ihnen übersetzen können.

Üben★☆☆Nicht begonnen
Die Abbildung zeigt einen Programmablaufplan und daneben das Programm, das dasselbe macht, aber mit verdeckter Bedingung. Schreibe die fehlende Bedingung in die if-Zeile…

Die Abbildung zeigt einen Programmablaufplan und daneben das Programm, das dasselbe macht, aber mit verdeckter Bedingung.

Start Alter abfragen Alter ≥ 12? ja du darfst teilnehmen nein es fehlt nicht mehr viel edad = int(input("Alter: ")) if ?: print("Du darfst") else: print("Noch nicht")

Schreibe die fehlende Bedingung in die if-Zeile (sie muss die Variable edad mit $12$ vergleichen), erkläre, was int(input("Alter: ")) macht, und warum die Zeilen innerhalb von if und else nach rechts eingerückt sind.

Lösen
Üben★☆☆Nicht begonnen
Erkläre, was eine Verzweigung ist, anhand eines Beispiels aus deinem Alltag (wenn es regnet, nehme ich den Regenschirm; sonst die Sonnenbrille), und schreibe sie in drei…

Erkläre, was eine Verzweigung ist, anhand eines Beispiels aus deinem Alltag (wenn es regnet, nehme ich den Regenschirm; sonst die Sonnenbrille), und schreibe sie in drei Zeilen Pseudocode: Bedingung, was passiert, wenn sie erfüllt ist, und was passiert, wenn nicht.

Lösen
Üben★★☆Nicht begonnen
Schreibe ein Programm, das nach einer Zahl fragt und sagt, ob sie positiv, negativ oder null ist. Gib an, welche Struktur du verwendest (eine Verzweigung mit zwei oder…

Schreibe ein Programm, das nach einer Zahl fragt und sagt, ob sie positiv, negativ oder null ist. Gib an, welche Struktur du verwendest (eine Verzweigung mit zwei oder drei Zweigen), welche Vergleiche du machst, und teste es gedanklich mit den Werten $7$, $-3$ und $0$.

Lösen
Üben★★☆Nicht begonnen
Ein Programm wandelt die Zahlennote in eine Bewertung um: weniger als $5$ ist „durchgefallen“, von $5$ bis $6{,}9$ ist „bestanden“ und ab $7$ ist „gut“. Schreibe es mit…

Ein Programm wandelt die Zahlennote in eine Bewertung um: weniger als $5$ ist „durchgefallen“, von $5$ bis $6{,}9$ ist „bestanden“ und ab $7$ ist „gut“. Schreibe es mit if, elif und else, erkläre, warum die Reihenfolge der Bedingungen wichtig ist und was passieren würde, wenn die erste Bedingung nota > 5 wäre.

Lösen
Üben★★★Nicht begonnen
Ein Laden wendet folgende Regelung an: Einkäufe unter $30\ \text{€}$ zahlen $4{,}50\ \text{€}$ Versand; Einkäufe zwischen $30\ \text{€}$ und $50\ \text{€}$ haben…

Ein Laden wendet folgende Regelung an: Einkäufe unter $30\ \text{€}$ zahlen $4{,}50\ \text{€}$ Versand; Einkäufe zwischen $30\ \text{€}$ und $50\ \text{€}$ haben kostenlosen Versand; Einkäufe über $50\ \text{€}$ haben kostenlosen Versand und $10\ \%$ Rabatt auf den Einkaufspreis.

Ein Schüler hat diesen Code programmiert:

precio = float(input("Einkaufssumme: "))

if precio > 50:

    total = precio * 0.90

if precio >= 30:

    total = precio

else:

    total = precio + 4.50

print("Zu zahlen:", total)
  1. a) Führe die Ablaufverfolgung mit einem Einkauf von $60{,}00\ \text{€}$ durch. Welchen Endpreis gibt das Programm aus? Begründe, warum dieser Logikfehler beim Aneinanderreihen der Verzweigungen entsteht.
  2. b) Schreibe das Programm korrekt neu, indem du eine verschachtelte Verzweigung oder elif verwendest, und baue eine Überprüfung ein, die warnt, wenn ein negativer Preis oder null eingegeben wird.
Lösen

Schleifen: `for` und `while`

Beispiele: Zehn Runden um den Schulhof laufen ist eine Zählschleife. Rudern, bis man das Ufer erreicht hat, ist eine bedingte Schleife.

Vergleich von for- und while-Schleife: links zehn Durchläufe mit print(3 * i), rechts n zählt von 5 bis 1 herunter, bis die Bedingung n größer 0 falsch wird. for: feste Anzahl for i in range(10): print(3 * i) 10 Durchläufe, 10 Zeilen Ausgabe while: solange … n = 5 while n > 0: print(n) n = n - 1 Ausgabe: 5 4 3 2 1

Schreibtischtest

Mit einer Tabelle verfolgst du die Werte der Variablen Zeile für Zeile.

Terminierung

Eine Handlungsvorschrift muss endlich beschrieben, eindeutig sein und terminieren, also nach endlich vielen Schritten aufhören. Bei while musst du immer prüfen: Verändert etwas im Schleifenkörper die Bedingung in Richtung „falsch“? Wenn nicht, entsteht eine Endlosschleife.

Üben★☆☆Nicht begonnen
Erkläre den Unterschied zwischen einer for-Schleife (eine bekannte Anzahl von Malen wiederholen) und einer while-Schleife (wiederholen, solange eine Bedingung erfüllt…

Erkläre den Unterschied zwischen einer for-Schleife (eine bekannte Anzahl von Malen wiederholen) und einer while-Schleife (wiederholen, solange eine Bedingung erfüllt ist), und gib für jede ein Alltagsbeispiel an: zehn Runden um den Schulhof laufen im Vergleich dazu, so lange weiterzurudern, bis man das Ufer erreicht.

Lösen
Üben★★☆Nicht begonnen
Schreibe eine for-Schleife, die das Einmaleins der $3$ (von $3 \cdot 1$ bis $3 \cdot 10$) ausgibt, gib an, wie oft der Schleifenkörper durchlaufen wird, und erkläre, was…

Schreibe eine for-Schleife, die das Einmaleins der $3$ (von $3 \cdot 1$ bis $3 \cdot 10$) ausgibt, gib an, wie oft der Schleifenkörper durchlaufen wird, und erkläre, was du ändern würdest, um das Einmaleins der $7$ auszugeben, ohne das ganze Programm neu zu schreiben.

Lösen
Üben★★☆Nicht begonnen
Lies dieses Programm und erkläre, was es macht: n = 5, while n > 0:, print(n), n = n - 1, und am Ende print("Fertig!"). Schreibe die vollständige Ausgabe auf dem…

Lies dieses Programm und erkläre, was es macht: n = 5, while n > 0:, print(n), n = n - 1, und am Ende print("Fertig!"). Schreibe die vollständige Ausgabe auf dem Bildschirm auf und überlege, was passieren würde, wenn wir die Zeile n = n - 1 vergessen.

Lösen
Üben★★☆Nicht begonnen
Ein Mitschüler schreibt ein Programm, das so lange nach Passwörtern fragt, bis das richtige eingegeben wird: clave = "", while clave != "sol":, und darin nur…

Ein Mitschüler schreibt ein Programm, das so lange nach Passwörtern fragt, bis das richtige eingegeben wird: clave = "", while clave != "sol":, und darin nur print("falsch"). Erkläre, warum das Programm nie endet, welche Zeile in der Schleife fehlt (das Passwort erneut abfragen) und die allgemeine Regel für while-Schleifen: Etwas muss die Bedingung ändern können.

Lösen
Üben★★★Nicht begonnen
Um die Qualifizierten eines Robotikwettbewerbs auszuwählen, werden fünf Punktzahlen eingelesen (von $0$ bis $10$). Ein Mitschüler hat diesen Code vorgeschlagen, um zu…

Um die Qualifizierten eines Robotikwettbewerbs auszuwählen, werden fünf Punktzahlen eingelesen (von $0$ bis $10$). Ein Mitschüler hat diesen Code vorgeschlagen, um zu zählen, wie viele gleich $5{,}0$ oder größer sind:

aprobados = 0

for i in range(5):

    nota = float(input("Note eingeben: "))

    if nota >= 5:

        aprobados = aprobados + 1

    else:

        aprobados = 0

print("Bestanden insgesamt:", aprobados)
  1. a) Sage voraus, was auf dem Bildschirm ausgegeben wird, wenn der Benutzer nacheinander die Noten $6{,}0$, $8{,}0$, $4{,}0$, $9{,}0$ und $7{,}0$ eingibt. Begründe, warum das Endergebnis nicht das erwartete ist, indem du den Logikfehler in der Verzweigungsstruktur findest.
  2. b) Korrigiere den Code und ändere ihn so, dass fehlerhafte Noten (kleiner als $0$ oder größer als $10$) nicht mitgezählt werden, und gib eine eigene Warnmeldung aus, ohne den Zähler zu erhöhen oder zurückzusetzen.
Lösen
Üben★★★Nicht begonnen
Beim Spiel „Eine geheime Zahl von $1$ bis $100$ erraten“ behauptet dein Mitschüler: „Mit einer Schleife mit fester Versuchszahl kann man unmöglich garantieren, dass der…

Beim Spiel „Eine geheime Zahl von $1$ bis $100$ erraten“ behauptet dein Mitschüler: „Mit einer Schleife mit fester Versuchszahl kann man unmöglich garantieren, dass der Benutzer die Zahl errät; wir müssen immer eine Endlos-while-Schleife verwenden, bis er richtig rät.“

  1. a) Widerlege seine Behauptung: Begründe mathematisch, warum $7$ Versuche ausreichen, um mit voller Sicherheit jede Zahl zwischen $1$ und $100$ zu erraten, wenn eine binäre Suche als Strategie verwendet wird (immer nach der Mitte fragen).
  2. b) Entwirf das Spiel in Python oder Pseudocode mit einer Grenze von $7$ Leben. Das Programm muss sowohl anhalten, wenn der Benutzer vor dem Aufbrauchen der Versuche richtig rät, als auch, wenn er keine Leben mehr hat, und dabei unterschiedliche Abschlussmeldungen ausgeben. Begründe die logische Abbruchbedingung, die du gewählt hast.
Lösen

Funktionen

Funktion als Maschine: flaeche_quadrat erhält 5 und gibt 25 zurück, erhält 2,5 und gibt 6,25 zurück. Aufruf Ergebnis def flaeche_quadrat(seite): return seite * seite flaeche_quadrat(5) flaeche_quadrat(2,5) 25 6,25
Üben★☆☆Nicht begonnen
Erkläre, was eine Funktion in einem Programm ist und welchen Vorteil es hat, def saludar(): einmal zu schreiben und sie dann oft aufrufen zu können, statt dieselben…

Erkläre, was eine Funktion in einem Programm ist und welchen Vorteil es hat, def saludar(): einmal zu schreiben und sie dann oft aufrufen zu können, statt dieselben Zeilen immer wieder zu kopieren.

Lösen
Üben★★☆Nicht begonnen
Analysiere diese Funktion: def area_cuadrado(lado): und darin return lado * lado. Erkläre, was der Parameter ist, was der Rückgabewert ist und was jeder Aufruf auf dem…

Analysiere diese Funktion: def area_cuadrado(lado): und darin return lado * lado. Erkläre, was der Parameter ist, was der Rückgabewert ist und was jeder Aufruf auf dem Bildschirm ausgeben würde: print(area_cuadrado(5)), print(area_cuadrado(2.5)).

Lösen
Üben★★★Nicht begonnen
Ein Team entwickelt die Software für eine Registrierkasse mithilfe von Funktionen: a) Beim Ausführen dieses Codes erzeugt Python den Fehler: TypeError: unsupported…

Ein Team entwickelt die Software für eine Registrierkasse mithilfe von Funktionen:

def calcular_iva(precio):

    total = precio * 1.21

    pass  # Der Programmierer hat vergessen, die letzte Zeile dieser Funktion hinzuzufügen

def aplicar_descuento(total, rebaja):

    resultado = total - rebaja

    return resultado

precio_base = 100.0

precio_con_iva = calcular_iva(precio_base)

precio_final = aplicar_descuento(precio_con_iva, 10.0)

print("Endpreis:", precio_final)
  1. a) Beim Ausführen dieses Codes erzeugt Python den Fehler: TypeError: unsupported operand type(s) for -: 'NoneType' and 'float'. Deute die Meldung und erkläre genau, wie der Wert None durch die Variablen des Programms wandert.
  2. b) Ein Mitschüler behauptet: „Zur Behebung genügt es, die Zeile der ersten Funktion in print(precio * 1.21) zu ändern.“ Widerlege seine Behauptung, indem du den funktionalen Unterschied zwischen der Ausgabe eines Werts auf dem Bildschirm und der Rückgabe eines Werts an den Hauptaufruf erklärst.
  3. c) Korrigiere den Code und füge eine Funktion es_valido(precio) hinzu, die einen booleschen Wert (True oder False) zurückgibt, um zu prüfen, dass der Grundbetrag nicht negativ ist, bevor er verarbeitet wird.
Lösen

Fehler finden und gezielt testen

Die Syntax einer Programmiersprache legt fest, wie ein Programm aufgeschrieben werden muss. Die Semantik legt fest, was es bedeutet und bewirkt. Ein Programm kann syntaktisch richtig und trotzdem inhaltlich falsch sein.

Zwei Codefenster: Bei einem Syntaxfehler (nicht geschlossenes Anführungszeichen) startet das Programm nicht; bei einem logischen Fehler (note1 + note2 / 2) läuft es, liefert aber 7 statt 5. Syntaxfehler input("Dein Name: ) → SyntaxError: Programm startet nicht Logischer Fehler mittel = note1 + note2 / 2 note1 = 4, note2 = 6 Ergebnis: 7 erwartet: 5 läuft, aber falsch

Gezielt testen

Teste ein Programm nicht nur mit einem Beispiel. Lege Testfälle mit erwartetem Ergebnis fest und vergleiche. Wähle auch Randfälle: bei „ab 5 bestanden“ also $4{,}9$, $5$ und $5{,}1$; bei Zahlen $-3$, $0$ und $7$. Bei Schleifen testest du auch den Fall, dass sie gar nicht oder genau einmal durchlaufen wird.

Üben★☆☆Nicht begonnen
Dieses Programm enthält drei typische Fehler: nombre = input("Dein Name: ), if nombre = "Fatima", print("Hallo"). Finde jeden Fehler (ein nicht geschlossenes…

Dieses Programm enthält drei typische Fehler: nombre = input("Dein Name: ), if nombre = "Fatima", print("Hallo"). Finde jeden Fehler (ein nicht geschlossenes Anführungszeichen, ein =, das == sein müsste, und erkläre den Unterschied), schreibe das korrigierte Programm neu und gib an, welche Fehlermeldung der Computer jeweils ausgeben würde.

Lösen
Üben★★★Nicht begonnen
Betrachte das folgende Programm, dessen Ziel es ist, den Benutzer nach seinem Alter zu fragen und zu bestimmen, ob er alt genug zum Wählen ist (ab $18$ vollendeten…

Betrachte das folgende Programm, dessen Ziel es ist, den Benutzer nach seinem Alter zu fragen und zu bestimmen, ob er alt genug zum Wählen ist (ab $18$ vollendeten Lebensjahren):

if edad >= "18":

print("Du darfst wählen")

edad = input("Sag mir dein Alter: ")

else:

    print("Du darfst nicht wählen")
  1. a) Wenn du versuchst, das Programm so auszuführen, in welcher Zeile bleibt der Python-Interpreter stehen, und warum kommt er nicht dazu, die input-Zeile auszuführen?
  2. b) Bestimme und klassifiziere alle vorhandenen Fehler und unterscheide dabei zwischen Syntaxfehlern (die das Übersetzen/Interpretieren verhindern) und Typ- oder Logikfehlern zur Laufzeit.
  3. c) Schreibe den korrigierten Code neu und baue eine Überprüfung ein, die verhindert, dass das Programm abstürzt, wenn der Benutzer sein Alter als Text eingibt (zum Beispiel „achtzehn“).
Lösen
Üben★★★Nicht begonnen
Um eine Kreuzung an einer Schule zu regeln, wird dieser Algorithmus in Pseudocode für eine Ampel mit Fußgängertaster vorgeschlagen: a) Erkenne einen schwerwiegenden…

Um eine Kreuzung an einer Schule zu regeln, wird dieser Algorithmus in Pseudocode für eine Ampel mit Fußgängertaster vorgeschlagen:

solange wahr:

    gruen_autos = AN, rot_fussgaenger = AN

    wenn taster_betaetigt == 1:

        warten(5)

        gruen_autos = AUS, gelb_autos = AN

        warten(3)

        gelb_autos = AUS, rot_autos = AN

        rot_fussgaenger = AUS, gruen_fussgaenger = AN

        warten(10)

        gruen_fussgaenger = AUS, rot_fussgaenger = AN
  1. a) Erkenne einen schwerwiegenden Mangel der Verkehrssicherheit beim Übergang zurück: Was geschieht, wenn das Grün der Fußgänger ausgeschaltet wird, unmittelbar mit dem fließenden Verkehr im nächsten Durchlauf der Schleife?
  2. b) Entwirf eine Verbesserung des Algorithmus (in Pseudocode oder strukturiertem Text), die diesen Mangel behebt und zudem den Zusammenbruch des Verkehrs verhindert: Wenn Fußgänger wiederholt den Taster drücken, muss die Ampel zwischen den Zyklen immer mindestens $20$ Sekunden ununterbrochenes Grün für die Autos garantieren.
Lösen
Üben★★★Nicht begonnen
Entwirf den Algorithmus für ein Aufladeterminal mit Bezahlfunktion für die Schulmensa unter Beachtung folgender technischer Anforderungen: Die Karte beginnt mit einem…

Entwirf den Algorithmus für ein Aufladeterminal mit Bezahlfunktion für die Schulmensa unter Beachtung folgender technischer Anforderungen:

  • Die Karte beginnt mit einem Anfangsguthaben von $20{,}00\ \text{€}$, und jedes Menü kostet $4{,}50\ \text{€}$.

  • In einer Schleife fragt das Programm, wie viele Menüs am Tag verzehrt werden sollen.

  • Wenn das verfügbare Guthaben nicht ausreicht, um die gewünschte Anzahl zu bezahlen, wird der Vorgang abgebrochen, der fehlende Betrag angezeigt und das Guthaben nicht verändert.

  • Wenn genug Guthaben vorhanden ist, wird der Betrag abgebucht und geprüft, ob das Restguthaben unter $5{,}00\ \text{€}$ liegt; in diesem Fall wird die Meldung „Guthaben niedrig: Bitte bald aufladen“ angezeigt.

  • Das Programm muss automatisch enden, wenn das Restguthaben kleiner als der Preis eines einzelnen Menüs ($4{,}50\ \text{€}$) ist.

  • Begründe, welche Art von Schleife du verwendet hast, und erkläre, wie du verhinderst, dass ein Benutzer eine negative Anzahl von Menüs eingibt, um sein Guthaben künstlich zu erhöhen.

Lösen
Üben★★★Nicht begonnen
Ein Bewertungssystem, das Punkte von $0$ bis $10$ vergibt (höher ist besser), berechnet die Endnote mit folgenden Gewichtungen: Klassenarbeit ($20\ \%$), Werkstattpraxis…

Ein Bewertungssystem, das Punkte von $0$ bis $10$ vergibt (höher ist besser), berechnet die Endnote mit folgenden Gewichtungen: Klassenarbeit ($20\ \%$), Werkstattpraxis ($30\ \%$) und theoretische Prüfung ($50\ \%$). Die Lehrkraft hat die Formel so programmiert:

arbeit = float(input("Note Arbeit: "))

werkstatt = float(input("Note Werkstatt: "))

pruefung = float(input("Note Prüfung: "))

endnote = arbeit * 0.20 + werkstatt * 0.30 + pruefung * 0.50 / 3

if endnote > 5:

    print("Bestanden")

else:

    print("Nicht bestanden")
  1. a) Sage voraus, welches Ergebnis das Programm anzeigt, wenn der Schüler in allen drei Bereichen $10{,}0$ Punkte erhält. Erkläre anhand der Operatorenrangfolge, warum in endnote ein falscher Zahlenwert gespeichert wird.
  2. b) Begründe, warum dieser Fehler ein Logikfehler und kein Syntaxfehler ist, und erläutere, warum Logikfehler in Programmen der Technik oder Steuerungstechnik ein viel größeres Risiko darstellen als Syntaxfehler.
  3. c) Finde einen zweiten Logikfehler in der Bedingung des if im Hinblick auf das Bewertungskriterium dieses Systems (bestanden ab $5{,}0$ Punkten) und schreibe die endgültige, korrigierte Version des Programms.
Lösen
Üben★★★Nicht begonnen
Projektaufgabe zum Thema. Als angehender Datenanalyst sollst du ein Python-Programm erstellen, das die Temperaturbelastung in deiner Umgebung analysiert, und effiziente…

Projektaufgabe zum Thema. Als angehender Datenanalyst sollst du ein Python-Programm erstellen, das die Temperaturbelastung in deiner Umgebung analysiert, und effiziente Verhaltensweisen vorschlagen.

  1. Datenerhebung: Rufe die offizielle Website des Deutschen Wetterdienstes auf und notiere die Höchsttemperatur in deiner Gemeinde an den letzten $5$ aufeinanderfolgenden Tagen.

  2. Textuelle Programmierung: Schreibe in einem kostenlosen Online-Editor wie Trinket.io ein Python-Skript, das diese $5$ Werte in einer Liste speichert. Programmiere mit einer for-Schleife und if-else-Verzweigungen die automatische Berechnung der Durchschnittstemperatur ($\bar{x}$) und die Bestimmung des heißesten Tages.

  3. Bericht und Vorschlag: Erstelle ein kurzes Dokument mit dem kommentierten Quellcode, einem Screenshot der Ausgabe in der Konsole und einem begründeten Vorschlag mit zwei Maßnahmen zur Raumklimatisierung für den Fall, dass der Durchschnitt über $21{,}5$ °C liegt.

Bewertet wird:

  • syntaktische Korrektheit des Codes (Umgang mit Listen, Schleifen und Verzweigungen).

  • Genauigkeit beim Übernehmen der realen Wetterdaten und Richtigkeit der Berechnung.

  • Verständlichkeit der Kommentare im Programm und technische Umsetzbarkeit des Energievorschlags.

Lösen

Vorhin hast du gelesen, dass der Computer nichts errät: Wenn ein Programm falsch rechnet, hast du es ihm falsch beschrieben. Mit Schreibtischtest und Testfällen findest du genau diese Stellen.

Auf einen Blick

Alle Aufgaben zu diesem Abschnitt anzeigen