Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:ffprg1-2024:functions [2024/02/29 14:51] – created Ivo Blöchliger | lehrkraefte:blc:informatik:ffprg1-2024:functions [2024/03/08 12:29] (current) – [Aufgaben] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Funktionen ====== | ||
| + | Funktionen sind Unterprogramme, | ||
| + | |||
| + | Das erlaubt es, ein Programm in kleine, übersichtliche Einheiten zu zerlegen. Das macht den Code einfacher und zugleich flexibler (und wiederverwendbarer). | ||
| + | |||
| + | Eine Funktion hat (normalerweise) einen **Namen**, eine Liste von **Argumenten** (d.h. Werte, die übergeben werden) und meistens ein Resultat, das mit **return** zurückgegeben wird. | ||
| + | |||
| + | Beispiel: | ||
| + | <code javascript> | ||
| + | // Berechnet die Summe der ersten n Zahlen | ||
| + | function summe(n) { // n ist ebenfalls eine lokale Variable und existiert nur hier (und unabhängig von anderen Variablen, die auch n heissen könnten). | ||
| + | let s = 0; // Das eine lokale Variable und existiert nur hier (und unabhängig von anderen Variablen, die auch s heissen könnten). | ||
| + | for (let i=1; i<=n; i++) { | ||
| + | s += i; | ||
| + | } | ||
| + | return s; // Resultat zurückgeben und Funktion sofort beenden. | ||
| + | console.log(" | ||
| + | } | ||
| + | |||
| + | console.log(`Die Summe von 1 bis 100 ist ${summe(100)}`) | ||
| + | console.log(`Die Summe von 1 bis 1000 ist ${summe(1000)}`) | ||
| + | |||
| + | </ | ||
| + | |||
| + | ==== Lokale Variablen ==== | ||
| + | Damit sich verschiedene Programmteile nicht gegenseitig «dreinpfuschen», | ||
| + | |||
| + | Das setzt aber auch voraus, dass alle nötigen Daten als Argumente übergeben werden. Die Argumente sind dann ebenfalls lokale Variablen. | ||
| + | |||
| + | //Hinweis: Werden Arrays oder Objects als Argumente übergeben, erhält man keine Kopie, sondern eine Referenz darauf. Wird der Inhalt der Arrays oder des Objects verändert, ändert man das originale Arrays (bzw. Object)// | ||
| + | |||
| + | <code javascript> | ||
| + | function sum(a,b) { | ||
| + | console.log(` | ||
| + | let c = a; | ||
| + | a = a+b; | ||
| + | console.log(` | ||
| + | return a; | ||
| + | // natürlicher wäre es, direkt return a+b; zu schreiben... | ||
| + | } | ||
| + | |||
| + | function bla(a,b) { | ||
| + | console.log(` | ||
| + | a = sum(a,b); | ||
| + | console.log(` | ||
| + | b = sum(a,b); | ||
| + | console.log(` | ||
| + | return b; | ||
| + | } | ||
| + | |||
| + | let a = 4; | ||
| + | let b = 5; | ||
| + | console.log(`main start: a=${a}, b=${b}`); | ||
| + | let c = bla(a,b); | ||
| + | console.log(`main ende : a=${a}, b=${b} c=${c}`); | ||
| + | </ | ||
| + | |||
| + | Ausgabe: | ||
| + | <code txt> | ||
| + | main start: a=4, b=5 | ||
| + | bla start : a=4, b=5 | ||
| + | sum start: | ||
| + | sum ende : c=4, a=9, b=5 | ||
| + | bla middle: | ||
| + | sum start: | ||
| + | sum ende : c=9, a=14, b=5 | ||
| + | bla ende : a=9, b=14 | ||
| + | main ende : a=4, b=5 c=14 | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== Aufgaben ===== | ||
| + | <WRAP todo> | ||
| + | Programmieren Sie eine Funktion '' | ||
| + | |||
| + | <code javascript> | ||
| + | console.log(stringMul(" | ||
| + | console.log(stringMul(" | ||
| + | </ | ||
| + | |||
| + | |||
| + | <hidden Lösungsvorschlag> | ||
| + | <code javascript> | ||
| + | function stringMul(str, | ||
| + | let res = ""; | ||
| + | for (let i=0; i<n; i++) { | ||
| + | res += str; | ||
| + | } | ||
| + | return res; | ||
| + | } | ||
| + | |||
| + | console.log(stringMul(" | ||
| + | console.log(stringMul(" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | Schreiben Sie eine Funktion '' | ||
| + | |||
| + | Hinweise: | ||
| + | * Machen Sie ein Object, das als Keys die Buchstaben und als Wert die Ersetzung hat. | ||
| + | * Sie können die | ||
| + | * [[https:// | ||
| + | * Buchstabe für Buchstabe durch den String gehen (um mehrmalige Ersetzungen zu vermeiden). | ||
| + | * Sie könnten auch mehrere Ersetzungen als Array definieren und jeweils eine daraus zufällig auswählen. | ||
| + | |||
| + | <hidden Lösungsvorschlag (einfach)> | ||
| + | <code javascript> | ||
| + | function toLeet(str) { | ||
| + | str = str.replace(" | ||
| + | str = str.replace(" | ||
| + | str = str.replace(" | ||
| + | // etc... | ||
| + | | ||
| + | } | ||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | <hidden Lösungsvorschlag | ||
| + | <code javascript> | ||
| + | function toLeet(str) { | ||
| + | let reps = {a: | ||
| + | b: | ||
| + | c: | ||
| + | d: | ||
| + | e: | ||
| + | f: | ||
| + | g: | ||
| + | h: | ||
| + | i: | ||
| + | j: | ||
| + | k: | ||
| + | l: | ||
| + | m: | ||
| + | n: | ||
| + | o: | ||
| + | p: | ||
| + | q: | ||
| + | r: | ||
| + | s: | ||
| + | t: | ||
| + | u: | ||
| + | v: | ||
| + | w: | ||
| + | x: | ||
| + | y: | ||
| + | z: | ||
| + | }; | ||
| + | str = str.toLowerCase(); | ||
| + | let neu = ""; | ||
| + | for (let p=0; p< | ||
| + | if (str[p] in reps) { | ||
| + | let rep = reps[str[p]]; | ||
| + | neu += rep[Math.floor(Math.random()*rep.length)]; | ||
| + | } else { | ||
| + | neu += str[p]; | ||
| + | } | ||
| + | } | ||
| + | return neu; | ||
| + | } | ||
| + | |||
| + | let text = "The brown dog jumps over the lazy fox"; | ||
| + | console.log(text) | ||
| + | console.log(toLeet(text)) | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||