Schleifn (Programmierung)

**Schleifn** han wichtige Strukturn in de hähan Progammiasprachn. Damit wern Befehle imma wiada wiadahoid. Wenn ma schaugt, wia oft de Befehle wiadohoid wern ko ma vier Artn untascheidn:
*Schleifn, de solang laffa, wia a Laufbedingung erfuid is.
*Schleifn, de laffa, bis a Abbruchbedingung erfuid werd.
*Schleifn mit na vorher festglegtn Anzoi vo Wiadahoilunga. 
*Endlosschleifn, de Befehle wern solang wiadhoid, bis as Programm vo außn beendet werd.

Des weidan ko ma untascheidn zwischn da
*kopfgsteiertn Schleifn, do werd scho voa da easchtn Ausfiarung priaft, ob de Bedingung erfuid is. Des hoasd, es ko a bassiern, das de Befehle in da Schleifn (da Schleifnkörper) iabahapts ned ausgfiard wern.
*fuaßgsteierte Schleifn, do werd da Schleifnkörper auf jedn Foi oamoi ausgfiard und eascht danach priaft, ob a weidana Schleifndurchlauf gmacht wern soi.

De Abbruch- bzw. Laufbedingung werd nua am Ofang bzw. am End vo da Schleifn iabapriaft. Da Schleifnkörper werd auf jedn Foi komplett ausgfiad, a wenn scho vor am End vo da Schleifn de Abbruchbedingung erfuid, bzw. de Laufbedingung nimma erfuid werd.

## Wichtige Schleifn in de gängign Programmiersprachn
De Beispui han in Pseudocode gschrim.

## Do-While-Schleifn
De Do-While-Schleifn is a fuaßgsteierte Schleifn, de solang laft, wia de ogemne Bedingung erfuid is. Normalaweis werd zwischn de Wearte *Do* und *While* dea Befehl oda dea Befehlsblock gschriem und noch des *While* de Laufedingung.

Oiso hoasds: *Dua* de Befehle 'solang* ausfiarn wia de Bedingung erfuid werd.

 *'DO** ''Schleifenrumpf'' **WHILE** ''Logischer Ausdruck''

== Repeat-Until-Schleifn ==
De Repeat-Until-Schleifn untascheid se vo da Do-While-Schleifn nua dodurch, daß solang ausgfiard werd, bis de ogemne Bedingung erfuid is. In vui Progammiasprochn gibts koa Do-While-Schleifn, do ko ma dann statt dessn a Repeat-Until-Schleifn heanemma, ma bracht nua de Bedingung invertieren. Des gehd natirle genauso, wenn ma koa Repeat-Until-Schleifn sondan nua de Do-While-Schleifn zua Vafiagung hod. Wiada stenga de Befehle zum ausfiarn, oiso da Schleifnkörper zwischn de Wearta, de Bedingung noch dem ''Until''.

S' bedeit oiso: ''Wiadahoi'' de Befehle solang ''bis'' de Bedingung erfuid is.

 **REPEAT** ''Schleifenrumpf'' **UNTIL** ''Logischer Ausdruck''

== While-Do-Schleifn ==
De While-Do-Schleifn is a kopfgsteierte Schleifn, de Bedingung werd glei nach dem eileitndn ''While'' ogem, da Schleifnkörper kimmt dann nach dem ''Do''. Wenns in na Progammiasproch koane kopfgsteierten Schleifn ned gibt ko ma a a fuaßgsteirte Schleifn mit na Entscheidung (if-then) kombiniern und so vor der Schleifn entscheidn, obs iabahapts ausgfiard wern soi.

 **WHILE** ''Logischer Ausdruck''  **DO** ''Schleifenrumpf''.

Vasteh ko mas ois: ''Solang'' de Bedingung guid, ''dua'' de Befehle ausfiarn.

== For-Schleifn ==
Bei da For-Schleifn steht am Ofang scho fest, wia oft de Schleifn wiadahoid werd. Dazua werd glei nach dem For a Zählvariable ogem, dazua a Start- und a Endwert. Bei jedem Durchlauf werd de Zählvariable um oans, oda an angebnen Wert erhöht. De For-Schleifn werd dann solang wiadhoid, bis de Zählvariable an Endwert erreicht hod. S' gibt a Variantn, wo rickwärts zejd werd, z. B. mit dem Wort ''downto'' oda mit na negativn Schrittweitn.
In Sprachn, wos koa For-Schleifn ned gibt ko mas mit eingle jeda andern Schleifnform simuliern, wenn ma se sejba um de Zählvariable kimmert.

Ma kos se merka ois: ''Fia'' de Zoin vo ... bis ... dua de Befehle ausfiarn.

 **FOR** ''Iterator'':=''Anfangszahl'' **TO** ''Endezahl'' **STEP** ''Schrittweite'' **DO*' *Schleifenrumpf*

== Abbruch- und Laufbedingunga ==
Wenn ma ned absichtlich a Endlosschleifn programmiern mecht muaß da Schleifnkörper an Teil vo da Abbruch- bzw. Laufbedingung vaeandan. Nur so ko  de Bedingung irawanamoi dafuid wern und de Schleifn zua am End kemma. Bei da for-Schleifn kimmat se de Progammiasprach sejba um de Forderung.

Vo dem Woat *Schleifn* kimmt a da Satz: *Da Rechner hod se aufghängt*. Da Progammiara hod am Rechna dann mid am Programmfehler aus na Schleifn an Galgn bundn.

In manche Programmiasprochn gibts extra Anweisunga fia Endlos-Schleifn. Ansunstn ko ma irgend a Schleifn heanemma und a Bedingung dazuaschreim, de ollawei wahr bzw. foisch is. Oiso *true = false* fia a Abbruchbedingung oda *1 = 1* fia a Laufbedingung.

A echte Endlosschleifn werd nua vo ejsane Einfliass obbrocha, ois am Interrupt, am Reset, am Stromausfall oda am sonstigen Defekt vo dem programmiertn Gerät.

Normalaweis werd da Schleifnkörper imma komplett ausgfiad. Wenn ma des ned mächt, ko ma de Schleifn a vorzeitig valossn. Dodafia gibts in einige Sprachn an Befehl *break*, manchmoi is a a *goto'' mit am Sprungziel aussahoib vo da Schleifn erlaubt.

## Schleifn und GoTo
De Schleifn wurdn in de historischn Progammiasprochn eigfiad, um des bis dohi weid vabreitete GoTo zum vameidn. S' GoTo hod Programme ab na gwissn Greß uniabasichtlich gmacht, domit is de Fehlersuach und Erweiterung imma schwieriga worn. Ma ko aba olle Schleifn a mit da Vawendung vo GoTo simuliern. Letztendlich bassiert des a, wei a de moderna Prozessorn koane eigna Befehle via de Schleifn kenna, sondan de Schleifn vom Compiler bzw. Interpreter in Sprungbefehle in da Maschinasprach umgsetzt wern.