Blöcke in Python – Strukturierung durch Einrückung

Ein Block ist eine Gruppe von Anweisungen in einem Programm oder einem Skript. Üblicherweise besteht er aus wenigstens einer Anweisung und Deklarationen für den Block, abhängig von der Skript- oder Programmiersprache. Eine Sprache, die die Strukturierung mit Blöcken ermöglicht, wird als strukturierte Programmiersprache bezeichnet.


Im allgemeinen können Blöcke wieder Blöcke enthalten, d.h. wir erhalten verschachtelte Blockstrukturen.

In einem Skript oder einem Programm dienen Blöcke auch dazu mehrere Anweisungen so zu gruppieren, dass sie wie eine Anweisung behandelt werden können.
Außerdem werden Blöcke auch dazu genutzt, den Geltungsbereich von Variablen und Funktionen einzuschränken.

Mehr Infos zu „Strukturierung durch Einrückung“

Sprachen wie Pascal benutzen begin … end Statements zur Blockbildung

begin
    x := 5;
    y := 10;
    z := x + y;
end

andere Sprachen wie C, C++, Perl oder Java benutzen die { } Klammern zur Blockbildung

if(x==42) {
    printf("The Answer to the ulimate question of life\n");
} 
else {
    printf("Just a number!");
}

Die Einrückung wie im obigen Code ist durch die Art der Blockbildung aber nicht zwingend notwendig. Man könnte den Code auf folgendermaßen schreiben.

if(x==42) {printf("The Answer to the ulimate question of life\n");} else {printf("Just a number!");}

Das Strukturierungsprinzip von Python unterscheidet sich deutlich von anderen Programmiersprachen. Wie eingangs bereits beschrieben, strukturieren andere Programmiersprachen ihre Programmblöcke durch Schlüsselwörter, wie beispielsweise „begin„, „end„, „do„, „done“ oder geschweifte Klammern.
Leerzeichen, Folgen von Leerzeichen oder Einrückungen sind für die Compiler und Interpreter von den meisten Programmiersprachen ohne jede Semantik, d.h. sie werden überlesen. Dennoch wird Programmierern aber immer empfohlen, Blöcke durch gleichmäßge Einrückungen für menschliche Benutzer besser verständlich zu machen.
In Python ist dies nun gänzlich anders. Hier haben Leerzeichen eine Bedeutung.  Die Einrückung von Zeilen und die Benutzung von Leerzeichen am Anfang von Zeilen dienen hier als Strukturierungselement, so dass Programmierer „gezwungen“ werden übersichtlichen Code zu schreiben.

Anweisungskopf:
    Anweisung1
    ...
    Anweisung x

ERM | ERD Schüler-Datenbank

Erstellt für folgende Datenbank ein ERM mit draw.io. Nutzt zur Darstellung der Entitäten und Attribute folgende Darstellung (Abbildung 1):

Abbildung 1

Stellt für alle Entitäten die vollständigen Attribute und Beziehungen dar.

Primärschlüssel bitte unterstreichen und Fremdschlüssel durch einen Stern* kennzeichnen.

Beziehungen sind durch Rauten mit einem passenden Verb und der Kartinalität darzustellen.

Abbildung 2

Regeln

  1. In realen Datenbanken gibt es nur die Kartinalitäten 1 : 1 oder 1 : n.
    n : m Beziehungen müssen immer mit einer Zwischen-Entität/Tabelle aufgelöst werden.
  2. 1 : n Kardinalitäten folgen der Pfeilrichtung. D.h. das befindet sich immer auf der Seite der Pfeilspitze. (siehe Abbildung 2)
  3. Der Primärschlüssel einer Entität wandert in Richtung des Pfeils als Femdschüssel in die andere Entität.

Datenbankbeschreibung

