PMG2022 py/Grundstrukturen
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>Python</language>
== Sequenz ==
<code id="614c3cf4e7c39" hidden> [https://schulen-jupyter.inf.hszg.de] </code>
Abfolge von Anweisungen[[Bild:Seq.png | 80px]]
== Zählschleife ==
Das wiederholte Aufschreiben von Code ist sehr mühsam. Außerdem sind die so entstandenen Programme nicht sehr flexibel.
Eine übliche allgemeine Notation einer for-Schleife sieht z.B. wie folgt aus: [[Bild:Zaehl.png | 120px]]
for( var i = startwert; i < obergrenze; i++) {
...
}
Anstelle von ... werden die Anweisungen eingesetzt, die wiederholt werden sollen.
Die Anweisung '''i++''' ist eine Abkürzung für die Anweisung '''i=i+1'''.
Eine for-Schleife durchläuft mehrere ''Iterationen''. In jeder Iteration werden alle Anweisungen zwischen den Klammern {...} ausgeführt.
Für das oben gezeigte Muster gilt:
# Vor der ersten Iteration erhält ''i'' den Wert ''startwert''. Das ist die '''Anfangszuweisung'''.
# Nach der Iteration wird der Wert von ''i'' um 1 erhöht (''i++''). Das ist die '''Wiederholungszuweisung'''.
# Es wird geprüft, ob die Bedingung ''i<obergrenze'' erfüllt ist. Das ist die '''Wiederholungsbedingung'''.
# Wenn die Wiederholungsbedingung erfüllt ist, wird eine weitere Iteration durchgeführt.
# Die Schritte 2 bis 4 werden wiederholt, bis die Wiederholungsbedingung nicht mehr erfüllt ist. In diesem Fall werden keine weiteren Iterationen durchgeführt.
Beispiel:
<code id="614c3995d2b8b">
function print(){
for(var i=0; i<5; i++){
console.log(i);
}
}
</code>
<run id="614c3995d303a">
print();
</run>
Für die for-Schleife gibt es verschiedene Variationen:
* anstelle von ''i'' andere Variablennamen einsetzen
* für ''startwert'' und ''obergrenze'' beliebige Werte einsetzen.
* Wiederholungszuweisung ändern; Beispiele:
** ''i=i+2'' bedeutet: ''i'' wird nach jeder Iteration um 2 erhöht.
** ''i--'' oder ''i=i-1'' bedeutet: ''i'' wird nach jeder Iteration um 1 erniedrigt.
* Wiederholungsbedingung ändern: statt ''i<5'' z.B. ''i>5'' schreiben
== Schleifen mit Bedingungen ==
=== Schleife mit vorangestelltem Test ===
<font color = grey>entspricht der WHILE ... DO Schleife in Delphi</font> [[Bild:Vor.png | 120px]]
while (bedingung) {
anweisungen;
}
''In den folgenden Beispielen wurde auf die Modularisierung verzichtet, der Programmcode also ohne "function" in die CodeBox geschrieben und ''
''ohne extra Aufruf in der RunBox ausgeführt.''
<code id="614c3995d2c1c">
var x = 1;
while (x < 5) {
console.log ('Lauf ' + x );
x = x + 1;
}
</code>
<run id="614c3995d3095"></run>
=== Schleife mit nachgestelltem Test ===
<font color = grey>entspricht der REPEAT ... UNTIL Schleife in Delphi</font> [[Bild:Nach.png | 120px]]
do {
anweisungen;
} while (bedingung);
<code id="614c3995d2cc6">
var zahl = 5;
var y = 0;
do {
console.log(y + ' mal 3 ist ' + (3*y));
y = y + 1;
} while (y < zahl);
</code>
<run id="614c3995d30ed"></run>
== Verzweigungen ==
=== ein- und zweiseitige Verzweigungen ===
Oft sollen bestimmten Anweisungen nur ausgeführt werden, wenn eine bestimmte Bedingung erfüllt ist.
'''Aufbau von If-Anweisungen''' [[Bild:Einseitig.png | 120 px]]
if(<Bedingung>){
...
}
Zwischen die geschweiften Klammern werden ein oder mehrere Anweisungen geschrieben, die ausgeführt werden sollen, wenn die <Bedingung> wahr ist. Es handelt sich um den sogenannten '''If-Block'''.
Natürlich können auch mehrere Bedingungen nacheinander geschrieben werden:
if(<Bedingung1>){
...
}
if(<Bedingung2>){
...
}
Eine If-Anweisung kann auch einen Sonst-Block (oder '''Else-Block''') besitzen: [[Bild:Zweiseitig.png | 120px]]
if(<Bedingung>){
...
}else{
...
}
Zwischen die geschweiften Klammern des Else-Blocks werden ein oder mehrere Anweisungen geschrieben, die ausgeführt werden sollen, wenn die <Bedingung> false ergibt.
''Beispiel''
Das Programm gibt den Text "Es ist kalt." aus, wenn die Temperatur <= 15 ist. Ändern Sie den Wert der Variable "temperatur", um das Programm zu testen!
<code id="614c3995d2d4e">
var temperatur = 20;
if(temperatur > 15){
console.log("Es ist warm.");
}else{
console.log("Es ist kalt.");
}
</code>
<run id="614c3995d3144">
</run>
'''Aufbau von Bedingungen'''
Die <Bedingung> muss ein logischer Ausdruck sein, der wahr oder falsch (d.h. true oder false) ergibt.
'''Beispiele für logische Ausdrücke'''
Ändern Sie in den folgenden Beispielen die Werte der Variablen x und y, um die Programme zu testen!
''x > y''
<code id="614c3995d2db5">
var x = 6;
var y = 7;
if(x > y){
console.log("x ist größer als y");
}else{
console.log("x ist kleiner als y");
}
</code>
<run id="614c3995d319e">
</run>
''x < y''
<code id="614c3995d2e42">
var x = 6;
var y = 7;
if(x < y){
console.log("x ist kleiner als y");
}else{
console.log("x ist größer als y");
}
</code>
<run id="614c3995d31f9">
</run>
Außerdem können die Operatoren >= (größer gleich) sowie <= (kleiner gleich) verwendet werden.
''x>=a && x<=b'' (Test, ob x zwischen den Werten a und b liegt)
<code id="614c3995d2ea7">
var a = 0;
var b = 10;
var x = 3;
if(x>=a && x<=b){
console.log("x liegt zwischen a und b");
}else{
console.log("x liegt außerhalb von a und b");
}
</code>
<run id="614c3995d325c">
</run>
''x == y'' (Test, ob x und y den gleichen Wert besitzen)
<code id="614c3995d2f01">
var x = 6;
var y = 6;
if(x == y){
console.log("x ist gleich y");
}else{
console.log("x ist ungleich y");
}
</code>
<run id="614c3995d32b5" >
</run>
''x != y'' (Test, ob x und y ungleiche Werte besitzen)
<code id="614c3995d2f5c">
var x = 6;
var y = 7;
if(x != y){
console.log("x ist ungleich y");
}else{
console.log("x ist gleich y");
}
</code>
<run id="614c3995d3312">
</run>
=== mehrseitige Verzweigungen ===
<font color = grey>entspricht der CASE .. OF Bedingung in Delphi</font> [[Bild:Mehrseitig.png | 160px]]
switch (variable) {
case wert1 :
anweisungen;
break;
case wert2 :
anweisungen;
break;
default :
anweisungen;
}
''Switch-case'' führt <u>anstelle mehrfacher</u> ''if then els''e-Abfragen die Alternativen in einer überschaubaren Liste von Anweisungen auf.<br>
Eine ''switch''-Anweisung vergleicht den Wert der Bedingung mit dem Wert, der neben jeder ''case''-Marke aufgeführt ist.<br>
Wenn die Bedingung in ''case'' zutrifft, werden diese Anweisungen ausgeführt.
<code id="614c3995d2fb7">
var a = 4;
switch (a) {
case 3:
console.log( "zu klein" );
break;
case 4:
console.log( "Exakt" );
break;
case 5:
console.log( "zu groß" );
break;
default:
console.log("falscher Wert");
}
</code>
<run id="614c3995d336e"></run>