Lernzielkontrolle Info10 - 2: Unterschied zwischen den Versionen

Aus ComeniusWiki
Wechseln zu: Navigation, Suche
 
(10 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 2: Zeile 2:
  
 
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=1; for(int i=3; i<=300; i+=3){y=y*i;}''
+
''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 29: Zeile 31:
 
'''4)'''
 
'''4)'''
  
''int i=1; while(i>=9){ if (i%3==0){System.out.print("hoihoihoi ")} else {System.out.print("zickezacke ");};
+
''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.
 
Gibt 3x hintereinander "''zickezacke zickezacke hoihoihoi ''" aus.
 
}}
 
}}
 +
 +
  
  
Zeile 40: Zeile 44:
 
Ergänze folgende Ausdrücke:
 
Ergänze folgende Ausdrücke:
  
int sum=0; for('''-1-'''){sum=sum+i;} [Summe der ungeraden Zahlen bis 100]
+
''<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|
 
{{Lösung versteckt|
<pre>int sum=0; for('''int i=0; i<=100; i+=2'''){sum=sum+i;} </pre>
+
<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]
+
int i=100; {while( '''-2-''' ){System.out.print(i); '''-3-''' ;} [Countdown 100 bis 0]
  
 
{{Lösung versteckt|
 
{{Lösung versteckt|
<pre>int i=100; {while('''i>=0'''){System.out.print(i);'''i--''';}</pre>
+
<pre>int i=100; {while(i>=0){System.out.print(i);i--;}</pre>
 
}}
 
}}
  
int sum=0; for('''-4-'''){sum=sum+(int) Math.random()*10;} [Aufsummieren von 10 Zufallszahlen zwischen 1 und 10]
+
int sum=0; for( '''-4-''' ){sum=sum+(int)(Math.random()*10+1);} [Aufsummieren von 10 Zufallszahlen zwischen 1 und 10]
  
 
{{Lösung versteckt|
 
{{Lösung versteckt|
<pre>int sum=0; for('''int i=1; i<=10; i++'''){sum=sum+(int) Math.random()*10;}</pre>
+
<pre>int sum=0; for(int i=1; i<=10; i++){sum=sum+(int)(Math.random()*10+1);}</pre>
 
}}
 
}}
 +
 +
  
  
Zeile 63: Zeile 71:
  
 
Warum sind folgende Schleifen problematisch?
 
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)'''
 
'''1)'''
Zeile 69: Zeile 79:
  
 
{{Lösung versteckt|
 
{{Lösung versteckt|
Die Schleife wird gar nicht ausgeführt, da die Abbruchbedingung bereits bei der ersten Überprüfung greift (100<=1 ergibt ''false'').
+
<pre>Die Schleife wird gar nicht ausgeführt, da die Abbruchbedingung bereits bei der ersten Überprüfung greift (100<=1 ergibt ''false'').</pre>
 
}}
 
}}
  
Zeile 77: Zeile 87:
  
 
{{Lösung versteckt|
 
{{Lösung versteckt|
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>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>
 
}}
 
}}
  
Zeile 85: Zeile 95:
  
 
{{Lösung versteckt|
 
{{Lösung versteckt|
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>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.