lehrkraefte:blc:informatik:ffprg1-2024:loops

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.

Die for-Schleife wird normalerweise verwendet, wenn die Anzahl Wiederholungen bekannt ist.

for (let i=start; i<ende; i++) {
   // zu
   // wiederholender
   // code
}

Etwas allgemeiner:

for (INITIALISIERUNG; BEDINGUNG; POSTINCREMENT) {
   // ...
}
  • 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:

for (let i=0; i<10; i++) {
  console.log(`i=${i} im Quadrat ist ${i*i}`);
}

Bei Zeichenketten in «Backticks» (rückwärtsgerichtete Apotstroph) können Ausdrücke zwischen ${…}$ geschrieben werden, die ausgewertet und an dessen Stelle geschrieben werden.

Arrays (Listen) werden zwischen eckigen Klammern geschrieben, die Element durch Kommas getrennt.

let primzahlen = [2,3,7,11,13,17,19,23];
for (let prim of liste) {
   console.log(prim);
}

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

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);
}

Ein Object ist eine «Liste», die aber nicht über Zahlen, sondern über Schlüssel (Strings) indiziert wird.

let koordinaten = {'x': 5, 'y':2, 'bla': "BLAH"};
for (let key in koordinaten) {
   console.log(`zum key ${key} gehört der Eintrag ${koordinaten[key]}`);
}

Folgender Code macht das Gleiche auf klassische Art und Weise:

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]}`);
}

Wiederholen, so lange etwas wahr ist:

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");
}

Welche String-Funktion hätte man anstatt dem obigen Code verwenden können?

Hinweis

Lösung

Lösung

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");
}
  • lehrkraefte/blc/informatik/ffprg1-2024/loops.txt
  • Last modified: 2024/02/17 07:18
  • by Ivo Blöchliger