Bedingte Wiederholung: Unterschied zwischen den Versionen

Aus KGS-Wiki
(Die Seite wurde neu angelegt: „{{subst::Bedingte Anweisung}}“)
 
Keine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
Eine [[bedingte Anweisung]] ist eine [[Anweisung]] oder eine [[Sequenz]] von Anweisungen, die nur ausgeführt wird, wenn eine angegebene [[Wahrheitswert|Bedingung]] erfüllt ist. Falls zusätzlich dazu auch noch Anweisungen vorhanden sind, die ausgeführt werden sollen, wenn die Bedingung ''nicht'' erfüllt ist, spricht man von einer ''bedingten Verzweigung''.
Eine [[bedingte Wiederholung]] ist eine [[Anweisung]] oder eine [[Sequenz]] von Anweisungen, die immer wieder ausgeführt wird, solange eine angegebene [[Wahrheitswert|Bedingung]] erfüllt ist. Im Unterschied zur [[Bedingte Anweisung|bedingten Anweisung]] wird die bedingte Wiederholung nicht nur einmal, sondern immer wieder ausgeführt.
 
Ein umgangssprachliches Beispiel: ''"Nimm einen Schirm mit, falls es regnet!"''. Die Anweisung ''"Nimm einen Schirm mit"'' wird nur ausgeführt, wenn die Bedingung ''"es regnet"'' erfüllt ist.


Bedingungen können mit [[Boolesche Operatoren|Operatoren]] wie '''NICHT''', '''UND''' und '''ODER''' miteinander verbunden werden. Beispiele:
Bedingungen können mit [[Boolesche Operatoren|Operatoren]] wie '''NICHT''', '''UND''' und '''ODER''' miteinander verbunden werden. Beispiele:


*"Wenn es '''nicht''' regnet, komme ich mit zu deinem Fußballspiel."
*"Solange es regnet, bleibe ich im Haus."
*"Zieh lieber Gummistiefel an, falls es regnet '''oder''' schneit."
* "Solange ich '''nicht''' 18 bin, trinke ich keinen Schnaps."
*"Wenn du Lust hast '''und''' am Donnerstag freikriegst, lass uns doch ins Kino gehen!"
 
Ein Beispiel für eine bedingte Verzweigung: "Wenn ich es zeitlich schaffe, koche ich uns Cannelloni, '''ansonsten''' schieben wir schnell eine Pizza in den Ofen."


==Beschreibungen von Algorithmen==
==Beschreibungen von Algorithmen==
Zeile 16: Zeile 11:


In [[Programmablaufplan|Programmablaufplänen]] wird eine Raute verwendet, um eine bedingte Anweisung bzw. bedingte Verzweigung zu beginnen:
In [[Programmablaufplan|Programmablaufplänen]] wird eine Raute verwendet, um eine bedingte Anweisung bzw. bedingte Verzweigung zu beginnen:
{{Hinweisbaustein|style=border: none; padding: none
{{Hinweisbaustein
|INHALT=
| style = border: none; padding: none
{{Thumbnailbox|ALIGN=left|CLASS=noclear|INHALT=<mermaid>
| INHALT = {{Thumbnailbox|ALIGN=left|CLASS=noclear|INHALT=<mermaid>
graph TD
graph TD
start(["Start"]) --> bedingung{"Regnet es?"} --ja--> anweisung["Nimm einen Schirm mit"] --> ende(["Ende"])
start(["Start"]) --> bedingung{"Regnet es?"} --ja--> anweisung["Warte"] --> bedingung --nein--> ende(["Ende"])
bedingung --nein--> ende
</mermaid>
</mermaid>
|CAPTION=Eine bedingte Anweisung}}
|CAPTION=Eine bedingte Wiederholung}}
{{Thumbnailbox|ALIGN=left|CLASS=noclear|INHALT=<mermaid>
graph TD
start(["Start"]) --> bedingung{"Habe ich<br>genug Zeit?"} --ja--> anweisung["Koche Cannelloni"] --> ende(["Ende"])
bedingung --nein--> alternative["Schiebe schnell eine Pizza in den Ofen"] --> ende
</mermaid>
|CAPTION=Eine bedingte Verzweigung}}
}}
}}


===Pseudocode===
===Pseudocode===


