📘 CodingMarble Learn

Fortgeschrittene Programmierung und Anwendungen

Fortgeschrittene Programmierung heißt: die passende Datenstruktur wählen (Array, verkettete Liste, Stack, Queue), Code in einer IDE schreiben und testen, Diagramme und Animationen zeichnen, Tabellenfunktionen nutzen und Daten sicher in einer relationalen Datenbank speichern, die man mit SQL abfragt.

🎬 Geschichte Schritt für Schritt

  1. Ein Array hat eine feste Anzahl an Plätzen, hier sechs. Die Größe wird vorher festgelegt. Ist es voll, passt nichts mehr hinein.
  2. Eine verkettete Liste wächst bei Bedarf. Jeder Knoten enthält einen Wert und einen Link zum nächsten Knoten. Der letzte zeigt auf nichts (null). Drücke auf Hinzufügen.
  3. Ein Stack funktioniert wie ein Tellerstapel. Du legst oben etwas drauf und nimmst oben etwas weg. Was zuletzt hineinkommt, geht zuerst wieder heraus.
  4. Eine Queue funktioniert wie eine Schlange an der Kasse. Du stellst dich hinten an und gehst vorne weg. Wer zuerst kommt, geht zuerst.
  5. Eine Datenbank speichert Daten in Tabellen. Zwei Tabellen werden über einen Schlüssel verbunden, die ID. Eine SQL-Abfrage wählt nur die gewünschten Zeilen aus, hier Noten mit 50 oder mehr Punkten.
  6. Jetzt bist du dran. Wähle Liste, Stack oder Queue und füge mit den Knöpfen Elemente hinzu oder entferne sie.

Tipp: Zieh die 3D-Szene, um sie zu drehen. Mit zwei Fingern zoomst du.

🤔 Häufige Zweifel, geklärt

Warum kann ich kein siebtes Element zum Array hinzufügen?

Die Größe eines Arrays wird beim Erstellen festgelegt. In Schritt 0 sind alle sechs Plätze das ganze Array. Für eine wachsende Sammlung nimm eine Liste.

Wo merkt sich die verkettete Liste die Reihenfolge?

In den Links. Jeder Knoten kennt nur den nächsten Knoten, also läufst du den Pfeilen entlang. Siehe Schritt 1.

Warum gibt pop das zuletzt hinzugefügte Element zurück?

Ein Stack hat ein offenes Ende, das obere. Das neueste Element liegt oben, also geht es als Erstes wieder weg. Siehe Schritt 2.

Wie unterscheidet sich eine Queue von einem Stack?

In einer Queue fügst du hinten hinzu und entfernst vorne, also geht das älteste Element zuerst. Drücke die Knöpfe in Schritt 3.

Warum zwei Tabellen und nicht eine?

Damit jede Tatsache nur einmal gespeichert wird. Die Namen stehen in einer Tabelle und die Noten in einer anderen, verbunden über die ID. Um einen Namen zu korrigieren, ändert man dann nur an einer Stelle. Siehe Schritt 4.

Welche Struktur soll ich nehmen?

Feste Größe und schneller Zugriff über den Index: Array. Wachsende Sammlung: Liste. Rückgängig und Zurück: Stack. Warteschlange: Queue. Probiere jede in Schritt 5 aus.

Datenstrukturen: Array, verkettete Liste, Stack, Queue

Eine Datenstruktur ist eine Art, Daten so anzuordnen, dass ein Programm schnell und einfach damit arbeiten kann.

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.

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:

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

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

Übungsquiz

1. Welche Struktur ist LIFO?
2. Welche Struktur wächst Knoten für Knoten mit Links?
3. Welche SQL-Klausel wählt Zeilen aus, die zu einer Regel passen?
4. Eine Spalte mit einem eindeutigen Wert in jeder Zeile ist ein:
5. Was macht ein Haltepunkt (Breakpoint) im Debugger?

Üben: Beantworte diese selbst

Tippe oder wähle deine Antwort und drücke dann Prüfen. Nutze einen Tipp, wenn du nicht weiterkommst; die ganze Lösung erscheint nach deiner Antwort.

Häufig gestellte Fragen

Was ist der Unterschied zwischen einem Array und einer verketteten Liste?

Ein Array hat eine feste Größe, und man kann über den Index direkt zu jedem Element springen. Eine verkettete Liste kann wachsen und schrumpfen, aber man muss den Links einzeln folgen, um ein Element zu erreichen.

Was sind Primärschlüssel und Fremdschlüssel?

Ein Primärschlüssel ist eine Spalte, die jeder Zeile einen eindeutigen Wert gibt, zum Beispiel eine Schülernummer. Ein Fremdschlüssel ist eine Spalte in einer anderen Tabelle, die diesen Wert enthält und so die beiden Tabellen verbindet.

Warum ist SQL-Injection gefährlich und wie verhindert man sie?

Wenn du Text von Nutzern direkt in einen SQL-Befehl einfügst, kann ein geschickter Nutzer eigene Befehle hinzufügen und Daten lesen oder löschen. Nutze parametrisierte Abfragen, damit der Text immer nur als Daten behandelt wird.

Vorher lernen

Als Nächstes lernen