Python & Algorithmen
Listen, Dictionaries, OOP, Sortierverfahren & Rekursion.
3.1 Listen & Dictionaries
Erstelle ein Dictionary mit 5 Wörtern und der Ăbersetzung Deutsch → Englisch und ein zweites Englisch → Italienisch. Erstelle eine Abfragemöglichkeit Deutsch → Italienisch.
3.2 Objektorientierung
Erstelle eine Klasse Fahrzeug mit Attributen: Marke, Baujahr. FĂŒge eine Methode info() hinzu, die die Daten ausgibt. Erstelle zwei Objekte und rufe die Methode auf.
3.3 Algorithmen
1. Bubblesort: Sortiere 10 Zahlen.
2. FakultÀt: Schreibe eine rekursive und eine iterative Funktion zur Berechnung der FakultÀt und vergleiche beide.
Dictionaries (DE → IT)
namen = ["Hans", "Sepp", "Greti"]
print(farben[0])
AutoHersteller = {"Golf": "VW", "Amarok": "VW", "Spring": "Dacia"}
print(AutoHersteller["Amarok"])
word = input("test")
DeutschEnglisch = {
"Auto": "car",
"Banane": "banana",
"Sonne": "sun"
}
EnglischItalienisch = {
"car": "macchina",
"banana": "banana",
"sun": "sole"
}
if word in DeutschEnglisch:
print(EnglischItalienisch[DeutschEnglisch[word]])
else:
print("Oida des Wort gibt ned!")
Klasse Fahrzeug
class Fahrzeug:
def __init__(self, marke, Farbe):
self.marke = marke
self.Farbe = Farbe
def printFarbe(self, wert):
print("Ich bin in Farbe ", self.Farbe)
class Car:
def __init__(self, x, y):
self.Marke = x
self.Baujahr = y
def info(self):
print(self.Marke, self.Baujahr)
car1 = Car("VW", 2000)
car2 = Car("Audi", 2010)
car1.info()
car2.info()
Bubblesort (Kein Snippet gegeben)
list = [9,43,19,430,34,5,92,10,8,123]
for f in range(len(list)):
tausch = False
for i in range(len(list)-1-f):
if list[i] > list[i+1]:
x = list[i]
list[i] = list[i+1]
list[i+1] = x
tausch=True
if not tausch:
break
print(list)
⥠Bubblesort Live-Visualisierung
Klicke "Sortieren", um den Bubblesort Schritt fĂŒr Schritt animiert zu sehen. "Neu mischen" generiert neue Zufallszahlen.
FakultÀt (Kein Snippet gegeben)
number = int(input("Gib eine Zahl ein: "))
def fakultaet(n):
if n == 0:
return 1
else:
return n * fakultaet(n-1)
print(fakultaet(number))
Datentypen (Python)
Listen ([]) sind verÀnderbar und geordnet. Dictionaries ({}) speichern Key-Value-Paare und greifen via Key (z.B. dict["key"]) auf Werte zu.
Prozedural vs. Objektorientiert
Prozedural: Funktionen und Anweisungen werden sequenziell abgearbeitet.
OOP: Daten (Attribute) und Logik (Methoden) werden in Klassen gekapselt, was die Wiederverwendbarkeit erhöht.
Rekursion vs Iteration
Rekursive Algorithmen rufen sich selbst auf. Sie sind oft eleganter, haben aber die Gefahr eines Stack Overflows (Fehlerquelle), wenn die Abbruchbedingung fehlt. Iteration (Schleifen) benötigt meist weniger Speicher.
JavaScript
DOM-Manipulation und Events (Klick, Onload, Timeouts).
4.1 Button-Interaktion
Erstelle eine HTML-Seite, auf der ein Button beim Anklicken seine Farbe Àndert.
4.2 Zeitgesteuerte Aktionen
Nach dem Laden der Seite soll sich nach 3 Sekunden die Hintergrundfarbe der gesamten Seite Àndern.
Button Farbe Àndern (Live Demo)
<a id="link1" href="#" onclick="meineFunktion(this)">Klick mich</a>
<script>
let l1 = document.getElementById("link1");
function meineFunktion(element) {
element.style.height = 15;
}
</script>
<button id="btn">Klick</button>
<script>
document.getElementById("btn").addEventListener("click", function() {
this.style.backgroundColor = "red";
});
</script>
Zeitgesteuert (3s Timeout)
<body onload="setTimeout(function(){
alert('10 Sekunden vorbei!');
}, 10000)">
window.onload = function() {
setTimeout(function() {
document.body.style.backgroundColor = "blue";
}, 3000); // 3000ms = 3s
};
DOM (Document Object Model)
Das DOM ist eine Programmierschnittstelle fĂŒr HTML. JS kann damit HTML-Elemente finden (getElementById), verĂ€ndern (.style.color) oder löschen.
Client vs. Server (JS vs. PHP)
JavaScript: LĂ€uft im Browser des Users (Client). Ist schnell, gut fĂŒr UI-Effekte, aber der Code ist fĂŒr jeden sichtbar (keine Passwörter!).
PHP: LĂ€uft am Server. Generiert das HTML, das an den Client geschickt wird. Ist sicher fĂŒr DB-Anbindungen.
PHP & Datenbanken
Formulare, SQLite, PDO/Prepared Statements und Login-Systeme.
5.1 Einfaches Formular
Formular, das einen Namen abfragt. Das PHP-Skript gibt âHalloâ + Namen aus.
5.2 SQLite-Datenbank
Erstelle eine SQLite-DB mit Name, Wohnort. Seite 1: Formular eintragen. Seite 2: Ausgabe aller Daten, Filter nach Wohnort.
5.3 Login-System
Tabelle mit Benutzername und gehashtem Passwort. Bei korrekten Daten Weiterleitung, bei falschen Fehlermeldung.
Formulare & Login
<form action="check.php" method="post">
<input type="text" name="t1">
<button type="submit">Login</button>
</form>
if ($_POST["t1"] == "geheim") echo "richtig";
header("Location: geheim.php");
<?php
// $hash kommt aus der DB, eingegebenes PW aus Formular
if (password_verify($_POST['passwort'], $hash)) {
session_start();
$_SESSION['login'] = true;
header("Location: dashboard.php");
exit();
} else {
echo "Falsches Passwort!";
}
?>
SQLite Eintragen & Filtern
Achtung: Snippet ist fĂŒr MySQL, Lösung nutzt SQLite (wie verlangt).
$conn = new mysqli("loc", "root", "p", "db");
$stmt = $conn->prepare("SELECT * FROM database WHERE ort = ?");
$stmt->bind_param("s", $ort);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row["name"];
}
<?php
$db = new SQLite3('daten.sqlite');
// 1. EinfĂŒgen (Seite 1)
$stmt = $db->prepare('INSERT INTO personen (name, wohnort) VALUES (:n, :o)');
$stmt->bindValue(':n', $_POST['name']);
$stmt->bindValue(':o', $_POST['wohnort']);
$stmt->execute();
// 2. Auslesen & Filtern (Seite 2)
$filter = $_GET['ort'];
$stmt = $db->prepare('SELECT * FROM personen WHERE wohnort = :o');
$stmt->bindValue(':o', $filter);
$res = $stmt->execute();
while ($row = $res->fetchArray()) {
echo $row['name'];
}
?>
GET vs. POST
GET: Daten werden an die URL angehĂ€ngt (sichtbar). Nur fĂŒr harmlose Abfragen/Filter nutzen (z.B. Suche).
POST: Daten werden versteckt im HTTP-Body ĂŒbertragen. Zwingend fĂŒr Passwörter und Datenbank-Inserts.
Datenbank Normalisierung
1. NF: Atomare Werte (z.B. Vor- und Nachname trennen).
2. NF: Jedes Nicht-SchlĂŒsselfeld ist voll vom Primary Key abhĂ€ngig.
3. NF: Keine transitiven AbhÀngigkeiten (Keine Spalte darf aus einer anderen berechenbar sein).
SQL Injection (Gefahr!)
Wenn User-Eingaben direkt ins SQL geschrieben werden, können Hacker die DB löschen. Lösung: Immer Prepared Statements (prepare / bind_param) nutzen, wie im Matura Snippet vorgegeben!
Raspberry Pi & Server
Hardwareprogrammierung mit GPIO (Python) und Webserver Setup.
6.1 Lauflicht & GPIO
Schreibe ein Python-Programm, das ein Lauflicht ĂŒber 5 AusgĂ€nge erzeugt. Zwei EingĂ€nge sollen jeweils einen eigenen Ausgang schalten (z. B. Taster → LED).
7. Webserver
Installiere einen Webserver (Apache oder Nginx). Lege im Webroot eine PHP-Testdatei an, die âHello Worldâ ausgibt.
Lauflicht 5 LEDs
from EmulatorGUI import GPIO
GPIO.setmode(GPIO.BCM)
# GPIO.BCM = logische GPIO-Nummern
# GPIO.BOARD = physikalische Pin-Nummern
GPIO.setup(17, GPIO.OUT)
GPIO.setup(17, GPIO.IN)
GPIO.output(17,1)
value = GPIO.input(18)
import time
from EmulatorGUI import GPIO
GPIO.setmode(GPIO.BCM)
leds = [17, 18, 27, 22, 23]
for led in leds: GPIO.setup(led, GPIO.OUT)
while True:
for led in leds:
GPIO.output(led, 1)
time.sleep(0.2)
GPIO.output(led, 0)
Taster schaltet LED:
GPIO.setup(5, GPIO.IN) # Taster
GPIO.setup(17, GPIO.OUT) # LED
while True:
if GPIO.input(5) == 1:
GPIO.output(17, 1)
else:
GPIO.output(17, 0)
Apache Webserver (Linux Shell)
# Installieren
sudo apt update
sudo apt install apache2 php
# In Webroot wechseln und Datei erstellen
cd /var/www/html
sudo nano test.php
# test.php: <?php echo "Hello World"; ?>
Netzwerk: OSI-Modell Schichten 1-4
1. BitĂŒbertragung (Kabel, Hubs)
2. Sicherung (MAC-Adresse, Switch)
3. Vermittlung (IP-Adresse, Router)
4. Transport (TCP/UDP, Ports)
HTTP vs HTTPS
HTTP (Port 80): UnverschlĂŒsselt. Jeder im Netzwerk kann mitlesen.
HTTPS (Port 443): VerschlĂŒsselt mittels SSL/TLS. Wichtig bei Login-Daten.
Linux: apt
apt (Advanced Packaging Tool) ist die Softwareverwaltung in Debian/Ubuntu (RaspiOS).apt update (Paketliste aktualisieren), apt install X (Paket installieren).
Netzwerktechnik & Server
OSI-Modell, DNS, DHCP, E-Mail-Protokolle und Netzwerkbefehle.
Das OSI-Referenzmodell teilt die Netzwerkkommunikation in 7 Schichten auf. FĂŒr die Matura sind die Schichten 1 bis 4 (Transportschicht bis BitĂŒbertragungsschicht) am wichtigsten. Klicke auf eine Schicht, um Details zu sehen:
Schicht 4: Transportschicht (Transport Layer)
Aufgabe: Stellt die Ende-zu-Ende-Verbindung zwischen den Anwendungen her. Zerlegt Daten in Pakete und setzt sie wieder zusammen.
Wichtigste Protokolle:
- TCP (Transmission Control Protocol): Verbindungsorientiert, zuverlĂ€ssig (Datenverlust wird korrigiert), stellt Reihenfolge sicher. Genutzt fĂŒr Web (HTTP) und E-Mail.
- UDP (User Datagram Protocol): Verbindungslos, unzuverlĂ€ssig aber extrem schnell. Genutzt fĂŒr Streaming, DNS und Gaming.
SchlĂŒsselbegriff: Ports (z. B. Port 80 fĂŒr HTTP, 443 fĂŒr HTTPS, 53 fĂŒr DNS).
DNS (Domain Name System) & Server-AblÀufe
Das DNS ĂŒbersetzt Domainnamen (z.B. google.com) in IP-Adressen (z.B. 142.250.74.46). Starte die interaktive Simulation, um zu sehen, wie der normale Ablauf und eine DNS-Manipulation (Spoofing) aussehen:
Netzwerk-Befehlszeile (Shell Simulator)
Diese Werkzeuge sind essenziell fĂŒr die Netzwerkanalyse auf Windows und Linux. Klicke auf einen Befehl, um ihn in der simulierten Konsole auszufĂŒhren:
Ready for diagnostics...
Netzwerk-Hardware & WAN
Hub vs. Switch vs. Router
Hub (Schicht 1): Ein passiver Verteiler. Daten werden an ALLE Ports gesendet (Broadcast). Verursacht hohe Netzwerklast und ist unsicher.
Switch (Schicht 2): Ein intelligenter Verteiler. Leitet Daten gezielt nur an den Port des ZielgerÀts weiter (anhand der MAC-Adresse).
Router (Schicht 3): Verbindet verschiedene Netzwerke (Heimnetzwerk mit Internet) und leitet Pakete anhand der IP-Adresse weiter.
DHCP (Dynamic Host Configuration Protocol)
Zweck: Automatische Zuweisung von Netzwerkkonfigurationen an GerÀte (IP, DNS, Gateway).
Ablauf (D.O.R.A.):
- Discover: Client sucht im Netz nach DHCP-Servern.
- Offer: Server bietet freie IP-Adresse an.
- Request: Client fordert diese IP an.
- Acknowledge: Server bestÀtigt und sendet Config.
E-Mail Protokolle (DNS-gestĂŒtzt)
SMTP (Simple Mail Transfer Protocol): Sendet E-Mails zum Server (Port 25 / 587).
POP3 (Post Office Protocol v3): LĂ€dt E-Mails vom Server herunter und löscht sie standardmĂ€Ăig dort (Port 110).
IMAP (Internet Message Access Protocol): Synchronisiert E-Mails, diese verbleiben auf dem Server (Port 143).
WAN (Wide Area Network) & IP
WAN Technologien: DSL (Kupferleitung), Glasfaser (FTTH - hohe Bandbreite, geringe Latenz), Mobilfunk (4G/5G).
IP-Adressen (v4 vs. v6): IPv4 nutzt 32-Bit (4 Milliarden Adressen), IPv6 nutzt 128-Bit (Hexadezimal, schier unendlich).
Public vs. Private IP: Private IPs (z.B. 192.168.x.x) gelten nur im lokalen LAN. Public IPs werden im weltweiten Internet geroutet.
Datenbanken
Normalformen, ER-Modell, SQL und Datenbanken in der Gesellschaft.
Normalformen verhindern Redundanz und Anomalien in Datenbanken. Klicke durch die Schritte, um die Normalisierung live zu sehen:
â Unnormalisierte Tabelle
Mehrere Werte in einer Zelle, Wiederholungsgruppen. Das fĂŒhrt zu Redundanz und macht Updates fehleranfĂ€llig.
ER-Modell Grundbegriffe
Ein reales Objekt (z.B. SchĂŒler, Auto). Wird zur Tabelle in der DB.
Eigenschaft einer EntitÀt (z.B. Name, Alter). Wird zur Spalte in der Tabelle.
VerknĂŒpfung zwischen EntitĂ€ten (z.B. SchĂŒler besucht Kurs). Ăber FremdschlĂŒssel realisiert.
Primary Key: Eindeutiger Identifikator jeder Zeile. Darf nie NULL sein.
SQL Befehle Ăbersicht
Die wichtigsten SQL-Befehle fĂŒr die Matura auf einen Blick:
SELECT (Lesen)
SELECT name, wohnort
FROM personen
WHERE wohnort = 'Wien'
ORDER BY name ASC;Liest Daten aus. WHERE filtert, ORDER BY sortiert.
INSERT (EinfĂŒgen)
INSERT INTO personen
(name, wohnort)
VALUES
('Max', 'Wien');FĂŒgt einen neuen Datensatz in die Tabelle ein.
UPDATE (Ăndern)
UPDATE personen
SET wohnort = 'Graz'
WHERE name = 'Max';Ăndert bestehende Daten. Immer WHERE angeben, sonst werden ALLE Zeilen geĂ€ndert!
DELETE (Löschen)
DELETE FROM personen
WHERE name = 'Max';Löscht DatensĂ€tze. Vorsicht ohne WHERE â löscht alles!
CREATE TABLE
CREATE TABLE personen (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
wohnort TEXT
);Erstellt eine neue Tabelle mit definierten Spalten und Datentypen.
JOIN (VerknĂŒpfen)
SELECT s.name, k.titel
FROM schueler s
JOIN kurse k
ON s.kurs_id = k.id;Verbindet zwei Tabellen ĂŒber einen gemeinsamen SchlĂŒssel (FremdschlĂŒssel).
Referentielle IntegritÀt & Löschweitergabe
Referentielle IntegritĂ€t stellt sicher, dass FremdschlĂŒssel immer auf existierende DatensĂ€tze zeigen. Löschweitergabe (CASCADE): Wird ein Datensatz in der Elterntabelle gelöscht, werden automatisch alle verknĂŒpften DatensĂ€tze in der Kindtabelle mitgelöscht.
SQLite vs. MySQL vs. Access
SQLite: Serverlose Datei-DB, perfekt fĂŒr kleine Apps und Raspberry Pi. Kein separater Server nötig.
MySQL: Server-basiert, fĂŒr groĂe Webanwendungen (z.B. WordPress).
Access: Microsoft-Produkt mit GUI, fĂŒr kleinere BĂŒroanwendungen.
Datenbanken in der Gesellschaft
Vorteile: Schneller Zugriff, zentrale Datenhaltung, Konsistenz, MehrbenutzerfÀhigkeit.
Nachteile/Risiken: Datenschutz (DSGVO!), Missbrauch durch Ăberwachung, Datensammlung durch Big-Tech, Single Point of Failure bei zentralen Systemen.
Prepared Statements (Sicherheit!)
Benutzereingaben dĂŒrfen nie direkt in SQL-Strings eingebaut werden â SQL Injection! Lösung: prepare() und bindValue() trennen Befehl und Daten. Das steht auch so in den Matura-Snippets!
Zahlensysteme
Dezimal, BinĂ€r, Oktal, Hexadezimal â Umrechnung und Bedeutung.
Interaktiver Zahlensystem-Konverter
Gib eine Zahl in ein beliebiges Feld ein â die anderen Systeme werden sofort berechnet:
Unser Alltags-System (0-9)
Nur 0 und 1 â die Sprache der Hardware
Ziffern 0-7 â genutzt fĂŒr Linux-Rechte (chmod)
0-9 + A-F â genutzt fĂŒr Farben, MAC-Adressen
8-Bit Visualisierer
Klicke auf die Bits, um sie zu toggeln. Die Dezimalzahl wird live berechnet (1 Byte = 8 Bit = Werte 0-255):
Warum 8 Bit?
Ein Byte besteht aus 8 Bit und kann 2âž = 256 verschiedene Werte darstellen (0â255). Das reicht fĂŒr ein einzelnes ASCII-Zeichen, einen Farbkanal (R, G oder B), oder eine kleine Ganzzahl. IPv4-Adressen bestehen aus 4 Bytes (32 Bit).
Warum BinÀr? (Verbindung Hardware)
Computer arbeiten mit Transistoren, die nur zwei ZustÀnde kennen: AN (1) oder AUS (0). Darum ist das Dualsystem (Basis 2) die Grundlage aller digitalen Technik. Alles (Text, Bilder, Programme) wird intern als Folge von Nullen und Einsen dargestellt.
Hexadezimal & Oktal als AbkĂŒrzungen
Hex (Basis 16) und Oktal (Basis 8) sind beides Vielfache von 2. Jede Hex-Ziffer entspricht exakt 4 Bit, jede Oktal-Ziffer entspricht exakt 3 Bit. Das macht sie zu kompakten Schreibweisen fĂŒr lange BinĂ€rzahlen.
Hex-Anwendungen: Farbcodes (#FF00FF), MAC-Adressen (00:1A:2B:3C:4D:5E), Speicheradressen.
Oktal-Anwendung: Linux-Dateiberechtigungen (chmod 755 = rwxr-xr-x).
Umrechnungstricks fĂŒr die Matura
Dezimal â BinĂ€r: Zahl fortlaufend durch 2 teilen, Reste von unten nach oben ablesen.
BinĂ€r â Hex: BinĂ€rzahl in 4er-Gruppen (von rechts) aufteilen, jede Gruppe in eine Hex-Ziffer umwandeln. z.B. 1111 1111 â F F â FF.
BinĂ€r â Oktal: Gleich, aber in 3er-Gruppen. z.B. 011 111 111 â 3 7 7 â 377.
IPv4 und Subnetzmasken
Eine IPv4-Adresse wie 192.168.0.1 besteht aus 4 Dezimalzahlen (je 1 Byte). In BinÀr: 11000000.10101000.00000000.00000001. Die Subnetzmaske (z.B. 255.255.255.0) bestimmt, welcher Teil Netzwerk-ID und welcher Teil Host-ID ist.