Lernzielkontrolle Info10 - 2: Unterschied zwischen den Versionen
(16 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | '''Aufgabe 1 | + | '''Aufgabe 1''' |
Was tun folgende Schleifen? | Was tun folgende Schleifen? | ||
+ | |||
+ | ''<u>Hinweis zur Bearbeitung:</u> Die ersten Werte für i einsetzen bis ein Muster erkennbar wird.'' | ||
'''1)''' | '''1)''' | ||
− | ''int y= | + | ''int y=0; for(int i=3; i<=300; i+=3){y=y+i;}'' |
{{Lösung versteckt| | {{Lösung versteckt| | ||
Zeile 13: | Zeile 15: | ||
'''2)''' | '''2)''' | ||
− | ''int i=1; while(true){if(i>=1){System.out.print(i); i++; if(i<=2){System.out.print(i);};} | + | ''int i=1; while(true){ if (i>=1){System.out.print(i); i++;}; if (i<=2){System.out.print(i);i--;};} |
{{Lösung versteckt| | {{Lösung versteckt| | ||
Zeile 19: | Zeile 21: | ||
}} | }} | ||
− | '''3''' | + | '''3)''' |
− | ''for(int i=1; i<=500; i++){if(i%9==0){System.out.println(i);};} | + | ''for(int i=1; i<=500; i++){ if (i%9==0){System.out.println(i);};} |
{{Lösung versteckt| | {{Lösung versteckt| | ||
Zeile 27: | Zeile 29: | ||
}} | }} | ||
+ | '''4)''' | ||
+ | |||
+ | ''int i=1; while(i<=3){ if (i%3==0){System.out.print("hoihoihoi ");} else {System.out.print("zickezacke ");};i++;}; | ||
{{Lösung versteckt| | {{Lösung versteckt| | ||
+ | Gibt 3x hintereinander "''zickezacke zickezacke hoihoihoi ''" aus. | ||
+ | }} | ||
+ | |||
+ | |||
+ | |||
+ | '''Aufgabe 2''' | ||
+ | |||
+ | Ergänze folgende Ausdrücke: | ||
+ | |||
+ | ''<u>Hinweis zur Bearbeitung:</u> Am besten die zu erwartende Zahlenreihe aufschreiben und dann überlegen, mit welchen Werten von i und welchen Inkrementierungen (z.B. i++, i-=2 etc.) man sie erreicht. Anschließend benötigt man nur noch die Abbruchbedingung.'' | ||
+ | |||
+ | int sum=1; for( '''-1-''' ){sum=sum+i;} [Summe der ungeraden Zahlen bis 100] | ||
+ | |||
+ | {{Lösung versteckt| | ||
+ | <pre>int sum=1; for(int i=0; i<=100; i+=2){sum=sum+i;} </pre> | ||
+ | }} | ||
+ | |||
+ | int i=100; {while( '''-2-''' ){System.out.print(i); '''-3-''' ;} [Countdown 100 bis 0] | ||
+ | |||
+ | {{Lösung versteckt| | ||
+ | <pre>int i=100; {while(i>=0){System.out.print(i);i--;}</pre> | ||
+ | }} | ||
+ | |||
+ | int sum=0; for( '''-4-''' ){sum=sum+(int)(Math.random()*10+1);} [Aufsummieren von 10 Zufallszahlen zwischen 1 und 10] | ||
+ | |||
+ | {{Lösung versteckt| | ||
+ | <pre>int sum=0; for(int i=1; i<=10; i++){sum=sum+(int)(Math.random()*10+1);}</pre> | ||
+ | }} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | '''Aufgabe3''' | ||
+ | |||
+ | Warum sind folgende Schleifen problematisch? | ||
+ | |||
+ | ''<u>Hinweis zur Bearbeitung:</u> Das Hauptproblem, das bei Schleifen auftreten kann, ist, dass sie entweder gar nicht durchlaufen werden oder ewig.'' | ||
+ | |||
+ | '''1)''' | ||
+ | |||
+ | int i=100; while(i<=1){ System.out.println("Ich bin noch nicht fertig!"); i++;} | ||
+ | |||
+ | {{Lösung versteckt| | ||
+ | <pre>Die Schleife wird gar nicht ausgeführt, da die Abbruchbedingung bereits bei der ersten Überprüfung greift (100<=1 ergibt ''false'').</pre> | ||
+ | }} | ||
+ | |||
+ | '''2)''' | ||
+ | |||
+ | for(int i=2; i<=20; i+=2){ if (i%2==0){i=i-2;};} | ||
+ | |||
+ | {{Lösung versteckt| | ||
+ | <pre>Wir haben hier eine Endlosschleife: i ist immer durch 2 teilbar und so wird die Anweisung im Rumpf (i=i-2) immer ausgeführt. Diese Anweisung neutralisiert aber die Änderung der Zählvariable (i+=2).</pre> | ||
+ | }} | ||
+ | |||
+ | '''3)''' | ||
+ | |||
+ | int i=1; while(i<=10){System.out.println("Einer geht noch ...");} | ||
+ | |||
+ | {{Lösung versteckt| | ||
+ | <pre>Auch hier haben wir eine Endlosschleife: Da die Schleife keine Inkrementierung (''i++'') besitzt, läuft sie ewig, weil sie die Abbruchbedingung nie erreichen kann.</pre> | ||
}} | }} |
Aktuelle Version vom 2. Dezember 2014, 07:43 Uhr
Aufgabe 1
Was tun folgende Schleifen?
Hinweis zur Bearbeitung: Die ersten Werte für i einsetzen bis ein Muster erkennbar wird.
1)
int y=0; for(int i=3; i<=300; i+=3){y=y+i;}
Berechnet das Produkt der ersten hundert Vielfachen von 3.
2)
int i=1; while(true){ if (i>=1){System.out.print(i); i++;}; if (i<=2){System.out.print(i);i--;};}
Gibt in Endlosschleife die Folge 1212121212.... aus.
3)
for(int i=1; i<=500; i++){ if (i%9==0){System.out.println(i);};}
Gibt die Vielfachen von 9 bis 500 aus.
4)
int i=1; while(i<=3){ if (i%3==0){System.out.print("hoihoihoi ");} else {System.out.print("zickezacke ");};i++;};
Gibt 3x hintereinander "zickezacke zickezacke hoihoihoi " aus.
Aufgabe 2
Ergänze folgende Ausdrücke:
Hinweis zur Bearbeitung: Am besten die zu erwartende Zahlenreihe aufschreiben und dann überlegen, mit welchen Werten von i und welchen Inkrementierungen (z.B. i++, i-=2 etc.) man sie erreicht. Anschließend benötigt man nur noch die Abbruchbedingung.
int sum=1; for( -1- ){sum=sum+i;} [Summe der ungeraden Zahlen bis 100]
int sum=1; for(int i=0; i<=100; i+=2){sum=sum+i;}
int i=100; {while( -2- ){System.out.print(i); -3- ;} [Countdown 100 bis 0]
int i=100; {while(i>=0){System.out.print(i);i--;}
int sum=0; for( -4- ){sum=sum+(int)(Math.random()*10+1);} [Aufsummieren von 10 Zufallszahlen zwischen 1 und 10]
int sum=0; for(int i=1; i<=10; i++){sum=sum+(int)(Math.random()*10+1);}
Aufgabe3
Warum sind folgende Schleifen problematisch?
Hinweis zur Bearbeitung: Das Hauptproblem, das bei Schleifen auftreten kann, ist, dass sie entweder gar nicht durchlaufen werden oder ewig.
1)
int i=100; while(i<=1){ System.out.println("Ich bin noch nicht fertig!"); i++;}
Die Schleife wird gar nicht ausgeführt, da die Abbruchbedingung bereits bei der ersten Überprüfung greift (100<=1 ergibt ''false'').
2)
for(int i=2; i<=20; i+=2){ if (i%2==0){i=i-2;};}
Wir haben hier eine Endlosschleife: i ist immer durch 2 teilbar und so wird die Anweisung im Rumpf (i=i-2) immer ausgeführt. Diese Anweisung neutralisiert aber die Änderung der Zählvariable (i+=2).
3)
int i=1; while(i<=10){System.out.println("Einer geht noch ...");}
Auch hier haben wir eine Endlosschleife: Da die Schleife keine Inkrementierung (''i++'') besitzt, läuft sie ewig, weil sie die Abbruchbedingung nie erreichen kann.