Datenstrukturen: Array, verkettete Liste, Stack, Queue
Eine Datenstruktur ist eine Art, Daten so anzuordnen, dass ein Programm schnell und einfach damit arbeiten kann.
- Array: feste Größe, die Elemente liegen nebeneinander, jedes Element ist über seinen Index erreichbar (a[3]). Etwas in der Mitte einzufügen ist langsam.
- Verkettete Liste (dynamisch): Jeder Knoten speichert einen Wert und einen Link zum nächsten Knoten. Sie wächst und schrumpft nach Bedarf, aber um Element 5 zu erreichen, musst du erst durch die Elemente 1 bis 4 laufen.
- Stack: push und pop nur an einem Ende (LIFO). Wird für Rückgängig, den Zurück-Button und die Prüfung von Klammern genutzt.
- Queue: hinten hinzufügen, vorne entfernen (FIFO). Wird für Druckaufträge und Warteschlangen genutzt.
Bibliotheken enthalten diese Werkzeuge schon. In Python funktioniert eine list als Stack (append, pop) und collections.deque als schnelle Queue. Nutze eine Bibliothek, wenn es sie gibt, und baue sie nicht nach.
stack = []
stack.append(5); stack.append(8)
stack.pop() # gives 8
from collections import deque
q = deque([4, 9]); q.append(2)
q.popleft() # gives 4
Eine IDE nutzen: schreiben, ausführen, testen
Eine IDE (Integrated Development Environment, auf Deutsch Entwicklungsumgebung) vereint Editor, Start-Knopf, Debugger und weitere Werkzeuge an einem Ort. Sie färbt deinen Code ein, schlägt Namen vor und zeigt Fehler schon beim Tippen.
- Ausführen: Starte das Programm und lies die Ausgabe.
- Testen: Probiere einfache, normale und knifflige Eingaben aus (eine leere Liste, null, eine sehr große Zahl).
- Debuggen: Setze einen Haltepunkt (Breakpoint) und gehe Zeile für Zeile durch, um die Variablen zu beobachten.
2D- und 3D-Visualisierung und Animation
Bilder helfen uns, Muster zu erkennen. Programme können Diagramme (Balken, Linien, Streuung), 2D-Zeichnungen und 3D-Szenen zeichnen. Eine Animation ist dasselbe Bild, das immer wieder mit einer kleinen Änderung neu gezeichnet wird (etwa 30- bis 60-mal pro Sekunde). Ein einfacher Weg: Du hast eine Variable wie x, addierst bei jedem Bild ein kleines Stück dazu und zeichnest neu. Das 3D auf dieser Seite entsteht genauso, mit einer 3D-Bibliothek.
Erweiterte Tabellenfunktionen
Mit Funktionen kann eine Tabellenkalkulation Aufgaben wie ein Programm erledigen:
IF(B2>=50,"Pass","Fail")wählt zwischen zwei Ergebnissen (auf Deutsch heißt die Funktion WENN).SUMIF(B2:B5,">=50")addiert nur die Zellen, die zu einer Regel passen (deutsch SUMMEWENN);COUNTIFzählt sie (deutsch ZÄHLENWENN).VLOOKUP(2, A2:B5, 2, FALSE)sucht die 2 in der ersten Spalte und gibt den Wert aus Spalte 2 derselben Zeile zurück (deutsch SVERWEIS).XLOOKUP(deutsch XVERWEIS) macht dasselbe einfacher.- Pivot-Tabellen fassen große Datenmengen nach Gruppen zusammen, und Diagramme zeigen das Ergebnis.
Relationale Datenbanken und SQL
Eine relationale Datenbank speichert Daten in Tabellen aus Zeilen und Spalten. Jede Tabelle hat einen Primärschlüssel, eine Spalte mit eindeutigen Werten (die ID). Eine andere Tabelle nutzt diesen Wert als Fremdschlüssel, um darauf zu verweisen. Gutes Design speichert jede Tatsache nur einmal, also ohne doppelte Daten.
SQL ist die Sprache, mit der man Fragen stellt und Daten ändert:
SELECT name, score FROM students
JOIN marks ON students.id = marks.id
WHERE score >= 50 ORDER BY score DESC;
INSERT INTO marks (id, score) VALUES (5, 67);
UPDATE marks SET score = 55 WHERE id = 2;
DELETE FROM marks WHERE id = 5;Integrität heißt: Die Daten bleiben korrekt. Schlüssel sind eindeutig, ein Fremdschlüssel muss auf eine echte Zeile zeigen, und Werte müssen den richtigen Typ haben. Sicherheit heißt: Passwörter für Benutzer, jedem Benutzer nur die nötigen Rechte geben, Backups machen und niemals SQL bauen, indem man Text von Nutzern in die Abfrage klebt (stattdessen Parameter verwenden). Das verhindert SQL-Injection.
Zu offenen Ressourcen beitragen
Viele Werkzeuge und Bibliotheken sind Open Source: Jeder darf sie unter einer Lizenz lesen, nutzen und verbessern. Du kannst helfen, indem du einen Fehler behebst, eine Anleitung verbesserst, eine Seite übersetzt oder ein Beispiel ergänzt. Lies immer die Lizenz, nenne die Urheber und schreibe klare, höfliche Nachrichten, wenn du eine Änderung vorschlägst.
Probier es aus
Lege in 3D-Schritt 5 drei Elemente mit push auf einen Stack und entferne sie dann mit pop. Schreibe die Reihenfolge auf. Mach dasselbe mit einer Queue. Dann zuerst vorhersagen, danach prüfen: Wenn du 4, 9 und 2 hinzufügst und ein Element entfernst, welcher Wert bleibt dann vorne in der Queue und oben auf dem Stack?
Wichtige Formeln und Definitionen
- Stack = LIFO (last in, first out): push, pop.
- Queue = FIFO (first in, first out): enqueue, dequeue.
- Array: feste Größe, Zugriff über den Index. Verkettete Liste: dynamische Größe, Links folgen.
- SELECT columns FROM table WHERE condition
- Primärschlüssel = eindeutige ID. Fremdschlüssel = Verweis auf eine andere Tabelle.
Gelöste Beispiele
1. Die Elemente 5, 8 und 2 werden in dieser Reihenfolge auf einen Stack gelegt. Dann wird zweimal pop ausgeführt. Was liegt jetzt oben?
Stack nach den Pushes: 5, 8, 2 (2 oben). Pop entfernt zuerst 2, dann 8. Übrig bleibt 5. Oben liegt 5.
2. Die Elemente 4, 9, 2 stellen sich in dieser Reihenfolge in eine Queue. Es wird einmal dequeue ausgeführt. Welches Element steht jetzt vorne?
Das erste Element geht zuerst, also wird 4 entfernt. Vorne steht 9.
3. Tabelle Noten: IDs 1 bis 4 mit den Punktzahlen 72, 45, 88, 51. Wie viele Zeilen liefert WHERE score >= 50?
72, 88 und 51 sind 50 oder mehr. Das sind 3 Zeilen.
4. Die Zellen B2:B5 enthalten 72, 45, 88, 51. Was ergibt =SUMIF(B2:B5,">=50")?
Es addiert nur 72, 88 und 51: 72 + 88 + 51 = 211.
5. Warum nimmt man einen Stack, um Klammern wie ( [ ] ) in einem Ausdruck zu prüfen?
Lege jede öffnende Klammer auf den Stack. Kommt eine schließende Klammer, nimm eine vom Stack und prüfe, ob sie passt. Die zuletzt geöffnete Klammer muss zuerst geschlossen werden (LIFO), und genau das liefert ein Stack. Ist der Stack am Ende leer, passen die Klammern zusammen.
Häufige Fehler
- Ein Array nehmen, obwohl die Größe vorher nicht bekannt ist. Eine Liste oder verkettete Liste ist dann besser.
- Stack und Queue verwechseln. Der Stack entfernt das neueste Element, die Queue das älteste.
- Das WHERE bei UPDATE oder DELETE vergessen, wodurch jede Zeile geändert wird.
- SQL bauen, indem man Text von Nutzern in einen String klebt. Nimm stattdessen Parameter.