SPS-Programmierung #07: Schleifen (FOR, REPEAT, WHILE) — Transcript

Dieses Video erklärt die drei Schleifentypen FOR, REPEAT und WHILE anhand praktischer SPS-Programmierungsbeispiele in Deutsch.

Key Takeaways

  • Schleifen ermöglichen die wiederholte Ausführung von Programmteilen und sind essenziell für Algorithmen in SPS.
  • Vorschleifen eignen sich gut für feste Wiederholungsanzahlen, z.B. beim Vertauschen von Array-Elementen.
  • Repeat Until Schleifen sind ideal für Abläufe, die bis zu einer Bedingung wiederholt werden müssen, z.B. Bubble Sort.
  • While Schleifen können für Algorithmen mit unbestimmter Wiederholungsanzahl verwendet werden, z.B. Euklidischer Algorithmus.
  • Die korrekte Übergabe und Handhabung von Arrays mit variabler Länge ist wichtig für flexible Funktionen.

Summary

  • Vorstellung der drei Schleifentypen: Vorschleife (FOR), Repeat Until Schleife und While Schleife.
  • Erstes Beispiel: Vertauschen von Array-Elementen mit der Vorschleife.
  • Erklärung der Übergabe von Arrays an Funktionen mit variabler Länge.
  • Zweites Beispiel: Implementierung des Bubble Sort Algorithmus mit einer Repeat Until Schleife.
  • Detaillierte Erläuterung des Programmablaufplans für Bubble Sort.
  • Drittes Beispiel: Berechnung des größten gemeinsamen Teilers mit dem Euklidischen Algorithmus und der While Schleife.
  • Praktische Demonstrationen und Tests der Funktionen im SPS-Programm.
  • Hinweise zur Syntax und Besonderheiten der Schleifen in SPS-Programmierung.
  • Erklärung von Variablen und Zwischenspeicherung bei Elementtausch.
  • Betonung der Bedeutung von Schleifen für wiederholte Programmausführung.

Full Transcript — Download SRT & Markdown

