Lupuz.de: Artikel-Portal / Magazin

Zurück   Postpla.net - die Forum Community > PC, Internet und Technik > Coder's Area

swi-prolog - kann mir da wer helfen?

Anzeigen:

Thema geschlossen
 
Themen-Optionen Thema durchsuchen
sALDIx
Alt 15.01.2004, 23:22   #1
Standard swi-prolog - kann mir da wer helfen?

hyhy!

wir haben in der schule die aufgabe bekommen nen bibliotheksprogramm in prolog zu realisieren!

ich bin soweit "fertig" ich habe zwar hier und da noch paar sache ndie ich noch machen will, abe rnicht bevor das problem gelöst ist!

also hier mal der quell code des programmes:
Code:
% Autor: Thomas
% EMail: thomas@saldix.de
% Datum: 14.01.2004
% Datei: programm.pl
% Zusaetzliche Datei: datensaetze.pl

%--begin: start
  start:-
    begruessung,
    daten_laden,
    menue.
%--end: start

%--begin: begruessung
  begruessung:-
    writeln('Herzlich Willkommen zur Bibliotheksverwaltung!'),nl.
%--end: begruessung

%--begin: daten laden
  daten_laden:-
    consult('datensaetze.pl').
%--end: daten laden

%--begin: menue
  menue:-
    nl,writeln('------ Main Menue------'),
    writeln('Katalog................(1)'),
    writeln('Leserdatei*************(2)'),
    writeln('Ausleihe / Rueckgabe...(3)'),
    writeln('Ende*******************(0)'),nl,
    write('Ihre Wahl:'),
    get_char(Ch),skip(10),
    ausfuehren(Ch),
    Ch \='0',!,menue.
%--end: menue

%--begin: katalog
  ausfuehren('1'):-
    katalog.
  
%--begin: katalog - menue
  katalog:-
    write('------ Katalog Menue ------'),nl,
    writeln('Katalog Anzeigen.(1)'),
    writeln('Buch hinzufuegen*(2)'),
    writeln('Buch loeschen....(3)'),
    writeln('Menue************(0)'),
    write('Ihre Wahl:'),
    get_char(Ch3),skip(10),
    katalog(Ch3),
    Ch3 \='0',!,katalog.
  katalog.
%--end: katalog - menue

  katalog('1'):-
    write('------ Anzeige Katalog ------'),nl,
    katalog(Titel,Autor,Jahr,Sig),
    write('Titel: '),write(Titel),nl,
    write('Autor: '),write(Autor),nl,
    write('Erscheinungsjahr: '), write(Jahr),nl,
    write('Signatur: '),write(Sig),nl,nl,fail.
  katalog('1').
  
  katalog('2'):-
    write('------ Buch hinzufuegen ------'),nl,
    writeln('Buchtitel?'),
    lese_string(Titel),nl,
    writeln('Autor?'),
    lese_string(Autor),nl,
    writeln('Erscheinungsjahr?'),
    lese_string(Jahr),nl,
    writeln('Buchsignaturr?'),
    lese_string(Sig),nl,
    assertz(katalog(Titel,Autor,Jahr,Sig)),speichern,nl.
   katalog('2').
   
  katalog('3'):-
    buch_loeschen, speichern.
    
  buch_loeschen:-
    write('------ Buch loeschen ------'),nl,
    writeln('Buchtitel?'), lese_string(Titel),nl,
    writeln('Buchsignatur?'), lese_string(Sig),nl,
    retract(katalog(Titel,_,_,Sig)),fail.
  buch_loeschen.
  
%--end katalog

%--begin: leserdatei
  ausfuehren('2'):-
    leserdatei.
  
%--begin: katalog - menue
  leserdatei:-
    write('------ Leserdatei Menue ------'),nl,
    writeln('Lesedatei Anzeigen.(1)'),
    writeln('Leser hinzufuegen**(2)'),
    writeln('Leser loeschen.....(3)'),
    writeln('Menue**************(0)'),
    write('Ihre Wahl:'),
    get_char(Ch4),skip(10),
    leserdatei(Ch4),
    Ch4 \='0',!,leserdatei.
  leserdatei.
%--end: katalog - menue

  leserdatei('1'):-
    write('------ Lerserdatei ------'),nl,
    leserdatei(Lesernummer,Name,Vorname),
    write('Lesernummer: '),write(Lesernummer),nl,
    write('Nachname: '),write(Name),nl,
    write('Vorname: '),write(Vorname),nl,nl,fail.
  leserdatei('1').

  leserdatei('2'):-
    writeln('------ Leser hinzufuegen ------'),nl,
    writeln('Lesernummer?'), lese_string(Lesernummer),nl,
    writeln('Nachname?'), lese_string(Name),nl,
    writeln('Vorname?'), lese_string(Vorname),nl,
    assertz(leserdatei(Lesernummer,Name,Vorname)),speichern,nl.

  leserdatei('3'):-
  leser_loeschen, speichern.
  
  leser_loeschen:-
    writeln('------ Leser loeschen ------'),nl,
    writeln('Lesernummer?'), lese_string(Lesernummer),nl,
    writeln('Nachname?'), lese_string(Name),nl,
    writeln('Vorname?'), lese_string(Vorname),nl,
    retract(leserdatei(Lesernummer,Name,Vorname)),fail.
  leser_loeschen.

