Bücher online kostenlos Kostenlos Online Lesen
Die Programmiersprache Ruby (German Edition)

Die Programmiersprache Ruby (German Edition)

Titel: Die Programmiersprache Ruby (German Edition) Kostenlos Bücher Online Lesen
Autoren: David Flanagan , Yukihiro Matsumoto
Vom Netzwerk:
unbekannte Zellen zurückgegeben. Diese
# Methode modifiziert das übergebene Puzzle nicht. Beachten Sie, dass
# diese Methode nicht in der Lage ist, ein zu wenig beschränktes Puzzle
# zu bemerken.
def Sudoku.solve(puzzle)
    # Private Kopie des Puzzles anfertigen, die wir modifizieren können
    puzzle = puzzle.dup

    # Diese Methode modifiziert das übergebene Puzzle, aber sorgt dafür,
    # dass es gültig bleibt. Sie gibt eine Zeile, eine Spalte und eine
    # Menge möglicher Werte für diese Zelle zurück. Beachten Sie die
    # parallele Wertzuweisung dieser Rückgabewerte an drei Variablen.
    r,c,p = scan(puzzle)
    # Das gelöste Puzzle zurückgeben, falls wir es mit Logik gelöst haben
    return puzzle if r == nil

    # Andernfalls jeden der Werte in p für die Zelle [r,c] durchprobieren.
    # Da wir aus einer Menge möglicher Werte wählen, belässt das Raten
    # das Puzzle in einem gültigen Zustand. Das Raten führt entweder zu
    # einer Lösung oder zu einem unmöglichen Puzzle. Wir wissen, dass wir
    # ein unmögliches Puzzle haben, wenn ein rekursiver Aufruf von scan
    # eine Ausnahme auslöst. Wenn das geschieht, müssen wir einen anderen
    # Wert ausprobieren, oder erneut eine Ausnahme auslösen, wenn wir
    # alle erhaltenen Optionen durchprobiert haben.
    p.each do |guess| # Für jeden Wert in der Menge möglicher Werte
     puzzle[r,c] = guess # den Wert erraten

     begin
     # Dieser rekursive Aufruf ruft scan() erneut auf, um Logik auf das
     # veränderte Spielfeld anzuwenden, und errät dann eine andere
     # Zelle, wenn nötig. Zur Erinnerung: solve() liefert entweder eine
     # gültige Lösung zurück oder löst eine Ausnahme aus.
     return solve(puzzle) # Bei Rückkehr einfach den Wert zurückgeben
     rescue Impossible
     next # Bei Ausnahme den nächsten Wert ausprobieren
     end
    end

    # Wenn wir hier ankommen, hat keiner unserer Rateversuche funktioniert,
    # weil wir irgendwann früher falsch geraten haben müssen.
    raise Impossible
end
end
    Listing 1.1 Ein Sudoku-Löser in Ruby
    Listing 1.1 ist 368 Zeilen lang. Da das Beispiel für dieses Einführungskapitel geschrieben wurde, enthält es besonders ausführliche Kommentare. Ohne Kommentare und Leerzeilen bleiben nur 129 Codezeilen übrig, was für einen objektorientierten Sudoku-Löser, der nicht auf einem einfachen Brute-Force-Algorithmus basiert, ziemlich gut ist. Wir hoffen, dass dieses Beispiel die Leistungs- und Ausdrucksfähigkeit von Ruby demonstriert.
    ----
    [ 2 ] Die Meinungen darüber, wofür »ri« steht, gehen auseinander. Es wurden schon »Ruby Index«, »Ruby Information« und »Ruby Interactive« vorgeschlagen.
    [ 3 ] Zum Zeitpunkt dieser Übersetzung ist die direkte URL für dieses Tutorial http://www.ruby-lang.org/de/documentation/quickstart/ .
    [ 4 ] Wenn Sie den »Teste Ruby!«- oder »Try Ruby!«-Link nicht auf der Ruby-Homepage finden, versuchen Sie diese URL: http://tryruby.hobix.com/ .
    [ 5 ] Sudoku ist ein Logikpuzzle, bestehend aus einem 9 ∞ 9-Gitter mit Zahlen und leeren Feldern. Die Aufgabe besteht darin, jedes Feld so mit einer der Ziffern 1 bis 9 zu füllen, dass keine Zeile, keine Spalte und kein 3 ∞ 3-Teilgitter dieselbe Ziffer zweimal enthält. Sudoku ist in Japan schon seit längerem populär, gewann aber erst 2004 bis 2005 eine plötzliche Bekanntheit im Rest der Welt. Wenn Sie mit Sudoku nicht vertraut sind, lesen Sie den Wikipedia-Eintrag ( http://de.wikipedia.org/wiki/Sudoku ) und probieren Sie ein Onlinepuzzle aus ( http://websudoku.com/ ).

Kapitel 2. Die Struktur und Ausführung von Ruby-Programmen
    Dieses Kapitel erläutert die Struktur von Ruby-Programmen. Es beginnt mit der lexikalischen Struktur; das umfasst Token und die Zeichen, aus denen sie bestehen. Als Nächstes behandelt es die syntaktische Struktur eines Ruby-Programms und erläutert, wie Ausdrücke, Kontrollstrukturen, Methoden, Klassen und so weiter als Abfolge von Token geschrieben werden. Zum Schluss beschreibt das Kapitel Dateien mit Ruby-Code und erläutert, wie Ruby-Programme über mehrere Dateien verteilt werden können und wie der Ruby-Interpreter eine Datei mit Ruby-Code ausführt.

2.1 Lexikalische Struktur
    Der Ruby-Interpreter parst ein Programm als Sequenz von Token . Zu den Token gehören Kommentare, Literale, Zeichensetzung, Bezeichner und Schlüsselwörter. Dieser Abschnitt stellt die verschiedenen Token vor und enthält zudem wichtige Informationen über die Zeichen, aus denen die Token bestehen sowie über den Whitespace, der die Token voneinander

Weitere Kostenlose Bücher