Programmierung Grundlagen (13. und 14.1.2021)

Überblick

  • Dieses Dokument ist unser Leitfaden; Kommentare und ausgehende Links werden hier platziert.

  • Themenreihenfolge und Übungen werden aus dem Herdt-Skriptum “Programmierung Grundlagen mit Beispielen in Python” übernommen.

  • Das Herdt Skriptum ist etwas zu allgemein gehalten (geht auf Programmiersprachen im Allgemeinen ein, und ist dadurch verwirrend), weswegen in einigen Fällen Ausnahmen gemacht werden.

  • Die Kurssprache ist Python; viele der Python-spezifische Elemente werden von hier unterrichtet.

  • Live-Hackereien des Trainers erfolgen in einem gleichermaßen strukturierten Dokument, einem sogenannten Jupyter Notebook.

Live-Hacking (Jupyter Notebook)

Struktur

Herdt Kapitel 6: Grundlegende Sprachelemente

OpenTraining Topics

Herdt Kapitel

Kommentar

Blahblah

Hello World

Syntax etc.

6.1 Syntax und Semantik

Herdt zu allgemein/verwirrend

Syntax etc.

6.2 Grundlegende Elemente einer Sprache

Herdt zu allgemein/verwirrend

  • 6.3 Standarddatentypen (elementare Datentypen)

  • 6.4 Literale für primitive Datentypen

  • Meins: Python2/3 ignorieren (besser gleich endgültig rauslöschen)

6.5 Variablen und Konstanten

Konstanten gibts nicht in Python, nur immutable Typen. Siehe dazu das Kapitel nach “8.1 Warum werden Datenstrukturen benötigt?”

6.6 Operatoren

Bereits bei den Datentypen angeschnitten. Hier als Vertiefung nocheinmal.

6.7 Ausdrücke und Operatorrangfolgen

Bereits bei den Datentypen angeschnitten. Hier als Vertiefung nocheinmal.

Exercise: Swap Two Variables

6.8 Übungen

  • Übung 1: Arbeiten mit grundlegenden Sprachelementen

    • 1 lassen wir aus, da von Funktionen noch nicht die Rede war.

    • 4 lassen wir aus, da wir Syntaxdiagramme gespritzt haben.

  • Übung 2: wird gemacht (siehe hier)

Herdt Kapitel 7: Kontrollstrukturen

Verzweigung

Das gesamte Kapitel im Herdt Skriptum ist etwas sperrig gehalten. Meins ist nicht etwa besser, sondern nützt einfach den Effekt aus, dass menschliche Sprache leicht in Python abzubilden ist :-)

Also: aus meinem Skriptum The if Statement, und die Übungen von Herdt. Siehe dazu die folgende Tabelle.

OpenTraining Topics

Herdt Kapitel

Kommentar

7.1 Anweisungen und Folgen

  • Im Großen und Ganzen für die Fisch (zu allgemein und verwirrend)

  • Das VAT Beispiel am Ende ist recht instruktiv

7.2 Bedingungen und Kontrollstrukturen

  • Beispiele (sehr instruktiv)

  • Kontrollstrukturen Überblick

7.3 Grundlagen zu Verzweigungen

Bullshit

The if Statement

7.4 Bedingte Anweisung

Sperrige Formulierungen bei Herdt

The if Statement

7.5 Verzweigung

Sperrige Formulierungen bei Herdt

The if Statement

7.6 Geschachtelte Verzweigung

Sperrige Formulierungen bei Herdt

The if Statement

7.7 Mehrfache Verzweigung (Fallauswahl)

Sperrige Formulierungen bei Herdt

7.15 Übungen

  • Übung 1: Verzweigung

  • Übung 2: Geschachtelte Verzweigung

  • Übung 3: Benutzereingaben überprüfen

Schleifen

Da die Schleifenkonstrukte über verschiedenene Sprachen hinweg sehr unterschiedlich sind, lassen wir hier das Herdt-Skriptum weitgehend ausser Acht. Es ist zu allgemein gehalten, um bei unserem Vehikel Python hilfreich zu sein.

OpenTraining Topics

Herdt Kapitel

Kommentar

7.8 Schleifen

  • Einstieg über Herdt, dann weiter bei mir

  • Klarstellung (am Ende des Kapitels): fußgesteuerte Schleifen gibts in Python nicht

7.9 Zählergesteuerte Schleifen (Iteration)

Auslassen

while Loops

7.10 Kopfgesteuerte bedingte Schleife

Meins gewinnt

7.15 Übungen - Übung 4: Gerade Zahlen in der Konsole anzeigen - Exercise: Primeness (while)

7.11 Fußgesteuerte bedingte Schleife

Auslassen (gibts nicht in Python)

Sequential Datatypes

(jf) Sequential Datatypes

Als Voraussetzung für for

for Loops

for Loop ist bei Herdt nicht so gut. Livehacking, Iteration über

  • Liste

  • String

  • Dictionary (als Ausblick)

The range Function

Exercise: Primeness (for)

7.12 Schnellübersicht

Auslassen

7.13 Sprunganweisungen

Auslassen

7.14 Endlosschleifen

Auslassen

Herdt Kapitel 8: Elementare Datenstrukturen

OpenTraining Topics

Herdt Kapitel

Kommentar

8.1 Warum werden Datenstrukturen benötigt?

Naja mal reinschauen, eher mager

Compound Datatypes

Compound Datatypes: Überblick

References, (Im)mutability

Als Ersatz für das ausgelassene Kapitel “6.5 Variablen und Konstanten”

8.2 Arrays

Auslassen (Java)

8.3 Eindimensionale Arrays

Auslassen (Java)

8.4 Records

Auslassen: siehe 8.7 Dictionaries, gefolgt von class und namedtuple

8.5 Zeichenketten

Vielleicht eine kurze Livehacking Session f-Strings

More About Lists

8.6 Tupel und Listen

Meins

More About Dictionaries

8.7 Dictionaries

Meins

(jf) Records in Python

Jupyter notebook: Records von oben mit Dictionaries

  • Livehacking Demo von class

  • from collections import namedtuple

More About Sets

8.8 Mengen

Meins

8.9 Besondere Datenstrukturen anhand von Stapel (Stack) und Schlangen (Queue)

Wenns passt vom Tempo, schauma da rein. Vielleicht fallt eine gscheite Übung ab.

8.10 Übungen

Gemeinsam drüber schauen

  • Übung 1. Siehe Jupyter Notebook, Kapitel 8.10; dort wird auf eine Vielzahl von Lösungsmöglichkeiten eingegangen. Bitte spezielle die Variante mit ``enumerate()`` beachten, diese ist die Pythonischste.

Herdt Kapitel 9: Methoden, Prozeduren und Funktionen

Diese Abteilung wurde hauptsächlich im Jupyter Notebook bestritten.

OpenTraining Topics

Herdt Kapitel

Kommentar

Functions

Funktionen und Scope

Übungen

  • maximum() (nein, das steht im Skriptum :-) )

  • Primzahl

9.1 Unterprogramme

Auslassen

9.2 Parameterübergabe

Auslassen

9.3 Parameterübergabe als Wert

Auslassen

9.4 Parameterübergabe über Referenzen

Auslassen

9.5 Rückgabewerte von Funktionen oder Methoden

Auslassen

9.6 Innere Funktionen - Closures

Auslassen

9.7 Standardbibliotheken und Built-in-Funktionalitäten

Auslassen

9.8 Übungen

U.U. nimmt man die Übungen aus if/Verzweigung her (Beispiel: Übung 1 dort will, dass man das Maximum zweier Zahlen berechnet ⟶ Funktion maximum())