%--end: leserdatei

%--begin: ausleihe
  ausfuehren('3'):-
    ausleihen.
  
%--begin: ausleihe - menue
  ausleihen:-
    write('------ Ausleihe / Rueckgabe Menue ------'),nl,
    writeln('Ausgeliehen.(1)'),
    writeln('Eingabe*****(2)'),
    writeln('Loeschen....(3)'),
    writeln('Menue*******(0)'),
    write('Ihre Wahl:'),
    get_char(Ch2),skip(10),
    ausleihen(Ch2),
    Ch2 \='0',!,ausleihen.
  ausleihen.
%--end: ausleihe - menue

  ausleihen('1'):-
    write('------ Anzeige Ausgeliehen ------'),nl,
    ausleihe(Sig,Lesernummer,Rueckgabedatum),
    write('Signatur: '),write(Sig),nl,
    write('Lesernummer: '),write(Lesernummer),nl,
    write('Rueckgabedatum: '),write(Rueckgabedatum),nl,nl,fail.
  ausleihen('1').
  
  ausleihen('2'):-
    write('------ Eingabe Ausleihen ------'),nl,
    writeln('Buchsignatur?'),
    lese_string(Sig),nl,
    writeln('Lesernummer?'),
    lese_string(Lesernummer),nl,
    writeln('Rueckgabedatum?'),
    lese_string(Rueckgabedatum),nl,
    assertz(ausleihe(Sig,Lesernummer,Rueckgabedatum)),speichern,nl.

  ausleihen('3'):-
    rueckgabe, speichern.
  rueckgabe:-
    write('------ Rueckgabe ------'),nl,
    writeln('Buchsignatur?'), lese_string(Sig),nl,
    writeln('Lersernummer?'), lese_string(Lesernummer),nl,
    retract(ausleihe(Sig,Lesernummer,_)),fail.
  rueckgabe.
%--end: ausleihe

%-----------------------------------------------------------------------------

%--begin: speichern
  speichern:-
    writeln('Daten werden nun gepeichert....'),
    tell('datensaetze.pl'),
     listing(katalog),
     listing(leserdatei),
     listing(ausleihe),told,
     writeln('Daten wurden gespeichert.....').
     
%--end: speihcern
  lese_string(E):-
    readln([E|_], _, _, " 0123456789",uppercase), !.
  lese_string('').
mit der regel speichern, speicher man halt die die sachen in die datei datensaetze.pl ab! aber er hat da noch unendlcih viele sachen hinein!

hier der code von der datensaetze.pl:
Code:

katalog :-
        write('------ Katalog Menue ------'),
        nl,
        writeln('Katalog Anzeigen.(1)'),
        writeln('Buch hinzufuegen*(2)'),
        writeln('Buch loeschen....(3)'),
        writeln('Menue************(0)'),
        write('Ihre Wahl:'),
        get_char(A),
        skip(10),
        katalog(A),
        A\='0', !,
        katalog.
katalog.


katalog('1') :-
        write('------ Anzeige Katalog ------'),
        nl,
        katalog(A, B, C, D),
        write('Titel: '),
        write(A),
        nl,
        write('Autor: '),
        write(B),
        nl,
        write('Erscheinungsjahr: '),
        write(C),
        nl,
        write('Signatur: '),
        write(D),
        nl,
        nl,
        fail.
katalog('1').
katalog('2') :-
        write('------ Buch hinzufuegen ------'),
        nl,
        writeln('Buchtitel?'),
        lese_string(A),
        nl,
        writeln('Autor?'),
        lese_string(B),
        nl,
        writeln('Erscheinungsjahr?'),
        lese_string(C),
        nl,
        writeln('Buchsignaturr?'),
        lese_string(D),
        nl,
        assertz(katalog(A, B, C, D)),
        nl.
katalog('2').
katalog('3') :-
        buch_loeschen.

:- dynamic katalog/4.

katalog(buch1, ich1, '1901', sig1).
katalog(buch2, ich2, '1902', sig2).
katalog(buch3, ich3, '1903', sig3).
katalog(ww, ww, ww, ww).


leserdatei :-
        write('------ Leserdatei Menue ------'),
        nl,
        writeln('Lesedatei Anzeigen.(1)'),
        writeln('Leser hinzufuegen**(2)'),
        writeln('Leser loeschen.....(3)'),
        writeln('Menue**************(0)'),
        write('Ihre Wahl:'),
        get_char(A),
        skip(10),
        leserdatei(A),
        A\='0', !,
        leserdatei.
leserdatei.


