Hilfe Java (processing), ich verstehe die schleifen einfach nicht?

4 Antworten

Zuerst einmal: IF-ELSE ist eine Kontrollabfrage, die nur einmal ausgeführt wird. Es hat nichts mit Schleifen zu tun!

IF:

Ermöglicht eine Kontrollabfrage. Je nachdem, was diese Abfrage ergibt, wird der Programmfluss anders ausgeführt.

int zahl = 1;

if(zahl == 1) { print("Ausdruck ist wahr"); }

Hier bspw. wird geprüft, ob die Variable zahl den Wert 1 hat. Wenn dem so ist, wird ein Text ausgegeben. Ansonsten nicht.

IF-ELSE:

int zahl = 1;

if(zahl == 1) { // IF(BoolExpression) print("Ausdruck ist wahr"); // Then-Block } else { print("Ausdruck ist falsch"); // Otherwise-Block }

Hier erfolgt die gleiche Überprüfung wie oben. Sollte die Variable zahl allerdings einen anderen Wert als 1 haben, wird der Block ausgeführt, der hinter dem else steht.

In den jeweiligen Code-Blöcken nach if und nach else können weitere Kontrollabfragen, Schleifen, o.ä. ausgeführt werden. Des Weiteren gibt es die Möglichkeit des Else-If:

int zahl = 1;

if(zahl == 1) { print("Zahl ist 1"); } else if(zahl == 2){ print("Zahl ist 2"); }
else if(zahl == 3){ print("Zahl ist 3"); } else { print("Zahl ist nicht 1, 2 oder 3"); }

Übersichtlicher in diesem Fall ist die Kontrollstruktur switch:

int zahl = 1;

switch(zahl) { // SWITCH(Value) case 1: print("Zahl ist 1"); // CASE ConstValue break; case 2: print("Zahl ist 2"); break; case 3: print("Zahl ist 3"); break; default: print("Zahl ist nicht 1, 2 oder 3"); break; }

Bei switch läuft das Programm durch jeden Fall und prüft, ob der gegebene Wert dem der obrig angegeben Variablen entspricht. Nach dem ersten Fund werden alle darauffolgenden Fälle ebenso mit abgearbeitet. Um das zu verhindern, wird nach jedem Fall ein break ausgeführt. Dieses bewirkt, dass das Programm nach der Textausgabe aus der Kontrollstruktur herausspringt. Optional kann man noch einen default-Fall angeben. Dieser wird ausgeführt, wenn alle anderen Fälle nicht zutreffen.

Schleifen:

Schleifen sind dazu da, etwas mehrmals nacheinander auszuführen. Stelle dir bspw. vor, du hast ein Array an Strings und möchtest einen bestimmten String darin finden. Dann kannst du mit einer Schleife durch jedes Arrayelement gehen und es mit dem gesuchten Wert vergleichen.

String[] names = new String[]{ "Klaus", "Jana", "Max", "Anne" };
print("Weibliche Namen sind:\n");

for(int i = 0; names.length > i; ++i){ if(names[i] == "Jana" || names[i] == "Anne"){ print(names[i] + "\n"); } }

Hier haben wir eine Liste an Namen. Es sollen nur die weiblichen Namen ausgegeben werden: Jana und Anna.

Die for-Schleife zählt nun von 0 bis 4 (die Anzahl der Elemente in der Liste). Dazu wird eine Zählervariable erstellt, die z.B. i heißt. Ihr Startwert ist 0. Die Schleife läuft so lange, wie die Zählervariable weniger ist, als die Anzahl der Arrayelemente. Pro Iteration wird sie um 1 erhöht.

Pro Durchgang wird nun geprüft, ob das aktuelle Listenelement gleich "Jana" oder "Anna" ist. Wenn der Ausdruck stimmt, wird der Name ausgegeben.

Schleifentypen gibt es folgende:

FOR(Current : List){  // foreach-loop
  // Ausfuehrung je Iteration
}

FOR(Initialization; Condition; ChangeCounter){ // iteration-loop // Ausfuehrung je Iteration }
WHILE(BoolExpression){ // head-controlled-loop (condition before execution) // Ausfuehrung je Iteration }
DO { // foot-controlled-loop (condition after execution) // Ausfuehrung je Iteration // Die Schleife wird mind. 1x ausgefuehrt, auch, wenn die Bedingung nicht erfuellt ist, // denn diese wird erst nach dem DO-Block geprueft // Solange die Bedingung erfuellt wird, springt der Programmfluss wieder nach oben in den DO-Block } WHILE(BoolExpression);

Hier jeweils anhand eines Beispiels:

int[] zahlen = new int[]{ 1, 2, 3, 4, 5 };

for(int zahl : zahlen){ print(zahl); }
for(int i = 0; zahlen.length > i; ++i){ print(zahlen[i]); }
int j = 0; int laenge = zahlen.length;
while(laenge > j){ print(zahlen[j++]); }
int k = -1;
do { if(k != -1){ print(zahlen[k]); } ++k; } while(laenge > k);

Jede Schleife führt hier das Gleiche aus. Daher werden die jeweiligen Vorteile nicht ersichtlich, denn jede Schleife hat ihr eigenes Einsatzgebiet, wo es sich am meisten lohnt, mit ihr jeweils zu arbeiten. While-Schleifen eignen sich bspw. am besten, wenn die Anzahl an Iterationen nicht bekannt ist. Iterationsschleifen (for) dagegen werden meist dann genutzt, wenn man über Listen iterieren möchte und dabei den Index benötigt.

Dieses Buch sollte dir als Hilfe dienen, weitere Grundlagen der Programmierung mit Java/Processing zu erlernen: http://openbook.rheinwerk-verlag.de/javainsel/ . Das Buch ist auf dieser Seite auch als kostenloses OpenBook erhältlich.

1. http://www.if-schleife.de/

2. If(A){X();} überprüft den Ausdruck A vom Typ boolean und führt X(); aus, wenn A true ist. if heißt "wenn"

3. if(A{X();})else{Y();} ist im Prinzip äquivalent(aber effizienter) wie if(A){X();} if(!A){Y();} ! bedeutet "nicht", else bedeutet "sonst".

4. for(A,B,C){X();} erstellt optional Variablen im Ausdruck A, diese müssen von einem einheitlichen Typ sein, überprüft dann den Ausdruck vom Typ Boolean in B, führt wenn dieser true ist X() aus, führt danach optional C aus und überprüft B dann erneut. for ABC soll in etwa heißen "solange wie ABC"

if(deine Bedingung){
dann tu das
}else{
tu das
}

if(1==1){
System.out.println("Richtig");
}else{
System.out.println("Was zur Hölle");
}

while Schleifen benutzt man dann, wenn man den
Startwert einer Variablen nicht kennt..
for Schleifen wenn man ihn kennt

for(int i=0;i<10;i++){
// Hier wird jetzt bei jedem durchlaufen i
// um eins hochgezählt
}

oder auch

int i=0;
while(i<10){
// Selbes prinzip..
i++;
}

erklär doch einfach mal etwas genauer was du nicht
verstehst.. es gibt wirklich tausende youtube videos..
regex9  04.09.2016, 17:02

Nicht jedes Youtube-Video ist gut - oder eher, es gibt viele schlechte Youtube-Videos. Ein konkretes Video zu benennen, wäre für den Fragesteller da schon hilfreicher.

0
Momischmiddi  05.09.2016, 18:27
@regex9

ich kann mir wirklich kein Video vorstellen, in dem Schleifen falsch erklärt werden..

0