Markus: Stimmt IF-Abfrage

Habe if-Anweisung. Wenn Samstag oder Sonntag auf den ersten fallen soll keine Ausgabe erfolgen. Wenn Sonntag auf den zweiten fällt soll auch keine Ausgabe erfolgen.
Abfrage:
if (($tag!=1 && $tag!=2)||($tag!=1 && $tag!=2 && !sonntag($tag,$monat,$jahr)))
dann Ausgabe

ist diese richtig, weiß nicht wie ich es testen soll, für Juni stimmts aber den Rest weiß ich nicht.

  1. Hi,

    Wenn Samstag oder Sonntag auf den ersten fallen soll keine Ausgabe erfolgen. Wenn Sonntag auf den zweiten fällt soll auch keine Ausgabe erfolgen.

    wenn (1. ist Samstag) oder (1. ist Sonntag oder 2. ist Sonntag) dann keine Ausgabe

    Da (1. ist Samstag) <=> (2. ist Sonntag) für alle Monate, kann die erste Klammer sogar wegfallen; sie ist implizit.

    if (($tag!=1 && $tag!=2)||($tag!=1 && $tag!=2 && !sonntag($tag,$monat,$jahr)))
    dann Ausgabe

    Du prüfst zu viel. Prüfe nur die paar Faktoren, die die Ausgabe verhindern, und verneine das ggf., wenn es den Rest vereinfacht. Bedenke:

    NOT (a OR b) == (NOT a) AND (NOT b)

    weiß nicht wie ich es testen soll,

    Welche Testfälle gibt es?

    • Einen Monat, bei dem der 1. ein Samstag ist,
    • einen Monat, bei dem der 1. ein Sonntag ist,
    • einen Monat, bei dem der 2. ein Sonntag ist (nach Deiner ursprünglichen Definition),
    • einen Monat, bei dem nichts von alledem zutrifft, also z.B. der 1. ein Mittwoch ist.

    Du kannst nun entweder entsprechende Monate suchen, oder aber Deine sonntag()-Funktion entsprechend modifizieren, dass sie zu Testzwecken so antwortet, wie Du es gerade brauchst.

    Cheatah

    1. Ich habs jetzt so geschrieben:

      if (!($tag==1 || ($tag==2 && sonntag($tag, $monat, $jahr))))
      ausgabe

      Muss glaub ich noch den ganzen Code überarbeiten, denn der schaut allgemein so aus u. mit dem müssen auch noch andere arbeiten.

      Danke für deine Hilfe.

      Markus