Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
modul:m323:learningunits:lu01:strukturiert [2025/11/17 08:33] – Externe Bearbeitung 127.0.0.1modul:m323:learningunits:lu01:strukturiert [2026/08/18 10:13] (aktuell) – Korrektur Algorithmus-Definition, strukturiert vs. imperativ, kaputter CC-Link, Typos; Tags auf neue Kompetenzmatrix admin
Zeile 1: Zeile 1:
 ====== LU01b - Strukturierte Programmierung ====== ====== LU01b - Strukturierte Programmierung ======
 +
 ===== Definition ===== ===== Definition =====
-Strukturierte oder auch imperative Programmierung ist ein Programmierparadigma, das Anweisungen nutzt, um den Computer zu steuern. Es besteht aus einer Abfolge von Befehlen, die nacheinander ausgeführt werden, um einen bestimmten Zustand zu erreichen oder ein Problem zu lösen. Diese Methode ist ähnlich zu der Art und Weise, wie traditionelle Kochrezepte oder Bauanleitungen strukturiert sind.+ 
 +**Imperative Programmierung** ist ein Programmierparadigma, das Anweisungen nutzt, um den Computer zu steuern. Es besteht aus einer Abfolge von Befehlen, die nacheinander ausgeführt werden, um einen bestimmten Zustand zu erreichen oder ein Problem zu lösen. Diese Methode ist ähnlich zu der Art und Weise, wie traditionelle Kochrezepte oder Bauanleitungen strukturiert sind. 
 + 
 +**Strukturierte Programmierung** ist eine //Teilmenge// der imperativen Programmierung. Sie fordert zusätzlich, dass der Programmablauf ausschliesslich aus drei Grundstrukturen aufgebaut wird – und auf freie Sprünge wie ''goto'' verzichtet: 
 + 
 +  - **Sequenz**: Anweisungen werden nacheinander ausgeführt. 
 +  - **Auswahl (Selektion)**: ''if'' / ''elif'' / ''else''. 
 +  - **Wiederholung (Iteration)**: ''while'' / ''for''. 
 + 
 +Das **Theorem von Böhm und Jacopini** (1966) besagt, dass sich jeder berechenbare Algorithmus allein mit diesen drei Strukturen ausdrücken lässt. Sprünge sind also nie zwingend nötig – und weil sie den Ablauf unübersichtlich machen („Spaghetticode"), verzichtet man auf sie. 
 + 
 +<WRAP center round tip 60%> 
 +**Merksatz** 
 + 
 +Jede strukturierte Programmierung ist imperativ – aber nicht jede imperative Programmierung ist strukturiert. 
 +</WRAP>
  
 ===== Grundprinzipien ===== ===== Grundprinzipien =====
 +
 Im Mittelpunkt der imperativen Programmierung steht die Veränderung des Zustands eines Systems durch die Anwendung von Anweisungen oder Befehlen. Diese Befehle werden in einer klaren und definierten Reihenfolge ausgeführt. Im Mittelpunkt der imperativen Programmierung steht die Veränderung des Zustands eines Systems durch die Anwendung von Anweisungen oder Befehlen. Diese Befehle werden in einer klaren und definierten Reihenfolge ausgeführt.
  
Zeile 24: Zeile 41:
 </code> </code>
  
-Hier wird eine klare Abfolge von Befehlen gegeben, die nacheinander ausgeführt werden, um das gewünschte Ergebnis zu erzielen.+Hier wird eine klare Abfolge von Befehlen gegeben, die nacheinander ausgeführt werden, um das gewünschte Ergebnis zu erzielen. Alle drei Grundstrukturen der strukturierten Programmierung sind erkennbar: Sequenz (die Zeilen nacheinander), Iteration (die ''for''-Schleife) – eine Selektion kommt in diesem Beispiel nicht vor.
  
 ===== Fokus auf Befehle und Anweisungen ===== ===== Fokus auf Befehle und Anweisungen =====
 +
 ==== Befehle und Anweisungen ==== ==== Befehle und Anweisungen ====
 +
 In der imperativen Programmierung sind Befehle und Anweisungen die fundamentalen Bausteine. Ein Befehl ist eine Aufforderung an den Computer, eine bestimmte Operation durchzuführen, während eine Anweisung eine spezifische Aufgabe definiert, die ausgeführt werden soll. In der imperativen Programmierung sind Befehle und Anweisungen die fundamentalen Bausteine. Ein Befehl ist eine Aufforderung an den Computer, eine bestimmte Operation durchzuführen, während eine Anweisung eine spezifische Aufgabe definiert, die ausgeführt werden soll.
  
 === Befehle === === Befehle ===
 +
 Befehle sind direkte Anforderungen an den Computer, um eine bestimmte Aktion auszuführen. Sie können einfache Operationen wie Addition oder Multiplikation sein oder komplexere wie das Lesen oder Schreiben einer Datei. Befehle sind direkte Anforderungen an den Computer, um eine bestimmte Aktion auszuführen. Sie können einfache Operationen wie Addition oder Multiplikation sein oder komplexere wie das Lesen oder Schreiben einer Datei.
  
 === Anweisungen === === Anweisungen ===
-Anweisungen sind präzise Instruktionen, die einen bestimmten Prozess oder eine Aufgabe beschreiben. Sie werden durch die Kombination von Befehlen und Kontrollstrukturen wie Schleifen oder Bedingungen gebildet. Anweisungen werden auch Algorithmen genannt.+ 
 +Anweisungen sind präzise Instruktionen, die einen bestimmten Prozess oder eine Aufgabe beschreiben. Sie werden durch die Kombination von Befehlen und Kontrollstrukturen wie Schleifen oder Bedingungen gebildet. 
 + 
 +=== Algorithmus === 
 + 
 +Eine //endliche// Folge von Anweisungen, die ein bestimmtes Problem in endlich vielen Schritten löst, nennt man einen **Algorithmus**. Ein Algorithmus zeichnet sich aus durch: 
 + 
 +  * **Eindeutigkeit**: Jeder Schritt ist klar definiert und lässt keinen Interpretationsspielraum. 
 +  * **Endlichkeit**: Die Beschreibung ist endlich lang, und die Ausführung endet nach endlich vielen Schritten. 
 +  * **Eingabe und Ausgabe**: Es gibt definierte Startwerte und ein definiertes Ergebnis. 
 +  * **Allgemeingültigkeit**: Der Algorithmus löst nicht nur einen Einzelfall, sondern eine ganze Klasse gleichartiger Probleme. 
 + 
 +<WRAP center round important 60%> 
 +**Wichtige Abgrenzung** 
 + 
 +Eine einzelne Anweisung ist noch kein Algorithmus. ''summe += zahl'' ist eine Anweisung – erst die vollständige, eindeutige Schrittfolge mit definiertem Start und Ende ergibt einen Algorithmus. Das Codebeispiel oben ist ein Algorithmus zur Summenbildung. 
 +</WRAP>
  
 ==== Unterschied zu anderen Paradigmen ==== ==== Unterschied zu anderen Paradigmen ====
-Im Gegensatz zur deklarativen Programmierung, die beschreibt, "was" getan werden soll, konzentriert sich die imperativ auf das "wie". Es gibt eine klare Abfolge von Schritten, die gefolgt werden müssen, im Gegensatz zur funktionalen oder logischen Programmierung, die möglicherweise mehr auf Beziehungen zwischen Entitäten fokussiert.+ 
 +Im Gegensatz zur deklarativen Programmierung, die beschreibt, „was" getan werden soll, konzentriert sich die imperative Programmierung auf das „wie". Es gibt eine klare Abfolge von Schritten, die befolgt werden müssen – im Gegensatz zur funktionalen oder logischen Programmierung, die möglicherweise mehr auf Beziehungen zwischen Entitäten fokussiert.
  
 <WRAP center round tip 60%> <WRAP center round tip 60%>
 **Schlussfolgerung** **Schlussfolgerung**
  
-Die imperativ Programmierung ist eine der am weitesten verbreiteten Methoden und liegt vielen der heutigen beliebtesten Programmiersprachen zugrunde. Der Schwerpunkt auf klaren Befehlen und Anweisungen macht sie sowohl leistungsstark als auch flexibel, erfordert aber auch eine sorgfältige Kontrolle und Verwaltung des Zustands des Programms. Dies kann sowohl ein Vorteil als auch eine Herausforderung sein, je nach spezifischem Anwendungsfall oder Problem, das gelöst werden muss.+Die imperative Programmierung ist eine der am weitesten verbreiteten Methoden und liegt vielen der heutigen beliebtesten Programmiersprachen zugrunde. Der Schwerpunkt auf klaren Befehlen und Anweisungen macht sie sowohl leistungsstark als auch flexibel, erfordert aber auch eine sorgfältige Kontrolle und Verwaltung des Zustands des Programms. Dies kann sowohl ein Vorteil als auch eine Herausforderung sein, je nach spezifischem Anwendungsfall oder Problem, das gelöst werden muss.
 </WRAP> </WRAP>
 +
 ---- ----
-{{tag>M323-LU01}} +{{tag>M323-LU01 M323-A1B M323-C1B}} 
-[[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi +[[https://creativecommons.org/licenses/by-nc-sa/4.0/ch/|{{https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png}}]] (c) Kevin Maurizi 
  • modul/m323/learningunits/lu01/strukturiert.1763364819.txt.gz
  • Zuletzt geändert: 2025/11/17 08:33
  • von 127.0.0.1