leserdatei('1') :-
        write('------ Lerserdatei ------'),
        nl,
        leserdatei(A, B, C),
        write('Lesernummer: '),
        write(A),
        nl,
        write('Nachname: '),
        write(B),
        nl,
        write('Vorname: '),
        write(C),
        nl,
        nl,
        fail.
leserdatei('1').
leserdatei('2') :-
        writeln('------ Leser hinzufuegen ------'),
        nl,
        writeln('Lesernummer?'),
        lese_string(A),
        nl,
        writeln('Nachname?'),
        lese_string(B),
        nl,
        writeln('Vorname?'),
        lese_string(C),
        nl,
        assertz(leserdatei(A, B, C)),
        nl.
leserdatei('3') :-
        leser_loeschen.

:- dynamic leserdatei/3.

leserdatei(lnum1, name1, vorname1).
leserdatei(lnum2, name2, vorname2).
leserdatei(lnum3, name3, vorname3).

:- dynamic ausleihe/3.

ausleihe(sig1, lnum1, '1.1.1904').
ausleihe(sig2, lnum2, '2.2.1904').
das einziegste was eigendlci hdrin stehen sollte ist:
Code:
:- dynamic katalog/4.

katalog(buch1, ich1, '1901', sig1).
katalog(buch2, ich2, '1902', sig2).
katalog(buch3, ich3, '1903', sig3).
katalog(ww, ww, ww, ww).

:- dynamic leserdatei/3.

leserdatei(lnum1, name1, vorname1).
leserdatei(lnum2, name2, vorname2).
leserdatei(lnum3, name3, vorname3).

:- dynamic ausleihe/3.

ausleihe(sig1, lnum1, '1.1.1904').
ausleihe(sig2, lnum2, '2.2.1904').
was ja an der ganzen sache am koriosisten ist das er vor ":- dynamic katalog/4." und vor ":- dynamic leserdatei/3" den ganen rotz schreibt, aber nicht vor ":- dynamic ausleihe/3." obwohl das speichern überhaupt nicht anders gelöst wurde!

weiß da einer rat?

EDIT: die datein angefügt!
Angehängte Dateien
Dateityp: zip prolog.zip (2,1 KB, 5x aufgerufen)
 
 
Nach oben
MOR
Alt 15.01.2004, 23:42   #2
Standard

ich bin zwar softwareentwickler aber was zum teufel is prolog denn?
 
 
Nach oben
sALDIx
Alt 15.01.2004, 23:49   #3
Standard

hyhy!

im anhang ist mal so ne gegenüberstellung von verschiedenen porgrammier arten!
Angehängte Grafiken
Dateityp: gif sprach.gif (25,1 KB, 44x aufgerufen)
 
 
Nach oben
MOR
Alt 16.01.2004, 00:22   #4
Standard

thx saldix aber das hilft mir nicht wirklich weiter

aber vllt kennen sich einige gosus hier damit aus ;D
 
 
Nach oben
sALDIx
Alt 16.01.2004, 00:37   #5
Standard

hyhy!

war ja nen versuch wert, aber ich weiß nicht wie ich das erklären soll.

aber nunja wat soll!

hoffenwir mal das einer weiß bei dem problem zu helfen"
 
 
Nach oben
sALDIx
Alt 20.01.2004, 01:26   #6
Standard

hyhy!

problem gelöst!

es lag daran, dass die datenseätze genau so hießen wie die regeln!
 
 
Nach oben
Gothmogh
Alt 30.01.2004, 16:51   #7
Standard

prolog ist doch richtig cool wenn man es im richtigen zusammenhang einsetzt. Wir hatten damit mal ein mini Expertensystem geschrieben.
Aber das war Visual Prolog sind ein paar Syntax unterschiede

Aber ich sollte doch mal wieder öfter in foren vorbeischauen kommt immer mal wieder was interessantes.
 
 
Nach oben
Ähnliche Themen, die dich vielleicht interessieren
Thema Autor Forum Antworten Letzter Beitrag
Beste Freundin = Hoffnungsloser Fall... depressiv etc., was tun?? Nicekisch Liebe, Sex und Zärtlichkeit 11 24.06.2008 11:56
Will sie was von mir oder bilde ich mir das nur ein? tingeltangel Liebe, Sex und Zärtlichkeit 10 06.06.2008 19:43
Was tun mit dem Ex- wie komm ich los? :( Aber sehr langer Text-bitte trotzdem lesen!! Lees_chino Liebe, Sex und Zärtlichkeit 6 17.01.2008 16:23
Aufgeben oder "dranbleiben" ?! :) december Liebe, Sex und Zärtlichkeit 5 16.12.2007 22:12
Große Liebe für immer verloren? Bitte helft mir... Sugar18w Liebe, Sex und Zärtlichkeit 8 16.12.2007 02:44
Anzeigen:
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche



Alle Zeitangaben in WEZ +2. Es ist jetzt 04:38 Uhr.


Lupuz.de - wir können auch anders!
©1998 - 2008, Lupuz:Information-Network
Powered by vBulletin Version 3.7.1 (Deutsch), Jelsoft Enterprises Ltd.
Grüne Links?

SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.