programmierung
und datenbanken

Joern Ploennigs

Funktionen

Midjourney: Functional Lines, ref. C.E.B. Reas

Wiederholung: Hörsaalfrage¶

Wofür verwendet man if, elif, else?

No description has been provided for this image
DALL·E 2: Yin and Yang in a ceramic dish

Wiederholung: IF, IFEL, ELSE¶

if, elif, else sind Befehle zum Verzweigen von Programmen in Python

if Bedingung1:
    print("Wird ausgeführt wenn Bedingung1 wahr ist")
elif Bedingung2:
    print("Wird ausgeführt wenn Bedingung1 falsch ist und Bedingung2 wahr ist")
else:
    print("Wird ausgeführt wenn Bedingung1 falsch ist und Bedingung2 falsch ist")

Wiederholung: Hörsaalfrage¶

Welche Loop Typen gibt es?

No description has been provided for this image
Midjourney: Loop

Wiederholung: Schleifen¶

Schleifen sind ein wichtiger Ansatz in der Programmierung, um wiederholende oder inkrementelle Lösungen zu realisieren.

In Python sind verfügbar:

  • for (Entspricht For-Each-Loop)
  • while (Entspricht While-Loop)

Wichtige Eigenschaften:

  • Funktionieren genau wie alle anderen Steueranweisungen durch Einrückungen nach einer einzeiligen Definition
  • Anders als in Funktionen sind Variablen aus Schleifen auch außerhalb der Schleife verfügbar!
  • Die anderen Loop-Varianten sind zwar nicht explizit vorhanden, aber funktionell nachbildbar

Wiederholung: While-Loops¶

While-Loop

Im While-Loop kann die Bedingung schon am Anfang falsch sein. Die Schleife muss also nicht ausgeführt werden.

Bedingung = True/False
while Bedingung:
    # Statement
    Bedingung = False

Do-While-Loop

Im Do-While-Loop wird die Bedingung erst am Ende geprüft. Die Schleife wird also immer mindestens einmal durchlaufen.

Bedingung = True
while Bedingung:
    # Statement
    Bedingung = False

Repeat-Until-Loop

Beim Repeat-Until-Loop wird die Bedingung auch erst am Ende geprüft. Die Schleife wird wiederholt bis die Bedingung wahr wird.

Bedingung = False
while not Bedingung:
    # Statement
    Bedingung = True

Ablauf¶

Funktionen – Mathematisch¶

Funktionen setzen in Programmiersprachen das mathematische Konzept der Funktion um.
Sie stellen eine Abbildung von einer Eingabemenge auf eine Ausgabemenge dar.

Abbildung: Eine Funktion $f$ ordnet jedem Element $x$ einer Definitionsmenge $D$ ein Element $y$ einer Zielmenge $Z$ zu.

$$ f : D \to Z, \quad x \mapsto y $$

Funktionen – Programmierung¶

📘 Definition: Funktion

Wiederverwendbarer Programmcode, der eine bestimmte Aufgabe ausführt.

  • Nehmen ein Tupel an Eingabewerten (Argumente)
  • Führen eine festgelegte Folge von Ausdrücken und Zuweisungen aus
  • Geben ein Tupel an Ausgabewerten zurück (Rückgabewerte)
  • Werden nur ausgeführt, wenn sie in einem Ausdruck aufgerufen werden

Funktionen in Python¶

# Codeblock der Funktionsdefinition
def funktionsname(arg1, arg2): # <- funktionsname ist wählbar, arg1 und arg2 sind Argumente (Parameter)
    statement1 # <- Codeblock beginnt hier und ist eingerückt
    statement2 # <- noch Teil des eingerückten Codeblocks
  • Funktionsdefinitionen beginnen mit def
  • Es folgen Name, Argumente und ein :
  • Argumente gelten im gesamten Funktionskörper
  • Beim Aufruf werden die Argumente mit Eingabedaten belegt

Funktionen mit Ausgabe¶

def funktionsname(arg1):
    statement1
    return ausgabewert
  • return beendet die Ausführung und liefert Ausgabewerte zurück
  • „Zurückgeben“ heißt: Der Rückgabewert ersetzt den Funktionsaufruf im ursprünglichen Ausdruck
  • Ist kein return definiert, gibt die Funktion None zurück

Beispiel – Verdopplung eines Werts¶

Multiplikation

x = arg1 * 2   # 4
x = arg1 * 4   # 16
x = arg1 * 8   # 128

Bitshift (schneller)

def mal2(arg1):
    return arg1 << 1

x = arg1 << 1   # $2^1$
x = arg1 << 2   # $2^2$
x = arg1 << 3   # $2^3$

Beispiel – Euklidische Distanz¶

from math import sqrt

def distance(a1, a2, b1, b2):
    return sqrt((a1 - b1)**2 + (a2 - b2)**2)

a1, a2 = 2, 3
b1, b2 = 6, 6
x = distance(a1, a2, b1, b2)  # 5.0

Standardwerte bei Parametern¶

def funktionsname(arg1, arg2="default"):
    return statement1
  • Argumente können Standardwerte besitzen
  • Beim Aufruf optional; übergebene Werte überschreiben den Standard

Beispiel – Maßeinheit an Zahl anhängen¶

def measurement(number, unit="meters"):
    return str(number) + " " + unit

x = measurement(12)        # "12 meters"
x = measurement(5.5, "kg") # "5.5 kg"

Übergabe von Argumentwerten (Konzepte)¶

Pass-by-value

  • Nur Werte werden kopiert
  • Übergabe-Variablen sind in der Funktion nicht zugreifbar
  • „Sicherer“, da keine unerwartete Neubindung

Pass-by-reference

  • Referenz auf die gleichen Daten
  • Werte in der Funktion veränderbar
  • Spart Zeit und Speicher

Übergabe von Argumentwerten in Python¶

  • Mischvariante, oft „Pass-by-assignment“ genannt
  • Mutable Datentypen: verhalten sich wie pass-by-reference
  • Immutable Datentypen: verhalten sich wie pass-by-value
  • Wird eine mutable Variable neu gebunden, wirkt das nicht außerhalb

Built-in Funktionen¶

Python hat eine umfangreiche Liste eingebauter Funktionen.

Funktion Zweck
print(), input() Ausgabe, Eingabe
id(), type() Variablen ID, Datentyp
int(), str(), float() Datentyp-Konvertierung
list(), tuple(), set(), dict() Komplexe Datentypen
len() Länge eines komplexen Datentyps
abs(), max(), min() Mathematische Grundfunktionen
exit() Programm beenden
sorted() Sortieren
…

Wozu werden Funktionen genutzt?¶

  • Übersichtlichkeit, Modularität, Wiederverwendbarkeit
    „Write once, use anywhere“
  • Moderner Stil: Programme so weit wie möglich in grundlegende Funktionen aufteilen

fragen?

programmierung
und datenbanken