Programmiersprachen
Programming Languages
Quelle: bobblume.de
Source: bobblume.de
Einsatz: Software, Webseiten, Apps, Spiele, Robotik, Daten & KI
Quelle: yuhiro.de
Programmieren heißt nicht nur "Code schreiben", sondern Probleme logisch analysieren und Lösungen entwickeln.
Used for: software, websites, apps, games, robotics, data & AI
Source: yuhiro.de
Programming is not just "writing code" but analyzing problems logically and developing solutions.
HTML ist eine Auszeichnungssprache — sie strukturiert Inhalte (Überschriften, Absätze, Bilder, Links), aber steuert kein Verhalten.
Warum keine Programmiersprache?
if / else)for, while)
HTML = HyperText Markup Language
Quelle: redbubble.net
Merksatz: HTML ist das Gerüst, CSS die Farbe, JavaScript das Gehirn.
HTML is a markup language — it structures content (headings, paragraphs, images, links) but controls no behavior.
Why not a programming language?
if / else)for, while)
HTML = HyperText Markup Language
Source: redbubble.net
Mnemonic: HTML is the skeleton, CSS the color, JavaScript the brain.
Programmierparadigmen bieten unterschiedliche Ansätze zur Strukturierung von Programmen — sie beeinflussen, wie wir über Probleme nachdenken:
Quelle: ionos.de
Programming paradigms offer different approaches to structuring programs — they influence how we think about problems:
Source: ionos.de
Prinzip: Der Programmierer gibt explizit vor, wie das Programm arbeiten soll — Schritt für Schritt
Scratch-Beispiel: Figur bewegt sich — „Wiederhole 10-mal: Bewege 10 Schritte“
summe = 0
for i in range(1, 11):
summe = summe + i
print(summe) # 55
Imperativ: Schritt für Schritt addieren
Principle: The programmer explicitly specifies how the program should work — step by step
Scratch example: Character moves — “Repeat 10 times: move 10 steps”
total = 0
for i in range(1, 11):
total = total + i
print(total) # 55
Imperative: adding step by step
Prinzip: Der Programmierer beschreibt, was erreicht werden soll — nicht wie
Scratch-Beispiel: Zufällige Muster — Funktion generiert Linien ohne explizite Steuerung
# Funktional (Python)
summe = sum(range(1, 11))
print(summe) # 55
-- Deklarativ (SQL)
SELECT SUM(wert)
FROM zahlen
WHERE wert <= 10;
Deklarativ: Was — nicht wie
Principle: The programmer describes what should be achieved — not how
Scratch example: Random patterns — function generates lines without explicit control
# Functional (Python)
total = sum(range(1, 11))
print(total) # 55
-- Declarative (SQL)
SELECT SUM(value)
FROM numbers
WHERE value <= 10;
Declarative: what — not how
Ein Algorithmus ist eine eindeutige, endliche Schritt-für-Schritt-Anleitung zur Lösung eines Problems.
Eigenschaften
Alltagsbeispiel: Kochrezept
An algorithm is an unambiguous, finite step-by-step instruction for solving a problem.
Properties
Everyday example: Recipe
Variablen sind benannte Speicherplätze für Werte — vergleichbar mit beschrifteten Schubladen.
Integer
Ganzzahl
alter = 21
Float
Kommazahl
preis = 3.99
String
Text
name = "Anna"
Boolean
Wahrheitswert
aktiv = True
Der Datentyp bestimmt, welche Operationen möglich sind und wie viel Speicher benötigt wird.
Variables are named storage locations for values — comparable to labelled drawers.
Integer
Whole number
age = 21
Float
Decimal number
price = 3.99
String
Text
name = "Anna"
Boolean
Truth value
active = True
The data type determines which operations are possible and how much memory is needed.
Operatoren erlauben es, Berechnungen durchzuführen und Werte zu vergleichen:
Mathematisch
+ Addition- Subtraktion* Multiplikation/ Division% Modulo (Rest)
Vergleich
== gleich!= ungleich< kleiner als> größer als<= >=
Logisch
and — UNDor — ODERnot — NICHT
Ergebnis: True / False
Beispiel: alter >= 18 and not gesperrt → Zugang erlaubt = True oder False
Operators allow computations and comparisons of values:
Mathematical
+ Addition- Subtraction* Multiplication/ Division% Modulo (remainder)
Comparison
== equal!= not equal< less than> greater than<= >=
Logical
and — ANDor — ORnot — NOT
Result: True / False
Example: age >= 18 and not blocked → access granted = True or False
Sequenzierung — Zeile für Zeile von oben nach unten
print("Guten Morgen")
print("Zeit fürs Frühstück")
print("Auf zur Arbeit!")
Schleife — wiederholt Anweisungen
for i in range(1, 6):
print(i)
Bedingung — Entscheidungen treffen
zahl = 10
if zahl > 0:
print("Die Zahl ist positiv.")
Sequencing — line by line, top to bottom
print("Good morning")
print("Time for breakfast")
print("Off to work!")
Loop — repeats instructions
for i in range(1, 6):
print(i)
Condition — making decisions
number = 10
if number > 0:
print("The number is positive.")
Funktion — wiederverwendbarer Codeblock
def addiere(a, b):
return a + b
ergebnis = addiere(3, 4)
print(f"Ergebnis: {ergebnis}")
Variable — speichert Werte
name = "Alice"
print(f"Hallo, {name}!")
Eine Variable ist ein benannter Speicher für einen Wert, den das Programm später nutzt oder ändert.
Function — reusable block of code
def add(a, b):
return a + b
result = add(3, 4)
print(f"Result: {result}")
Variable — stores values
name = "Alice"
print(f"Hello, {name}!")
A variable is a named container for a value the program uses or changes later.
class Hund:
def __init__(self, name, alter):
self.name = name # Attribut
self.alter = alter # Attribut
def bellen(self):
print(f"{self.name} sagt: Wuff!")
hund1 = Hund("Jimmy", 3)
print(hund1.name)
hund1.bellen()
Eine Klasse ist ein Bauplan, ein Objekt ein konkretes Ding daraus.
Hund — Bauplan für alle Hundename, alter)__init__ — beim Erstellen aufgerufenbellen() — was ein Hund tun kannhund1 — ein konkreter Hund: Jimmyclass Dog:
def __init__(self, name, age):
self.name = name # attribute
self.age = age # attribute
def bark(self):
print(f"{self.name} says: Woof!")
dog1 = Dog("Jimmy", 3)
print(dog1.name)
dog1.bark()
A class is a blueprint, an object a concrete thing made from it.
Dog — blueprint for all dogsname, age)__init__ — called on creationbark() — what a dog can dodog1 — a concrete dog: Jimmy
Quelle: bildungsbibel.de
Source: bildungsbibel.de
Compilieren
Gesamter Quellcode → Maschinensprache vor der Ausführung
Vorteile: Schnelle Ausführung, kein Interpreter nötig
Nachteile: Kompilierung dauert, Fehler erst später sichtbar
Beispiele: C, C++, Rust
Interpretieren
Quellcode wird Zeile für Zeile zur Laufzeit übersetzt & ausgeführt
Vorteile: Schnelle Entwicklung, Fehler sofort sichtbar
Nachteile: Langsamere Ausführung, Interpreter erforderlich
Beispiele: Python, JavaScript, Scratch
Quelle: guru99.com
Compiling
Entire source code → machine language before execution
Advantages: Fast execution, no interpreter needed
Disadvantages: Compilation takes time, errors visible later
Examples: C, C++, Rust
Interpreting
Source code is translated & executed line by line at runtime
Advantages: Fast development, errors immediately visible
Disadvantages: Slower execution, interpreter required
Examples: Python, JavaScript, Scratch
Source: guru99.com
IDE (Integrierte Entwicklungsumgebung)
Editor + Compiler/Interpreter + Debugger in einem. Beispiele: Visual Studio Code, IntelliJ, PyCharm
Texteditoren
Einfache Werkzeuge zum Schreiben von Quellcode ohne zusätzliche Funktionen. Beispiele: Notepad++, Sublime Text
Versionskontrolle
Verfolgt Änderungen am Code, ermöglicht Zusammenarbeit im Team und Zurückkehren zu früheren Versionen. Beispiel: Git
Debugger
Ermöglicht schrittweise Ausführung des Codes, um Fehler zu finden und Variablenwerte zur Laufzeit zu überwachen
IDE (Integrated Development Environment)
Editor + compiler/interpreter + debugger in one. Examples: Visual Studio Code, IntelliJ, PyCharm
Text Editors
Simple tools for writing source code without extra features. Examples: Notepad++, Sublime Text
Version Control
Tracks code changes, enables team collaboration and reverting to earlier versions. Example: Git
Debugger
Allows step-by-step code execution to find errors and monitor variable values at runtime
Programmieren lernen heißt nicht, Code auswendig zu lernen, sondern Probleme so zu strukturieren, dass ein Computer sie lösen kann.
Problemzerlegung
Komplexe Probleme in kleine, lösbare Schritte zerlegen
Logik & Effizienz
Schleifen statt 10 Einzelbefehle — Wiederholungen automatisieren
Debugging
Lösungen regelmäßig testen und Fehler finden
Lesbarkeit & Wiederverwendung
Sprechende Namen, Kommentare, Funktionen für mehrfache Nutzung
Learning to program is not about memorizing code, but structuring problems so a computer can solve them.
Decomposition
Break complex problems into small, solvable steps
Logic & Efficiency
Loops instead of 10 single commands — automate repetition
Debugging
Test solutions regularly and find errors
Readability & Reuse
Meaningful names, comments, functions for multiple use
Überprüfung anhand der vier Kriterien (Schwill, 1993):
Horizontalkriterium
Programmierung durchdringt alle Bereiche: Medizin (Diagnosesoftware), Wirtschaft (ERP), Kunst (generative KI), Bildung, Transport, Kommunikation …
Vertikalkriterium
Von visuellen Blocksprachen (Scratch) in der Grundschule über Python in der Schule bis zu Systemsprachen (C, Rust) und formalen Methoden in der Forschung
Zeitkriterium
Algorithmisches Denken seit Euklid (300 v. Chr.) — erste Programmiersprachen 1950er — Konzepte wie Variablen, Schleifen, Funktionen zeitlos gültig
Sinnkriterium
Jedes Rezept, jede Wegbeschreibung ist ein Algorithmus — Programmierung macht das intuitive Denken in Schritten formal und ausführbar
Evaluation using the four criteria (Schwill, 1993):
Horizontal Criterion
Programming pervades all domains: medicine (diagnostics), business (ERP), art (generative AI), education, transport, communication …
Vertical Criterion
From visual block languages (Scratch) in primary school through Python in school to system languages (C, Rust) and formal methods in research
Temporal Criterion
Algorithmic thinking since Euclid (300 BC) — first programming languages in the 1950s — concepts like variables, loops, functions timeless
Significance Criterion
Every recipe, every set of directions is an algorithm — programming makes intuitive step-by-step thinking formal and executable
franke-lab.de/lehre/sose/fundidee/reflexion.html?sitzung=7
Artefakte & Reflexion verfassen → HTML kopieren → in Mahara einfügen
franke-lab.de/lehre/sose/fundidee/reflexion.html?sitzung=7
Write artifacts & reflection → copy HTML → paste into Mahara