Juliaaaan: Frage zum Wiki-Artikel „Grundlagen der Programmierung“

problematische Seite

Hey,

bei Beispiel 5, müsste es dort nicht "else if (alter > 17)" heißen, wenn wir allen Erwachsenen Zutritt geben wollen?

LG

  1. problematische Seite

    @@Juliaaaan

    bei Beispiel 5, müsste es dort nicht "else if (alter > 17)" heißen, wenn wir allen Erwachsenen Zutritt geben wollen?

    Nein.

    • Die allgemein bekannte Grenze zum Volljährigkeit ist 18; das sollte sich im Code widerspiegeln.

    • Die Negation von alter < 18 ist nicht alter > 17, sondern alter >= 18.[1]

    Ist geändert. Danke für den Hinweis.

    LLAP 🖖

    PS: Wo wir gerade bei Zahlen sind: Das ist mein 33333. Posting. 🥂

    PPS: Wo wir gerade bei lauter Dreien und Alter sind: Ich werde 33. 😉

    --
    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann

    1. Oder !(alter < 18) – aber das macht den Code nicht besser lesbar. ↩︎

    1. problematische Seite

      Hej Gunnar,

      Ist geändert. Danke für den Hinweis.

      Danke für die Änderung!

      Herzlichen Glückwunsch!

      PPS: Wo wir gerade bei lauter Dreien und Alter sind: Ich werde 33. 😉

      Alle mal Gruppenkuscheln hier!

      Marc

    2. problematische Seite

      Moin,

      bei Beispiel 5, müsste es dort nicht "else if (alter > 17)" heißen, wenn wir allen Erwachsenen Zutritt geben wollen?

      Nein.

      • Die allgemein bekannte Grenze zum Volljährigkeit ist 18; das sollte sich im Code widerspiegeln.

      • Die Negation von alter < 18 ist nicht alter > 17, sondern alter >= 18.[^neg]

      Wenn man Integer hätte, stimmte es schon, denn da kann es ja keinen Wert zwischen 17 und 18 geben.

      PS: Wo wir gerade bei Zahlen sind: Das ist mein 33333. Posting. 🥂

      Eine Schna…Champagner-Zahl 😉

      PPS: Wo wir gerade bei lauter Dreien und Alter sind: Ich werde 33. 😉

      Und herzlichen Glückwunsch!

      Viele Grüße
      Robert

      1. problematische Seite

        @@Robert B.

        Wenn man Integer hätte, stimmte es schon, denn da kann es ja keinen Wert zwischen 17 und 18 geben.

        „Kommt in dem Fall das Gleiche raus“ ≠ „stimmt schon“. Wie gesagt, die 18 sollte im Code auftauchen, nicht eine magische 17, wo man sich fragt, woher die kommt.

        PPS: Wo wir gerade bei lauter Dreien und Alter sind: Ich werde 33. 😉

        Und herzlichen Glückwunsch!

        Doch nicht dafür. Die Glückwünsche kommen  r e i c h l i c h  spät. Aber danke. 😄

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
        1. problematische Seite

          Tach!

          Wenn man Integer hätte, stimmte es schon, denn da kann es ja keinen Wert zwischen 17 und 18 geben.

          „Kommt in dem Fall das Gleiche raus“ ≠ „stimmt schon“. Wie gesagt, die 18 sollte im Code auftauchen, nicht eine magische 17, wo man sich fragt, woher die kommt.

          Die 18 ist in gleicher Weise magisch. Man kann deren Bedeutung zwar dem Kontext entnehmen und dem allgmeinen Wissen, dass (bei uns) die Volljährigkeit bei 18 erreicht ist, aber andere Vorkommen von 18 kann man auch nur anhand des Kontextes davon unterscheiden. Besser ist es, eine Konstante zu erstellen, die einen sprechenden Namen hat.

          Durch solche Konstanten und deren Wiederverwendung wird eindeutig, bei welchen Verwendungen die Werte wirklich dasselbe darstellen und nicht nur zufällig gleich sind. Das erleichtert auch das Refactoring, falls man mal eine 21 oder so verwenden muss. Eine Änderungsstelle statt Suchen und Ersetzen aller Werte mit Kontextbeachtung.

          Konstanten fressen normalerweise auch kein Brot, außer im Quelltext, denn sie werden meist beim Parsen durch die eigentlichen Werte ersetzt. Dem Prozessor ist die Bedeutung ja letztlich egal. "Normalerweise", weil sie unter Umständen aber die Ausführung verlangsamen, wenn auch nur im Mikrooptimierungssinne. In PHP werden Konstanten mit define() erstellt, und das ist kein Sprachkonstrukt, das der Parser/Compiler auflöst, sondern ein normaler Funktionsaufruf, der Ausführungszeit kostet, wenn auch nur minimal.

          dedlfix.

    3. problematische Seite

      Hallo Gunnar,

      Ich werde 33.

      Herzlichen Glückwunsch 😀

      Ich bin neulich 35 geworden. Das \x davor ist nicht wirklich relevant…

      Rolf

      --
      sumpsi - posui - clusi
      1. problematische Seite

        @@Rolf B

        Ich bin neulich 35 geworden. Das \x davor ist nicht wirklich relevant…

        Du sagst es. 😆

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  2. problematische Seite

    Hi,

    bei Beispiel 5, müsste es dort nicht "else if (alter > 17)" heißen, wenn wir allen Erwachsenen Zutritt geben wollen?

    Wenn das rein am Alter festgemacht wird, geht's um Volljährigkeit, nicht um Erwachsen-sein. 😉

    Ach ja: Bei Beispiel 6 kommt man mit Eingabe einer negativen Zahl in die Kategorie "jung" statt "dumm" …

    cu,
    Andreas a/k/a MudGuard

  3. problematische Seite

    Hardcodierung ist ein schlechtes Beispiel. Die Altersangabe gehört in eine vom Code unabhängige Konfiguration.

    MfG

    1. problematische Seite

      Hallo pl,

      Hardcodierung ist ein schlechtes Beispiel. Die Altersangabe gehört in eine vom Code unabhängige Konfiguration.

      Für eine Einführung in die Grundlagen ist es ein sehr gutes Beispiel.

      Bis demnächst
      Matthias

      --
      Rosen sind rot.
      1. problematische Seite

        Servus!

        Hallo pl,

        Hardcodierung ist ein schlechtes Beispiel. Die Altersangabe gehört in eine vom Code unabhängige Konfiguration.

        Für eine Einführung in die Grundlagen ist es ein sehr gutes Beispiel.

        Vielen Dank an @dedlfix. Ich habe seinen Vorschlag mit const erwachsen = 18; bereits heute vormittag eingebaut und im BeispielText erklärt.

        Herzliche Grüße

        Matthias Scharwies

        --
        "Survive or die trying!"
        1. problematische Seite

          @@Matthias Scharwies

          Ich habe seinen Vorschlag mit const erwachsen = 18; bereits heute vormittag eingebaut und im BeispielText erklärt.

          Hast du auch erklärt, warum const erwachsen = 18; in älteren Browsern nicht funktioniert?

          Und warum hast du var name = ''; etc. dann nicht auch gleich in let name = ''; geändert?

          Und warum wird name da überhaupt ein Leerstring zugewiesen? Macht IMHO keinen Sinn.

          LLAP 🖖

          --
          „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
          1. problematische Seite

            @@Gunnar Bittersmann

            Ich habe seinen Vorschlag mit const erwachsen = 18; bereits heute vormittag eingebaut und im BeispielText erklärt.

            Und wie MudGuard schon sagte, sollte die Konstante besser volljährig o.ä. heißen.

            LLAP 🖖

            --
            „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
            1. problematische Seite

              Sieh es mal so: Ein Exempel ist etwas, was man statuiert und also keine Wissenschaft.

            2. problematische Seite

              hallo

              @@Gunnar Bittersmann

              Ich habe seinen Vorschlag mit const erwachsen = 18; bereits heute vormittag eingebaut und im BeispielText erklärt.

              Und wie MudGuard schon sagte, sollte die Konstante besser volljährig o.ä. heißen.

              Ich kann mir mehr unter einem volljährigen Wein vorstellen, denn unter einer willkürlichen Integerzahl.

          2. problematische Seite

            Hallo Gunnar,

            über diese Leerstring-Zuweisung hatte ich mich auch gewundert, nun glaube ich aber, die Methode hinter dem Wahnsinn erkannt zu haben.

            Der Leerstring ist der Default-Wert, und es ist eine gute Idee, den Default für eine Variable an dieser Stelle festzulegen und nicht als 2. Parameter eines prompt zu tarnen.

            BLÖD nur, dass prompt bei Klick auf Abbrechen den Wert null zurückgibt, und nicht den Defaultwert.

            Das zu diskutieren ist aber alles zu weit gehend für diesen Artikel. Insofern: Default an der Variablen festlegen. Und VIEL später react oder knockout zur Datenbindung verwenden...

            Rolf

            --
            sumpsi - posui - clusi
            1. problematische Seite

              Tach!

              Der Leerstring ist der Default-Wert, und es ist eine gute Idee, den Default für eine Variable an dieser Stelle festzulegen und nicht als 2. Parameter eines prompt zu tarnen.

              Das MDN berichtet noch aus der Vergangenheit, dass ohne diesen zweiten Parameter der IE 7/8 den Text "undefined" angezeigt hat. Zumindest aus historischer Sicht ist die Übergabe eines Leerstrings nicht unsinnig.

              BLÖD nur, dass prompt bei Klick auf Abbrechen den Wert null zurückgibt, und nicht den Defaultwert.

              Nicht unbedingt, denn das ist nur der Default-Anzeigewert. Den kennt man ja im Programm, und kann ihn sich zur Not anderenorts merken, wenn er benötigt wird. Aber ohne die Rückgabe von null beim Abbruch, könnte man nicht unterscheiden zwischen Abgebrochen oder Bestätigt.

              Das zu diskutieren ist aber alles zu weit gehend für diesen Artikel. Insofern: Default an der Variablen festlegen.

              Find ich auch. Ob man den Defaultwert als Erstbelegung von name oder als Literal übergibt, kann man zwar durchaus abwägen. Fürs Beispiel ist das aber unerheblich. In der Praxis wird man auch nicht zu prompt() greifen, als Einstieg aber durchaus vertretbar. An der Stelle soll was anderes gezeigt werden und nicht Best Practice von Werteingaben. Das wäre viel zu umfangreich und setzt erst die Kenntnis vom Zugriff aufs DOM voraus.

              dedlfix.

              1. problematische Seite

                Servus!

                Vielen Dank an alle, die den Aufwand nicht gescheut haben und das Tutorial verbessert haben!

                Herzliche Grüße

                Matthias Scharwies

                --
                "Survive or die trying!"
        2. problematische Seite

          Servus!

          Hallo pl,

          Hardcodierung ist ein schlechtes Beispiel. Die Altersangabe gehört in eine vom Code unabhängige Konfiguration.

          Für eine Einführung in die Grundlagen ist es ein sehr gutes Beispiel.

          Vielen Dank an @dedlfix. Ich habe seinen Vorschlag mit const erwachsen = 18; bereits heute vormittag eingebaut und im BeispielText erklärt.

          Konstanten sind natürlich auch eine Alternative.

          MfG

        3. problematische Seite

          Hallo Matthias,

          vielleicht wäre es noch besser, auch in den weiteren Texten und Beispielen dieser Seite bei der Konstante zu bleiben, statt dort die 18 zu lassen. (Ich habe mir erlaubt, dieses zu tun.)

          Auf Wiederlesen

          Detlef

          --
          - Wissen ist gut - Können ist besser - aber das Beste und Interessanteste ist der Weg dahin!