Ein vereinfachtes Entity-Relationship-Modell (ER-Modell) für eine Schülerdatenbank könnte die grundlegenden Entitäten und deren Beziehungen darstellen. Hier ist eine Beschreibung der Hauptentitäten und ihrer Attribute:

  1. Schüler (Schueler)
    • Attribute:
      • Schueler_ID (Primärschlüssel)
      • Vorname
      • Nachname
      • Geburtsdatum
      • Geschlecht
      • Klasse
  2. Klasse (Klasse)
    • Attribute:
      • Klasse_ID (Primärschlüssel)
      • Klassenname
      • Jahrgangsstufe
  3. Lehrer (Lehrer)
    • Attribute:
      • Lehrer_ID (Primärschlüssel)
      • Vorname
      • Nachname
      • Fach
  4. Fach (Fach)
    • Attribute:
      • Fach_ID (Primärschlüssel)
      • Fachname
  5. Noten (Noten)
    • Attribute:
      • Noten_ID (Primärschlüssel)
      • Note
      • Prüfungsdatum
    • Beziehungen:
      • Schueler_ID (Fremdschlüssel, verweist auf Schueler)
      • Fach_ID (Fremdschlüssel, verweist auf Fach)
  6. Klassenlehrer (Klassenlehrer)
    • Attribute:
      • Klassenlehrer_ID (Primärschlüssel)
    • Beziehungen:
      • Klasse_ID (Fremdschlüssel, verweist auf Klasse)
      • Lehrer_ID (Fremdschlüssel, verweist auf Lehrer)

Beziehungen:

  • Ein Schüler ist in einer Klasse.
  • Ein Lehrer unterrichtet mehrere Fächer.
  • Ein Schüler kann in mehreren Fächern Noten erhalten.
  • Eine Klasse hat einen Klassenlehrer.

HTML-Projekt

Erstelle eine Website mit 4 Seiten (+Quellenseite). Die Seiten sollen durch ein gemeinsames Menü (Navigation) verbunden werden. Jeder Seite sollte min. 1 Überschrift (besser mehr), 300 Wörter Text in min. 3 Absätzen und 1 dazu passendes Bild enthalten.

Das Thema bleibt euch überlassen. Es kann über deinen letztes Urlaubsland sein, dein Hobby oder irgendetwas Anderes sein, für das ihr euch gerade interessiert.

Beachte bei den Bildern das Urheberrecht. D.h. Informiere dich welche Bilder du wie im Internet nutzen kannst.

Ihr könnt gerne eine KI zum erzeugen des Textes nutzen (Erstelle eine weitere Seite mit deinen Verwendeten Quellen). Auf das Projekt gibt es zwei Noten. Eine Note für Recherche und Inhalt und eine Note für HTML & CSS Nutzung.

Ihr habt maximal 3 Doppelstunden Zeit.

Tipps zum Ablauf:

  1. Erstelle zunächst die Grundgerüste für die Seiten. Deine Startseite muss index.html heißen (diese wird vom Webserver automatisch zuerst aufgerufen) Alle anderen Seiten können bliebig benannt werden (verwende websichere Dateinamen, kein Leerzeichen, keine deutschen Umlaute). Alle Dateien benötigen die Endung .html
  2. Verbind die Seiten mit Links die in einer unsortierten Liste angeordnet sein.
    (Auf der Seite zu Bildern findest du ein Video zu relativen und absoluten Pfaden)
  3. Fülle die Seiten mit Inhalt (Texten und Bilder)
  4. Erstelle eine zentrales CSS-Datei für das Projekt

Beispiel: meine kleine Seite zu KI

Wir bauen ein Jump & Run

Jump & Run #1

Teil 1: Spielerbewegung (30:37 min)

Hier findest du die Assets (Bilder etc.)

Zusatzfolgen

Nodes im Fokus: Sprite2D (8:46 min)
Nodes im Fokus: CharacterBody2D (15:11 min)

Jump & Run #2

Teil 2: Spieleranimation (11:48 min)

Zusatzfolge

Nodes im Fokus: Animationsplayer (15:05 min)

Jump & Run #3

Jump & Run #4

Wir bauen ein Jump & Run #5