📚 LernsiteFach wĂ€hlenKOLEFINAQUBAETFÜDIMAINFEINKMAEL ↗

🍳 Kochrezepte — Schritt fĂŒr Schritt durch jeden Aufgabentyp

INF — Informatik (Python & Datenbanken) · Prof. Dr. Mehler · ~10 Aufgaben · Python + relationale Datenmodelle

Kochrezepte — Schritt fĂŒr Schritt durch jeden Aufgabentyp

Status: GEPRÜFT. Je Aufgabentyp: Woran erkenne ich die Aufgabe → Schritte → fertige Vorlage → typische Punktekiller. Die vollstĂ€ndig durchgerechneten Beispiele stehen in „Übungsaufgaben — alle gelöst“.

Rezept 1: Dezimalzahl in BinÀrzahl

Erkennen: „Wandeln Sie 
 in eine Single-Gleitkommazahl um“, „nur die ersten beiden Schritte“.

  • Schritt 1 (Vorkomma, Divisionsmethode): fortlaufend durch 2 teilen, Reste notieren, von unten nach oben ablesen. Probe machen.
  • Schritt 2 (Nachkomma, Multiplikationsmethode): mit 2 malnehmen; steht vorne eine 1 → notieren und 1 abziehen; von oben nach unten ablesen, bis die geforderte Stellenzahl erreicht ist.

Punktekiller: Reste in falscher Richtung ablesen · die 1 nicht abziehen · „geht nicht auf“ schreiben statt zu notieren, dass sich das Muster wiederholt. Merkhilfe: Vorkomma = Division = Drehen (unten→oben), Nachkomma = Multiplikation = Mitschreiben (oben→unten).

Rezept 2: Ausdruck auswerten (Ergebnis + Datentyp)

Erkennen: Tabelle mit Spalten „Ergebnis“ und „Datentyp“. PrioritĂ€tentabelle liegt bei.

  1. Klammern zuerst → ** (von rechts!) → Vorzeichen → * / // % → + − → Vergleiche/is/in → not → and → or.
  2. Typ: Vergleich/logisch → bool; irgendwo / oder Kommazahl → float; sonst int; Text → str.

Punktekiller: Datentyp-Spalte vergessen (zĂ€hlt separat!) · bei / „2“ statt „2.0“ · is mit == verwechseln. Zwischenschritte hinschreiben, nicht im Kopf rechnen.

Rezept 3: „Welche Ausgabe?“

Erkennen: fertiger Code mit # Ausgabe: ____.

  1. Code Zeile fĂŒr Zeile durchgehen, Inhalt jeder Variablen danebenschreiben.
  2. Bei append/update/pop/remove/sort/insert: Änderung gilt ab da fĂŒr alle folgenden Zeilen.
  3. Ausgabe exakt notieren: Klammern, Hochkommas, Leerzeichen, dictkeys(...).

Punktekiller: dictkeys(...)-Wrapper weglassen · Slicing-Obergrenze mitzÀhlen · vergessen, dass sort()/append() None liefern.

Rezept 4: Schleife bauen (3 Varianten)

Erkennen: „while-Schleife, anschließend for mit range, schließlich List Comprehension“.

  • Schritt 0: Reihe aus der Beispielausgabe analysieren: erste Zahl? letzte Zahl? Schrittweite oder Bedingung (% 3 == 0)?
  • while: Startwert · Bedingung · hochzĂ€hlen (sonst endlos).
  • for: range(start, stop+1, step).
  • LC: [n for n in range(
) if 
].

Punktekiller: range hört eins vorher auf, fĂŒr 39 muss der Stop-Wert also 40 sein. „Erste 7 Zweierpotenzen“ = range(0, 7), nicht range(0, 8).

Rezept 5: Typ-sichere Funktion

Erkennen: „typ-sichere Funktion“, „Übergabeparameter“, „zurĂŒckliefern“.

  1. def name( → 2. Parameter mit Typ n: int → 3. RĂŒckgabetyp ) -> int: → 4. Hilfsvariablen vor der Schleife (Startwert!) → 5. Schleife + ZĂ€hler → 6. return, danach ohne EinrĂŒckung Aufruf + print.

Startwert: Summe → 0 · Produkt → 1 · Maximum → liste[0] · ZĂ€hler → 0.

Punktekiller: Funktion nicht aufgerufen · return vergessen · Typ-Hinweise weggelassen.

Rezept 6: Liste / Dictionary anlegen und auswerten

Erkennen: „speichern Sie in einer Liste / Dictionary“, „berechnen Sie den Durchschnitt“.

  • Liste sammeln: leere Liste vor der Schleife anlegen, in der Schleife append.
  • Dictionary ausgeben: for key in d: print(key + " " + str(d[key])).
  • Durchschnitt: sum(d.values()) / len(d.values()).
  • hinzufĂŒgen: d.update({key: value}).
  • grĂ¶ĂŸter Wert mit Namen: zwei Hilfsvariablen (Wert + SchlĂŒssel).

Punktekiller: Liste erst in der Schleife anlegen (wird jedes Mal zurĂŒckgesetzt) · print(key + d[key]) ohne str() · Maximum mit maxi = 0 starten (falsch bei negativen Zahlen).

Rezept 7: Klasse schreiben

Erkennen: „Erstellen Sie eine Klasse 
 Methode zur Initialisierung 
 erzeugen Sie ein Objekt“.

  1. class Name: (groß) → 2. def __init__(self, 
): → 3. self.attribut = param → 4. weitere Methoden mit self → 5. Objekt erzeugen, Methode mit obj.methode().

Punktekiller: self im Kopf vergessen oder beim Aufruf mitgegeben · self.x = x vergessen · Objekt nie erzeugt · Klassenname klein.

Rezept 8: Relationales Datenmodell

Erkennen: „KardinalitĂ€ten“, „n:m auflösen“, „FremdschlĂŒssel“.

  1. Substantive → Tabellen. 2. Je Tabelle PS <Name>ID + Attribute. 3. Jeden Beziehungssatz beidseitig fragen. 4. 1:n → FS in die n-Seite. 5. n:m → Zuordnungstabelle mit beiden FS (zusammengesetzter PS). 6. 1:1 → FS auf einer Seite.

Punktekiller: KardinalitÀt nur einseitig · n:m nicht aufgelöst · FS auf der falschen Seite · PS nicht unterstrichen.

Rezept 9: Fehler finden und korrigieren

Erkennen: nummerierte Codezeilen mit Spalte „Korrektur“.

Zeile fĂŒr Zeile prĂŒfen: Variable vorher definiert? · Anzahl Argumente? · Doppelpunkt bei Typangabe a: int und am Zeilenende? · Text + Zahl (str() nötig)? · Datentyp passt? · benannte Argumente richtig? · richtige Schleifenart (for vs while)? · Klammern der Datenstruktur? · = vs ==?

💡 Was gehört in die Spalte „Korrektur“?

Die Benennung des Fehlers reicht (so die offizielle Musterlösung), z. B. „kein c“ oder „Doppelpunkt fehlt“. Die richtige Zeile dazuschreiben gibt nie Abzug. Zeilen ohne Fehler bleiben leer.

Rezept 10: Werkzeugkasten

  • Eingabe: int(input("
")) bzw. float(input("
")); input() liefert immer einen String.
  • Ausgabe: print(a, b) (Leerzeichen dazwischen) · print("Text " + str(x)) · print(f"
{x}
").
  • Runden: round(5.155, 2) → 5.16. int(2.75) → 2 (schneidet ab!).
  • math: import math → math.sqrt, math.pow, math.pi, math.log2.
  • Zufall: from random import randint → randint(1, 6).