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. ====== Einstiegsaufgaben einfach ====== <WRAP todo> Schreiben Sie ein Programm, das alle zweistelligen Vielfachen von 7 ausgibt. Versuchen Sie, das Programm ohne ''if'' zu schreiben. <hidden Lösungsvorschlag> <code javascript> for (let i=14; i<100; i+=7) { console.log(i); } </code> </hidden> </WRAP> <WRAP todo> 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 [[https://www.w3schools.com/jsref/jsref_string_padstart.asp|padStart]] verwenden: <code javascript> vier = String(6*7).padStart(4,' '); // Liefert den 4 Zeichen langen String " 42", von vorne mit Leerschlägen ge-«padded» </code> Vorgeschlagene Ausgabe: <code txt> 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 </code> <hidden Lösungsvorschlag> <code javascript> 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); } </code> </hidden> </WRAP> ====== Einstiegsaufgaben (Teiler und Primzahlen) ====== Diese Aufgaben produzieren die Ausgabe nur auf die Konsole. ===== foo bar ===== <WRAP todo> 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: <code javascript> 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`); } </code> </WRAP> <hidden Lösungsvorschlag> <code javascript> 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); } } </code> </hidden> ===== Teiler ===== <WRAP todo> Für die Zahlen von 1 bis 100 produzieren Sie eine Liste mit allen Teilern, z.B. wie folgt: <code txt> 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 </code> </WRAP> <hidden Lösungsvorschlag> <code javascript> 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); } </code> </hidden> ===== Primzahlen ===== <WRAP todo> Geben Sie alle Primzahlen bis 1000 als Liste aus: <code javascript> let primes = []; // Leere Liste // Primzahlen suchen, wenn eine Primzahl p bestimmt worden ist: primes.push(p) // console.log(primes); </code> </WRAP> <hidden Lösungsvorschlag> <code javascript> 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); </code> </hidden> ====== Einstiegsaufgaben mit Strings ====== ===== Tannenbäume ===== <WRAP todo> Geben Sie folgende Weihnachstbäume in aufsteigender Grösse aus: <code txt> ^ / \ / \ / \ ------- ||| ||| ^ / \ / \ / \ / \ --------- ||| ||| ...... ^ / \ / \ / \ / \ / \ / \ / \ / \ / \ ------------------- ||| ||| </code> Hinweis: Der Backslash ''\'' und ein Zeilenumbruch kann mit wie folgt einem String hinzugefügt werden: <code javascript> zeile = "Das ist ein Backslash: \\ Und ein Anführungszeichen \" und ein Zeilenumbruch\nneue Zeile\nund noch eine." </code> </WRAP> <hidden Lösungsvorschlag> <code javascript> 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"); } </code> </hidden> lehrkraefte/blc/informatik/ffprg1-2024/aufgaben-ohne-funktionen.txt Last modified: 2024/03/08 13:27by Ivo Blöchliger