Abruch nach erfüllten OAW Trippeln

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Abruch nach erfüllten OAW Trippeln

    Hallo,ich möchte (muß)
    in eine Prolog programmm bei dem ich über OAW Tripel areite verschieden zweige aufbauen.
    Zb. den Teil über Schutzwuerdige arbeitsverhältnisse.


    [code:1]fire(arbeitsverhaeltnis,mitarbeiter,schutzwuerdig):-

    fire(mitarbeiter,zustand,schwanger,fragbar),
    Moeglich = nein
    ;
    fire(mitarbeiter,status,personalvertretung,fragbar),
    Moeglich = nein
    ;
    fire(mitarbeiter,zusatand,behindert,fragbar),
    Moeglich == nein
    ;
    fire(mitarbeiter,status,azubi,fragbar),
    Moeglich == nein.
    [/code:1]

    wenn hier etwas Zutrifft sollte der Z teil nicht weiter bearbeitet werden sondern das Programm abgebrochen ich währe für hilfe sehr dankbar
  • Hi,

    kannst du bitte deine Fragestellung präzisieren, man kann ja nur erraten, was du wissen willst. Was soll bspw. der "Z teil" sein?

    Ansonsten eine allgemeine Sache: Grundsätzlich werden Parameter einer Funktion groß geschrieben, wenn sie variabel sein sollen. Nur spezielle (definierte) Parameter werden klein geschrieben, nämlich dann, wenn sie Teil eines Fakts sind:
    [code:1]
    frisst(Tier, Futter) :-
    ...

    // aber
    frisst(loewe, gazelle).
    [/code:1]

    Meiner Vermutung nach willst du eine Funktion fire schreiben, die angibt, ob ein Mitarbeiter gefeuert werden kann oder nicht. Du mußt die Variable Moeglich also als Rückgabevariable mit in die Parameterliste aufnehmen, wenn die Funktion nicht selbst das Ergebnis liefern soll. Also etwa so:

    [code:1]
    fire(Objekt, Attribut, Wert, Moeglich) :-
    ...
    [/code:1]

    Da bereits (spezielle) Situationen feststehen, bei denen Mitarbeiter nicht gefeuert werden können, kannst du diese als Fakten formulieren:

    [code:1]
    fire(mitarbeiter, zustand, schwanger, nein).
    fire(mitarbeiter, status, personalvertretung, nein).
    ...

    // Alle restlichen Situationen
    fire(mitarbeiter, _, _, ja).
    [/code:1]

    Viele Grüße,

    Siracusa
  • Hallo Die Frage etwas Präzsiert,

    Ich habe 3 Teilnäume in dem Prolog Programm zu berücksichtigen
    Als ersten wollte ich eine Art Notausgang hinter dern klauseln mit den gründen für unkündbarleit haben sozusagen wenn eine
    fire(...)
    reglen zutrifft soll das Programm beenden und einen text ausgenen
    Sonst soll eine Verzweigeung in einem Teil
    Ordentliche und Auserordentliche künfigung statfinden
    also ord(..)
    und ausord(...)

    Die frage ust also wie ich eine Verzweigung relsiere in der ein Rücksprung in einen Andren zweig mittels backtracking oder rekusrsion unterbunden wird
  • Eine Verzweigung kannst du realisieren, indem du für eine Funktion verschiedene Alternativen angibst. Diese werden nacheinander wie if-Bedingungen abgearbeitet. Schlägt eine fehl, wird zur nächsten gegangen.

    Beispiel:
    [code:1]
    % if-Zweig
    pruefe(O, A, W):-
    fire(O, A, W, nein),
    write('Nö, geht nicht!').

    % else-Zweig
    pruefe(_, _, _):-
    write('Schon so gut wie entlassen ...').
    [/code:1]

    Ausgaben:
    [code:1]
    1 ?- pruefe(mitarbeiter, zustand, schwanger).
    Nö, geht nicht!

    Yes

    2 ?- pruefe(mitarbeiter, zustand, betrunken).
    Schon so gut wie entlassen ...

    Yes
    [/code:1]

    Viele Grüße,

    Siracusa