Anfängerfrage zu IF



  • Tach!

    Mir ist das voll peinlich, aber kann mir jemand den Cartoon erklären? Ich bin noch Programmier-Anfänger und kapier den nicht. Ist blöd, wenn alle anderen lachen und ich steh aufm Schlauch. Hoffentlich bin ich hier richtig.

    http://zubi-doc.blogspot.com/ (Nr. 7)



  • Erstes Bild: In komischen Sprachen wie Pascal und Basic begann man Arrays mit 1, in C aber mit 0.
    Zweites Bild: Im Vergleich = statt == zu schreiben ist ein oft gesehener Anfängerfehler, der lustigerweise nicht zu einer Compilerfehlermeldung führt, sondern zu einem falsch rechnenden Programm und man sucht den Fehler tagelang.
    Drittes Bild: Beide erinnern sich dran, wie sie selber tagelang danach gesucht hatten und müssen lachen; das war vom linken Programmierer schon ein mords Witz.



  • C_Paranoid schrieb:

    Ist blöd, wenn alle anderen lachen und ich steh aufm Schlauch.

    kein problem, ein nicht-lachen könnte man auch so verstehen, dass du kapiert hast, was der zeichner sagen wollte, aber dass du's nicht witzig findest. die anderen cartoons auf der seite sind nämlich auch nicht witzig.
    🙂



  • Achso, eine Zuweisung wie bei i=i+1. Ich wußte net, daß das bei IF überhaupt funzt. Jetzt hab ichs kapiert.

    Den Cartoon darunter mit Facebook fand ich besser.

    Danke für die schnelle HIlfe!



  • wobei es in Wahrheit umgekehrt ist - die Abzählung (von Array-Elementen z.B.) beginnt normalerweise bei 1. Allein die Hardware-Nähe (bzw. Mangel an high-level-Konstrukten) von C ("Array = Zeiger auf Anfangsadresse") verlangt die Zählung ab 0.

    In Sprachen, bei denen Arrays mehr als nur Zeiger auf deren Anfangsadressen sind, besteht keinerlei Notwendigkeit, die Zählung bei 0 zu beginnen. Daß Sprachen wie python auch bei 0 beginnen, ist bedauerlich, obwohl erklärbar.



  • u-ser_l schrieb:

    wobei es in Wahrheit umgekehrt ist - die Abzählung (von Array-Elementen z.B.) beginnt normalerweise bei 1. Allein die Hardware-Nähe (bzw. Mangel an high-level-Konstrukten) von C ("Array = Zeiger auf Anfangsadresse") verlangt die Zählung ab 0.

    In Sprachen, bei denen Arrays mehr als nur Zeiger auf deren Anfangsadressen sind, besteht keinerlei Notwendigkeit, die Zählung bei 0 zu beginnen. Daß Sprachen wie python auch bei 0 beginnen, ist bedauerlich, obwohl erklärbar.

    Ja, so dachte man im vergangenen Jahrhundert. Inzwischen weiß man, daß der kleine Lernaufwand sich lohnt und mit 0-basierenden Arrays alles einfacher wird.



  • Ja, so dachte man im vergangenen Jahrhundert. Inzwischen weiß man, daß der kleine Lernaufwand sich lohnt und mit 0-basierenden Arrays alles einfacher wird.

    Yup. In meiner Schulzeit galten die Natürlichen Zahlen ab 1.
    Heute ab 0.
    Wir schrieben:

    Z| = |N + {0} + -|N

    kennt das heute noch wer?



  • volkard schrieb:

    Ja, so dachte man im vergangenen Jahrhundert. Inzwischen weiß man, daß der kleine Lernaufwand sich lohnt und mit 0-basierenden Arrays alles einfacher wird.

    z.b. sowas geht damit ganz einfach: http://en.wikipedia.org/wiki/Off_by_one
    🙂



  • ;fricky schrieb:

    volkard schrieb:

    Ja, so dachte man im vergangenen Jahrhundert. Inzwischen weiß man, daß der kleine Lernaufwand sich lohnt und mit 0-basierenden Arrays alles einfacher wird.

    z.b. sowas geht damit ganz einfach: http://en.wikipedia.org/wiki/Off_by_one
    🙂

    Das ist klar. Gehört zum Lernaufwand. Man muß sich erstmal dran gewöhnen. Dauert aber nicht lange. Ich denke, Du machst solche Fehler nicht mehr.

    Die halboffenen Intervalle mit "Anfang ist drin" und "Ende(oft Anzahl) ist draußen" sind der große Preis, den man sich damit verdient. Keine Nachkorrekturen mehr bei Intervallvereinigung, keine Nachkorrekturen bei Unterintervallbildung, alles total harmonisch.



  • Mir ist das voll peinlich, aber kann mir jemand den Cartoon erklären? Ich bin noch Programmier-Anfänger und kapier den nicht. Ist blöd, wenn alle anderen lachen und ich steh aufm Schlauch.

    Wäre interessant zu wissen, wer darüber so gelacht hat, dass er dir den Link gegeben hat, denn der einzige Google-Treffer zu dem URL ist dieser Thread...



  • Die Cartoons sind selten dämlich! Ich lache normalerweise über jeden Mist, meine Reizschwelle für gute Laune ist extrem niedrig, ich bin eben eine echte Frohnatur! Aber die Cartoons sind nicht einmal anti-witz-witzig.

    Fazit: Wer gibt mir die kostbare Zeit meines Lebens zurück, die ich mit den Cartoons und dem Verfassen diesen Postings vergeudet habe? Ich muss jetzt los, sonst verpasse ich meinen Bus! Achja, hätte ich die Zeit doch nur ins Auf-Den-Bus-warten investiert, dann wäre jetzt wenigstens nicht meine Laune im Arsch! 😡



  • Hat jemand in der Praxis schonmal wirklich beobachtet, dass ein diplomierter Informatiker unter einen Fachinformatiker gestellt wurde? Wenn ja, bin ich ja schockiert! Übernehmen jetzt etwa die Hunde die Kontrolle und entscheiden wann Gassi gegangen wird und wann ich was zu fressen bekomme?



  • Eine Aufzählung mit 1 zu beginnen ist kein historisches Brauchtum, sondern schlicht ein Gebot der Logik.

    Daß der Adreßraum von CPUs bei 0 beginnt, ist - entgegen anderslautenden Gerüchten - kein hinreichendes Gegenargument, auch wenn es ganz nett ist, a[i] statt *(a+i) schreiben zu können.



  • u-ser_l schrieb:

    Eine Aufzählung mit 1 zu beginnen ist kein historisches Brauchtum, sondern schlicht ein Gebot der Logik.

    Nö. Ist einfach nur Konvention.
    Grundschule: 1 2 3 4 5
    Leben: 0 1 2 3 4

    Das mit den Intervallen wirst Du nicht kapieren, wenn Du nicht mal ein wenig mehr in einer modernen Sprache machst. Schade.



  • volkard schrieb:

    Leben: 0 1 2 3 4

    also nö, in der realität zählt man eigentlich: erster, zweiter, dritter, usw und nicht anfang+0, anfang+1, anfang+2, ... ich stelle mir gerade ein siegertreppchen im motorsport o.ä. vor, mit einer dicken 0 in der mitte. in C und c-abkömmlingen hat man sich daran gewöhnt, dass indizes 0-basiert sind, weil es eigentlich maschinenabhängige offsets vom anfang eines speicherblocks sind und keine ordinalzahlen.
    🙂



  • volkard schrieb:

    Grundschule: 1 2 3 4 5
    Leben: 0 1 2 3 4

    kennst du einen Menschen, der beim Abzählen irgendwelcher Gegenstände mit 0 beginnt? Der seinen Erstwohnsitz als Nulltwohnsitz bezeichnet, oder am 0-ten April Scherze macht?

    Zählbeginn bei 0 ist sinnvoll, wenn die abzuzählenden Objekte eine Struktur tragen, in der die 0 eine Rolle spielt. Beispielsweise, wenn die Halbgruppenstruktur der natürlichen Zahlen eine Rolle spielt, deren neutrales Element die 0 ist. Oder bei der Arithmetik mit Speicheradressen.

    Beispiel: Ziffernfolgen

    i=0nciqi\sum\limits_{i=0}^nc_i\cdot q^i

    hier ist es sinnvoll, die niedrigstwertige Ziffer als c0 zu bezeichnen, da c0 der Koeffizienz zur Potenz q^0 ist.

    Bei Strings, bei der Aufzählung von Getränkelieferanten und allgemein bei den meisten Anwendungen von Arrays spielt die additive Struktur der Zahlen keine Rolle, und solche Abzählungen werden natürlicher bei 1 als bei 0 begonnen. mMn.


Anmelden zum Antworten