> ## Documentation Index
> Fetch the complete documentation index at: https://docs.baenninger.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Programmierparadigmen

Die Funktionale Programmierung ist Teil der deklarativen Programmierung. Nebst der deklarativen Programmierung gibt es noch die imperative Programmierung.

<Frame caption="Grundlagen">
  <img src="https://mintcdn.com/levexis-38849a2b/Wa_zkryx5Qc1QyS0/images/content/dotnet/image-1.png?fit=max&auto=format&n=Wa_zkryx5Qc1QyS0&q=85&s=510b8bf51cc0946cdd73d0a881cd29ff" alt="Abbildung" width="1879" height="560" data-path="images/content/dotnet/image-1.png" />
</Frame>

## Imperative Programmierung

In der imperativen Programmierung werden Programme als sequentielle Abfolge von Anweisungen verstanden, die den Zustand des Programms verändern.

<AccordionGroup>
  <Accordion title="Strukturierte Programmierung">
    Basiert auf klaren Kontrollstrukturen, welche den Programmfluss steuern. Ein Beispiel für dieses Paradigma ist C.
  </Accordion>

  <Accordion title="Prozedurale Programmierung">
    Programme werden als Aneinanderreihung von Prozeduren bzw. Funktionen betrachtet, die sequenziell ausgeführt werden. Ein Beispiel für dieses Paradigma ist ANSI C.
  </Accordion>

  <Accordion title="Modulare Programmierung">
    Software wird in unabhängige, wiederverwendbare Module oder Units aufgeteilt, welche jeweils spezifische Funktionen oder Aufgaben erfüllen. Ein Beispiel für die modulare Programmierung ist Pascal.
  </Accordion>

  <Accordion title="Objektorientierte Programmierung">
    Programme werden als Gruppen von miteinander interagierenden Objekten modelliert, die Daten und die darauf operierenden Methoden kombinieren. Ein Beispiel für die objektorientierte Programmierung ist C#.
  </Accordion>
</AccordionGroup>

## Deklarative Programmierung

In der deklarativen Programmierung liegt der Fokus auf der Beschreibung des zu erreichenden Ergebnisses, ohne Explizit den Ablauf anzugeben.

<AccordionGroup>
  <Accordion title="Funktionale Programmierung">
    Programme werden als reine Funktionen betrachtet, die Mathematische Relationen zwischen Eingaben und Ausgaben definieren, ohne Seiteneffekte. Sie betont die Vermeidung von Zustandsänderungen und veränderlichen Daten, was zu klareren, robusteren und leichter testbaren Programmen führt. Mehr zur funktionalen Programmierung findest du unter [Lambda-Kalkül](/dotnet/fsharp/grundlagen/lambda-kalkul) und [Prinzipien der funktionalen Programmierung](/dotnet/fsharp/grundlagen/prinzipien-der-funktionalen-programmierung).

    Beispiele für die funktionale Programmierung sind F#, Haskell und Clojure.
  </Accordion>

  <Accordion title="Logische Programmierung">
    In der logischen Programmierung basieren Programme auf logischen Aussagen und Regeln. Ein Beispiel für die logische Programmierung ist Prolog.
  </Accordion>
</AccordionGroup>
