Verschenke C++ Anfängerbeispiel



  • Hallo,

    also ich halte von solchen Kurzanleitungen nicht viel, da sie einer guten Einführung aus einem guten Buch qualitativ fast immer unterlegen sind.

    Hier mal ein paar kleine Punkte:

    1. geschachtelte Kommentare sind in C++ strenggenommen nicht erlaubt
    2. Der Präprozessor überliest die Kommentare nicht, er entfernt sie aus der Eingabe.
    3. #includes inkludieren keine Bibliotheken, sondern vielmehr Deklarationen. Bibliotheken sind für den Compiler uninteressant. Ausnahme sind Header-Only-Libs.
    4. Es ist nicht die "moderne C++ Syntax", die auf die Endung .h verzichtet.
    5. Das Beispiel für einen C-Header mit .h-Endung ist schlecht gewählt, da conio.h kein C-Header ist.
    6.

    Das
    int vor dem main gibt an, dass
    die Funktion einen Integerwert
    zurückgibt. Dies ermöglicht den
    Ausstieg aus einer Funktion und
    hier eben aus dem Hauptprogramm,
    zu verschiedenen Zeitpunkten.

    Der logische Schluss ist falsch. Wann man aus einer Funktion zurückkehrt ist unabhängig vom Rückgabetyp der Funktion.

    7. Wer system benutzt sollte <cstdlib> inkludieren.



  • 8. parameterlose Funktionen benötigen in C++ kein void innerhalb der Funktionsklammern



  • Nanana, solch ein edles Vorhaben und nur Kritik? Die Idee finde ich gut, keiner braucht noch mehr C++/WinAPI-Tutorial-Homepages und wenn man hier im Forum über solch einen Tutorial-Post stolpert, kann man u.U. noch etwas Neues entdecken. Wenn ich bedenke, wie viele Anfängerfragen hier oft gepostet werden (nicht negativ gemeint) ist so ein Beispiel doch sinnvoll!
    Sicherlich ist das Beispiel nicht perfekt, aber hab in Büchern schon schlimmeres gesehen. Wer außerdem ins Programmieren nur mal reinschnuppern will, kauft sich nicht gleich Bücher, die kosten nämlich Geld^^



  • @Erhard Henkes:

    Ähm...

    cmath <-> math.h

    😉



  • Ach ja noch zu meinem Kollegen Badestrand 😉 :

    Ich stimme dem eigentlich auch zu! Man sollte das aber nicht als Tutorial verkaufen, sondern eher als 'Kontrollcode'; Es gibt -ohne meinen Karibikfreund jetzt wiederholen zu wollen- 😃 ... nämlich so viele Anfängerfragen, die sich mit seinem Code geklärt hätten! Man sollte aber vielleicht (also wenn das in die FAQ kommen sollte, oder der Thread sticky gemacht wird) erwähnen, dass man besser mit nem 'richtigen' Buch anfangen soll, wenn man vor hat, richtig in die Materie einzusteigen.



  • 😃 Karibikfreund 😃



  • groovemaster schrieb:

    8. parameterlose Funktionen benötigen in C++ kein void innerhalb der Funktionsklammern

    Aber falsch oder gar schlechter Stil ist es doch auch nicht, oder irre ich mich da?



  • Aber falsch oder gar schlechter Stil ist es doch auch nicht, oder irre ich mich da?

    Reduziert auf den Code:

    #include <string>
    #include <iostream>
    using namespace std;
    
    int main (void)
    {
        string name = "DEIN_NAME";
        system("cls");
        cout << "Hallo " << name << "!\n";
        cout << "Ich bin dein erstes Proggy!!!\n\n";
        return 0;
    }
    

    void und return 0 sind überflüssig. Die Anweisung system(...) gehört m.E. nicht in ein Einstiegsprogramm. Das Problem mit dem "Aufblitzen" in MS Windows ist nicht adressiert.
    Solche Programme gibt es doch zuhauf.



  • Wieso sollte
    return 0;
    überflüssig sein, wenn als Rückgabetyp int angegeben ist?



  • Reyx schrieb:

    Wieso sollte
    return 0;
    überflüssig sein, wenn als Rückgabetyp int angegeben ist?

    Eben, dass wäre doch dann schlechter Programier-Stil



  • Also den Kommentar kann ich mir irgendwie nicht verkneifen:

    kompiler schrieb:

    Es ist offensichtlich, dass jeder abgeschlossene
    Befehl mit dem Strich-Punkt endet, unbedingt darauf
    achten, um dumme Fehler zu vermeiden.

    Das Dingelchen heißt Semikolon 😃 .



  • Hoho, ein Gebildeter



  • Das kann mans icher aber auch kaum verkneifen ^^



  • Reyx schrieb:

    Wieso sollte
    return 0;
    überflüssig sein, wenn als Rückgabetyp int angegeben ist?

    Weil der Standard es nun mal so festlegt. main ist die einzige Funktion mit einem Rückgabetyp != void, die gerne auch ohne ein explizites return verlassen werden darf.

    Badestrand schrieb:

    Reyx schrieb:

    Wieso sollte
    return 0;
    überflüssig sein, wenn als Rückgabetyp int angegeben ist?

    Eben, dass wäre doch dann schlechter Programier-Stil

    Wie gesagt, main ist eine Ausnahme. Insofern kann man getrost auf das return verzichten. Ob das nun sinnvoll ist oder nicht, sei mal dahin gestellt.



  • audacia schrieb:

    Aber falsch oder gar schlechter Stil ist es doch auch nicht, oder irre ich mich da?

    Falsch ist es nicht, da hast du absolut Recht. Und ob das schlechter Stil ist, darüber kann man sich sicherlich streiten. Aber leere Klammern drücken doch am besten aus, dass da nichts reinkommt. Wieso sollte man also void schreiben, wenn das überhaupt nicht notwendig ist? Vermutlich machen das einige Leute aus Gewohnheit zu C. In C++ ist es jedoch nicht unbedingt üblich.


Anmelden zum Antworten