lehrkraefte:blc:informatik:ffprg1-2024:loops

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
lehrkraefte:blc:informatik:ffprg1-2024:loops [2024/02/17 06:10] – [for of: Einträge eines Arrays durchgehen] Ivo Blöchligerlehrkraefte:blc:informatik:ffprg1-2024:loops [2024/02/17 06:18] (current) – [while] Ivo Blöchliger
Line 1: Line 1:
 +====== 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>
 +