Im [[Pseudocode]] werden die Schlüsselwörter <code>if</code>, <code>then</code>, <code>else</code> und <code>endif</code> verwendet, um die bedingte Anweisung und die bedingte Verzweigung umzusetzen.<syntaxhighlight lang="text" line="1">
Im [[Pseudocode]] werden die Schlüsselwörter <code>while</code>, <code>do</code> und <code>endwhile</code> verwendet, um die bedingte Wiederholung umzusetzen.
if regnet
<syntaxhighlight lang="text" line="1">
then nimm Schirm mit
while es regnet
endif
do warte
</syntaxhighlight><code>else</code> leitet dabei den "Sonst"-Fall ein:<syntaxhighlight lang="text" line="1">
endwhile
if genug Zeit
then koche Cannelloni
else schiebe schnell Pizza in den Ofen
endif
</syntaxhighlight>
</syntaxhighlight>


Zeile 48: Zeile 32:


===Scratch===
===Scratch===
In [[Scratch]] gibt es den Falls-Dann-Block, um '''bedingte Anweisungen''' umzusetzen:
In [[Scratch]] gibt es den Wiederhole-Bis-Block, um bedingte Wiederholungen umzusetzen:
<scratchblocks>
<scratchblocks>
falls <wird [andere Figur v] berührt>, dann
wiederhole bis <wird [andere Figur v] berührt>
gehe [10] er Schritt
ende
sage [Entschuldigung!]
sage [Entschuldigung!]
</scratchblocks>
</scratchblocks>


Für '''bedingte Verzweigungen''' gibt es den Falls-Dann-Sonst-Block:
{{Achtung|In Scratch wird die bedingte Anweisung nicht ausgeführt, '''solange''' die Bedingung erfüllt ist, sondern '''bis''' sie erfüllt ist, also solange sie '''nicht''' erfüllt ist. Das ist in anderen Sprachen anders!}}
<scratchblocks>
falls <(Bühnenbild [Nummer v]) = (4)>, dann
verstecke dich
sonst
zeige dich
</scratchblocks>


===AppInventor===
===AppInventor===
 
Im [[AppInventor]] gibt es in der Kategorie ''Steuerung'' die Blöcke ''Wenn-Dann'', ''Wenn-Dann-Sonst'' und ''Wenn-Dann-Sonst-Wenn''. Tatsächlich ist das alles derselbe Block, der mit einem blauen Zahnrad-Button beliebig erweitert oder verkleinert werden kann, um beliebig viele Bedingungen zu überprüfen.<gallery widths="360" heights="100">
[[Datei:Blockly If Configure.gif|gerahmt|Mit dem blauen Zahnrad können ''Sonst''- und ''Sonst-Wenn''-Fälle zu einem ''Wenn-Dann''-Block hinzugefügt werden]]
Datei:Blockly while.png|Der Block ''"während _ mache _"'' aus dem [[AppInventor]]
Im [[AppInventor]] gibt es in der Kategorie ''Steuerung'' die Blöcke ''Wenn-Dann'', ''Wenn-Dann-Sonst'' und ''Wenn-Dann-Sonst-Wenn''. Tatsächlich ist das alles derselbe Block, der mit einem blauen Zahnrad-Button beliebig erweitert oder verkleinert werden kann, um beliebig viele Bedingungen zu überprüfen.
Datei:Blockly while Beispiel.png|Ein Anwendungsbeispiel für diesen Block
<gallery>
Datei:Blockly If.png|Die einfachste '''bedingte Anweisung''': Der Wenn-Dann-Block
Datei:Blockly If Else.png|Der Wenn-Dann-Sonst-Block ermöglicht eine '''bedingte Verzweigung'''
Datei:Blockly If Elif.png|Mit Sonst-Wenn-Bedingungen können '''Mehrfachverzweigungen''' realisiert werden.
Datei:Blockly If Elif Elif Elif Else.png|Mehrfachverzweigungen können beliebig kompliziert ausgeführt werden.
Datei:Blockly If Example.png|Ein konkretes Beispiel für eine bedingte Anweisung.
</gallery>
</gallery>


