Stefan Franke

Fundamentale Ideen der Informatik

Programmiersprachen

PH Weingarten

Übersicht

  • Was ist Programmierung?
  • Programmierparadigmen — imperativ & deklarativ
  • Grundkonzepte — Algorithmus, Variablen & Datentypen, Operatoren
  • Entwicklungsphasen eines Programms
  • Compilieren vs. Interpretieren
  • Programmierwerkzeuge
  • Reflexion & Aufgaben

Was ist Programmierung?

  • Programmierung ist das Formulieren von Anweisungen für einen Computer
  • Eine Programmiersprache ist eine formale Sprache zur Kommunikation mit dem Computer
  • Heute gibt es über 700 Programmiersprachen
  • Bekannte Beispiele:
    • Python, Java, C++, JavaScript
    • Scratch (visuell, für Einsteiger)
    • SQL (für Datenbanken)
Programmieren lernen

Quelle: bobblume.de

Programmiersprachen im Überblick

  • Python — Einstieg, Datenanalyse, KI
  • Java — große Softwaresysteme, Android-Apps
  • C — Betriebssysteme, Mikrocontroller
  • C++ — Spiele, Echtzeitsysteme
  • JavaScript — Webseiten und Web-Apps
  • Scratch — Lernen, Schulen, kreative Projekte

Einsatz: Software, Webseiten, Apps, Spiele, Robotik, Daten & KI

Übersicht Programmiersprachen

Quelle: yuhiro.de

Programmieren heißt nicht nur "Code schreiben", sondern Probleme logisch analysieren und Lösungen entwickeln.

HTML ist keine Programmiersprache!

HTML ist eine Auszeichnungssprache — sie strukturiert Inhalte (Überschriften, Absätze, Bilder, Links), aber steuert kein Verhalten.

Warum keine Programmiersprache?

  • ❌ Keine Bedingungen (if / else)
  • ❌ Keine Schleifen (for, while)
  • ❌ Keine Variablen
  • ❌ Keine Logik oder Entscheidungen
HTML is not a programming language

HTML = HyperText Markup Language

Quelle: redbubble.net

Merksatz: HTML ist das Gerüst, CSS die Farbe, JavaScript das Gehirn.

Programmierparadigmen

Programmierparadigmen bieten unterschiedliche Ansätze zur Strukturierung von Programmen — sie beeinflussen, wie wir über Probleme nachdenken:

Deklarative und Imperative Programmierparadigmen

Quelle: ionos.de

Imperatives Programmieren

Prinzip: Der Programmierer gibt explizit vor, wie das Programm arbeiten soll — Schritt für Schritt

  • Klarer Ablauf: Sequenz, Schleife, Verzweigung
  • Untervarianten: Prozedural (C), Objektorientiert (Java, Python)

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

Deklaratives Programmieren

Prinzip: Der Programmierer beschreibt, was erreicht werden soll — nicht wie

  • Kein explizites Steuern der Schrittfolge
  • Untervarianten: Funktional (Haskell), Logikbasiert (Prolog), Datenbankabfragen (SQL)

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

Grundkonzept: Algorithmus

Ein Algorithmus ist eine eindeutige, endliche Schritt-für-Schritt-Anleitung zur Lösung eines Problems.

Eigenschaften

  • Eindeutig — jeder Schritt klar definiert
  • Endlich — terminiert nach endlich vielen Schritten
  • Allgemein — löst eine Klasse von Problemen
  • Effektiv — jeder Schritt ist ausführbar

Alltagsbeispiel: Kochrezept

  1. Wasser in Topf füllen
  2. Auf Herd stellen & erhitzen
  3. Warten bis Wasser kocht
  4. Nudeln hineingeben
  5. 8 Minuten kochen
  6. Abgießen & servieren

Variablen & Datentypen

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.

Operatoren

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 — UND
or — ODER
not — NICHT

Ergebnis: True / False

Beispiel: alter >= 18 and not gesperrt → Zugang erlaubt = True oder False

Grundkonzepte in Python (1)

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.")

Grundkonzepte in Python (2)

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.

Objektorientierung: Klassen & Objekte

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.

  • Klasse Hund — Bauplan für alle Hunde
  • Attribute — Eigenschaften (name, alter)
  • Konstruktor __init__ — beim Erstellen aufgerufen
  • self — verweist auf das Objekt selbst
  • Methode bellen() — was ein Hund tun kann
  • Objekt hund1 — ein konkreter Hund: Jimmy

Entwicklungsphasen eines Programms

  • Anforderungsanalyse — Was soll das Programm können?
  • Entwurf — Wie wird es strukturiert? (Diagramme, Modelle)
  • Implementierung — Schreiben des Quellcodes
  • Test — Prüfung auf Korrektheit & Anforderungen
  • Betrieb & Wartung — Fehlerbehebung & Weiterentwicklung
Wasserfallmodell Softwareentwicklung

Quelle: bildungsbibel.de

Compilieren vs. Interpretieren

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

Compiler vs Interpreter

Quelle: guru99.com

Programmierwerkzeuge

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

Computational Thinking

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

Ist Programmierung eine fundamentale Idee?

Ü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

Fragen?



Sitzungsreflexion

franke-lab.de/lehre/sose/fundidee/reflexion.html?sitzung=7

Artefakte & Reflexion verfassen → HTML kopieren → in Mahara einfügen


To Do's:

  • e-Portfolio aktualisieren (Reflexion Sitzung 7)
  • Scratch-Projekt fertigstellen
  • Programmierparadigmen im Tandem vergleichen