# Übungen Schleifen ## Zusammenfassung ```js for(var i = 1; i <= 8; i=i + 1) { alert(i) } ``` ## Aufgaben ### Zahlen * Schreibe ein Programm, das die ersten 10 Zahlen nacheinander anzeigt. ### Dreierreihe * Schreibe ein Programm, das die Zahlen der Dreierreihe bis 42 anzeigt. ### Beliebige Reihe * Schreibe ein Programm, das den Besucher nach einer Zahl fragt und dann diese Reihe anzeigt (z.B. Dreierreihe für Eingabe 3). Es soll die ersten 10 Zahlen der Reihe anzeigen. ### Treppe Die Aufgabe ist auf [dieser Seite](exercise03_stairs.html) beschrieben. ![stairs](images/exercise03_stairs.png) ### Quadrat im Quadrat Die Aufgabe zu den geschachtelten Quadraten sind auf [dieser Seite](exercise03_quadrat.html). ![quadrat](images/exercise03_quadrat_a.png) ![quadrat](images/exercise03_quadrat_b.png) ### FizzBuzz * Schreibe ein Programm, das durch die ersten 20 ganzen Zahlen durchläuft und jeweils * "Fizz" anzeigt, wenn die Zahl durch 3 teilbar ist * "Buzz" anzeigt, wenn die Zahl durch 5 teilbar ist * "FizzBuzz" anzeigt, wenn die Zahl durch 3 und 5 teilbar ist * Die Zahl selber anzeigt, wenn sie weder durch 3 noch durch 5 teilbar ist Um zu testen, ob Zahl `a` durch die Zahl `b` teilbar ist, kannst du den Modulo-Operator `%` verwenden. Dieser Operator berechnet den Rest einer Division. `5 % 3` ergibt beispielsweise 2, weil der Rest von `5 / 3` gerade 2 ist. Wenn der Rest von `a % b` gerade 0 ist, ist a durch b teilbar (z.B. `8 % 4` gibt 0). Das heisst, wenn `if(x % 3 == 0)`, dann ist `x` durch 3 teilbar. ### Summe * Schreibe ein Programm, das die Summe der ersten 20 Zahlen berechnet (1 + 2 + ... + 20). Zur Kontrolle: das Resultat sollte 210 sein. ### Summe 2 * Verändere das vordere Programm so, dass du die Anzahl Zahlen, die addiert werden, über ein Prompt-Fenster eingeben kannst. ### Rückwärts * Schreibe ein Programm, das von 10 aus rückwärts bis Null zählt und jeweils die Zahlen anzeigt. ### Summe der Quadrate vs. Quadrat der Summe * Die Summe der Quadrate der ersten 10 Zahlen ist 385 (1^2 + 2^2 + ... + 10^2). Das Quadrat der Summe der ersten 10 natürlichen Zahlen ist 3025 (1 + 2 + ... + 10)^2. Finde diese beiden Zahlen für die ersten 100 natürlichen Zahlen. **Tipp**: Wenn du nicht 100 `alert()`-Fenster nacheinander öffnen willst, kannst du statt `alert(x)` auch `console.log(x)` verwenden. Der Wert, den du an `console.log()` übergibst, wird dann in der Konsole statt in einer Nachrichtenbox angezeigt. ### Summe 3 Schreibe ein Programm, das dich nach einer Zahl fragt und dich dann so viele male mit einem Prompt-Fenster nach weiteren Zahlen fragt und danach die Summe davon ausrechnet. Beispiel: Eingabe von 3 fragt nach 3 Zahlen und rechnet deren Summe aus. ### Multiplikationstabelle Schreibe ein Programm, das in der Konsole eine Multiplikationstabelle anzeigt. ### Spirale Die Aufgabe ist auf [dieser Seite](exercise03_helix.html). ![helix](images/exercise03_helix.png) ## Lösungen ### Zahlen ```js for(var i = 1; i <= 10; i = i + 1) { alert(i) } ``` ### Dreierreihe ```js for(var i = 0; i <= 42; i = i + 3) { alert(i) } ``` ### Beliebige Reihe ```js var reihe = Number(prompt("Welche Reihe?")) for(var i = 0; i <= 10*reihe; i = i + reihe) { alert(i) } ``` ### Treppe ```js for(var i = 1; i <= 15; i = i + 1) { up() right() } ``` ### Quadrat im Quadrat a.) ```js for(var i = 1; i <= 10; i = i + 1) { var breite = i * 20 right(breite) up(breite) left(breite) down(breite) } ``` b.) ```js for(var i = 1; i <= 10; i = i + 1) { var breite = i * 20 goTo( -breite / 2, -breite / 2) right(breite) up(breite) left(breite) down(breite) } ``` ### FizzBuzz ```js for(var i = 1; i <= 20; i = i + 1) { if(i % 3 == 0 && i % 5 == 0) { alert("FizzBuzz") } else if(i % 3 == 0) { alert("Fizz") } else if(i % 5 == 0) { alert("Buzz") } else { alert(i) } } ``` ### Summe ```js var summe = 0 for(var i = 1; i <= 20; i = i + 1) { summe = summe + i } alert(summe) ``` ### Summe 2 ```js var ende = Number(prompt("Anzahl?")) var summe = 0 for(var i = 1; i <= ende; i = i + 1) { summe = summe + i } alert(summe) ``` ### Rückwärts ```js for(var i = 10; i >= 0; i = i - 1) { alert(i) } ``` ### Summe der Quadrate vs. Quadrat der Summe ```js var summe = 0 for(var i = 0; i < 100; i = i + 1) { summe = summe + i} alert("Quadrat der Summe: " + (summe * summe)) var summe2 = 0 for(var i = 0; i < 100; i = i + 1) { summe2 = summe2 + (i * i); // entspricht i^2 } alert("Summe der Quadrate: " + summe2)``` ### Summe 3 ```js var anzahl = prompt("Anzahl Zahlen?") var summe = 0 for(var i = 1; i <= anzahl; i = i + 1) { var zahl = prompt('Zahl?') summe = summe + zahl } alert(summe) ``` ### Multiplikationstabelle ```js for(var i = 1; i <= 10; i = i + 1) { var zeile = '' for(var j = 1; j <= 10; j = j + 1) { zeile = zeile + ' ' + i * j } console.log(zeile) } ``` ### Spirale ```js for(var i = 1; i <= 20; i = i + 1) { var breite = i * 10 if (i % 2 == 0){ up(breite) left(breite) } else { down(breite) right(breite) } } ```