Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| lehrkraefte:blc:informatik:ffprg1-2024:random [2024/03/01 09:37] – created Ivo Blöchliger | lehrkraefte:blc:informatik:ffprg1-2024:random [2024/04/05 11:10] (current) – [Anleitung] Ivo Blöchliger | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| + | ====== Zufallszahlen ====== | ||
| + | Die JavaScript-Funktion '' | ||
| + | |||
| + | Damit lassen sich aus ganzzahlige Zufallszahlen generieren (Funktion und Name sind der entsprechenden Python-Funktion nachempfunden): | ||
| + | <code javascript> | ||
| + | // Liefert eine ganzzahlige Zufallszahl von 0 bis n-1 | ||
| + | function randRange(n) { | ||
| + | return Math.floor(Math.random()*n)); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== Buchstaben in Wörtern vertauschen ===== | ||
| + | Es ist Ienhn wahrscheinlich bkeannt, dsas man Ttxee imemr ncoh flüsisg lseen knan, wnen zewi Buchstaebn innrehalb eenis Wtros vertaushct wreden. Irhe Aufgbae bhsteet nun dairn, ein Prmgraom zu progarmmieren, | ||
| + | |||
| + | |||
| + | ==== Anleitung ==== | ||
| + | Sie werden 5 Funktionen schreiben, die jeweils Teilaufgaben erfüllen. Testen Sie jede Funktion ausführlich, | ||
| + | |||
| + | <WRAP todo> | ||
| + | Schreiben Sie eine Funktion '' | ||
| + | |||
| + | <hidden Lösungsvorschlag> | ||
| + | <code javascript> | ||
| + | // Ganzzahlige Zufallszahl von a bis und mit b | ||
| + | function randIn(a,b) { | ||
| + | return Math.floor(Math.random()*(b-a+1))+a; | ||
| + | } | ||
| + | // Test-Code | ||
| + | for (let i=0; i<20; i++) { | ||
| + | console.log(randIn(11, | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | Schreiben Sie eine Funktion '' | ||
| + | |||
| + | Z.B. soll '' | ||
| + | |||
| + | Verwenden Sie dafür die String-Methode [[https:// | ||
| + | |||
| + | <hidden Lösungsvorschlag> | ||
| + | <code javascript> | ||
| + | function vertauschen(wort, | ||
| + | if (a==b) return wort; // Nix tun, wenn a==b | ||
| + | if (a>b) { // Vertauchen, so dass immer a<b | ||
| + | let h = a; | ||
| + | a = b; | ||
| + | b = h; | ||
| + | } | ||
| + | return wort.substring(0, | ||
| + | } | ||
| + | // Test-Code | ||
| + | console.log(`vertauschen(' | ||
| + | console.log(`vertauschen(' | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | Schreiben Sie eine Funktion '' | ||
| + | |||
| + | Diese Funktion soll die Funktionen '' | ||
| + | |||
| + | <hidden Lösungsvorschlag> | ||
| + | <code javascript> | ||
| + | // Verwürfelt zwei Buchstaben eines Worts | ||
| + | function wortwuerfeln(wort) { | ||
| + | if (wort.length< | ||
| + | return wort; // Nichts zu tun, Funktion beenden. | ||
| + | } | ||
| + | // Hier ist kein else nötig, weil die Funktion im if beendet wird. => Gute Praxis! | ||
| + | let n = wort.length-2; | ||
| + | let position1 = randIn(1, | ||
| + | let position2 = randIn(1, | ||
| + | while (position1==position2) { // Würfeln bis verschieden... | ||
| + | position2 = randIn(1, | ||
| + | } | ||
| + | return vertauschen(wort, | ||
| + | } | ||
| + | // Test Code | ||
| + | console.log(wortwuerfeln(" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | Schreiben Sie eine Funktion '' | ||
| + | |||
| + | |||
| + | <hidden Lösungsvorschlag> | ||
| + | <code javascript> | ||
| + | function wortzeichen(z) { | ||
| + | return z.toLowerCase()> | ||
| + | } | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | <WRAP todo> | ||
| + | Die letzte Funktion '' | ||
| + | Die Funktion soll wie folgt vorgehen: | ||
| + | |||
| + | * Man initialisiert das Resultat auf den Leerstring. | ||
| + | * Man hängt dem Text ein Nicht-Wortzeichen hinzu (z.B. den Leerschlag). | ||
| + | * Man merkt sich die letzte Position '' | ||
| + | * Man geht jede Position im Text durch: | ||
| + | * Ist es kein Wortzeichen, | ||
| + | * Das Wort zwischen '' | ||
| + | * Das aktuelle Zeichen dem Resultat anfügen | ||
| + | * Man entfernt das letzte Zeichen vom Resultat und gibt es zurück. | ||
| + | <hidden Lösungsvorschlag> | ||
| + | <code javascript> | ||
| + | // Ganzzahlige Zufallszahl von a bis und mit b | ||
| + | function randIn(a,b) { | ||
| + | return Math.floor(Math.random()*(b-a+1))+a; | ||
| + | } | ||
| + | |||
| + | function vertauschen(wort, | ||
| + | if (a>b) { | ||
| + | let h = a; | ||
| + | a = b; | ||
| + | b = h; | ||
| + | } | ||
| + | return wort.substring(0, | ||
| + | } | ||
| + | |||
| + | // Verwürfelt zwei Buchstaben eines Worts | ||
| + | function wortwuerfeln(wort) { | ||
| + | if (wort.length< | ||
| + | return wort; // Nichts zu tun, Funktion beenden. | ||
| + | } | ||
| + | // Hier ist kein else nötig, weil die Funktion im if beendet wird. => Gute Praxis! | ||
| + | let n = wort.length-2; | ||
| + | let position1 = randIn(1, | ||
| + | let position2 = randIn(1, | ||
| + | while (position1==position2) { // Würfeln bis verschieden... | ||
| + | position2 = randIn(1, | ||
| + | } | ||
| + | return vertauschen(wort, | ||
| + | } | ||
| + | |||
| + | function wortzeichen(z) { | ||
| + | return z.toLowerCase()> | ||
| + | } | ||
| + | |||
| + | |||
| + | |||
| + | function textwuerfeln(text) { | ||
| + | let neu = ""; | ||
| + | lastOut = -1; // | ||
| + | text+=" | ||
| + | for (let p=0; p< | ||
| + | if (!wortzeichen(text[p])) { // Kein Wortbuchstabe? | ||
| + | neu += wortwuerfeln(text.substring(lastOut+1, | ||
| + | neu += text[p]; | ||
| + | lastOut=p; | ||
| + | } | ||
| + | } | ||
| + | // Leerschlag wieder entfernen | ||
| + | return neu.substring(0, | ||
| + | } | ||
| + | // Aufruf: | ||
| + | console.log(textwuerfeln(" | ||
| + | </ | ||
| + | </ | ||
| + | </ | ||
| + | |||