LbP Einführungsbeispiele

Aus ProgrammingWiki
Archivierte Version vom 2011-01-10T19:42:00+00:00. Aktuelle Version

Kommentierte Einführungsbeispiele

...

Übungsaufgaben

  1. Erproben Sie das Nachfolger-Prädikat succ/2 für natürliche Zahlen.
  2. Schreiben Sie ein Prädikat pred/2, mit pred(X,Y), wobei Y der Vorgänger von X ist. Benutzen Sie dabei nur das Prädikat succ/2.
  3. Gesucht ist fact/2, mit fact(N,F), wobei F=N!.
  4. Gesucht ist minimum/3, mit minimum(N1,N2,M), wobei M=min(N1,N2).
  5. Gesucht ist fib/2, mit fib(N,F), wobei F=Fibonaccizahl(N).
  6. Gesucht ist summe/3, mit summe(X,Y,Z), wobei Z=X+Y.
  7. Gesucht ist produkt/3, mit produkt(X,Y,Z), wobei Z=X*Y.
  8. Gesucht ist ein Prädikat ggt/3, mit ggt(X,Y,T), wobei T ist grösster gemeinsamer Teiler von X und Y.
  9. Definieren Sie das Prädikat even/1, mit even(N), wenn N gerade, unter Verwendung der Infixoperators mod/2. Definieren Sie anschliessend odd/1, mit odd(N), wenn N ungerade, unter Verwendung von even/1 und unter Verwendung des Metaprädikats not/1.
  10. Gesucht ist ackermann/3, mit ackermann(M,N,Z), wobei Z=ackermann(M,N).
ackermann(0,N) = N + 1
ackermann(M,0) = ackermann(M-1,1).
ackermann(M,N) = ackermann(M-1, ackermann(M, N-1)).
{| border="1" cellpading="2" width="300"

|- bgcolor="lightgray" ! M\N !! 0 !! 1 !! 2 !! 3 !! 4 |- ! bgcolor="lightgray" | 0 || 1 || 2 || 3 || 4 || 5 |- ! bgcolor="lightgray" | 1 || 2 || 3 || 4 || 5 || 6 |- ! bgcolor="lightgray" | 2 || 3 || 5 || 7 || 9 || 11 |- ! bgcolor="lightgray" | 3 || 5 || 13 || 29 || 61 || 125 |- ! bgcolor="lightgray" | 4 || 13 || ? || ? || ? || ? |}

Lösungen zu den Übungsaufgaben

Mit dem succ -Prädikat kann man aber auch den Vorgänger einer Zahl bestimmen. Es gibt keine Festlegung darüber, Variable für die "Eingabe" (Argument) bzw. "Ausgabe" (Ergebnis) zuständig ist.