=== NEPO ===
===NEPO===
In [[NEPO]] sehen die entsprechenden Blöcke so ähnlich aus wie im AppInventor. Sie befinden sich in der Kategorie ''Kontrolle''.
In [[NEPO]] sehen die entsprechenden Blöcke so ähnlich aus wie im AppInventor. Sie befinden sich in der Kategorie ''Kontrolle''. In NEPO hat man die Wahl, ob man die Anweisungen wiederholen möchte, ''bis'' die Bedingung erfüllt ist oder ''solange'' sie erfüllt ist.<gallery widths="360" heights="100">
<gallery>
Datei:NEPO While.svg|Der Text "Flossen weg!" wird angezeigt, '''''solange''''' die Taste A gedrückt wird.
Datei:NEPO If.svg|Die einfachste '''bedingte Anweisung''': Der Wenn-Dann-Block
Datei:NEPO Repeat Until.svg|Der Text "Drück mich!" wird angezeigt, '''''bis''''' die Taste A gedrückt wird.
Datei:NEPO If Else.svg|Der Wenn-Dann-Sonst-Block ermöglicht eine '''bedingte Verzweigung'''
Datei:NEPO If Elif Elif Elif.svg|Mehrfachverzweigungen können beliebig kompliziert ausgeführt werden, indem mit dem kleinen <code>+</code> und <code>-</code> oben links weitere Bedingungen eingefügt oder gelöscht werden.
</gallery>
</gallery>


==Textuelle Programmierung==
==Textuelle Programmierung ==


===Python===
===Python ===
In [[Python (Programmiersprache)|Python]] werden die Schlüsselwörter <code>if</code>, <code>elif</code> und <code>else</code> benutzt, um bedingte Anweisungen und bedingte Verzweigungen umzusetzen.<syntaxhighlight lang="python" line="1">
In [[Python (Programmiersprache)|Python]] wird das Schlüsselwort <code>while</code> benutzt, um bedingte Wiederholungen umzusetzen.<syntaxhighlight lang="python" line="1">
if n > 0:
name = ''
    print('n ist positiv')


if n > 0:
while name == '':
    print('n ist positiv')
  name = input('Wie heißt du?')
else:
    print('n ist nicht positiv')


if n > 0:
print('Hallo ') + name
    print('n ist positiv')
elif n == 0:
    print('n ist 0')
else:
    print('n ist negativ')
</syntaxhighlight>
</syntaxhighlight>


=== Java, JavaScript, C usw. ===
===Java, JavaScript, C usw. ===
In den "Curly-Bracket-Sprachen" werden nur die Schlüsselwörter <code>if</code> und <code>else</code> verwendet. Anders als bei Python müssen alternative Abfragen geschachtelt werden.<syntaxhighlight lang="c" line="1">
In den "Curly-Bracket-Sprachen" gibt es zwei Möglichkeiten, bedingte Wiederholungem umzusetzen: <code>while</code> und <code>do-while</code>. Der Unterschied ist, dass bei der Wiederholung mit <code>do-while</code> die Anweisungen bereits ausgeführt werden, bevor die Bedingung zum ersten Mal überprüft wird: <syntaxhighlight lang="javascript" line="1">
if (n > 0) {
while (name == '') {
    printf("n ist positiv.");
  name = prompt('Wie heißt du?');
}
}
alert('Hallo ' + name);
do {
  name = prompt('Wie heißt du?')
} while (name == '');
alert('Hallo ' + name);
</syntaxhighlight>


if (n > 0) {
== Endlos-Wiederholung ==
     printf("n ist positiv.");
Wenn die Bedingung einer Wiederholung immer wahr ist, spricht man von einer Endlos-Wiederholung. In Python kann man das z.B. so umsetzen:<syntaxhighlight lang="python" line="1">
} else {
while 1 == 1:
     printf("n ist nicht positiv.");
     print("Ich printe bis zum Ende der Zeit!")
}
 
while True:
     print("Ich printe bis zum Ende der Zeit!")
</syntaxhighlight>In den meisten visuellen Programmiersprachen gibt es dafür speziellen Blöcke wie
<scratchblocks>
wiederhole fortlaufend
 
ende
</scratchblocks>
oder NEPOs "Wiederhole unendlich oft".


if (n > 0) {
== Weblinks ==
    printf("n ist positiv.");
} else {
    if (n > 0) {
        printf("n ist negativ.");
    } else {
        printf("n ist 0.");
    }
}
</syntaxhighlight>


