Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== Wiederholungen ====== Wiederholter Code steht zwischen geschweiften Klammern. Die geöffnete Klammer wird normaleweise hinter dem öffnenden Statement geschrieben. Die schliessende Klammer steht normalerweise alleine, senkrecht unter dem Amfang der öffnenden Zeile. ===== for ===== Die for-Schleife wird normalerweise verwendet, wenn die Anzahl Wiederholungen bekannt ist. ==== klassisch ==== <code javascript> for (let i=start; i<ende; i++) { // zu // wiederholender // code } </code> Etwas allgemeiner: <code javascript> for (INITIALISIERUNG; BEDINGUNG; POSTINCREMENT) { // ... } </code> * INITIALISIERUNG wird **einmal vor** der Schleife ausgeführt. Normalerweise wird hier eine **Laufvariable** initialisiert. * BEDINGUNG wird **jedesmal vor** der Schleife geprüft. So lange diese wahr ist, wird wiederholt. * POSTINCREMENT wird **nach jedem Durchlauf** ausgeführt. Normalerweise wird hier die Laufvariable erhöht. Konkretes Beispiel: <code javascript> for (let i=0; i<10; i++) { console.log(`i=${i} im Quadrat ist ${i*i}`); } </code> Bei Zeichenketten in «Backticks» (rückwärtsgerichtete Apotstroph) können Ausdrücke zwischen ''${...}$'' geschrieben werden, die ausgewertet und an dessen Stelle geschrieben werden. ==== for of: Einträge eines Arrays durchgehen ==== Arrays (Listen) werden zwischen eckigen Klammern geschrieben, die Element durch Kommas getrennt. <code javascript> let primzahlen = [2,3,7,11,13,17,19,23]; for (let prim of liste) { console.log(prim); } </code> Folgender Code macht das gleiche (auf klassische Art und Weise), wobei ''liste.length'' die Anzahl Elemente $n$ des Array ergibt. Die Elemente sind von $0$ bis $n-1$ indiziert und werden <code javascript> let primzahlen = [2,3,7,11,13,17,19,23]; for (let i=0; i<liste.length; i++) { let prim=liste[i]; // Zugriff auf das Element mit Index i console.log(prim); } </code> ==== for in: Schlüssel eines Objekts durchgehen ==== Ein Object ist eine «Liste», die aber nicht über Zahlen, sondern über Schlüssel (Strings) indiziert wird. <code javascript> let koordinaten = {'x': 5, 'y':2, 'bla': "BLAH"}; for (let key in koordinaten) { console.log(`zum key ${key} gehört der Eintrag ${koordinaten[key]}`); } </code> Folgender Code macht das Gleiche auf klassische Art und Weise: <code javascript> let koordinaten = {'x': 5, 'y':2, 'bla': "BLAH"}; let keys = Objects.keys(koordinaten); for (let i=0; i<keys.length; i++) { let key = keys[i]; console.log(`zum key ${key} gehört der Eintrag ${koordinaten[key]}`); } </code> ===== while ===== Wiederholen, so lange etwas wahr ist: <code javascript> let heu = "Wo zum Teufel ist der a versteckt?"; nadel = "a"; let position=0; // Starten bei Index 0 (erster Buchstabe) while (position<heu.length && heu[position]!=nadel) { // Noch nicht am Ende und Buchstabe an position ist nicht die Nadel? position++; } if (position<heu.length) { console.log(`Nadel im Heuhaufen an Position ${position}`); } else { console.log("Keine Nadel in diesem Heuhaufen"); } </code> Welche String-Funktion hätte man anstatt dem obigen Code verwenden können? [[https://www.w3schools.com/jsref/jsref_indexof.asp|Hinweis]] <hidden Lösung> <code javascript> let heu = "Wo zum Teufel ist der a versteckt?"; nadel = "a"; let position=heu.indexOf(nadel); // Liefert position oder -1, wenn nicht vorhanden if (position>=0) { console.log(`Nadel im Heuhaufen an Position ${position}`); } else { console.log("Keine Nadel in diesem Heuhaufen"); } </code> </hidden> lehrkraefte/blc/informatik/ffprg1-2024/loops.txt Last modified: 2024/02/17 06:18by Ivo Blöchliger