Informatik Ausgaben alert JavaScript?
Hallo Leute.
hier geht es um die Ausgaben.
die Lösungen: 0 1 2 9
aber ich verstehe einfach nicht wie man darauf kommt. Vorallem der Spring von 2 auf 9
3 Antworten
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Geh einfach die Durchgänge durch und setz das jeweilige i ein:
Erster Durchgang: i = 0
alert([0, 1, -1, 2, -2, -3, 3][0]) -> 0
Zweiter Durchgang: i = 2 (i wurde um 2 erhöht. Einmal durch das i++ innen, einmal durch das i++ beim for.)
alert([2, 3, 1, 4, 0, -1, 5][2]) -> 1
Dritter Durchgang: i = 4:
alert([4, 5, 3, 6, 2, 1, 7][4]) -> 2
Vierter Durchgang: i = 6:
alert([6, 7, 5, 8, 4, 3, 9][6]) -> 9
Checkst du's jetzt?
(Du musst nicht jedesmal alle Ergebnisse ausrechnen - Du kannst einfach schauen, welcher Index ausgegeben werden soll (z.B. Index 6 beim letzten), und dann nur das Ergebnis für diesen Index ausrechnen (6+3 = 9). Siehe Dick markierte Zahlen)
![](https://images.gutefrage.net/media/default/user/0_nmmslarge.png?v=1438863662000)
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
das i++ vom Schleifenkopf (for(..) ) wird erst am Ende jedes Durchlaufs ausgeführt.
Heißt i startet mit 0, dann wird das gemacht was in der Schleife steht (unter anderem i um 1 erhöht, aber erst nach der ausgabe), und dann nachdem das ausgeführt wurde wird das i++ vom schleifenkopf ausgeführt.
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Schau dir an wie eine For-Schleife funktioniert, dann verstehst du's.
Ich formulier das ganze mal mit einer gleichbedeutenden While-Schleife, dann verstehst du's vlt:
for( int i = 0; i < 7; i++ ) {
alert([...][i++]);
}
ist das selbe wie:
int i = 0;
while ( i < 7 ) {
alert([...][i++]);
i++; //Das i++ vom Schleifenkopf wird an der Stelle gemacht
}
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
Macht nichts, wenn Du da nicht drauf kommst.
Das ist eine reine Knobelaufgabe.
Als Programmierung ist das übelster Schmutz, weil es, wie Du gerade siehst, kaum nachzuvollziehen ist.
Duchlauf 1: i = 0
Duchlauf 2: i = 2
Duchlauf 2: i = 4
Duchlauf 2: i = 6 -> alert[6] ist i+3 also 9
![](https://images.gutefrage.net/media/default/user/0_nmmslarge.png?v=1438863662000)
so sind leider unsere prüfungen aufgebaut..dh die aufgabe besteht GENAU darin herauszufinden was ausgegeben wird. nun weis ich durch die lösungen was ausgegeben wird, kann dies aber nicht nachvollziehen
![](https://images.gutefrage.net/media/default/user/8_nmmslarge.png?v=1551279448000)
![](https://images.gutefrage.net/media/user/Gegsoft/1698275389428_nmmslarge__11_4_130_130_946afb1dea55546aea9a07c0e3a03a48.jpg?v=1698275389000)
Im alert Statement darf nicht i++ stehen, weil das ja schon im for Statement steht.
![](https://images.gutefrage.net/media/user/MrAmazing2/1562539605664_nmmslarge__63_0_466_466_da6195808c107c57ce2a8b233a2bcf4f.jpg?v=1562539606000)
Doch darf es. Dadurch wird i halt doppelt erhöht, ist nichts verbotenes...
![](https://images.gutefrage.net/media/default/user/0_nmmslarge.png?v=1438863662000)
die aufgabe ist so vorgegeben. der quellcode stammt also nicht von mir..
es wird also nicht schon bei der ersten i++ in for erhöht, sondern erst beim zweiten durchlauf?