00:00
Speaker A
Schleifen könnt ihr dazu verwenden, Programmteile wiederholt ausführen zu lassen und dafür gibt's drei verschiedene Schleifentypen, nämlich die Vorschleife, die Repeat Until Schleife und die While Schleife.
00:16
Speaker A
Und hier zeige ich euch am Beispiel von drei sinnvollen Algorithmen, wie man diese Schleifen verwendet. Im ersten Beispiel geht's um die Vorschleife, die ich einsetzen werde, um die Elemente in einem Array zu vertauschen.
00:34
Speaker A
Im zweiten Beispiel zeige ich euch die Repeat Until Schleife und zwar am Beispiel eines sehr einfachen Sortieralgorithmus, das ist also ein Algorithmus, mit dem man die Elemente in einem Array aufsteigend sortieren kann.
00:47
Speaker A
Und das dritte Beispiel ist dann der Euklidische Algorithmus, bei dem ich die While Schleife einsetzen werde. Der Euklidische Algorithmus ist also ein Algorithmus, mit dem man den größten gemeinsamen Teiler zweier natürlicher Zahlen berechnen kann.
00:48
Speaker A
Okay, starten wir mit der Vorschleife und dem Vertauschen der Elemente in einem Array, z.B. von diesem hier.
00:53
Speaker A
Das Vertauschen der Reihenfolge implementiere ich jetzt in dieser Funktion hier.
00:57
Speaker A
Der Eingabeparameter ist das Array, bei dem die Elemente vertauscht werden.
01:02
Speaker A
Im Video zu Arrays habe ich euch schon erklärt, dass ich das Array in diesem Var In Out Block übergeben muss,
01:10
Speaker A
damit die Vertauschung in dem übergebenen Array und nicht in einer Kopie davon gemacht wird.
01:15
Speaker A
So und dann brauche ich noch Hilfsvariablen, nämlich einmal einen Schleifenzähler für die Vorschleife.
01:20
Speaker A
Und dann noch diese Hilfsvariablen, die ich zum Zwischenspeichern der zu tauschenden Elemente benutze.
01:27
Speaker A
So, zum Vertauschen der Elemente nehme ich jetzt das erste Element
01:32
Speaker A
und speichere das in N Buff zwischen.
01:36
Speaker A
Dann überschreibe ich das erste Element mit dem letzten Element.
01:40
Speaker A
Und am Ende überschreibe ich das letzte Element mit dem Wert aus N Buff.
01:44
Speaker A
Dann habe ich das erste und das letzte Element vertauscht.
01:47
Speaker A
Das Ganze kann ich jetzt noch mal mit dem zweiten und dem vorletzten Element machen.
01:50
Speaker A
Und hier seht ihr schon, dass sich der gleiche Code wiederholt, nur mit anderen Indizes.
01:54
Speaker A
Da wir die Länge unseres Arrays kennen, wissen wir auch, wie häufig wir diesen Code wiederholen müssen, um alle Elemente des Arrays zu vertauschen,
02:01
Speaker A
nämlich in diesem Beispiel hier dreimal.
02:03
Speaker A
Für solche Wiederholungen mit fester Wiederholungsanzahl gibt's eben die Vorschleife.
02:07
Speaker A
In dieser Vorschleife werden jetzt also diese drei Codezeilen wiederholt ausgeführt.
02:11
Speaker A
Die Wiederholungsanzahl wird hier im Schleifenkopf festgelegt.
02:14
Speaker A
Die Schleife startet mit I = 0 und dann wird der Code ausgeführt.
02:17
Speaker A
Anschließend wird I um den Wert erhöht, der hier hinter dem By steht, also um 1.
02:23
Speaker A
Und dann wird geprüft, ob I noch kleiner oder gleich dem Wert hinter dem To ist.
02:27
Speaker A
Wenn das der Fall ist, wird die Schleife wieder ausgeführt.
02:30
Speaker A
Nach dem dritten Durchlauf wird I auf 3 gesetzt und dann ist die Bedingung für das Ausführen der Schleife also nicht mehr erfüllt.
02:38
Speaker A
Und die Schleife wird abgebrochen und die Elemente im Array sind komplett vertauscht.
02:41
Speaker A
So, diese Funktion teste ich jetzt.
02:44
Speaker A
Und dafür rufe ich die Funktion aus dem Main Programm auf.
02:48
Speaker A
So, jetzt starte ich das Programm.
02:50
Speaker A
Und dann seht ihr hier, dass das Array umgedreht wird, wenn B Flip auf True gesetzt wird.
03:00
Speaker A
In der Vorschleife hier ist die Angabe von By übrigens nur dann nötig,
03:06
Speaker A
wenn die Veränderung des Schleifenzählers I um einen anderen Wert als 1 verändert wird.
03:10
Speaker A
Das heißt, wenn ich By 1 weglasse, wird implizit angenommen, dass nach jedem Schleifendurchlauf I um den Wert 1 erhöht wird.
03:18
Speaker A
So, die Funktion macht ja schon das Richtige.
03:21
Speaker A
Allerdings nur für Arrays der Länge 6.
03:24
Speaker A
Wenn ich im Main Programm jetzt ein längeres oder auch kürzeres Array hätte, würde die Funktion nicht funktionieren.
03:32
Speaker A
Im Video zu den Arrays habe ich euch auch schon gezeigt, wie man Arrays variabler Länge an Funktionen übergeben kann,
03:37
Speaker A
nämlich, indem ich die Grenzen hier oben durch ein Sternchen ersetze.
03:43
Speaker A
So, dann muss ich noch die Indizes im Anweisungsteil anpassen.
03:46
Speaker A
Und dazu erstelle ich mir zunächst noch mal zwei Variablen, in denen ich die untere und die obere Grenze des Arrays speicher.
03:54
Speaker A
Und dann setze ich diese Grenzen hier in der Schleife und in den Zugriffen auf das Array ein.
04:00
Speaker A
So, jetzt sollte die Funktion Flip für eindimensionale Arrays mit beliebiger Größe und beliebig festgelegtem Bereich für den Index funktionieren.
04:07
Speaker A
Dass das auch so ist, teste ich jetzt einmal mit diesem Array hier.
04:13
Speaker A
Und hier im Online Modus seht ihr jetzt wieder, dass die Funktion korrekt funktioniert.
04:21
Speaker A
Im zweiten Beispiel, dass ich euch hier zeige, werde ich den Bubble Sort Algorithmus implementieren.
04:25
Speaker A
Das ist ein sehr einfacher Sortieralgorithmus, der allerdings nicht besonders effizient ist und daher in der Praxis auch kaum eingesetzt wird.
04:34
Speaker A
Aber an diesem Beispiel kann ich euch die Verwendung einer Repeat Until Schleife ganz gut erklären.
04:40
Speaker A
So, zuerst möchte ich euch den Algorithmus anhand dieses Programmablaufplans kurz erläutern.
04:45
Speaker A
Nach dem Start wird also zunächst eine Integer Variable N Fixed auf 1 gesetzt.
04:50
Speaker A
Für das Sortieren des Arrays wird dieses nämlich mehrmals durchlaufen und diese Variable N Fixed hier,
04:57
Speaker A
gibt im Prinzip an, wie viele Werte nach jedem Durchlauf schon an der richtigen Position stehen.
05:03
Speaker A
So und dann wird eine Bool Variable B Swapped auf False gesetzt.
05:07
Speaker A
Und in dieser Variablen wird gespeichert, ob beim Durchlaufen des Arrays eine Vertauschung überhaupt vorgenommen werden musste oder nicht.
05:14
Speaker A
So, dieser ganze Teil hier beschreibt eine Vorschleife mit der Zählervariablen I,
05:19
Speaker A
die hier zunächst auf den untersten Index des Arrays gesetzt wird.
05:25
Speaker A
Und dann wird geprüft, ob die Zählervariable diese Bedingung hier erfüllt.
05:30
Speaker A
Und wenn das der Fall ist, wird geprüft, ob das Array Element mit dem Index I
05:35
Speaker A
größer als das nachfolgende Element ist.
05:39
Speaker A
Dann muss eine Vertauschung vorgenommen werden und B Swapped wird auf True gesetzt.
05:42
Speaker A
Wenn aber die Bedingung nicht erfüllt ist, dann passiert in der Vorschleife nichts.
05:47
Speaker A
Und es wird nur der Schleifenzähler inkrementiert.
05:50
Speaker A
So, wenn die Vorschleife dann vollständig abgearbeitet wurde,
05:54
Speaker A
wird N Fixed inkrementiert.
05:57
Speaker A
Und dann wird geschaut, ob B Swapped den Wert False hat.
06:00
Speaker A
Ist das nicht der Fall, muss also eine Vertauschung vorgenommen worden sein.
06:06
Speaker A
Und der Algorithmus setzt wieder hier oben ein.
06:09
Speaker A
Anderenfalls ist das Array komplett sortiert und der Algorithmus wird beendet.
06:14
Speaker A
Okay, jetzt habe ich grob den Ablauf des Algorithmus erklärt.
06:18
Speaker A
Und dabei habt ihr gesehen, dass darin auch eine Vorschleife vorkommt.
06:23
Speaker A
Aber ich wollte euch ja eigentlich hier ran die Repeat Until Schleife erklären.
06:28
Speaker A
So und die steckt hier.
06:31
Speaker A
Dieser ganze Bereich wird also wiederholt so oft ausgeführt, bis die Bedingung B Swapped gleich False erfüllt ist.
06:41
Speaker A
So, diesen Algorithmus implementiere ich jetzt in dieser Funktion Fun Sort.
06:45
Speaker A
Im Deklarationsteil deklariere ich das Array, dessen Elemente sortiert werden sollen.
06:50
Speaker A
Und zwar mit variabler Länge.
06:53
Speaker A
Und dann brauche ich noch die Variablen N Fixed, die ich gleich mit dem Wert 1 initialisiere.
06:59
Speaker A
Und dann noch B Swapped und den Schleifenzähler I.
07:03
Speaker A
Für das Vertauschen von Elementen brauche ich gleich noch, genau schon wie beim vorherigen Beispiel, eine Buffer Variable N Buffer.
07:09
Speaker A
Im Anweisungsteil beginne ich dann mit der Repeat Until Schleife.
07:13
Speaker A
Die wird also mit dem Schlüsselwort Repeat eingeleitet und mit End Repeat beendet.
07:18
Speaker A
Und hier zwischen dem Until und dem End Repeat kommt dann die Abbruchbedingung der Schleife.
07:23
Speaker A
Und das ist in diesem Beispiel B Swapped gleich False.
07:26
Speaker A
Oder anders ausgedrückt, Not B Swapped.
07:29
Speaker A
Wichtig ist hier, dass diese Bedingung keine Anweisung ist und daher nicht mit einem Semikolon beendet wird.
07:36
Speaker A
So, der Schleifenrumpf steht dann hier oben.
07:38
Speaker A
Hier wird als erstes B Swapped auf False gesetzt.
07:42
Speaker A
Und dann kommt die Vorschleife.
07:47
Speaker A
In der Vorschleife wird dann die Abfrage gemacht, ob das Element mit Index I größer als das nachfolgende Element ist.
07:52
Speaker A
Und wenn das der Fall ist, kommt dann die Vertauschung der Elemente.
07:58
Speaker A
Und B Swapped wird auf True gesetzt.
08:01
Speaker A
Nach der Vorschleife wird N Fixed um 1 erhöht.
08:03
Speaker A
Und dann ist der Bubble Sort auch schon vollständig implementiert.
08:06
Speaker A
So, jetzt teste ich einmal diese Funktion.
08:08
Speaker A
Und dazu gehe ich wieder in das Main Programm.
08:11
Speaker A
Und deklariere hier ein Array und initialisiere das so, dass es auch hier etwas zu sortieren gibt.
08:17
Speaker A
Und das Startsignal zum Sortieren nenne ich dann auch noch passend B Sort.
08:21
Speaker A
Im Anweisungsteil rufe ich dann noch Fun Sort auf.
08:23
Speaker A
Und dann lasse ich das Programm laufen.
08:26
Speaker A
So und im Online Modus seht ihr jetzt also, dass das Sortieren des Arrays geklappt hat.
08:31
Speaker A
Im dritten Beispiel zeige ich euch jetzt noch die Verwendung der While Schleife.
08:35
Speaker A
Und das mache ich an einem wirklich einfachen Algorithmus, nämlich dem Euklidischen Algorithmus,
08:41
Speaker A
mit dem man den größten gemeinsamen Teiler zweier natürlicher Zahlen berechnen kann.
08:46
Speaker A
Den Algorithmus seht ihr hier wieder als Programmablaufplan.
08:49
Speaker A
Die Zahlen, deren größten gemeinsamen Teiler also berechnet werden soll, sind hier A und B.
08:54
Speaker A
Solange B ungleich 0 ist, werden diese Berechnung hier durchgeführt.
08:58
Speaker A
Da wird also einer Hilfsvariablen H das Ergebnis der Modulo Operation von A und B zugewiesen.
09:03
Speaker A
Und A wird dann auf den Wert von B gesetzt und B auf den Wert von H.
09:08
Speaker A
Und wenn diese Bedingung dann hier nicht mehr erfüllt ist, ist der Algorithmus beendet.
09:14
Speaker A
Und das Ergebnis, also der größte gemeinsame Teiler der eingegebenen Zahlen A und B,
09:20
Speaker A
steht dann in der Variablen A.
09:23
Speaker A
So, diese Bedingung zusammen mit diesem Anweisungsblock ist also eine While Schleife.
09:28
Speaker A
Damit steige ich jetzt wieder in die Implementierung.
09:31
Speaker A
Und dazu verwende ich diese Funktion Fun GGT.
09:35
Speaker A
Die Input Variablen sind die Zahlen A und B und zudem deklariere ich hier noch die Hilfsvariable H.
09:42
Speaker A
Und im Anweisungsteil steht dann fast nur die While Schleife.
09:46
Speaker A
Die Syntax der While Schleife steht hier, die wird also durch das Schlüsselwort While eingeleitet,
09:51
Speaker A
gefolgt von der Bedingung, unter der die Schleife ausgeführt werden soll.
09:56
Speaker A
Und beendet wird die Schleife mit End While.
09:59
Speaker A
Und im Schleifenrumpf stehen dann diese Anweisung, wie schon im Programmablaufplan erklärt.
10:03
Speaker A
Und wenn die Schleife abgearbeitet ist, wird der Wert A zurückgegeben.
10:08
Speaker A
So, diese Funktion teste ich jetzt auch wieder im Main Programm.
10:12
Speaker A
Und dazu deklariere ich zunächst zwei Zahlen, deren größten gemeinsamen Teiler ich jetzt berechnen möchte.
10:17
Speaker A
Und initialisiere die mit diesen Werten hier.
10:21
Speaker A
Und dann deklariere ich noch eine Ergebnisvariable N GGT und eine Bool Variable B Run,
10:25
Speaker A
mit der ich wieder die Funktion starte.
10:28
Speaker A
Im Anweisungsteil rufe ich die Funktion dann auf.
10:32
Speaker A
Und dann geht's wieder los.
10:34
Speaker A
Im Online Modus seht ihr jetzt das Ergebnis.
10:37
Speaker A
Der größte gemeinsame Teiler von 132 und 187 ist also 11.
10:45
Speaker A
So, ich habe euch hier also an drei Beispielen gezeigt, wie die Vorschleife, die Repeat Until Schleife,
10:51
Speaker A
und die While Schleife funktionieren.
10:53
Speaker A
Noch mal zur Erinnerung, eine Vorschleife ist also eine Schleife mit einer festen Wiederholungsanzahl.
10:58
Speaker A
Eine Repeat Until Schleife ist eine Fußgesteuerte Schleife, die wird also so oft ausgeführt,
11:04
Speaker A
bis diese Abbruchbedingung, die am Ende der Schleife geprüft wird, wahr ist.
11:10
Speaker A
Und eine While Schleife ist eine Kopfgesteuerte Schleife.
11:13
Speaker A
Die wird also so lange ausgeführt, bis diese Bedingung, die vor der Schleife geprüft wird, wahr ist.
11:19
Speaker A
In jedem dieser Schleifentypen gibt es also eine Bedingung, unter der die Schleifen ausgeführt werden.
11:24
Speaker A
Es gibt aber noch zwei weitere Möglichkeiten, die Ausführung dieser Schleifen zu steuern.
11:28
Speaker A
Zum ersten ist das die Continue Anweisung.
11:31
Speaker A
Wenn die ausgeführt wird, wird der aktuelle Schleifendurchlauf abgebrochen.
11:36
Speaker A
Und es wird mit dem nächsten Schleifendurchlauf fortgefahren.
11:40
Speaker A
Und dann gibt es noch die Exit Anweisung.
11:43
Speaker A
Und damit wird dann die gesamte Schleife ungeachtet aller anderen Bedingungen beendet.
Topics:SPS ProgrammierungSchleifenFOR SchleifeREPEAT UNTIL SchleifeWHILE SchleifeArray vertauschenBubble SortEuklidischer AlgorithmusAutomatisierungProgrammierung

Frequently Asked Questions

Welche Schleifentypen werden in diesem Video erklärt?

Das Video erklärt die Vorschleife (FOR), die Repeat Until Schleife und die While Schleife anhand praktischer Beispiele.

Wie wird die Vorschleife zum Vertauschen von Array-Elementen eingesetzt?

Die Vorschleife wiederholt den Tausch von Elementen an symmetrischen Positionen im Array, wobei die Anzahl der Wiederholungen von der Array-Länge abhängt.

Warum wird der Bubble Sort Algorithmus mit einer Repeat Until Schleife implementiert?

Weil der Bubble Sort so lange wiederholt wird, bis keine Vertauschungen mehr nötig sind, eignet sich die Repeat Until Schleife ideal für diese Bedingung.

Get More with the Söz AI App

Transcribe recordings, audio files, and YouTube videos — with AI summaries, speaker detection, and unlimited transcriptions.

Or transcribe another YouTube video here →