* [https://www.python-lernen.de/while-schleife.htm "While-S]
== Weblinks ==
== Weblinks ==


* [https://www.python-kurs.eu/bedingte_anweisungen.php Bedingte Anweisungen auf Python-Kurs.eu {{Flagge|DE}}]
* [https://www.python-lernen.de/while-schleife.htm <nowiki>"While-Schleifen" [sic!] auf python-lernen.de </nowiki>{{Flagge|DE}}]
{{Navigationsleiste Bestandteile von Algorithmen}}
{{Navigationsleiste Bestandteile von Algorithmen}}
[[Kategorie:Programmierung]]
[[Kategorie:Programmierung]]
[[Kategorie:Algorithmen]]
[[Kategorie:Algorithmen]]

Aktuelle Version vom 20. März 2024, 14:30 Uhr

Eine bedingte Wiederholung ist eine Anweisung oder eine Sequenz von Anweisungen, die immer wieder ausgeführt wird, solange eine angegebene Bedingung erfüllt ist. Im Unterschied zur bedingten Anweisung wird die bedingte Wiederholung nicht nur einmal, sondern immer wieder ausgeführt.

Bedingungen können mit Operatoren wie NICHT, UND und ODER miteinander verbunden werden. Beispiele:

  • "Solange es regnet, bleibe ich im Haus."
  • "Solange ich nicht 18 bin, trinke ich keinen Schnaps."

Beschreibungen von Algorithmen

Programmablaufpläne

In Programmablaufplänen wird eine Raute verwendet, um eine bedingte Anweisung bzw. bedingte Verzweigung zu beginnen:

Pseudocode

Im Pseudocode werden die Schlüsselwörter while, do und endwhile verwendet, um die bedingte Wiederholung umzusetzen.

while es regnet
do warte
endwhile

Visuelle Programmierung

Scratch

In Scratch gibt es den Wiederhole-Bis-Block, um bedingte Wiederholungen umzusetzen:

wiederhole bis <wird [andere Figur v] berührt>
gehe [10] er Schritt
ende
sage [Entschuldigung!]
⚠️
Achtung

In Scratch wird die bedingte Anweisung nicht ausgeführt, solange die Bedingung erfüllt ist, sondern bis sie erfüllt ist, also solange sie nicht erfüllt ist. Das ist in anderen Sprachen anders!

AppInventor

Im AppInventor gibt es in der Kategorie Steuerung die Blöcke Wenn-Dann, Wenn-Dann-Sonst und Wenn-Dann-Sonst-Wenn. Tatsächlich ist das alles derselbe Block, der mit einem blauen Zahnrad-Button beliebig erweitert oder verkleinert werden kann, um beliebig viele Bedingungen zu überprüfen.

NEPO

In NEPO sehen die entsprechenden Blöcke so ähnlich aus wie im AppInventor. Sie befinden sich in der Kategorie Kontrolle. In NEPO hat man die Wahl, ob man die Anweisungen wiederholen möchte, bis die Bedingung erfüllt ist oder solange sie erfüllt ist.

Textuelle Programmierung

Python

In Python wird das Schlüsselwort while benutzt, um bedingte Wiederholungen umzusetzen.

name = ''

while name == '':
  name = input('Wie heißt du?')

print('Hallo ') + name

Java, JavaScript, C usw.

In den "Curly-Bracket-Sprachen" gibt es zwei Möglichkeiten, bedingte Wiederholungem umzusetzen: while und do-while. Der Unterschied ist, dass bei der Wiederholung mit do-while die Anweisungen bereits ausgeführt werden, bevor die Bedingung zum ersten Mal überprüft wird:

while (name == '') {
  name = prompt('Wie heißt du?');
}
alert('Hallo ' + name);

do {
  name = prompt('Wie heißt du?')
} while (name == '');
alert('Hallo ' + name);

Endlos-Wiederholung

Wenn die Bedingung einer Wiederholung immer wahr ist, spricht man von einer Endlos-Wiederholung. In Python kann man das z.B. so umsetzen:

while 1 == 1:
    print("Ich printe bis zum Ende der Zeit!")

while True:
    print("Ich printe bis zum Ende der Zeit!")

In den meisten visuellen Programmiersprachen gibt es dafür speziellen Blöcke wie

wiederhole fortlaufend

ende

oder NEPOs "Wiederhole unendlich oft".

Weblinks

Weblinks