LbP Einführungsbeispiele
Aus ProgrammingWiki
Kommentierte Einführungsbeispiele
...
Übungsaufgaben
- Erproben Sie das Nachfolger-Prädikat succ/2 für natürliche Zahlen.
- 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.
- Gesucht ist fact/2, mit fact(N,F), wobei F=N!.
- Gesucht ist minimum/3, mit minimum(N1,N2,M), wobei M=min(N1,N2).
- Gesucht ist fib/2, mit fib(N,F), wobei F=Fibonaccizahl(N).
- Gesucht ist summe/3, mit summe(X,Y,Z), wobei Z=X+Y.
- Gesucht ist produkt/3, mit produkt(X,Y,Z), wobei Z=X*Y.
- Gesucht ist ein Prädikat ggt/3, mit ggt(X,Y,T), wobei T ist grösster gemeinsamer Teiler von X und Y.
- 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.
- 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)).
M\N 0 1 2 3 4 0 1 2 3 4 5 1 2 3 4 5 6 2 3 5 7 9 11 3 5 13 29 61 125 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.