Du schreibst Funktionen, die je nach Wert etwas anderes tun: mit
if und else, mit Vergleichen und mit
and und or. Bis zu FizzBuzz, einer berühmten
Aufgabe aus Vorstellungsgesprächen.
Eine Funktion kann je nach Wert etwas anderes tun. Diese hier sagt, ob eine Temperatur zum Baden reicht:
def weather(degrees) if degrees >= 25 'Baden!' elsif degrees >= 15 'Spazieren' else 'Lesen' end end puts weather(28)
Ruby prüft die Bedingungen der Reihe nach und nimmt die erste, die stimmt.
Verglichen wird mit ==, !=, <, <=, > und >=; zwei Bedingungen
verbinden && (beide) und || (mindestens eine), ! dreht eine um. Ein
Vergleich ist selbst ein Wert, true oder false: degrees >= 25 kann
eine Funktion auch direkt zurückgeben.
def weather(degrees): if degrees >= 25: return 'Baden!' elif degrees >= 15: return 'Spazieren' else: return 'Lesen' print(weather(28))
Python prüft die Bedingungen der Reihe nach und nimmt die erste, die stimmt.
Verglichen wird mit ==, !=, <, <=, > und >=; zwei Bedingungen
verbinden and (beide) und or (mindestens eine), not dreht eine um.
Ein Vergleich ist selbst ein Wert, True oder False: degrees >= 25 kann
eine Funktion auch direkt zurückgeben.
function weather(degrees) { if (degrees >= 25) { return 'Baden!'; } else if (degrees >= 15) { return 'Spazieren'; } else { return 'Lesen'; } } console.log(weather(28));
JavaScript prüft die Bedingungen der Reihe nach und nimmt die erste, die
stimmt. Verglichen wird mit ===, !==, <, <=, > und >=; das
kürzere == gibt es auch, aber es hält '5' == 5 für wahr. Zwei Bedingungen
verbinden && (beide) und || (mindestens eine), ! dreht eine um. Ein
Vergleich ist selbst ein Wert, true oder false: degrees >= 25 kann eine
Funktion auch direkt zurückgeben.
Schreib eine Funktion even(n), die true zurückgibt, wenn eine Zahl gerade ist, sonst false: even(4) ergibt true, even(7) ergibt false. Ohne even? und odd?.
Eine gerade Zahl lässt bei der Division durch 2 keinen Rest. Den Rest liefert %.
Schreib eine Funktion even(n), die True zurückgibt, wenn eine Zahl gerade ist, sonst False: even(4) ergibt True, even(7) ergibt False.
Eine gerade Zahl lässt bei der Division durch 2 keinen Rest. Den Rest liefert %.
Schreib eine Funktion even(n), die true zurückgibt, wenn eine Zahl gerade ist, sonst false: even(4) ergibt true, even(7) ergibt false.
Eine gerade Zahl lässt bei der Division durch 2 keinen Rest. Den Rest liefert %. Verglichen wird in JavaScript mit ===.
Schreib eine Funktion max_of_two(a, b), die die größere der beiden Zahlen zurückgibt: max_of_two(3, 7) ergibt 7. Ohne max: mit if.
Schreib eine Funktion max_of_two(a, b), die die größere der beiden Zahlen zurückgibt: max_of_two(3, 7) ergibt 7. Ohne max: mit if.
Schreib eine Funktion maxOfTwo(a, b), die die größere der beiden Zahlen zurückgibt: maxOfTwo(3, 7) ergibt 7. Ohne Math.max: mit if.
Der Betrag einer Zahl ist ihr Abstand von 0: Er ist nie negativ. Schreib eine Funktion absolute(n): absolute(-5) ergibt 5, absolute(5) ergibt 5. Ohne abs.
Der Betrag einer Zahl ist ihr Abstand von 0: Er ist nie negativ. Schreib eine Funktion absolute(n): absolute(-5) ergibt 5, absolute(5) ergibt 5. Ohne abs.
Der Betrag einer Zahl ist ihr Abstand von 0: Er ist nie negativ. Schreib eine Funktion absolute(n): absolute(-5) ergibt 5, absolute(5) ergibt 5. Ohne Math.abs.
In Deutschland ist man mit 18 Jahren volljährig. Schreib eine Funktion adult(age), die true oder false zurückgibt: adult(30) ergibt true, adult(12) ergibt false.
In Deutschland ist man mit 18 Jahren volljährig. Schreib eine Funktion adult(age), die True oder False zurückgibt: adult(30) ergibt True, adult(12) ergibt False.
In Deutschland ist man mit 18 Jahren volljährig. Schreib eine Funktion adult(age), die true oder false zurückgibt: adult(30) ergibt true, adult(12) ergibt false.
Jetzt gibt es mehr als zwei Möglichkeiten. Schreib dir die Grenzen auf, bevor du programmierst, und prüf genau die Werte, die auf einer Grenze liegen.
Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, außer volle Jahrhunderte wie 1900. Davon sind wieder die ausgenommen, die durch 400 teilbar sind: 2000 war ein Schaltjahr. Schreib eine Funktion leap_year(year), die sagt, ob ein Jahr ein Schaltjahr ist.
Geh 1996, 1900 und 2000 von Hand durch: Welche Regel entscheidet jeweils?
Prüf von der speziellsten Regel zur allgemeinsten: erst 400, dann 100, dann 4.
Mit && und || geht es auch in einer Zeile: durch 4 teilbar und (nicht durch 100 teilbar oder durch 400 teilbar).
Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, außer volle Jahrhunderte wie 1900. Davon sind wieder die ausgenommen, die durch 400 teilbar sind: 2000 war ein Schaltjahr. Schreib eine Funktion leap_year(year), die sagt, ob ein Jahr ein Schaltjahr ist.
Geh 1996, 1900 und 2000 von Hand durch: Welche Regel entscheidet jeweils?
Prüf von der speziellsten Regel zur allgemeinsten: erst 400, dann 100, dann 4.
Mit and und or geht es auch in einer Zeile: durch 4 teilbar und (nicht durch 100 teilbar oder durch 400 teilbar).
Ein Jahr ist ein Schaltjahr, wenn es durch 4 teilbar ist, außer volle Jahrhunderte wie 1900. Davon sind wieder die ausgenommen, die durch 400 teilbar sind: 2000 war ein Schaltjahr. Schreib eine Funktion leapYear(year), die sagt, ob ein Jahr ein Schaltjahr ist.
Geh 1996, 1900 und 2000 von Hand durch: Welche Regel entscheidet jeweils?
Prüf von der speziellsten Regel zur allgemeinsten: erst 400, dann 100, dann 4.
Mit && und || geht es auch in einer Zeile: durch 4 teilbar und (nicht durch 100 teilbar oder durch 400 teilbar).
In einer Klassenarbeit gibt es höchstens 100 Punkte. Ab 92 Punkten gibt es eine 1, ab 81 eine 2, ab 67 eine 3, ab 50 eine 4, ab 30 eine 5, darunter eine 6. Schreib eine Funktion grade(points), die die Note zurückgibt: grade(85) ergibt 2.
Was ist grade(85), was grade(81), was grade(80)? Schreib die drei auf, bevor du programmierst.
if … elsif … else prüft der Reihe nach und nimmt die erste Bedingung, die stimmt. In welcher Reihenfolge müssen die Grenzen stehen?
In einer Klassenarbeit gibt es höchstens 100 Punkte. Ab 92 Punkten gibt es eine 1, ab 81 eine 2, ab 67 eine 3, ab 50 eine 4, ab 30 eine 5, darunter eine 6. Schreib eine Funktion grade(points), die die Note zurückgibt: grade(85) ergibt 2.
Was ist grade(85), was grade(81), was grade(80)? Schreib die drei auf, bevor du programmierst.
if … elif … else prüft der Reihe nach und nimmt die erste Bedingung, die stimmt. In welcher Reihenfolge müssen die Grenzen stehen?
In einer Klassenarbeit gibt es höchstens 100 Punkte. Ab 92 Punkten gibt es eine 1, ab 81 eine 2, ab 67 eine 3, ab 50 eine 4, ab 30 eine 5, darunter eine 6. Schreib eine Funktion grade(points), die die Note zurückgibt: grade(85) ergibt 2.
Was ist grade(85), was grade(81), was grade(80)? Schreib die drei auf, bevor du programmierst.
if … else if … else prüft der Reihe nach und nimmt die erste Bedingung, die stimmt. In welcher Reihenfolge müssen die Grenzen stehen?
Im Schwimmbad zahlen Kinder unter 6 Jahren nichts, Kinder und Jugendliche unter 18 zahlen 5 Euro, Seniorinnen und Senioren ab 65 zahlen 6 Euro, alle anderen 9 Euro. Schreib eine Funktion ticket_price(age): ticket_price(12) ergibt 5.
Zeichne einen Zahlenstrahl von 0 bis 100 und trag die Grenzen ein. Welche Bereiche gibt es?
Prüf die Bereiche von unten nach oben: unter 6, unter 18, dann ab 65.
Im Schwimmbad zahlen Kinder unter 6 Jahren nichts, Kinder und Jugendliche unter 18 zahlen 5 Euro, Seniorinnen und Senioren ab 65 zahlen 6 Euro, alle anderen 9 Euro. Schreib eine Funktion ticket_price(age): ticket_price(12) ergibt 5.
Zeichne einen Zahlenstrahl von 0 bis 100 und trag die Grenzen ein. Welche Bereiche gibt es?
Prüf die Bereiche von unten nach oben: unter 6, unter 18, dann ab 65.
Im Schwimmbad zahlen Kinder unter 6 Jahren nichts, Kinder und Jugendliche unter 18 zahlen 5 Euro, Seniorinnen und Senioren ab 65 zahlen 6 Euro, alle anderen 9 Euro. Schreib eine Funktion ticketPrice(age): ticketPrice(12) ergibt 5.
Zeichne einen Zahlenstrahl von 0 bis 100 und trag die Grenzen ein. Welche Bereiche gibt es?
Prüf die Bereiche von unten nach oben: unter 6, unter 18, dann ab 65.
Schreib eine Funktion max_of_three(a, b, c), die die größte von drei Zahlen zurückgibt: max_of_three(3, 1, 5) ergibt 5. Ohne max.
Probier deine Lösung von Hand mit 3, 1, 5, mit 1, 5, 3 und mit 5, 3, 1.
Ein Weg: Merk dir die größte bisher, fang mit a an, und vergleiche sie dann mit b und mit c.
Schreib eine Funktion max_of_three(a, b, c), die die größte von drei Zahlen zurückgibt: max_of_three(3, 1, 5) ergibt 5. Ohne max.
Probier deine Lösung von Hand mit 3, 1, 5, mit 1, 5, 3 und mit 5, 3, 1.
Ein Weg: Merk dir die größte bisher, fang mit a an, und vergleiche sie dann mit b und mit c.
Schreib eine Funktion maxOfThree(a, b, c), die die größte von drei Zahlen zurückgibt: maxOfThree(3, 1, 5) ergibt 5. Ohne Math.max.
Probier deine Lösung von Hand mit 3, 1, 5, mit 1, 5, 3 und mit 5, 3, 1.
Ein Weg: Merk dir die größte bisher, fang mit a an, und vergleiche sie dann mit b und mit c.
elsif, elif oder else if und
drück Ausführen.
Bei welchen Werten macht die Reihenfolge einen Unterschied, und bei welchen
nicht?
Ein englisches Zählspiel, und eine berühmte Aufgabe in Vorstellungsgesprächen für Programmierer: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist, sagt man »Fizz«, statt einer, die durch 5 teilbar ist, »Buzz«, und wenn sie durch beide teilbar ist, »FizzBuzz«. Schreib eine Funktion fizzbuzz(n), die zurückgibt, was man bei n sagt, als Text: fizzbuzz(9) ergibt 'Fizz', fizzbuzz(7) ergibt '7'.
Was sagt man bei 3, bei 5, bei 15 und bei 7? Welche Zahlen sind durch 3 und durch 5 teilbar?
Die Reihenfolge der Bedingungen entscheidet: Was durch 15 teilbar ist, ist auch durch 3 teilbar.
Ein englisches Zählspiel, und eine berühmte Aufgabe in Vorstellungsgesprächen für Programmierer: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist, sagt man »Fizz«, statt einer, die durch 5 teilbar ist, »Buzz«, und wenn sie durch beide teilbar ist, »FizzBuzz«. Schreib eine Funktion fizzbuzz(n), die zurückgibt, was man bei n sagt, als Text: fizzbuzz(9) ergibt 'Fizz', fizzbuzz(7) ergibt '7'.
Was sagt man bei 3, bei 5, bei 15 und bei 7? Welche Zahlen sind durch 3 und durch 5 teilbar?
Die Reihenfolge der Bedingungen entscheidet: Was durch 15 teilbar ist, ist auch durch 3 teilbar.
Ein englisches Zählspiel, und eine berühmte Aufgabe in Vorstellungsgesprächen für Programmierer: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist, sagt man »Fizz«, statt einer, die durch 5 teilbar ist, »Buzz«, und wenn sie durch beide teilbar ist, »FizzBuzz«. Schreib eine Funktion fizzbuzz(n), die zurückgibt, was man bei n sagt, als Text: fizzbuzz(9) ergibt 'Fizz', fizzbuzz(7) ergibt '7'.
Was sagt man bei 3, bei 5, bei 15 und bei 7? Welche Zahlen sind durch 3 und durch 5 teilbar?
Die Reihenfolge der Bedingungen entscheidet: Was durch 15 teilbar ist, ist auch durch 3 teilbar.
Aus drei Stäben der Längen a, b und c lässt sich nur dann ein Dreieck legen, wenn je zwei zusammen länger sind als der dritte. Schreib eine Funktion triangle(a, b, c), die 'keins' zurückgibt, wenn es nicht geht, sonst 'gleichseitig' (alle drei gleich lang), 'gleichschenklig' (zwei gleich lang) oder 'ungleichseitig'.
Lege die Beispiele im Kopf: 3, 4, 5 geht, 1, 2, 5 nicht. Was ist mit 1, 2, 3?
Erst prüfen, ob es überhaupt ein Dreieck ist (alle drei Paare), dann von gleichseitig zu ungleichseitig.
Ein Gerüst:
def triangle(a, b, c) return 'keins' if # hier: eine Bedingung für jedes Paar, mit || return 'gleichseitig' if # … # … end
Aus drei Stäben der Längen a, b und c lässt sich nur dann ein Dreieck legen, wenn je zwei zusammen länger sind als der dritte. Schreib eine Funktion triangle(a, b, c), die 'keins' zurückgibt, wenn es nicht geht, sonst 'gleichseitig' (alle drei gleich lang), 'gleichschenklig' (zwei gleich lang) oder 'ungleichseitig'.
Lege die Beispiele im Kopf: 3, 4, 5 geht, 1, 2, 5 nicht. Was ist mit 1, 2, 3?
Erst prüfen, ob es überhaupt ein Dreieck ist (alle drei Paare), dann von gleichseitig zu ungleichseitig.
Ein Gerüst:
def triangle(a, b, c): if ...: # eine Bedingung für jedes Paar, mit or return 'keins' if ...: return 'gleichseitig' # …
Aus drei Stäben der Längen a, b und c lässt sich nur dann ein Dreieck legen, wenn je zwei zusammen länger sind als der dritte. Schreib eine Funktion triangle(a, b, c), die 'keins' zurückgibt, wenn es nicht geht, sonst 'gleichseitig' (alle drei gleich lang), 'gleichschenklig' (zwei gleich lang) oder 'ungleichseitig'.
Lege die Beispiele im Kopf: 3, 4, 5 geht, 1, 2, 5 nicht. Was ist mit 1, 2, 3?
Erst prüfen, ob es überhaupt ein Dreieck ist (alle drei Paare), dann von gleichseitig zu ungleichseitig.
Ein Gerüst:
function triangle(a, b, c) { if (/* eine Bedingung für jedes Paar, mit || */) return 'keins'; if (/* … */) return 'gleichseitig'; // … }
Drei Seiten bilden ein rechtwinkliges Dreieck, wenn die Quadrate der beiden kürzeren zusammen das Quadrat der längsten ergeben (Pythagoras): 3² + 4² = 5². Schreib eine Funktion pythagorean(a, b, c), die das prüft, in welcher Reihenfolge die Seiten auch kommen.
Teste mit 5, 3, 4: Welche Seite ist hier die längste?
Entweder du prüfst alle drei Möglichkeiten, welche Seite die längste ist, mit ||, oder du sortierst die drei Seiten erst.
Drei Seiten bilden ein rechtwinkliges Dreieck, wenn die Quadrate der beiden kürzeren zusammen das Quadrat der längsten ergeben (Pythagoras): 3² + 4² = 5². Schreib eine Funktion pythagorean(a, b, c), die das prüft, in welcher Reihenfolge die Seiten auch kommen.
Teste mit 5, 3, 4: Welche Seite ist hier die längste?
Entweder du prüfst alle drei Möglichkeiten, welche Seite die längste ist, mit or, oder du sortierst die drei Seiten erst.
Drei Seiten bilden ein rechtwinkliges Dreieck, wenn die Quadrate der beiden kürzeren zusammen das Quadrat der längsten ergeben (Pythagoras): 3² + 4² = 5². Schreib eine Funktion pythagorean(a, b, c), die das prüft, in welcher Reihenfolge die Seiten auch kommen.
Teste mit 5, 3, 4: Welche Seite ist hier die längste?
Entweder du prüfst alle drei Möglichkeiten, welche Seite die längste ist, mit ||, oder du sortierst die drei Seiten erst.
Ein Extra für Schnelle: Die Seite ist ohne dieses Kapitel vollständig.
Zwei spielen Schere, Stein, Papier: Stein schlägt Schere, Schere schlägt Papier, Papier schlägt Stein. Schreib eine Funktion rock_paper_scissors(first, second), die 1 zurückgibt, wenn die erste Hand gewinnt, 2, wenn die zweite gewinnt, und 0 bei einem Unentschieden: rock_paper_scissors('Stein', 'Schere') ergibt 1. Geht es mit weniger als neun Fällen?
Wer gewinnt, hängt nur davon ab, welche Hand die andere schlägt. Eine Tabelle (ein Hash) { 'Stein' => 'Schere', … } sagt das für jede Hand.
Zwei spielen Schere, Stein, Papier: Stein schlägt Schere, Schere schlägt Papier, Papier schlägt Stein. Schreib eine Funktion rock_paper_scissors(first, second), die 1 zurückgibt, wenn die erste Hand gewinnt, 2, wenn die zweite gewinnt, und 0 bei einem Unentschieden: rock_paper_scissors('Stein', 'Schere') ergibt 1. Geht es mit weniger als neun Fällen?
Wer gewinnt, hängt nur davon ab, welche Hand die andere schlägt. Ein Dictionary {'Stein': 'Schere', …} sagt das für jede Hand.
Zwei spielen Schere, Stein, Papier: Stein schlägt Schere, Schere schlägt Papier, Papier schlägt Stein. Schreib eine Funktion rockPaperScissors(first, second), die 1 zurückgibt, wenn die erste Hand gewinnt, 2, wenn die zweite gewinnt, und 0 bei einem Unentschieden: rockPaperScissors('Stein', 'Schere') ergibt 1. Geht es mit weniger als neun Fällen?
Wer gewinnt, hängt nur davon ab, welche Hand die andere schlägt. Ein Objekt { Stein: 'Schere', … } sagt das für jede Hand.
Ein Zählspiel aus der Grundschule: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist oder eine 3 enthält, sagt man »Brot«. Bei 13 heißt es also »Brot«, obwohl 13 nicht durch 3 teilbar ist. Schreib eine Funktion bread(n), die zurückgibt, was man bei n sagt, als Text: bread(6) ergibt 'Brot', bread(31) ergibt 'Brot', bread(7) ergibt '7'.
Zwei Fragen: Ist n durch 3 teilbar? Steht in n eine 3? Wenn eine davon mit Ja beantwortet wird, heißt es »Brot«.
Ob eine Ziffer in einer Zahl steht, siehst du am Text der Zahl: n.to_s macht aus 13 den Text '13', und include? fragt, ob ein Text einen anderen enthält.
Ein Zählspiel aus der Grundschule: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist oder eine 3 enthält, sagt man »Brot«. Bei 13 heißt es also »Brot«, obwohl 13 nicht durch 3 teilbar ist. Schreib eine Funktion bread(n), die zurückgibt, was man bei n sagt, als Text: bread(6) ergibt 'Brot', bread(31) ergibt 'Brot', bread(7) ergibt '7'.
Zwei Fragen: Ist n durch 3 teilbar? Steht in n eine 3? Wenn eine davon mit Ja beantwortet wird, heißt es »Brot«.
Ob eine Ziffer in einer Zahl steht, siehst du am Text der Zahl: str(n) macht aus 13 den Text '13', und '3' in text fragt, ob der Text eine 3 enthält.
Ein Zählspiel aus der Grundschule: Man zählt reihum, aber statt einer Zahl, die durch 3 teilbar ist oder eine 3 enthält, sagt man »Brot«. Bei 13 heißt es also »Brot«, obwohl 13 nicht durch 3 teilbar ist. Schreib eine Funktion bread(n), die zurückgibt, was man bei n sagt, als Text: bread(6) ergibt 'Brot', bread(31) ergibt 'Brot', bread(7) ergibt '7'.
Zwei Fragen: Ist n durch 3 teilbar? Steht in n eine 3? Wenn eine davon mit Ja beantwortet wird, heißt es »Brot«.
Ob eine Ziffer in einer Zahl steht, siehst du am Text der Zahl: String(n) macht aus 13 den Text '13', und includes fragt, ob ein Text einen anderen enthält.
Weiter geht es mit Wiederholungen: Funktionen, die etwas viele Male tun.