lehrkraefte:blc:informatik:ffprg1-2024:aufgaben-ohne-funktionen

Einstiegsaufgaben einfach

Schreiben Sie ein Programm, das alle zweistelligen Vielfachen von 7 ausgibt. Versuchen Sie, das Programm ohne if zu schreiben.

Lösungsvorschlag

Lösungsvorschlag

for (let i=14; i<100; i+=7) {
   console.log(i);
}

Schreiben Sie ein Programm, das eine Multiplikationstabelle ausgibt. Bauen Sie eine Zeile erst als String-Variable auf, bevor Sie diese mit console.log ausgeben.

Damit alle Zahlen schön untereinander dargestellt werden, können Sie die String-Methode padStart verwenden:

vier = String(6*7).padStart(4,' '); // Liefert den 4 Zeichen langen String "  42", von vorne mit Leerschlägen ge-«padded»

Vorgeschlagene Ausgabe:

   1   2   3   4   5   6   7   8   9  10
   2   4   6   8  10  12  14  16  18  20
   3   6   9  12  15  18  21  24  27  30
   4   8  12  16  20  24  28  32  36  40
   5  10  15  20  25  30  35  40  45  50
   6  12  18  24  30  36  42  48  54  60
   7  14  21  28  35  42  49  56  63  70
   8  16  24  32  40  48  56  64  72  80
   9  18  27  36  45  54  63  72  81  90
  10  20  30  40  50  60  70  80  90 100

Lösungsvorschlag

Lösungsvorschlag

for (let a=1; a<=10; a++) {
  let zeile = "";
  for (let b=1; b<=10; b++) {
    zeile += String(a*b).padStart(4, ' ')
  }
  console.log(zeile);
}

Einstiegsaufgaben (Teiler und Primzahlen)

Diese Aufgaben produzieren die Ausgabe nur auf die Konsole.

Diese Aufgabe ist eine klassische Aufgabe bei Einstellungsgesprächen, um jene auszusortieren, die gar keinen Plan von Programmieren haben.

Geben Sie die Zahlen von 1 bis 100 aus, aber

  • bei Zahlen, die durch 3 teilbar sind, geben Sie foo anstatt der Zahl aus,
  • bei Zahlen, die durch 5 teilbar sind, geben Sie bar anstatt der Zahl aus,
  • bei Zahlen, die sowohl durch 3 wie auch durch 5 teilbar sind, geben Sie foo bar aus.

Hinweis: Teilbarkeit von a durch b kann wie folgt überprüft werden:

if (a % b == 0) { // Wenn die Ganzzahldivision a/b den Rest 0 hat
   console.log(`${a} ist durch ${b} teilbar`);
} else {
   console.log(`${a} ist nicht durch ${b} ohne Rest teilbar`);
}

Lösungsvorschlag

Lösungsvorschlag

for (let i=1; i<=100; i++) {
    if (i%15==0) {
        console.log('foo bar');
    } else if (i%3==0) {
        console.log('foo');
    } else if (i%5==0) {
        console.log('bar');
    } else {
        console.log(i);
    }
}

Für die Zahlen von 1 bis 100 produzieren Sie eine Liste mit allen Teilern, z.B. wie folgt:

1 hat die Teiler 1
2 hat die Teiler 1 2
3 hat die Teiler 1 3
4 hat die Teiler 1 2 4
5 hat die Teiler 1 5
6 hat die Teiler 1 2 3 6
7 hat die Teiler 1 7
8 hat die Teiler 1 2 4 8
9 hat die Teiler 1 3 9
...
93 hat die Teiler 1 3 31 93
94 hat die Teiler 1 2 47 94
95 hat die Teiler 1 5 19 95
96 hat die Teiler 1 2 3 4 6 8 12 16 24 32 48 96
97 hat die Teiler 1 97
98 hat die Teiler 1 2 7 14 49 98
99 hat die Teiler 1 3 9 11 33 99
100 hat die Teiler 1 2 4 5 10 20 25 50 100

Lösungsvorschlag

Lösungsvorschlag

for (let i=1; i<=100; i++) {
    let zeile = `${i} hat die Teiler`;
    for (let t=1; t<=i; t++) {
        if (i%t==0) {
            zeile += ` ${t}`;   // Kurzform für zeile = zeile + ...
        }
    }
    console.log(zeile);
}

Geben Sie alle Primzahlen bis 1000 als Liste aus:

let primes = [];  // Leere Liste
// Primzahlen suchen, wenn eine Primzahl p bestimmt worden ist:
   primes.push(p)
//
console.log(primes);

Lösungsvorschlag

Lösungsvorschlag

let primes = [];
for (let i=2; i<1000; i++) {
    let isPrime = true;  // Erst mal annehmen i sei prim.
    let t=2;
    while (t*t<=i) {  // Es reicht bis zur Wurzel zu suchen (Teiler kommen immer in Paaren)
        if (i % t == 0) {
            isPrime = false;
            break;  // While-Schlaufe sofort verlassen (es wird nicht mehr weniger prim)
        }
        t++;
    }
    if (isPrime) {  // Kein Teiler gefunden?
        primes.push(i);
    }
}
console.log(primes);

Einstiegsaufgaben mit Strings

Geben Sie folgende Weihnachstbäume in aufsteigender Grösse aus:

   ^
  / \
 /   \
/     \
-------
  |||
  |||
 
 
 
    ^
   / \
  /   \
 /     \
/       \
---------
   |||
   |||
 
......
 
         ^
        / \
       /   \
      /     \
     /       \
    /         \
   /           \
  /             \
 /               \
/                 \
-------------------
        |||
        |||

Hinweis: Der Backslash \ und ein Zeilenumbruch kann mit wie folgt einem String hinzugefügt werden:

zeile = "Das ist ein Backslash: \\  Und ein Anführungszeichen \" und ein Zeilenumbruch\nneue Zeile\nund noch eine."

Lösungsvorschlag

Lösungsvorschlag

for (let i=3; i<10; i++) {
    let zeile = ""
    for (let j=0; j<i; j++) {
        zeile += " ";
    }
    console.log(zeile+"^");    
    for (let n=0; n<i; n++) {
        zeile = "";
        for (let j=0; j<i-n-1; j++) {
            zeile += " ";
        }
        zeile += "/";
        for (let j=0; j<1+n*2; j++) {
            zeile += " ";
        }
        console.log(zeile+"\\");
    }
    zeile = "";
    for (let j=0; j<i*2+1; j++) {
        zeile+="-";
    }
    console.log(zeile);
    zeile = "";
    for (let j=0; j<i-1; j++) {
        zeile+=" ";
    }
    zeile+="|||";
    for (let j=0; j<2; j++) {
        console.log(zeile);
    }
    console.log("\n\n");
}
  • lehrkraefte/blc/informatik/ffprg1-2024/aufgaben-ohne-funktionen.txt
  • Last modified: 2024/03/08 13:27
  • by Ivo Blöchliger